正在加载图片...
物结建颇87 下载 相似:但由于对复杂模块的引用时,其实例语句不能像对门实例语句那样指定时延,故此处 不会导致混淆。 参数值还可以表示长度。下面是通用的M×N乘法器建模的实例。 module Multiplier(Opd 1, Opd 2, Result parameter EM=4,EN=2;//默认值 input [EM: 1] Opd 1 input [EN: 1] opd 2 output [EM+EN: 1] Result assign Result Opd 1* Opd 2: endmodule 这个带参数的乘法器可在另一个设计中使用,下面是8×6乘法器模块的带参数引用方式: wire [1: 8] Pipe Reg: wire [l: 6]Dbus; wire [1: 14 Addr counter Multiplier #(8, 6)Mi(Pipe Reg, Dbus, Addr counter) 第1个值8指定了参数EM的新值,第2个值6指定了参数EN的新值 94外部端口 在迄今为止所见到的模块定义中,端口表列举出了模块外部可见的端口。例如 module Scram A(Arb, Ctrl, Mem Blk, Byte)i input[0: 3] Arb input ctrl input [8: 0] Mem Blk; output [0: 3] Byte endmodule Amb、Cmrl、 Mem blk和Bvte为模块端口。这些端口同时也是外部端口,即在实例中, 釆用名称关联方式时,外部端口名称用于指定相互连接。下面是模块 Scram a的实例, Scram A SX. Byte(B1), Mem Blk(Mi), ctrI(CI), Arb(Al))i 在模块ScrωmA中,外部端口名称隐式地指定。Ⅴ erilog HDl中提供显式方式指定外部端 口名称。这可以通过按如下形式指定一个端口来完成 external port name (internal port name) 下面是同一个例子,只不过是显式地指定外部端口 module Scram B(. Da ta(Arb), Control(ctrl) Mem Word (Mem Blk), Addr(Byte)) input [0: 3] Arbi input ctrl input [8: 0]Mem Blk; utput [0: 3] Byte 模块 Scram B在此实例中指定的外部端口是Data、 Control、 Mem Word和Addr。端口表显 式地表明了外部端口和内部端口之间的连接。注意外部端口无需声明,但是模块的内部端口相似;但由于对复杂模块的引用时,其实例语句不能像对门实例语句那样指定时延,故此处 不会导致混淆。 参数值还可以表示长度。下面是通用的 M×N乘法器建模的实例。 m o d u l e M u l t i p l i e r(O p d _ 1 , O p d _ 2 , R e s u l t) ; p a r a m e t e r E M = 4,E N = 2; //默认值 i n p u t [E M:1] O p d_ 1 ; i n p u t [E N:1] O p d_ 2 ; o u t p u t [E M+E N:1] R e s u l t; a s s i g n R e s u l t = O p d _ 1 * O p d _ 2; e n d m o d u l e 这个带参数的乘法器可在另一个设计中使用,下面是 8×6乘法器模块的带参数引用方式: w i r e [1:8] P i p e _ R e g; w i r e [1:6] D b u s; w i r e [1:14] A d d r _ C o u n t e r; . . . M u l t i p l i e r #(8,6) M 1(P i p e_R e g,D b u s,A d d r_C o u n t e r) ; 第1个值8指定了参数E M的新值,第2个值6指定了参数E N的新值。 9.4 外部端口 在迄今为止所见到的模块定义中,端口表列举出了模块外部可见的端口。例如, m o d u l e S c r a m _ A(A r b , C t r l , M e m _ B l k , B y t e) ; i n p u t[0:3] A r b; i n p u t C t r l; i n p u t [8:0] M e m _ B l k; o u t p u t [0:3] B y t e; . . . e n d m o d u l e A r b、C t r l、M e m _ B l k和B y t e为模块端口。这些端口同时也是外部端口,即在实例中,当 采用名称关联方式时,外部端口名称用于指定相互连接。下面是模块 S c r a m _ A的实例。 Scram_A SX( .B y t e(B 1) , .M e m _ B l k(M 1) , .C t r l(C 1) , .A r b(A 1) ) ; 在模块S c r a m _ A中,外部端口名称隐式地指定。 Verilog HDL中提供显式方式指定外部端 口名称。这可以通过按如下形式指定一个端口来完成: .e x t e r n a l _ p o r t _ n a m e(i n t e r n a l _ p o r t _ n a m e) 下面是同一个例子,只不过是显式地指定外部端口。 m o d u l e S c r a m _ B ( .D a t a(A r b) , .C o n t r o l(C t r l) , .M e m _ W o r d(M e m _ B l k) , .A d d r(B y t e) ) ; i n p u t [0:3] A r b; i n p u t C t r l; i n p u t [ 8 : 0 ]M e m _ B l k; o u t p u t [0:3] B y t e; . . . e n d m o d u l e 模块S c r a m _ B在此实例中指定的外部端口是 D a t a、C o n t ro l、M e m _ Wo rd和A d d r。端口表显 式地表明了外部端口和内部端口之间的连接。注意外部端口无需声明,但是模块的内部端口 第9章 结 构 建 模 87 下载
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有