TA的每日心情 | 郁闷 2020-2-18 15:32 |
---|
签到天数: 8 天 [LV.3]偶尔看看II
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 wsk0523 于 2021-3-18 15:53 编辑 c7 t" o' i2 U9 ]4 O# Z2 S
! i S7 L/ A6 C8 S; O" G
网上可以查到的inout的设计方法,多是赋一个线型,然后用条件语句做个选通器。对地多位的一个端口如果方向一致很好操作,如果方向不同怎么办。0 c( k( R: R& B: o7 r
用systemverilog,我试了如下的代码:
3 v7 m% S g' U8 n$ s inout [DATA_BIT-1:0] io_port;' l2 ^1 y3 B8 l& t
always_comb
9 D9 ~, B S! G. J, V$ a3 d( X begin6 {8 i. C P8 L6 c. I
for(int i = 0; i < DATA_BIT; i++)" H( N" c1 C+ e+ [# S
begin! @7 c3 q! ~* l, e
io_port= direction?'z:data_in;
5 r* i+ M2 g# D1 Q end) e8 n6 I1 {& J+ M
end
$ `1 _9 z9 K7 m2 _+ s6 O+ ^/ D y2 s, D9 m2 Z2 C! Y
用quartus是可以的,但是用multisim仿真就会报错,
' @- A3 ~" @$ g, e7 U9 ]) [
我想是代码不规范造成的,即使我把inout改为wire型,这里能过,multisim仍然是不能过。这该怎么办啊。我并不想每个端口一条一条地写assign,那样一来麻烦,二来使这个模块失去了灵活性,没法灵活地改变端口的位数。
3 j# V( _. s9 ?0 m! R% ^4 M4 H |
|