Chip123 科技應用創新平台

標題: 請問vhdl 的case中能否加入計數器? [打印本頁]

作者: spring69393    時間: 2008-11-17 03:15 PM
標題: 請問vhdl 的case中能否加入計數器?
請教各位前輩一下:
  @" k/ O8 u" Q% R小弟目前要在 t5  的狀態機下做六次的話,8 B8 M0 r- Y/ `
讓它在t6 的地方判斷,如果大於六就做 t7,
. o. w1 q+ @3 e% f& j+ O0 D不然就一直跳回 t5,這種寫法是否有誤呀?: H7 B! g/ n; b4 l
因為他一直狂讀n筆資料進來,不受我的t6控制?
0 P& |( ?. g: `( N+ I" K. V$ ~+ l
+ c8 s1 P) j8 N: i  q2 P& [麻請前輩們不吝指導一下,這個問題困擾小弟好久了,
8 a; `$ T1 G2 [8 G) m試了好多天,都是一樣的結果,感謝再感謝。# Z& v0 y7 x3 v
3 a% H6 Z- I1 ]3 o8 c* z) x
when t5 => -- read LSB (lo-byte), send acknowledge, sent stop6 [2 I9 O0 {1 E
      if (cmd_ack = '1') then
& `$ G; d1 n3 m- }. C        nxt_state :=t6;
8 H' c9 ]+ R) R  j* W$ k      if (lack = '1') then
6 ~$ f5 l4 d: s' d        ierr := '1'; -- no acknowledge received from last command, expected ACK7 ~2 }+ V0 z& F5 {- D. k
      end if;
, S( ~4 {" R- c        istart := '0';
8 ~# [/ ]6 x! ]. X6 `        iread := '1';+ W) v2 G& [4 r5 K! e  K$ I
        iwrite := '0';7 J) j8 C& Z" ^2 M) ]
        iack := '0'; --NACK: {8 q1 }! C9 l# a3 B6 h8 [1 O
        istop := '0';5 d: a$ s# ^9 t
     END IF; - e; t1 A& v- J) l- V% N
    when t6 =>        
3 W" |# w# J5 I      if (counter_i >= 6) then
' C5 F/ P8 L+ d' |+ J0 T         counter_i <= 0;   & q2 X/ E, w! q2 ^3 Q
          nxt_state :=t7; # n$ H5 f4 b5 M; y/ {, t9 j
      else    . x( [7 V* R! @- A1 U8 d
          counter_i <= counter_i + 1 ; - [; E0 @8 W% i9 p7 R+ U( q& Y+ \9 ]
      end if;' t3 A. p# U/ b
      if (counter_i < 6 ) then   
+ ~/ h6 M0 z) @# G4 O         nxt_state := t5;
2 _1 Q& `) d( H( K- N' j5 \      end if;

# N' u: ^# Y% Q6 ^- s2 Y; L" `            
" C( U! c$ X% O5 A- |9 d3 F    when t7 => -- read LSB (lo-byte), send acknowledge, sent stop
' B0 J3 H  v, q% ~. }- Y; o      istart := '0';
1 E* \) Y2 V1 a, v5 m3 a      iread := '1';
0 u6 U3 ]3 u# D: U      iwrite := '0';
) _" D: c- F, ?2 _) j4 y6 L! Q& j      iack := '1'; --NACK7 E  j) e) W1 f
      istop := '1';  
, w+ O( B6 A6 K9 E1 C% t. a8 ^      istore_dout := '1';
作者: spring69393    時間: 2008-11-18 11:22 AM
有前輩能抽空指教一下嗎 >"< ,困擾好久想不出解決方法呢。
作者: tommywgt    時間: 2008-12-15 04:36 PM
標題: 改成這樣如何?
when t6 =>        
; Z+ p  D- M- f4 v     if (counter_i >= 6) then) }0 S( Y- W5 s
         counter_i <= 0;   
9 o% |3 F* I5 W6 J          nxt_state :=t7; / N. v) W1 [. h8 L( A
      else   
0 z1 |' E# C5 ^7 [9 t$ X          counter_i <= counter_i + 1 ;
2 Q! H2 J3 `1 ~/ Q6 h           nxt_state := t5;
7 D1 b( y. n- ^! ^5 z      end if;
作者: spring69393    時間: 2008-12-21 12:51 PM
感謝板大指導^^,似乎寫了有點多餘的部份
/ r3 _. z  h+ ?& J0 m9 c& C  _6 s* t3 T8 D* E3 n
- c4 D" i6 k' T! S; X! ]- _
9 I/ b% B# S* V9 [





歡迎光臨 Chip123 科技應用創新平台 (http://chip123.com/) Powered by Discuz! X3.2