当我试图通过testbench模拟以下模块时,我会收到以下错误:
未解决的对“if2to4”的引用
这是我的代码:
module h3to8(din, eout, en);
//Port Assignments
input [2:0] din;
input [0:0] en;
output reg [7:0] eout;
//3-to-8 decoder
always @(din)
begin
eout = 8'b00000000;
if(din[2] == 1'b0)
if2to4 half1 (din[1:0], eout[3:0], en);
else
if2to4 half2 (din[1:0], eout[7:4], en);
end
endmodule
module if2to4 (in, out, en);
//Port Assignments
input [1:0] in;
input [0:0] en;
output reg [3:0] out;
//2-to-4 decoder
always @(in)
begin
if(en == 0)
out = 4'b0000;
else
if(in == 0)
out = 1;
else if(in == 1)
out = 2;
else if(in == 2)
out = 4;
else
out = 8;
end
endmoduleverilog码被设计成使用两个2-4译码器来实现3-8解码器.我认为我正确地实例化了这些模块,但是我一直收到一个与模块if2to4有关的未解决的引用错误。代码编译时没有错误,此特定错误仅在试图运行模拟时发生。
发布于 2014-03-05 00:49:51
您不能在总是这样的块中实例化模块。试试这个:
module h3to8(din, eout, en);
//Port Assignments
input [2:0] din;
input [0:0] en;
output reg [7:0] eout;
//3-to-8 decoder
if2to4 half1 (din[1:0], eout[3:0], en);
if2to4 half2 (din[1:0], eout[7:4], en);
endmodule或者,您可以使用din[2]作为启用的一部分:
module h3to8(din, eout, en);
//Port Assignments
input [2:0] din;
input [0:0] en;
output reg [7:0] eout;
//3-to-8 decoder
if2to4 half1 (din[1:0], eout[3:0], en&~din[2]);
if2to4 half2 (din[1:0], eout[7:4], en&din[2]);
endmodulehttps://stackoverflow.com/questions/22186236
复制相似问题