4、模块的实例化

模块的实例化

目录

模块的实例化

    4.1、显式实例化和隐式实例化

    4.2、模块实例化时的参数载入

(1)defparam语句

(2)参数传递法


       完成一个模块声明相当于创建了一个模板,只是说明模块如何工作及其内部结构、外部接口;模块的使用必须通过模块的实例化完成。每个实例都是模块的一个完全的拷贝,都代表了实际电路中的某个功能结构单元,相互独立、并行。

    4.1、显式实例化和隐式实例化

       显式实例化:模块实例的端口采用名字映射的方式,实例化时不考虑端口声明的变量顺序,而是将模块实例外部的信号直接对应于模块端口的变量名。如:

       add add_inst1 (.sum(sum1),.cout(cout1),.a(a1),.b(b1),.cin(cin1));

       隐式实例化:模块实例的端口采用位置映射的方式,即实例化模块时外部信号需要与该模块端口声明的顺序一致。如:

       fulladder add_inst1 ( a1, b1, cin1, sum1, cout1)

       如果实例化时端口长度不匹配,则采取右对齐方式。

 

    4.2、模块实例化时的参数载入

       如果一个模块内部定义了参数变量,当它在另一个模块中被实例化时,其内部定义的参数值是可改变的。

(1)defparam语句

       使用defparam改写被调用模块的参数值时,将使用参数的层次名。一个模块中可以使用多个defparam语句,重新定义参数值。(但现在defparam语句结构被认为是一种不好的编码风格)

(2)参数传递法

       使用“#”符号隐式重新定义参数,允许按任意顺序改写参数值,而可以不考虑参数定义的顺序。(Verilog-2001)

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值