TA的每日心情 | 郁闷 2020-2-18 15:32 |
---|
签到天数: 8 天 [LV.3]偶尔看看II
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 wsk0523 于 2021-3-18 15:53 编辑
& r; K9 ]: X% P( x
2 z! R" ]: r, Y+ t: Y: ^5 |网上可以查到的inout的设计方法,多是赋一个线型,然后用条件语句做个选通器。对地多位的一个端口如果方向一致很好操作,如果方向不同怎么办。) G; ?* w* u7 l, b; c% I+ v4 U
用systemverilog,我试了如下的代码:$ O! ~; k' \9 T( Y* K5 |
inout [DATA_BIT-1:0] io_port;
5 T0 u" {; q) B3 m0 _0 P* H always_comb3 h* R7 N6 u& ?0 u p. s4 [* l1 b
begin; P% [ M; |2 j4 u
for(int i = 0; i < DATA_BIT; i++)4 i7 `' L- c" [6 f+ O0 K
begin8 ~! ?# q7 @. T6 \$ V, \
io_port= direction?'z:data_in;
: w D/ o. x1 u: }& U$ k; ~0 ?9 e end
- q7 v* ^& I6 I3 T5 X, O end+ B# x- ^7 p/ c, E5 H6 p! U/ Z1 m
7 i1 N* p* M L* j) }
用quartus是可以的,但是用multisim仿真就会报错,
9 J' `" E2 m( p+ Q, V
我想是代码不规范造成的,即使我把inout改为wire型,这里能过,multisim仍然是不能过。这该怎么办啊。我并不想每个端口一条一条地写assign,那样一来麻烦,二来使这个模块失去了灵活性,没法灵活地改变端口的位数。+ b8 J& T7 `, ~0 |1 N
|
|