【问题标题】:Verilog Making a divide by two counter out of D Flip Flops not workingVerilog用D触发器除以两个计数器不起作用
【发布时间】:2016-03-20 20:08:32
【问题描述】:

我在下面的模块下有一个工作 DFF。

d_flip_flop_edge_triggered DFFT(Q, Qn, C, D);

但是,当我将“D”输入切换到“Qn”时 - 制作一个除以 2 的计数器 - 测试台输出既不显示 Q 也不显示 Qn。它是红色的,好像有错误一样。

这是完整的代码:

module divBy2UsingDFF(Q, Qn, C, D
    );
   output Q;
   output Qn;
   input  C;
   input  D;
    wire Qn;
    d_flip_flop_edge_triggered DFFT(Q, Qn, C, Qn);

endmodule

我是 verilog 的新手,我猜这是语法问题。

【问题讨论】:

    标签: verilog fpga test-bench


    【解决方案1】:

    查看模拟器中的Q值,红色可能是X,表示触发器的数据值未定义,一般是复位后的情况。

    有几种方法可以解决这个问题:

    • 使用带异步复位的触发器
    • 为数据触发器添加同步加载

    顺便说一句。您可以使用always 编写触发器分频器,而不是实例化 DFFT。 wire Qn; 也不是必需的。

    【讨论】:

    • 是的,Q 值是 X。我在模拟器中定义了输入 C,所以我不知道为什么它会显示。它也没有复位。我认为问题可能是我同时使用 Qn 作为输出和输入?我不确定你用 always 写它是什么意思?
    • 不,使用 Qn 输出来馈送输入很好,但问题是内部触发器存储最初是未定义的,因此必须在启动后定义为 0 或 1。考虑自己;上电后触发器的初始值是多少?
    • 初始值未定义!啊,我明白你在说什么。有没有办法从代码中启动变量?
    • 对初始化的建议是使用带有异步重置的 FF,或者最初加载一个值,如“有几种方法可以解决这个问题:”的项目符号中所述。
    • 多亏了你的建议,终于让它工作了。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多