0

我有两个模块

  1. 计数器:输出是一个称为 error_count 的向量。
  2. lcd:在 LCD 上显示代码的模块。输入包括时钟和error_count。

以下代码片段最相关并附在下面:

  1. 顶层模块:

    计数器 counter1 (..., error_count);
    lcd lcd1 (..., error_count);
  2. 计数器模块:

    模块计数器(...,error_count);
    ...
    输出 reg [31:0] error_count = 0;
    ... //每个时钟周期更新计数器
    端模块
    
  3. 液晶模组:

    模块 lcd (..., error_count);
    ...
    输入 [31:0] 错误计数;
    ... //error_count 用于在 LCD 上显示
    端模块
    

这段代码有什么问题?显示器只打印 0 作为输出。我传递向量的方式有什么问题吗?

附加信息:我正在使用 Xilinx Spartan 3E 入门套件来测试此代码。LCD 代码很好,我已经用本地计数器(reg[31:0])对其进行了测试。

4

1 回答 1

5

您需要在顶层模块中声明 32 位线以连接两个端口。

wire [31:0] error_count;

如果您忽略它,则会声明一个隐式网络,它只是一个 1 位线,并且不会正确连接向量。

这个错误是一个经典的 Verilog 陷阱。这里的演示文稿很好地解释了这个和其他:

http://www.sutherland-hdl.com/papers/2006-SNUG-Boston_standard_gotchas_presentation.pdf

于 2012-05-20T12:21:23.067 回答