Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

搜索
1 2 3 4
查看: 3692|回復: 3
打印 上一主題 下一主題

[問題求助] 請問vhdl 的case中能否加入計數器?

[複製鏈接]
跳轉到指定樓層
1#
發表於 2008-11-17 15:15:42 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
請教各位前輩一下:: ?/ f2 y1 h# c
小弟目前要在 t5  的狀態機下做六次的話,! j' Y+ s* g8 Y0 N' i- Q
讓它在t6 的地方判斷,如果大於六就做 t7,/ t) P3 g  p% S
不然就一直跳回 t5,這種寫法是否有誤呀?
. w- n  t0 t8 f+ x因為他一直狂讀n筆資料進來,不受我的t6控制?( o6 F3 O5 C0 E' Q; J7 B/ ~
' S5 o9 T' x+ h4 q; e% O
麻請前輩們不吝指導一下,這個問題困擾小弟好久了,
& N% j7 K, @" E0 a$ c0 ]5 s; J試了好多天,都是一樣的結果,感謝再感謝。
6 {: }) C6 y  Y% M+ T9 u) H/ d: r9 e! S% P6 F0 J6 U; A! \. ]
when t5 => -- read LSB (lo-byte), send acknowledge, sent stop
2 c. m1 e+ J8 c) L' _      if (cmd_ack = '1') then9 x  d; f6 E% H1 m) D7 e% q. _
        nxt_state :=t6;
4 w* S# ^, c) |  l; C      if (lack = '1') then
6 O  {/ G, l9 D) }$ c' @6 S        ierr := '1'; -- no acknowledge received from last command, expected ACK; E) _0 N/ O9 g. t* W
      end if;' g2 j( y4 D$ a6 U7 U' ?
        istart := '0';
  z$ F$ A( `. u, T9 \        iread := '1';
( e) R5 ?3 D  O8 [8 k        iwrite := '0';
" L3 Y; r& ~+ F9 H7 \        iack := '0'; --NACK
) s; S! ~# u* J5 }/ V  e' q* E        istop := '0';& r% m' }$ x% G9 ?/ u: U$ _
     END IF; ! G3 M7 S/ o( b9 ?, g  ^2 a/ B' A
    when t6 =>        
# i) B1 R$ n2 q6 |" P8 l8 `      if (counter_i >= 6) then
" |# t, N8 Q7 @9 k         counter_i <= 0;   8 Z2 }  W3 F, I8 @) X+ V% E/ v
          nxt_state :=t7; 9 B2 N2 j6 U1 N7 H% I/ B6 m% ^2 b
      else   
' B% D' Y1 g; {6 b+ I# G, X2 j          counter_i <= counter_i + 1 ; 3 T% d% O: d" D# A$ R
      end if;
0 ^% n$ n% G* M* J      if (counter_i < 6 ) then   
# [+ U- N1 p( Q         nxt_state := t5;
( u. P/ x: U/ B5 h      end if;

4 J' S, T$ i, d" Y1 K            
9 i" V) Q) C8 O4 ~    when t7 => -- read LSB (lo-byte), send acknowledge, sent stop: }) \8 n3 s) H* C- Z
      istart := '0';# V6 h9 N5 P% S' s* A6 m
      iread := '1';
' M! ?# I! b- A. g      iwrite := '0';8 r% H6 ^+ s) S/ V% A1 x1 H
      iack := '1'; --NACK2 A% O0 f- \5 k! w& |* O% m2 Q6 D
      istop := '1';  - V% ~8 x8 @9 M) U- h7 f: p" _
      istore_dout := '1';
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
2#
 樓主| 發表於 2008-11-18 11:22:57 | 只看該作者
有前輩能抽空指教一下嗎 >"< ,困擾好久想不出解決方法呢。
3#
發表於 2008-12-15 16:36:55 | 只看該作者

改成這樣如何?

when t6 =>        
0 I) g+ g6 z# U, Q! x$ h4 `" k! G/ [     if (counter_i >= 6) then
' P! \+ L! Q" C0 z& m' _         counter_i <= 0;   
/ J, ^$ E8 n$ y  i          nxt_state :=t7; - F! K* V% Q6 V; e% A, I% o
      else    : ?% h/ M3 A8 c
          counter_i <= counter_i + 1 ; 5 _# Y) p, W9 }8 ]1 ]0 q
           nxt_state := t5;/ I- t: v, k' ~1 v1 S
      end if;
4#
 樓主| 發表於 2008-12-21 12:51:42 | 只看該作者
感謝板大指導^^,似乎寫了有點多餘的部份
- J: I% `& w8 d0 `, N# c9 {, K
; i- }$ M* y: c7 X! |2 y8 Y# D6 S- h' Z& q0 N
: b8 }7 D4 k( T9 C6 V: T0 I2 m
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

首頁|手機版|Chip123 科技應用創新平台 |新契機國際商機整合股份有限公司

GMT+8, 2024-6-16 12:28 PM , Processed in 0.125015 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表