首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >verilog中的环形计数器

verilog中的环形计数器
EN

Stack Overflow用户
提问于 2015-11-02 15:57:14
回答 3查看 787关注 0票数 0

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

代码语言:javascript
复制
module DFlipFlop(CLK, D, Q);
  input CLK, D;
  output Q;
  reg Q;
  always @(posedge CLK) begin
    Q <= D;
      end
endmodule

module RippleMod(CLK, q0, q1, q2, q3);
  input CLK;
  output q0, q1, q2, q3;

  DFlipFlop d1 (CLK,q3,q0);//not sure about q3 there, think I will get X if i do this.
  DFlipFlop d2 (CLK,q0,q1);
  DFlipFlop d3 (CLK,q1,q2);
  DFlipFlop d4 (CLK,q2,q4);
endmodule
EN

回答 3

Stack Overflow用户

发布于 2015-11-02 16:19:47

使用reset信号将对您有所帮助。因此,您只需将Q3重置为1,并将其余信号重置为。

票数 2
EN

Stack Overflow用户

发布于 2017-06-21 10:12:31

您需要执行一些操作来设置初始状态。

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

另一种选择是在触发器中构建一条复位线。当然,这样做的缺点是,您需要一些东西来触发重置线,要么是模拟中的测试平台,要么是实际实现中的某种硬件。

票数 0
EN

Stack Overflow用户

发布于 2017-06-21 22:08:11

verilog将所有4状态变量初始化为'x‘。因此,你将永远在循环中运行一个'x‘,而不会有任何实际的变化。您需要为您的案例提供输入。类似以下内容(在SV中)

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33472996

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档