|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
一个简单的组合逻辑电路,用到延迟说明快;
module delay(out,a,b,c);
output out;
input a,b,c;
and a1(n1,a,b);
or o1(out,c,n1);//out=(a&b)|c
specify
(a=>out)=2;
(b=>out)=3;
(c=>out)=1;
endspecify
endmodule
下面是测试程序:
`timescale 1ns/100ps
module tp_delay;
reg a,b,c;
wire out;
parameter dely=10;
delay delay1(out,a,b,c);
initial begin
a=1'b1;b=1'b1;c=1'b0;
#dely a=1'b0;b=1'b0;
#dely c=1'b1;
end
initial $monitor($time,,,"a=%d b=%d c=%d out=%d",a,b,c,out);
endmodule
用MODELSIM仿真结果为:
t(ps) a b c out
0 1 1 0 x
100 1 1 0 1
10000 0 0 0 1
10200 0 0 0 0
20000 0 0 1 0
20100 0 0 1 1
问题是:在延迟中,究竟以哪个变量为主,定义中从a,b,c到out的延迟时间分别是2,3,1个时间单位.最初赋值a,b,c分别为1,1,0,但过了100ps,out的状态变为1,似乎以c的延迟时间.但第二个赋值开始后,a,b,c分别为0,0,0,out延迟了200,似乎又以着a的延迟时间,所以我很糊涂,请大侠指点一二. |
|