找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划
查看: 2379|回复: 5
打印 上一主题 下一主题

求教!关于双向总线缓冲器的问题

[复制链接]

1

主题

61

帖子

-8962

积分

未知游客(0)

积分
-8962
跳转到指定楼层
1#
发表于 2010-11-22 22:10 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式

EDA365欢迎您!

您需要 登录 才可以下载或查看,没有帐号?注册

x
本帖最后由 Supercommando 于 2010-11-22 22:11 编辑 8 K! N( z, S7 d: M- [4 Z3 V$ F! b* q

/ ]. }+ s( d9 e9 `  \* k/ F双向总线缓冲器,dr=1且en=1时,b<=a;dr=0,且en=1时,a<=b。a、b均为双向端口。
6 h- w" i9 _5 g* Q用Verilog编写,在quartus下用波形仿真,怎么仿真结果都不对。+ B3 v- W1 Q% P
问题1:- i3 ]$ @" {0 n- r0 f3 \; |
          这样写正确么?$ \$ F' O! Z/ [" T6 U" x0 |7 I
问题2:
+ s- @, O" q1 }         怎么样使用波形仿真才正确?: q$ ~# ~; ~, k2 ?0 B
5 f. ]% R: F, R$ e; e! y
请高手解答,谢谢!
4 B! \! q9 ]. m1 d9 p
; @$ a* i0 s9 u+ h2 ~# D2 H程序如下:. n/ U2 b3 _" n3 H+ a) w0 s* W' w
module tri_bibuffer(a,b,en,dr);: m. y" Z9 ^/ j& v: z
inout [7:0] a,b;% D$ `0 X8 }+ T0 O
input en,dr;8 ~+ q+ Q) N2 \9 A, {
# m3 S9 b( W% X. ?" L) X
reg [7:0] a,b;
/ R& j5 u/ `3 @/ x" F" Pwire en,dr;0 N$ b) Q& u1 D. Y" ^7 t6 y
6 l$ o1 }/ R  F  K' Y3 Z- N
always @ (dr,en)
& K  `0 L7 g2 f9 P% m: w+ B6 Sbegin* M  k6 S+ z9 W7 o3 x+ Y
  if(dr)$ B) B) w& V+ S* t6 E  P6 [
   begin& R! I: H$ s; q/ O, J1 Y
    if(en)0 V0 A5 R+ A; C% P5 I( |0 y3 G  a* v
     b <= a;
+ T& ?+ Z! \1 b7 }    else) ?7 D: [4 ^% Y" M4 A! p5 p& V' \
     b <= 'bz;" O0 A( y% A+ _1 `  ^
   end. f; ~: w/ R' X: l$ t
  else' j. P! p# ?2 c) J
   begin
; P' ?/ K8 d& K  |    if(en)5 b& A( q2 v' X3 n) m/ z3 G
     a <= b;  t- ?5 }) _) ~) V6 b: O# W. ?% F
    else
# |& e6 q0 ]$ j- m0 c9 Z     a <= 'bz;4 L1 `7 Z( k% e; n/ \  ^
   end
  I2 N1 ?+ Z9 p1 P* gend
/ c8 \9 O, ^5 }5 s! {- M2 Jendmodule2 J* ^: @( M: \8 u

- m. o' h; f* d! G' C) P) \/ O: t仿真波形如下:
9 B$ c0 M! q$ |9 m  d# w0 S

未命名.JPG (100.32 KB, 下载次数: 1)

未命名.JPG
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 支持!支持! 反对!反对!

1

主题

61

帖子

-8962

积分

未知游客(0)

积分
-8962
6#
 楼主| 发表于 2010-11-24 16:25 | 只看该作者
本帖最后由 Supercommando 于 2010-11-24 16:26 编辑
5 n$ `8 Q5 b* {" T+ ~* `% _+ S0 R, q7 L! }9 a0 J' y  e
回复 00750 的帖子+ q4 J8 z6 z6 B9 |

: D0 H0 r8 w: u' Q程序是书上的,我采用另一种方法后综合的结果很优化,还想问个问题:这个程序的测试的时候,如果输入a,b均为高阻态时,相应的输出是不定态,这是怎么回事?实际应用情况下输入与输出是否会同时为高阻态?为什么?) n; l! p2 X6 C7 s# J6 I$ ~! F
谢谢!
' Q" [6 F* J7 N# g
4 S& v% g* e- P0 E5 y9 [仿真图如下:* ?, B6 A, {/ ?$ n
2 M# H4 }/ l4 |7 E9 F: t" V( G& ?

, q) x7 v, v2 g
$ T2 y7 F0 \  x, K" u- [

1

主题

61

帖子

-8962

积分

未知游客(0)

积分
-8962
5#
 楼主| 发表于 2010-11-24 16:04 | 只看该作者
分析综合后的RTL级电路
8 p. b) b  I! |" t) V2 T% v! |8 c9 s 8 Q  w$ m( O& r6 O+ o8 o

; ^: W# S6 v1 n3 ^. Q" c功能仿真图8 C* F; P' s& s6 L' j& @+ ]

0 T+ x7 I$ \3 }; E0 |1 h8 @

1

主题

61

帖子

-8962

积分

未知游客(0)

积分
-8962
4#
 楼主| 发表于 2010-11-24 16:01 | 只看该作者
本帖最后由 Supercommando 于 2010-11-24 16:05 编辑
, D% w! _: O1 f% K& }4 @. \' [2 x; E# A6 f- |+ _9 h8 q3 q; {
上面的代码是书上的,分析综合后发现电路很大,效果也不好,采用新的方法效果很好,看来可综合的代码很重要。
% g/ k" B/ Z& R9 v; b$ Tmodule tri_bibuffer(a,b,en,dr);
0 w" F  E3 D2 F- S6 T: B% j/ E
0 A( D! ]: h. `$ j$ p        inout [7:0] a,b;7 I# }0 m  i3 i$ i1 l, k% X9 {
        input en,dr;
* _& U9 H" t  k8 [        
6 g: N9 T$ i3 e, R# W' q4 j        assign b = (dr & en)        ?        a        :        'bz;8 y6 P, ~7 X5 w1 H
        assign a = ((!dr) & en)        ?        b        :        'bz;0 K9 o' q' X" q. z" K
8 v* A/ g+ q9 p7 k5 c% j9 P
endmodule# ]0 f* B5 i- Z) L4 e: g

3 t6 Q7 M5 n8 ~- u
! O4 f( @' y# {) J$ c2 m

6

主题

898

帖子

1万

积分

六级会员(60)

Rank: 6Rank: 6

积分
10052
3#
发表于 2010-11-24 13:48 | 只看该作者
再上张图# T- y6 V4 c! W& W6 |! l4 J1 `/ m

, C$ g% |1 y  G$ q# s! S

1.JPG (58.86 KB, 下载次数: 3)

1.JPG

6

主题

898

帖子

1万

积分

六级会员(60)

Rank: 6Rank: 6

积分
10052
2#
发表于 2010-11-24 13:43 | 只看该作者
你的波形设置是有问题的,你的想法是在dr=1,en=1时数据由a向b,在你的图中,在a向b输出数据的同时,你的b输入端同样也有输入,两个数据同时驱动一个端口,你在图上看到的是全X,也就是未定值。更改方法是,在dr=1时,b输入设为Z,在dr=0时,a设置为Z。另外你的编码也不是太好,加油吧。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

巢课

技术风云榜

关于我们|手机版|EDA365 ( 粤ICP备18020198号 )

GMT+8, 2024-11-9 10:37 , Processed in 0.061875 second(s), 37 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表