找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

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

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

[复制链接]

1

主题

61

帖子

-8962

积分

未知游客(0)

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

EDA365欢迎您!

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

x
本帖最后由 Supercommando 于 2010-11-22 22:11 编辑 7 p# t5 h/ v6 P# N

( D. F5 y( u5 u# I双向总线缓冲器,dr=1且en=1时,b<=a;dr=0,且en=1时,a<=b。a、b均为双向端口。
$ N' X" L4 q  Q9 H. C+ U用Verilog编写,在quartus下用波形仿真,怎么仿真结果都不对。. M" K# y% T8 q9 e
问题1:
2 e, y" H4 M9 h, r; w# s          这样写正确么?- U* {3 a" _8 K. w7 l+ t
问题2:
$ j% p1 A' l4 w, |         怎么样使用波形仿真才正确?6 o* m+ f) y+ z% s
/ C5 ?" ]9 g9 p- I+ j" a
请高手解答,谢谢!  R; \! U9 m" G/ D4 P3 c- }# U

6 Z/ b) V4 i; L, |2 i程序如下:, e8 J7 `; U, M4 n* c$ I& @. g1 x
module tri_bibuffer(a,b,en,dr);$ z7 @, s: a7 m; a) ~, Y
inout [7:0] a,b;  N8 O- Z/ R/ c8 u
input en,dr;' _8 t9 ~1 V1 v5 ?+ V0 F1 l
0 Y$ {% K1 p! G1 n% H
reg [7:0] a,b;, v2 ^* l! u# l+ @. E
wire en,dr;; c! y$ P+ T% v6 m/ M# {# b; D

* e& o2 T$ w- i/ E; j5 v% A, Qalways @ (dr,en)
, t" R, s! |! H  @- Y/ ~$ }0 F! ubegin5 O' C$ ]: V9 Y' Z8 Z* p1 C
  if(dr)7 C+ I& {# Q& K2 B& n0 `
   begin# W/ G: k, N0 A
    if(en)2 W$ \$ j9 M7 Y4 L& E8 p0 h! W7 ^
     b <= a;" }; ^7 w3 k1 n1 `
    else, v5 e. E5 T8 Q0 h" b
     b <= 'bz;
2 a; e4 x. V. e+ a6 b1 Y   end/ }" v8 G6 A5 H9 F# {
  else5 Z; v2 W8 |' v1 |5 l
   begin
- I7 [! f+ I8 C* v    if(en)
, w/ N; s8 Y% f  Y. L8 g     a <= b;
1 T$ j: a; I5 S' G! Z    else/ V! ]8 T& f  W+ p! }
     a <= 'bz;
! H: o' w9 z8 j! K   end+ e0 @$ v) D/ h& U7 @2 q
end1 Z: n0 G4 V0 \8 M" k- \' N
endmodule
' u& V3 x% _; M  d8 \: Y$ m1 z7 d2 F1 O& f$ X' K
仿真波形如下:; a. d+ |  q5 z

未命名.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 编辑
1 j6 V6 g5 ^' {. U: Q8 @2 m$ ^$ D2 ]6 s( T8 ~# Y, ]
回复 00750 的帖子8 K3 n' f$ r+ h9 d4 Z# E: L0 z

/ b% r, I5 s; y& ]程序是书上的,我采用另一种方法后综合的结果很优化,还想问个问题:这个程序的测试的时候,如果输入a,b均为高阻态时,相应的输出是不定态,这是怎么回事?实际应用情况下输入与输出是否会同时为高阻态?为什么?
% G$ j/ |$ b$ f- u谢谢!
: C  z4 S* D  Z  H. h% i6 w; e" z6 s5 ~
仿真图如下:2 X: D3 e# B2 {4 O

% @* R. w; v& ^" y+ ?" z- O5 g0 ?
# {7 k0 J# }$ B* T; D9 Y: p, q/ B4 s7 H

1

主题

61

帖子

-8962

积分

未知游客(0)

积分
-8962
5#
 楼主| 发表于 2010-11-24 16:04 | 只看该作者
分析综合后的RTL级电路6 n2 V$ J, h: R# J/ i" m  ~/ q

, w2 r) d$ U1 K% s; S
8 z! S5 f" q3 b功能仿真图
1 q$ l: B0 N% P4 g, i 9 i' r, w2 c# i( A. B1 S( Z1 \, _

1

主题

61

帖子

-8962

积分

未知游客(0)

积分
-8962
4#
 楼主| 发表于 2010-11-24 16:01 | 只看该作者
本帖最后由 Supercommando 于 2010-11-24 16:05 编辑 6 _, q# o6 C+ ?8 G& w1 k0 h0 @

; R2 M8 Y* Z- \9 b' g上面的代码是书上的,分析综合后发现电路很大,效果也不好,采用新的方法效果很好,看来可综合的代码很重要。6 m) @( V/ Y) `" ]( F" a  |
module tri_bibuffer(a,b,en,dr);7 [: R7 X% E2 M' u

" b9 J: y& z: F+ }) Q' g' N' U        inout [7:0] a,b;
6 v7 h! E, K4 ^, h        input en,dr;
. ~5 F  R3 ^% W9 X/ B/ B        0 s! ?; Y9 d' I! T
        assign b = (dr & en)        ?        a        :        'bz;
) a3 s1 C, \* I* n5 ]% M+ u        assign a = ((!dr) & en)        ?        b        :        'bz;
, \% W5 M" a6 s$ Z- K' R
/ y* O0 P" u& e# W1 k0 j' mendmodule1 w& K7 \2 @0 Z  E9 O5 Y
. [, `+ |: Z% S( C/ G
# k& u# r" d1 e0 |

6

主题

898

帖子

1万

积分

六级会员(60)

Rank: 6Rank: 6

积分
10052
3#
发表于 2010-11-24 13:48 | 只看该作者
再上张图: x. X5 t% Y9 n. l, S+ t; A
1 @& }) q6 u4 X) Z

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-24 20:04 , Processed in 0.065126 second(s), 36 queries , Gzip On.

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

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

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