Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2008-11-17 15:15:42 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
請教各位前輩一下:
  X3 F& y$ j1 o8 D小弟目前要在 t5  的狀態機下做六次的話,
2 F1 N* \' C0 H' \4 d' A/ _讓它在t6 的地方判斷,如果大於六就做 t7,
. O) [+ z! B; J4 s$ Y' p" f不然就一直跳回 t5,這種寫法是否有誤呀?
3 \- F' \8 z3 Z; g因為他一直狂讀n筆資料進來,不受我的t6控制?  y% @, {9 l, ?# ]! ^: ^
5 \3 U) k/ A1 s
麻請前輩們不吝指導一下,這個問題困擾小弟好久了,
; n' Q4 \9 i9 b0 L+ v! Q試了好多天,都是一樣的結果,感謝再感謝。! z$ {. A2 X- Z0 w5 r9 ^

+ q1 j! o+ c8 d0 Ywhen t5 => -- read LSB (lo-byte), send acknowledge, sent stop7 Q. B! w2 i8 }( v) A8 |. A
      if (cmd_ack = '1') then
) R2 c6 M" A) \. M% O7 T" f        nxt_state :=t6;9 y+ a- ^$ Z& _% X" R1 t1 I
      if (lack = '1') then
% r* ?/ c8 x7 r9 B" s# x        ierr := '1'; -- no acknowledge received from last command, expected ACK7 ~& ~& c: M, B/ l1 h6 f0 M
      end if;7 v& ?# {- a* j! L) _0 E
        istart := '0';6 R( D3 R! |9 H! W
        iread := '1';
) O# R+ K( S* f4 s        iwrite := '0';- ]5 g) i# ^! O+ _
        iack := '0'; --NACK& t, }4 c6 `( _! x' c2 e9 M/ {8 E) t
        istop := '0';
( |# m5 M: V0 u7 w; Z& `     END IF;
" R& u- y- ^. @% W$ a" a    when t6 =>        
  w. a) S5 A, z/ ~, q$ Y      if (counter_i >= 6) then8 [+ t' W. {* x6 O, Z! g
         counter_i <= 0;   
2 V  o7 M) L0 U1 J          nxt_state :=t7; , p+ M5 T8 |4 j! J
      else   
* i$ g; \1 B2 F. H! @2 S          counter_i <= counter_i + 1 ;
2 ?( ~1 Q9 T, w. \  f" h, m9 Q/ e      end if;/ r1 w9 d0 n; A6 C
      if (counter_i < 6 ) then    ( \7 N: X" }0 K* \
         nxt_state := t5;
2 W4 H: ]9 S: r! M      end if;
0 E$ b9 k7 H6 N8 ^( H7 R5 X/ R
            
  F1 p; g  S9 c2 F# ^    when t7 => -- read LSB (lo-byte), send acknowledge, sent stop  I; R  B- x- d/ a' x
      istart := '0';# N) O' Q* G" g# C. F. c
      iread := '1';
4 m% f, y- ^8 L" ~" @- `- P      iwrite := '0';0 E  @% Q/ J6 t& @, G
      iack := '1'; --NACK" b" |3 i- ~! P# N/ C8 h
      istop := '1';  4 ~. P! `1 [2 L* I
      istore_dout := '1';
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
2#
 樓主| 發表於 2008-11-18 11:22:57 | 只看該作者
有前輩能抽空指教一下嗎 >"< ,困擾好久想不出解決方法呢。
3#
發表於 2008-12-15 16:36:55 | 只看該作者

改成這樣如何?

when t6 =>        7 W+ m9 k( }$ y0 T0 E! _
     if (counter_i >= 6) then: @3 d- v8 J9 s3 N- u+ a
         counter_i <= 0;   + |0 y) ?0 p. m, X
          nxt_state :=t7;
, g+ E- M- M- ]0 C  t      else    $ n" G6 D% G* B2 c8 @
          counter_i <= counter_i + 1 ;
" X" X4 t4 }) B$ e( v3 O- J           nxt_state := t5;
& J) @: |- B$ N- d0 A: B" A/ A      end if;
4#
 樓主| 發表於 2008-12-21 12:51:42 | 只看該作者
感謝板大指導^^,似乎寫了有點多餘的部份
1 m0 V/ }: g+ y! W- S6 ~: u: }
, {7 W" `8 H( _9 ]: c3 a& s  r$ }# ~

, ?4 e) P: Y2 c5 `
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2025-2-25 08:25 PM , Processed in 0.151008 second(s), 17 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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