Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2008-11-17 15:15:42 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
請教各位前輩一下:
/ R2 \; _9 X( m3 Z$ t9 I1 d小弟目前要在 t5  的狀態機下做六次的話,
8 _, |8 R+ `/ A" t" c讓它在t6 的地方判斷,如果大於六就做 t7,) C1 |! [6 [6 Q! G+ u5 x
不然就一直跳回 t5,這種寫法是否有誤呀?
/ x7 s+ `9 A6 F因為他一直狂讀n筆資料進來,不受我的t6控制?3 _' c) ~9 W/ G0 R/ a% E

9 }( I( O  ?) ]9 `+ ~  t( s麻請前輩們不吝指導一下,這個問題困擾小弟好久了,' Y" Z: ^$ j* H8 G
試了好多天,都是一樣的結果,感謝再感謝。
2 E% C8 b6 }, B$ M' S: F
' Q- u, H# h$ T- w4 a% P# Owhen t5 => -- read LSB (lo-byte), send acknowledge, sent stop
$ M. \$ q8 }1 M+ E- k      if (cmd_ack = '1') then
* z1 W0 e9 K/ h9 h        nxt_state :=t6;
+ e" M4 S* [! i' I2 g& g      if (lack = '1') then2 F6 L+ a$ p6 F+ W
        ierr := '1'; -- no acknowledge received from last command, expected ACK+ K+ X: c9 a: V5 |8 {) W
      end if;1 P  [8 M& r0 F8 U. i
        istart := '0';" C& e6 v# ?; Q3 y
        iread := '1';& c  b- Y( O( Y
        iwrite := '0';9 f0 ]0 X" @' ?8 d+ t
        iack := '0'; --NACK
: }, O% p$ a" H/ p7 ?9 t4 Y9 O' I! q        istop := '0';
1 g5 u9 j# s( U2 M9 U7 k4 i- z5 T     END IF; # ~8 p" F. K. ?7 c" B4 p0 t
    when t6 =>        $ t& S0 H% a  S' e% e1 A$ U
     if (counter_i >= 6) then
0 f) b+ o8 o" u0 K2 }" `- q" a( J  U         counter_i <= 0;   0 }  U  I1 @3 A$ l' s7 E: s
          nxt_state :=t7;
. |* k/ z6 \# {% O4 w$ I      else    4 x% A( S# A: X' V' D
          counter_i <= counter_i + 1 ;
# P+ `- Q7 ~4 Y- I+ A6 ^      end if;$ t( m! g; ~- e+ `
      if (counter_i < 6 ) then   
9 C: C* L) t& m7 z+ J         nxt_state := t5;
) X$ F1 _$ v6 \      end if;

+ G* _5 {" |9 T/ B: b            
" J4 q" r0 G) u0 g& b    when t7 => -- read LSB (lo-byte), send acknowledge, sent stop$ _3 G% q% V" [5 U6 j6 i; X/ D  y  D
      istart := '0';
( S/ E* f! I6 _$ ^( L      iread := '1';; C- D; X* S% h  G4 L" e' q6 q3 b
      iwrite := '0';# i- m1 S5 M8 y: Y' a
      iack := '1'; --NACK
, T( }# w9 M0 E      istop := '1';  / C  I" ?; V* d( a7 T; p7 i$ u
      istore_dout := '1';
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
2#
 樓主| 發表於 2008-11-18 11:22:57 | 只看該作者
有前輩能抽空指教一下嗎 >"< ,困擾好久想不出解決方法呢。
3#
發表於 2008-12-15 16:36:55 | 只看該作者

改成這樣如何?

when t6 =>        , E' r! V, j5 r
     if (counter_i >= 6) then* S; E" e" C! Z2 ?7 z- U& K
         counter_i <= 0;   
7 I' t9 Z% q* n, @3 a! F' |          nxt_state :=t7;
5 j  `, `. H6 j      else   
$ M8 c) q2 P5 K) F% i          counter_i <= counter_i + 1 ;
! @* _- n( s+ ^4 j5 g2 w! |           nxt_state := t5;
4 M5 o' E; |' }3 p8 Q      end if;
4#
 樓主| 發表於 2008-12-21 12:51:42 | 只看該作者
感謝板大指導^^,似乎寫了有點多餘的部份
, j# n/ y- S: f4 E" P: n
/ J- ~& f5 p) r2 A
' d& F! Q& U9 B% t, J- U4 a1 P' l% H' m5 [$ k
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2025-2-25 11:44 PM , Processed in 0.159009 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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