关于四位计数器的设计,阻塞式与非阻塞式赋值引发的问题

本文介绍了在四位计数器设计中,阻塞式与非阻塞式赋值导致的问题。通过两种不同的设计方法(counter1 和 counter2)进行对比,并结合testbench进行仿真,揭示了非阻塞赋值在组合逻辑中可能产生的不确定性。作者通过增加预输出变量preout解决了仿真中出现的未知值问题,并强调在时序电路和组合逻辑中正确使用阻塞和非阻塞赋值的重要性。
摘要由CSDN通过智能技术生成

1、今天,从教材中学了两种可综合的四位计术器的设计方法,先附上代码吧。

(1)、建模:

方法一:

module counter1(out,cout,data,load,cin,clk);
  input [3:0]data;
  input load,cin,clk;
  output cout;
  output [3:0]out;
  reg [3:0]out;
  
  always @(posedge clk)
  if(load)
    out<=data;
  else
    out<=out+cin;
    
  assign cout=&out&cin;
  
endmodule


方法二:

module counter2(preout,out,cout,data,load,cin,clk);
  input [3:0]data;
  input load,cin,clk;
  output cout;
  output [3:0]out,preout;
  reg [3:0]out;
  reg cout;
  reg [3:0]preout;

//preout起到一种监控作用,是我自己添加的。
  
  always @(posedge clk)
  begin
    out<=preout;
  end
  
  always @(out,data,load,cin)
  begin
    {cout,preo

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值