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

时间:2012-05-20 09:32:47

标签: module verilog xilinx lcd spartan

我有两个模块

  1. counter:输出是一个名为error_count的向量。
  2. lcd:用于在LCD上显示代码的模块。输入包括clock和error_count。
  3. 以下代码片段最相关,并附于下方:

    1. 顶级模块:

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

      module counter (..., error_count);
      ...
      output reg [31:0] error_count = 0;
      ... //Update counter every clock cycle
      endmodule
      
    3. lcd模块:

      module lcd (..., error_count);
      ...
      input [31:0] error_count;
      ... //error_count used to display on LCD
      endmodule
      
    4. 这段代码有什么问题?显示屏只输出0作为输出。我传递矢量的方式有什么问题吗?

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

1 个答案:

答案 0 :(得分:5)

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

wire [31:0] error_count;

如果不加以说明,则会声明一个隐含的网络,它只是一个1位的网络,不会正确连接向量。

这个错误是经典的Verilog陷阱。这里的介绍对这个和其他人有一个很好的解释:

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