首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Verilog -端口大小不匹配连接大小

Verilog -端口大小不匹配连接大小
EN

Stack Overflow用户
提问于 2016-03-03 02:04:06
回答 2查看 11.5K关注 0票数 0

使用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

守则是:

代码语言:javascript
复制
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

似乎不能让这件事成功。谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-03 02:35:21

设计的实例化还没有从testbench中正确地完成。设计中的端口被错误地映射到testbench。

将设计的实例化从testbench更改为:

代码语言:javascript
复制
demux DA0(in,s,out);

使用名称来实例化设计总是比在verilog中使用顺序更好,以避免这类端口不匹配.

票数 3
EN

Stack Overflow用户

发布于 2016-03-03 02:36:38

这样啊,原来是这么回事。我显然是把变量按错误的顺序输入测试台。

正确的路线是:

代码语言:javascript
复制
demux DA0(in, S, out);

因此,变量的顺序与模块中声明的顺序相同:

代码语言:javascript
复制
module demux(input in, input[1:0] S, output reg[3:0] out);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35761810

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档