实例化语句 1. 例化语法 一个模块能够在另外一个模块中被引用,这样就建立了描述的层次。模块实例化语句形式如 下:module_name instance_name(port_associations) ; 信号端口可以通过位置或名称关联;但是关联方式不能够混合使用。端口关联形式如下: port_expr / / 通过位置。 .PortName (port_expr) / / 通过名称。 例[1]: .... module and (C,A,B);
input A,B; output C;
... and A1 (T3, A, B ); //实例化时采用位置关联,T3对应输出端口C,A对应A,B对应B。 and A2( //实例化时采用名字关联,.C是and 器件的端口,其与信号T3相连
.C(T3), .A(A), .B(B) );
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
|