我有两个模块
以下代码片段最相关,并附于下方:
顶级模块:
counter counter1 (..., error_count); lcd lcd1 (..., error_count);
计数器模块:
module counter (..., error_count); ... output reg [31:0] error_count = 0; ... //Update counter every clock cycle endmodule
lcd模块:
module lcd (..., error_count); ... input [31:0] error_count; ... //error_count used to display on LCD endmodule
这段代码有什么问题?显示屏只输出0作为输出。我传递矢量的方式有什么问题吗?
其他信息: 我正在使用Xilinx Spartan 3E入门套件来测试此代码。 LCD代码很好,我用本地计数器(reg [31:0])进行了测试。
答案 0 :(得分:5)
您需要在顶级模块中声明32位线路以连接这两个端口。
wire [31:0] error_count;
如果不加以说明,则会声明一个隐含的网络,它只是一个1位的网络,不会正确连接向量。
这个错误是经典的Verilog陷阱。这里的介绍对这个和其他人有一个很好的解释:
http://www.sutherland-hdl.com/papers/2006-SNUG-Boston_standard_gotchas_presentation.pdf