HDLBits (55) — 组合电路 A 和 B
2022-02-28 17:58 作者:僚机Wingplane | 我要投稿
本题链接:
https://hdlbits.01xz.net/wiki/Mt2015_q4
摘自2015年中期问题4
有关此处使用的子模块,请参见mt2015_q4a和mt2015_q4b。顶层设计包括两个子电路A和B的实例化,如下所示。

实现这个电路。

题目
提示:
您可以选择使用图中所示的两个子模块分层次地创建这个电路,或者不分层次地创建相同的功能。

答案

在一个模块中引用另一个模块,对其端口进行相关连接,叫做模块例化。模块例化建立了描述的层次。信号端口可以通过位置或名称关联,端口连接也必须遵循一些规则。
输入端口
模块例化时,从模块外部来讲, input 端口可以连接 wire 或 reg 型变量。这与模块声明是不同的,从模块内部来讲,input 端口必须是 wire 型变量。
输出端口
模块例化时,从模块外部来讲,output 端口必须连接 wire 型变量。这与模块声明是不同的,从模块内部来讲,output 端口可以是 wire 或 reg 型变量。
输入输出端口
模块例化时,从模块外部来讲,inout 端口必须连接 wire 型变量。这与模块声明是相同的。
悬空端口
模块例化时,如果某些信号不需要与外部信号进行连接交互,我们可以将其悬空,即端口例化处保留空白即可,上述例子中有提及。
output 端口正常悬空时,我们甚至可以在例化时将其删除。
input 端口正常悬空时,悬空信号的逻辑功能表现为高阻状态(逻辑值为 z)。但是,例化时一般不能将悬空的 input 端口删除,否则编译会报错。
参考内容:
5.2 Verilog 模块例化 | 菜鸟教程:
https://www.runoob.com/w3cnote/verilog-generate.html