1位全加器单位延时

从输入信号发生变化的时刻到输出响应变化的时刻之间的时间为实际逻辑门的传播延时,Verilog 中的基本门原语被默认为是零延时,也就是输出对输入的响应是同时发生的,但是基本门原语也可能有非零延迟。时序验证最终取决于电路中传输延迟的实际值,但是通常采用零延时模型进行仿真,目的是为了快速验证模块的功能特性。而单位延时也经常用于进行仿真,因为它能反映信号动作的时间顺序,而这种时间顺序有可能在零延时仿真中被忽略掉。

建模建议:
所有基本门和线网都有一个默认的零传播延时模型

下面列出的Add_ full_unit_delay 和Add_half_unit_delay 中的基本门描述中,均标记有
一个时间单位延时。延时标记#1插入到每个例化基本门的例化名之前(#表示延迟控制操作符)。
从图4.18可以看出,sum和c_out的仿真过程中延迟的影响是很明显的。而且应该注意到图4.17
所示零延时的仿真结果无法表明c_out 是在sum之前还是在sum 之后形成的。实际上,只要输入
变化,二者就会跟着发生变化。

代码:module Add_full_unit_delay (output c_out, sum, input a,b, c_in); wire w1, w2, w3;
Add_half_unit_delay M1 (w2, w1, a, b);
Add_half_unit_delay M2 (w3, sum, w1, c_in);
or #1 M3(c_out, w2, w3);
endmodule
module Add_half_unit_delay (output c_out, sum, input a, b);
xor #1 M1 (sum, a,b);
and #1 M2(c_out, a,b);
endmodule

module full_adder_tb;
reg a,b,c;
wire co,sum;
integer i,j;
parameter delay=100;
full_adder_1 U1(a,b,c,co,sum);
initial
begin
a=0;b=0;c=0;
for(i=0;i<2;i=i+1)
for(j=0;j<2;j=j+1)
begin
a=i;b=j;c=0;
end
for(i=0;i<2;i=i+1)
for(j=0;j<2;j=j+1)
begin
a=i;b=j;c=1;  
#delay; 
end
end
endmodule

截图:

视频链接:https://b23.tv/OBAwZK
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值