元件例化是指在一个module中调用了其他的module。
例如,下图中模块MUXK调用了两个MUX21A模块u1和u2。
实现方式如下:
相信你已经看明白了。解释如下:
1、要调用某个子模块,直接写上子模块名MUX21A,后面加上实例名u1,再后面括号内是子模块引脚信号与当前顶层module内信号的连接关系。
2、实例名u1,u2可以省略。
3、子模块引脚名(.a .b .s .y)可以颂友省略,条件是括号内被连接的 信号排列顺序 ,需要与子模块定义时的引脚名保持一致。
4、如果连接线tmp是单根信号线,可以省略不定义。
即,简略版的描述可以这样:
需要注意的事项
1、虽然上面说了一些可以省略的内容,但为了保证便于调试,以及防止因省略产生歧义,强烈建议不要省略。
2、姿慧在连接两个多位宽端口迹樱答(信号线宽大于1)的时候,连接线wire必须定义,且wire线宽需与总线宽度一致。否则,程序会认为只连接总线所有信号线里的其中一根线。
例如:下图元件例化中,用导线data连接DOUT[7..0]和B[7..0]时,必须事先定义
wire [7:0] data
首先在结弊帆喊构体租野中声明元件:
COMPONENT
GENERIC(类轿旦属参数说明);
PORT(端口参数列表);
ENDCOMPONENT
[:][GENERICMAP(参数映射)]
PORTMAP(端口映射);
例如:
COMPONENTand_gate
GENERIC(delay:time)
PORT(a,b:instd_logic
c:outstd_logic)
ENDCOMPONENT
U1:and_gateGENERICMAP(10ns)
PORTMAP(in1=>a,in2=>b,out=>c)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)