5.3 实例化语句
1. 例化语法
一个模块能够在另外一个模块中被引用,这样就建立了描述的层次。模块实例化语句形式如
下:
module_name instance_name(port_associations) ;
信号端口可以通过位置或名称关联;但是关联方式不能够混合使用。端口关联形式如下:
port_expr / / 通过位置。
.PortName (port_expr) / / 通过名称。
例[1]:
....
module and (C,A,B);
...
and A1 (T3, A, B ); //实例化时采用位置关联,T3对应输出端口C,A对应A,B对应B。
and A2( //实例化时采用名字关联,.C是and 器件的端口,其与信号T3相连
.C(T3),
.A(A),
.B(B)
);
2004-08-16 第29页,共41页
版权所有,侵权必究
绝密
Verilog HDL 入门教程请输入文档编号
....
port_expr 可以是以下的任何类型:
1) 标识符(reg 或net )如 .C(T3),T3为wire型标识符。
2) 位选择,如 .C(D[0]),C端口接到D信号的第0bit 位。
3) 部分选择,如 .Bus (Din[5:4])。
4) 上述类型的合并,如 .Addr({ A1,A2[1:0]}。
5) 表达式(只适用于输入端口),如 .A (wire Zire = 0 )。
建议:在例化的端口映射中请采用名字关联,这样,当被调用的模块管脚改变时不易出错。
2. 悬空端口的处理
在我们的实例化中,可能有些管脚没用到,可在映射中采用空白处理,如:
DFF d1 (
.Q(QS),
.Qbar ( ),
.Data (D ) ,
.Preset ( ), // 该管脚悬空
.Clock (CK)
); //名称对应方式。
对输入管脚悬空的,则该管脚输入为高阻 Z,输出管脚被悬空的,该输出管脚废弃不用。
3. 不同端口长度的处理
当端口和局部端口表达式的长度不同时,端口通过无符号数的右对齐或截断方式进行匹配。
例如:
module Child (Pba, Ppy) ;
input [5:0] Pba;
output [2:0] Ppy;
. . .
endmodule
module Top;
wire [1:2] Bdl;
wire [2:6] M p r;
Child C1 (Bdl, Mpr) ;
endmodule
2004-08-16 第30页,共41页
版权所有,侵权必究
绝密
Verilog HDL 入门教程请输入文档编号
在对Child 模块的实例中,Bdl[2]连接到Pba[ 0 ],Bdl[1] 连接到Pba[ 1 ] ,余下的输入端口
Pba[5] 、Pba[4] 和Pba[3] 悬空,因此为高阻态z 。与之相似,Mpr[6]连接到Ppy[0],Mpr[5]连接到
Ppy[1],Mpr[4] 连接到Ppy[2 ] 。参见下图:
图8 端口匹配
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。