找回密码
 注册
关于网站域名变更的通知
查看: 3301|回复: 5
打印 上一主题 下一主题

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
本帖最后由 Supercommando 于 2010-11-22 22:11 编辑
7 E! S+ L+ X9 I5 `8 T' ]* g0 n1 m1 T. }' c+ _
双向总线缓冲器,dr=1且en=1时,b<=a;dr=0,且en=1时,a<=b。a、b均为双向端口。
  H5 B/ R3 B* A0 N( m, ^" p: \用Verilog编写,在quartus下用波形仿真,怎么仿真结果都不对。
# q' o4 _, j7 h问题1:
& Y" |0 ^1 @) A' @- F. H          这样写正确么?! {% G7 M5 |' F3 J7 v
问题2:( s2 s$ @' N8 D+ u4 m
         怎么样使用波形仿真才正确?
, c7 J" l" T( {1 m3 Y9 G4 K1 e# P$ Y6 h- t1 p
请高手解答,谢谢!+ F( ?3 a/ W& c8 M0 l# K1 d2 F+ ]
" \# I5 t/ X, z
程序如下:# t- Y* l  {2 h4 }9 u
module tri_bibuffer(a,b,en,dr);/ A5 j. r. M# ]5 T4 q
inout [7:0] a,b;. \- t7 E: q) z7 P  `6 N, S& \5 N
input en,dr;
$ K+ r+ K2 `0 t& {2 B8 W4 _5 g+ _: z) d2 r
reg [7:0] a,b;
  T0 p8 S) |1 P( Q+ z- nwire en,dr;
( ^. e5 @! ~# U& u, t/ F) O) t
% B' }; `5 f* k0 Y6 u- e! i! walways @ (dr,en)2 E  C) L! z) j
begin
! @0 w& e; h( A  if(dr)) _0 R- z& U/ ]' s& x
   begin
5 C/ u' `* p, A5 q5 M# }    if(en)
( l4 p. t7 K2 P, N4 O) j     b <= a;
6 R7 T  I1 ]: f, w) \  L7 s' c    else
1 T$ H  p' O9 X  b% Z     b <= 'bz;$ g* Q; `) V* @- R% r2 n# ?& B
   end
0 K; {! }+ u8 _8 p) A* R0 N: e  else+ h' d+ V: M5 {5 f2 M% Z
   begin
5 ?) F) Y: g5 P% G& [    if(en)& m( ^( a7 _. ]( C3 \5 k
     a <= b;
: w$ S  K. G6 O$ Y6 M    else: o0 k$ j' y- j# N. @! m* @7 D
     a <= 'bz;8 @5 K$ S1 `: z
   end
) C, r9 R+ T& D! Jend9 L9 h8 F5 C5 E; E, C  k
endmodule' n/ P" L& b3 c# v( T$ i
. w4 V; f# S  S! s- p% x' w
仿真波形如下:
8 }  X' @2 d5 c1 y# X5 B

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

未命名.JPG
  • TA的每日心情
    慵懒
    2024-12-9 15:04
  • 签到天数: 384 天

    [LV.9]以坛为家II

    2#
    发表于 2010-11-24 13:43 | 只看该作者
    你的波形设置是有问题的,你的想法是在dr=1,en=1时数据由a向b,在你的图中,在a向b输出数据的同时,你的b输入端同样也有输入,两个数据同时驱动一个端口,你在图上看到的是全X,也就是未定值。更改方法是,在dr=1时,b输入设为Z,在dr=0时,a设置为Z。另外你的编码也不是太好,加油吧。
  • TA的每日心情
    慵懒
    2024-12-9 15:04
  • 签到天数: 384 天

    [LV.9]以坛为家II

    3#
    发表于 2010-11-24 13:48 | 只看该作者
    再上张图" _6 E3 c% }5 r' Q8 v1 B6 `

    % b% e, t1 c0 X) q3 l

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

    1.JPG

    该用户从未签到

    4#
     楼主| 发表于 2010-11-24 16:01 | 只看该作者
    本帖最后由 Supercommando 于 2010-11-24 16:05 编辑
    9 V9 M$ P+ I9 g" E
    * K. y/ R6 |4 p/ @  E( I, w上面的代码是书上的,分析综合后发现电路很大,效果也不好,采用新的方法效果很好,看来可综合的代码很重要。
    9 c6 h- [; @/ ^; K2 p, Ymodule tri_bibuffer(a,b,en,dr);
    ! G' D: e4 W1 ~0 {) @1 H; {. n# ]) ]1 M) P2 P( @5 o
            inout [7:0] a,b;
    9 _$ `# w7 g. P- [4 H6 u        input en,dr;) z$ I$ K$ U$ i5 N
            
    1 l. |5 A3 D% _) j        assign b = (dr & en)        ?        a        :        'bz;
      r; ^  X# [9 V; g  Q7 t# s; w        assign a = ((!dr) & en)        ?        b        :        'bz;
    $ u$ s! L$ ^0 R' A. F: I8 b
    . p% v6 |/ S) N: G' n/ h9 dendmodule7 [0 W! V5 b) `8 }- ]8 V
    $ D0 K3 w9 w0 F3 l% N+ ]+ E" `0 g

    7 t1 \* i& e( a+ U# ?$ i0 B

    该用户从未签到

    5#
     楼主| 发表于 2010-11-24 16:04 | 只看该作者
    分析综合后的RTL级电路
    ! S: P" m1 i7 G3 N: x9 i2 B1 v" u; G
    8 _, M  }; z6 |0 G
    ) i- `$ z% M8 x7 N. M功能仿真图
    9 J- }6 u6 e- Z' u; B! p 3 W1 C) A- ~! c% }. L" \% u: U, Y( f

    该用户从未签到

    6#
     楼主| 发表于 2010-11-24 16:25 | 只看该作者
    本帖最后由 Supercommando 于 2010-11-24 16:26 编辑
    ) @/ u9 G) e" ]/ Y! Q: r$ @! _$ E8 S! W5 O2 L
    回复 00750 的帖子
    7 }5 g; g# d" C, `5 t1 E# P% _8 A
    ; {! v) X6 R% ]6 E0 w% ~程序是书上的,我采用另一种方法后综合的结果很优化,还想问个问题:这个程序的测试的时候,如果输入a,b均为高阻态时,相应的输出是不定态,这是怎么回事?实际应用情况下输入与输出是否会同时为高阻态?为什么?
    ! T1 \  E2 [* h谢谢!7 E2 f/ e+ w. _) D. @1 l; b7 r+ l

    , n$ a6 v4 F7 B. C仿真图如下:
    1 T5 g  J9 G" |2 r- w& n5 _* J$ d% L+ p9 D; b& e& b9 z2 H3 j
    9 ^0 Z( [7 X0 x- P8 f8 F" d0 s/ v( t
    ) t4 N) x5 |: i) E# S/ T
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-10-11 07:40 , Processed in 0.140625 second(s), 27 queries , Gzip On.

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

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

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