TA的每日心情 | 开心 2019-11-20 15:05 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
( y8 V# O# [, p* j# ^.OUT300A[6:4](OUT300[2:0]), //这样写就会有问题 报错- S! r) z( `; |/ t; I
------- 这样不出错才真的有问题啊!!
) p2 d" D0 n* s: M你都定义了OUT300A是8比特的,哪有在端口列表时改他的道理?
5 {; L D2 d+ M或者说,你在模块定义时,这个“东西”你还可以理解为它是一个变量,从硬件上来说,就是规定了这个信号就是8比特的;而在例化时,.xxxx的形式,xxxx就只是一个表示符号,代表后面括号里的信号是与模块内的xxxx相连接而已。: T* Q; }5 D; R" O" c8 b
你写成 .OUT300A[6:4](OUT300[2:0]), 估计是想把外部的 OUT300的[2:0],用模块内部的OUT300A的[6:4]驱动,那么你就直接写成:
3 ]" @1 w. f# E.OUT300A({signal_nc0,OUT300[2:0],signal_nc2[3:0]}) ,
# z4 a' f0 g( V* y' C6 l这样不就行了吗?
% N* z( e; C% _- q; P/ r5 r或者在顶层另外声明一个变量 wire [7:0] xxxyyy;
$ J) {0 ~6 ~2 A8 x; I8 Y# E然后连接为:
( h' Y$ M2 H$ X8 l.OUT300A(xxxyyy[7:0]) ,+ s) t3 R( s8 l- Y1 k- \: Z
然后重新驱动OUT300:# R) f! J5 o& W
assign OUT300[2:0] = xxxyyy[6:4];5 X& `9 \9 ]2 z) h" l. f# j
这样也是正确得妥妥的啊! |
|