使用ModelSim体育学生版10.4a。编写了一个模块,用于1-4解复用。为这个模块编写了一个测试平台。编译得很好。在尝试模拟时,我得到以下错误:
**警告:(vsim-3015) D:/ModelSim/examples/Lab3_3.v(42):PCDPC -端口大小(1)与端口'in‘的连接大小(4)不匹配。端口定义位于: D:/ModelSim/examples/Lab3_3.v(1).Time: 0 ns迭代:0实例:/tb_demux/D 0文件:d:/ModelSim/examples/Lab3_3.v* Error (可抑制):(vsim-3053) D:/ModelSim/examples/Lab33.v(42):非法输出或端口“out”的inout端口连接。# Time: 0 ns迭代:0实例: /tb_demux/DA0 0 File: d:/ModelSim/examples/Lab3_3.v*警告:(vsim-3015) D:/ModelSim/examples/Lab3_3.v(42):PCDPC -端口大小(4)与端口'out‘的连接大小(1)不匹配。端口定义位于: D:/ModelSim/examples/Lab3_3.v(1).Time: 0 ns迭代:0实例: /tb_demux/DA0 0文件:d:/ModelSim/示例/Lab3_3.v
守则是:
module demux(input in, input[1:0] S, output reg[3:0] out);
always @(in or S)
begin
case(S)
2'b00: begin
out[0] = in;
out[1] = 0;
out[2] = 0;
out[3] = 0;
end
2'b01: begin
out[0] = 0;
out[1] = in;
out[2] = 0;
out[3] = 0;
end
2'b10: begin
out[0] = 0;
out[1] = 0;
out[2] = in;
out[3] = 0;
end
2'b11: begin
out[0] = 0;
out[1] = 0;
out[2] = 0;
out[3] = in;
end
endcase
end
endmodule
module tb_demux;
wire[3:0] out;
reg[1:0] S;
reg in;
demux DA0(out, S, in);
initial
begin
S = 2'b00; in = 0;
#100 S = 2'b01; in = 1;
#100 S = 2'b10; in = 0;
#100 S = 2'b11; in = 1;
end
initial #400 $stop;
initial $monitor("Select = %b, In = %b, Out = %b", S, in, out);
endmodule似乎不能让这件事成功。谢谢。
发布于 2016-03-03 02:35:21
设计的实例化还没有从testbench中正确地完成。设计中的端口被错误地映射到testbench。
将设计的实例化从testbench更改为:
demux DA0(in,s,out);使用名称来实例化设计总是比在verilog中使用顺序更好,以避免这类端口不匹配.
发布于 2016-03-03 02:36:38
这样啊,原来是这么回事。我显然是把变量按错误的顺序输入测试台。
正确的路线是:
demux DA0(in, S, out);因此,变量的顺序与模块中声明的顺序相同:
module demux(input in, input[1:0] S, output reg[3:0] out);https://stackoverflow.com/questions/35761810
复制相似问题