Verilog:将向量作为端口传递给模块

Nee*_*hta 0 verilog module spartan lcd xilinx

我有两个模块

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

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

  1. 顶层模块:

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

    模块计数器(...,error_count);
    ...
    输出寄存器[31:0] error_count = 0;
    ... //每个时钟周期更新计数器
    终端模块
    
  3. LCD模块:

    模块LCD(...,error_count);
    ...
    输入[31:0] error_count;
    ... //用于在LCD上显示的error_count
    终端模块
    

此代码有什么问题?显示屏仅输出0作为输出。我传递向量的方式有什么问题吗?

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

dwi*_*kle 5

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

wire [31:0] error_count;

如果不考虑这一点,则将声明一个隐式网络,该网络仅是1位导线,将无法正确连接向量。

这个错误是经典的Verilog陷阱。这里的演示文稿对此和其他内容有很好的解释:

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