verilog --例化-层次化

下图显示了一个带有子模块的非常简单的电路 在本练习中,创建模块mod_a的一个实例,然后将模块的三个引脚(in1 in2和out)连接到顶级模块的三个端口(连接a b和out) mod_a模块是为你提供的-你必须实例化它。

在连接模块时,只有模块上的端口是重要的。您不需要知道模块内部的代码。模块mod_a的代码是这样的:

module mod_a ( input in1, input in2, output out );
    // Module body
endmodule

模块的层次结构是通过在另一个模块中实例化一个模块来创建的,只要使用的所有模块都属于同一个项目(这样编译器就知道在哪里可以找到模块)。一个模块的代码没有写在另一个模块的主体中(不同模块的代码没有嵌套)。

您可以通过端口名称或端口位置将信号连接到模块。对于额外的练习,可以尝试这两种方法。

 

1、将信号连接到模块端口有两种常用的连接方法:

按位置或按名称。

通过位置将连接线连接到端口的语法应该很熟悉,因为它使用类似c的语法。

在实例化模块时,根据模块的声明从左到右连接端口。

例如:mod_a instance1 (wa, wb, wc);它实例化一个mod_a类型的模块,并给它一个实例名“instance1”,然后将信号wa(新模块外部)连接到新模块的第一个端口(in1),将wb连接到第二个端口(in2),将wc连接到第三个端口(out)。

这种语法的一个缺点是,如果模块的端口列表发生了更改,那么还需要找到并更改模块的所有实例以匹配新模块。

2、通过名称将信号连接到模块的端口允许连接保持正确连接,即使端口列表改变。

但是,这种语法更冗长。mod_a instance2 (.out(wc), .in1(wa), .in2(wb));上面的代码行实例化一个名为“instance2”的mod_a类型的模块,然后将信号wa(模块外部)连接到名为in1的端口,将wb连接到名为in2的端口,将wc连接到名为out的端口。

注意,这里端口的顺序是不相关的,因为无论它在子模块的端口列表中的位置如何,连接都将被建立到正确的名称。还要注意此语法中紧靠端口名称前面的句点。

module top_module ( input a, input b, output out );

    mod_a  in (
        .out (out),
        .in1 (a),
        .in2 (b)
    );
endmodule

 

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值