Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2008-11-17 15:15:42 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
請教各位前輩一下:
  A6 J( G* X$ |* D7 w, _小弟目前要在 t5  的狀態機下做六次的話,% U: n" G$ v9 `7 [& j* q! E9 T
讓它在t6 的地方判斷,如果大於六就做 t7,9 b) x" M9 J0 `8 h
不然就一直跳回 t5,這種寫法是否有誤呀?
. l1 `! ]2 z7 @' o5 {因為他一直狂讀n筆資料進來,不受我的t6控制?1 V# c$ [1 s, ~0 Q7 ^. T
$ T# a0 n# z4 S( `" x# u
麻請前輩們不吝指導一下,這個問題困擾小弟好久了,
. [* q$ q6 h% T1 V* j/ T& ?: z試了好多天,都是一樣的結果,感謝再感謝。+ |' L5 _9 i  o% h) m) Z# n

$ ], V6 O, t6 t7 `2 g, ]when t5 => -- read LSB (lo-byte), send acknowledge, sent stop
( i" v) U: _5 H( g      if (cmd_ack = '1') then
+ ]# H* k8 v6 r" p- T" Q3 ^" D        nxt_state :=t6;5 q( q8 v" v# e9 H  i
      if (lack = '1') then
7 ^$ i; m) k' c" f+ {4 f8 _        ierr := '1'; -- no acknowledge received from last command, expected ACK4 I7 V' g9 W# q2 O+ C0 R3 v( Q
      end if;' q5 V* S( M, h6 _% U+ C* h
        istart := '0';, \. E2 Z2 F: w# |0 w. k, a6 s
        iread := '1';) k$ q* d, W: p. v  b
        iwrite := '0';) B. j4 K" T- h1 D
        iack := '0'; --NACK
8 S( g; Y+ r' C        istop := '0';) J: T0 o; W0 G* I. I3 e
     END IF;
( f; v" r8 Z! \1 j" C    when t6 =>        
4 h# l' J! E; r6 m- S2 Q      if (counter_i >= 6) then
( o- D8 d2 `+ v2 E, w% e: J0 |         counter_i <= 0;   
! \7 Y& L  U: x7 w/ j6 z          nxt_state :=t7;
" O2 J/ C3 x1 e8 S, C      else    - A5 p3 ?3 _* B8 p% Z
          counter_i <= counter_i + 1 ; 1 s% L- n- f, @  h6 s
      end if;
- P6 M/ G' n! G4 J- I      if (counter_i < 6 ) then   
. q. Y, m' ?1 m8 X# H# T& B         nxt_state := t5;
, F2 l# m, F# A- Z: o      end if;
$ u; D* G" T9 X
            
" b* R+ D: e. V; Z) D0 u    when t7 => -- read LSB (lo-byte), send acknowledge, sent stop
; n+ t& ]7 k+ l8 d$ z$ ]      istart := '0';0 n/ [8 I9 K1 L, A
      iread := '1';1 _9 ?8 V# r( h) H$ q9 `
      iwrite := '0';
( |: ^: A) u) Y3 r" `3 W7 ~      iack := '1'; --NACK- Y3 k. v# a2 J0 M) [7 Q% Y6 e) o
      istop := '1';  6 Y7 o* N/ \9 W9 L6 Z
      istore_dout := '1';
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
2#
 樓主| 發表於 2008-11-18 11:22:57 | 只看該作者
有前輩能抽空指教一下嗎 >"< ,困擾好久想不出解決方法呢。
3#
發表於 2008-12-15 16:36:55 | 只看該作者

改成這樣如何?

when t6 =>        6 }5 ]9 r6 b! B2 R# u8 X1 `
     if (counter_i >= 6) then
; L: V# M. F( d0 K         counter_i <= 0;   & z( e% ~* Y& }
          nxt_state :=t7; 1 S9 Z4 @3 W, W% \
      else    8 j  {4 D$ y6 p4 D, D4 h/ Z: j
          counter_i <= counter_i + 1 ;
! }. ^: D7 r5 W$ |           nxt_state := t5;
( [8 t7 I6 p( b; ?: _4 j      end if;
4#
 樓主| 發表於 2008-12-21 12:51:42 | 只看該作者
感謝板大指導^^,似乎寫了有點多餘的部份2 \" X1 v% P0 R. ^8 a0 Y

# S" O+ u" t  f/ F$ o4 E+ ?( I1 R7 Y
- p8 i9 F3 K, w; _8 i" ]) A! {: p
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-5-7 01:12 AM , Processed in 0.096006 second(s), 17 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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