verilog中的响铃计数器

时间:2015-11-02 07:57:14

标签: verilog iverilog

我正在尝试使用Verilog中的D触发器创建一个4位计数器。我正在关注此图http://i.imgur.com/VR5593a.png。我得到了单个D触发器的代码。我遇到的问题是在第一个时钟周期中使用D0。我猜我必须假设Q0为1,Q1,Q2,Q3首先为0。我不知道如何在代码中只传递一次D0的初始值。

android:windowSoftInputMode="adjustPan"

3 个答案:

答案 0 :(得分:2)

使用重置信号可以帮助您。因此,您只需要将 Q3 重置为 1 ,将其余信号重置为 0

答案 1 :(得分:0)

您需要做一些事情来设置初始状态。

对于模拟,通常可以使用“初始”块来设置寄存器的初始状态。一些综合工具,尤其是那些针对FPGA / CPLD的工具,也支持以这种方式设置初始状态。一些不支持初始块的综合工具可能支持特定于工具的设置初始条件的方法。

另一个选择是在你的触发器中建立一个重置线。这样做的缺点当然是你需要一些东西来触发重置线,无论是模拟中的测试平台还是实际实现中的某种硬件。

答案 2 :(得分:0)

verilog将所有4状态变量初始化为' x'。所以,你会跑一个' x'在没有任何真正改变的情况下永远环绕着您需要为案例提供输入。类似于以下内容(在SV中)

module RippleMod(CLK, en, in, q0, q1, q2, q3);
  input CLK, en, in;
  output q0, q1, q2, q3;
  logic d1in;
  always_ff @(negedge clk) begin
    if (en)
       d1in <= in;
    else
       d1in <= q3;
  end

  DFlipFlop d1 (CLK,d1in,q0);
  DFlipFlop d2 (CLK,q0,q1);
  DFlipFlop d3 (CLK,q1,q2);
  DFlipFlop d4 (CLK,q2,q4);
endmodule