TA的每日心情 | 开心 2019-11-20 15:05 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
% T, B7 O8 Q# a
.OUT300A[6:4](OUT300[2:0]), //这样写就会有问题 报错
2 H: v1 L- e* b: K, [+ U9 v; L2 j------- 这样不出错才真的有问题啊!!
: R# m w7 @4 |- c你都定义了OUT300A是8比特的,哪有在端口列表时改他的道理?
: @! f! Y6 z7 A) S; R或者说,你在模块定义时,这个“东西”你还可以理解为它是一个变量,从硬件上来说,就是规定了这个信号就是8比特的;而在例化时,.xxxx的形式,xxxx就只是一个表示符号,代表后面括号里的信号是与模块内的xxxx相连接而已。
+ b9 I9 l% o; \- i H你写成 .OUT300A[6:4](OUT300[2:0]), 估计是想把外部的 OUT300的[2:0],用模块内部的OUT300A的[6:4]驱动,那么你就直接写成:- q4 N2 V$ \$ b. g9 v3 n
.OUT300A({signal_nc0,OUT300[2:0],signal_nc2[3:0]}) ,$ q: Y& V2 ?& K9 s, _
这样不就行了吗? [8 Y# y# Z6 P9 M9 J4 j, k' P
或者在顶层另外声明一个变量 wire [7:0] xxxyyy;9 u$ \, n8 V( `: Z! X2 [4 s. q
然后连接为:6 S# V- D$ t& s
.OUT300A(xxxyyy[7:0]) ,7 \. ]( c7 S% I3 }
然后重新驱动OUT300:
# c2 G1 g1 k0 u4 X assign OUT300[2:0] = xxxyyy[6:4];
# u, J0 R9 A: y+ \3 x这样也是正确得妥妥的啊! |
|