Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2008-11-17 15:15:42 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
請教各位前輩一下:
) B9 ~4 C6 |9 ?# I5 T' M小弟目前要在 t5  的狀態機下做六次的話,2 Y. K+ T" ]# z9 d" v6 }7 X0 O+ j
讓它在t6 的地方判斷,如果大於六就做 t7,
# _' C$ F. a. a1 a5 w% N+ ~不然就一直跳回 t5,這種寫法是否有誤呀?: G" q# M" ^9 V0 t. q! e, W
因為他一直狂讀n筆資料進來,不受我的t6控制?+ d  v: C# E5 a+ e" b

+ _; o4 S2 N5 z" {麻請前輩們不吝指導一下,這個問題困擾小弟好久了,
4 U( v' \% l5 m8 _3 l" H" s試了好多天,都是一樣的結果,感謝再感謝。
" d0 y4 ?6 Y5 W. U; I' f3 D/ d3 G  H& {6 P& z, B
when t5 => -- read LSB (lo-byte), send acknowledge, sent stop
- h4 A6 n1 r. I6 Z+ a/ [      if (cmd_ack = '1') then) O. H, w# v& Y1 Q' F6 t/ c
        nxt_state :=t6;
& o4 w  h& T5 p9 Y      if (lack = '1') then) M% D- F$ h  ?0 z4 h
        ierr := '1'; -- no acknowledge received from last command, expected ACK
0 e( d5 G) `" ^- p5 K  I! f  l5 Q: U      end if;
. O6 H, t" a5 n0 B. k        istart := '0';' ~" V2 r2 l# Y+ Q- ]( b
        iread := '1';
( S, \, P+ Z8 O) B        iwrite := '0';3 E) T* G5 l. Z% n' g1 T. }
        iack := '0'; --NACK2 q. w5 H. H2 J; V# v+ o* Z, |: {
        istop := '0';
; A1 a0 K9 w& V6 _     END IF;
% k( f& n# n8 P: T    when t6 =>        
8 N2 _* M  P: N: E      if (counter_i >= 6) then/ u) L& [4 M$ H4 ~/ D% Z: w, n" C: u
         counter_i <= 0;   + a" ]( b- I8 }9 C6 c2 d& J
          nxt_state :=t7;
' R5 M; `# i' F) L2 X1 H* O      else    1 Y; ]) C! y; k1 u* s0 C
          counter_i <= counter_i + 1 ; ) W/ f+ [4 U; `4 u1 F+ @
      end if;
$ [* R0 R7 p+ M      if (counter_i < 6 ) then    * O8 Q& @; P# ?
         nxt_state := t5;
% I- |; e0 [6 T( R      end if;
& ~) T6 U, p2 b( H5 ?5 u( x
            
) I1 F: j- l' X+ c" f, ]; \* f+ _    when t7 => -- read LSB (lo-byte), send acknowledge, sent stop% \, V6 w. g. z7 D+ Z
      istart := '0';
" h/ z& L, |( k4 R3 m      iread := '1';
0 E2 q! Q; Z* c! B1 i/ n# ]7 m" W4 r      iwrite := '0';
2 H- f% h2 l3 L$ N3 ^5 u6 J      iack := '1'; --NACK
# z; n  x8 i/ z: @      istop := '1';  5 R3 H5 W# \8 p6 J) f, R
      istore_dout := '1';
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
2#
 樓主| 發表於 2008-11-18 11:22:57 | 只看該作者
有前輩能抽空指教一下嗎 >"< ,困擾好久想不出解決方法呢。
3#
發表於 2008-12-15 16:36:55 | 只看該作者

改成這樣如何?

when t6 =>        9 X" Q+ b% W, e; Z
     if (counter_i >= 6) then: S( M" p4 p/ ^% u1 c
         counter_i <= 0;   
% N% c, p# D0 L- N3 P          nxt_state :=t7; 0 [; b; f2 {: m: V, f) x0 _! V6 c; F
      else    ; p4 S" W3 ?  [! D: _
          counter_i <= counter_i + 1 ;
+ E% S9 z& }% \8 o# k           nxt_state := t5;
; o# U4 c; T4 g4 V: {7 f      end if;
4#
 樓主| 發表於 2008-12-21 12:51:42 | 只看該作者
感謝板大指導^^,似乎寫了有點多餘的部份
/ D4 W% r' j" U" |/ y/ Q* {
* R8 w9 ~5 h/ U6 `" N
0 \, I* U7 k; }' B; d: h- S9 O, H, u
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2025-2-25 05:23 PM , Processed in 0.154009 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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