【问题标题】:timing issues: simulation (iverilog, gtkwave) works, hardware (yosys) does not时序问题:模拟(iverilog、gtkwave)有效,硬件(yosys)无效
【发布时间】:2017-05-20 21:46:45
【问题描述】:

我正在学习 verilog,尝试在 ice40LX1K 板(olimex ice40HX1K + VGA I/O 板)上制作 VGA 世界(一个弹跳球)中的“hello world”。

我有一个奇怪的问题:当我使用 iverilog + GTKWave 模拟我的设计时,它看起来工作得很好。但是在硬件上的实现是行不通的。

奇怪的是,在硬件实现中,球是不动的……而且它的位置全为零 (0,0),尽管 verilog 代码永远不应该将它设置在那里。 看起来改变 xpos_ball 或 ypos_ball 的值实际上并没有改变这些值。 (硬件问题?yosys 问题)?在iverilog 模拟中,球的位置确实会按预期发生变化。

我不知道这是我自己的verilog代码中的错误(因为我是新手,这很可能),yosys中的问题,还是硬件中的问题(速度问题,是100 Mhz 时钟快吗?)还是别的什么?

有关如何解决此问题或此类问题的后续步骤的任何建议?还有其他我可以使用的调试技巧吗?

(编辑:删除了不再相关的实际verilog代码的链接)

克里斯托夫

【问题讨论】:

    标签: yosys


    【解决方案1】:

    100 Mhz 时钟快吗?

    是的。该设计适用于 39.67 MHz:

    $ make vga_bounceball.rpt
    icetime -d hx1k -mtr vga_bounceball.rpt vga_bounceball.asc
    // Reading input .asc file..
    // Reading 1k chipdb file..
    // Creating timing netlist..
    // Timing estimate: 25.21 ns (39.67 MHz)
    

    编辑重新评论:

    使用 FF 作为时钟分频器,您始终可以安全地将时钟除以 2 的幂:

    input clk_100MHz;
    
    reg clk_50MHz = 0; // initialization needed for simulation
    reg clk_25MHz = 0;
    
    always @(posedge clk_100MHz) clk_50MHz <= !clk_50MHz;
    always @(posedge clk_50MHz) clk_25MHz <= !clk_25MHz;
    

    (如果不通过时序分析确保预分频器本身可以在高频域中运行,非二次方预分频器并不总是安全的。)

    【讨论】:

    • 嗨,克利福德。好的。谢谢。那么解决这个问题的最佳方法是什么? olimex 板有一个固定的 100 Mhz 时钟,而 iCE40HX1K-VQ100 没有系统时钟 PLL,所以我坚持使用 100 Mhz 时钟。在 verilog 中创建 25 Mhz 时钟有帮助吗?还是这仍然“以 100 Mhz 运行”?克里斯托夫
    • 克利福德谢谢!在 xilinx 和 altera 板上开始使用 VHDL 时,有人告诉我应该永远使用if rising_edge(some-REGISTER)(即不是时钟信号本身)。原因是“时钟信号在 FPGA 上以特殊方式路由,因为它们需要同时到达所有模块。......这适用于时钟信号,不适用于其他信号”。我是否可以得出结论-只要除法是二的幂-无论如何都可以安全地执行此操作。或者这是特定于 lattice 芯片或 yosys 的?克里斯托夫
    • @kristoff 是的。原因是在这种情况下,中间信号只路由到一个触发器,因此不需要长度匹配。最终的 clk_25MHz 时钟将通过 arachne-pnr 自动路由到全局时钟缓冲区。如果你想明确一点,你可以手动实例化一个 SB_GB 单元,但这只是编码风格的问题,因为无论如何 arachne-pnr 应该足够聪明,可以为你做到这一点。
    • 维伦丹克!!!关于 fpga 路由软件如何在内部工作的非常有用且非常有趣的信息! :-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-14
    • 1970-01-01
    • 1970-01-01
    • 2010-09-24
    • 2021-12-04
    • 2014-03-11
    • 2012-12-11
    相关资源
    最近更新 更多