首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

关于延迟问题[求助]

关于延迟问题[求助]

一个简单的组合逻辑电路,用到延迟说明快;
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的延迟时间,所以我很糊涂,请大侠指点一二.
返回列表