Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2008-11-17 15:15:42 | 只看該作者 回帖獎勵 |正序瀏覽 |閱讀模式
請教各位前輩一下:7 a* p; R+ w. a" ?; y
小弟目前要在 t5  的狀態機下做六次的話,& A, a" z' y4 H! ~) \1 @/ S% W
讓它在t6 的地方判斷,如果大於六就做 t7,
% T, z0 b7 Q8 }+ k& X' I不然就一直跳回 t5,這種寫法是否有誤呀?
+ J5 C5 ?3 B% U3 X+ ^- e, b因為他一直狂讀n筆資料進來,不受我的t6控制?5 ?* E2 m0 S& F
+ d% ]) c/ G: z. M$ s4 y  N4 I6 r
麻請前輩們不吝指導一下,這個問題困擾小弟好久了," d7 L  s! F0 b" m
試了好多天,都是一樣的結果,感謝再感謝。
& k  C& N# `1 J3 w  Y+ ?1 }2 T: m
" T. [/ Z* C/ j  ~! e0 B, awhen t5 => -- read LSB (lo-byte), send acknowledge, sent stop
) @  K# q4 n0 G9 P3 Z3 z      if (cmd_ack = '1') then
" H: l7 ^! H' ~) R9 ~/ }# J        nxt_state :=t6;8 L) v7 _# w4 }# k
      if (lack = '1') then
" ]# x! |! \4 g$ G/ A- o6 D        ierr := '1'; -- no acknowledge received from last command, expected ACK
& i8 m2 \5 [: D$ [8 V4 n: T. n! j      end if;+ ]% @6 ]$ v" a9 ?% Y0 Z
        istart := '0';, @: e" g. `3 q/ q" T# K- H
        iread := '1';6 M; V+ v2 L2 t; G- _
        iwrite := '0';
( R& |9 h( S: e- p/ s) B+ W        iack := '0'; --NACK  Q  A, [- q( _) k# S" T" n
        istop := '0';+ z; ]! Q4 S  N  @' |
     END IF; 6 h  E0 a. Y) A& s' J
    when t6 =>        . ?1 G) R$ _8 |
     if (counter_i >= 6) then4 a# L8 K3 X& i6 j7 E5 a( ?8 ?
         counter_i <= 0;   1 V8 r+ K& M3 m
          nxt_state :=t7;
1 B+ A+ C6 O* H; X& b* l' @      else      Q& E" T1 `) P' i
          counter_i <= counter_i + 1 ; 9 ?: v' H0 G2 j
      end if;
3 a$ R, L! v8 Q8 R) J      if (counter_i < 6 ) then    0 y3 K& s- L  F: d" ~
         nxt_state := t5;, v, q  y1 R4 W) _6 M' J9 A" z
      end if;

7 g) T  V# G8 U+ G2 A            ( x7 T" {; U7 m1 ?8 z5 C
    when t7 => -- read LSB (lo-byte), send acknowledge, sent stop4 x. D. v0 \- E. Y( y
      istart := '0';
* C) ^. e( V3 u( Q6 X5 @% P$ N; b# ]      iread := '1';
& \: ^8 R% s9 L) K8 Z) J5 Y6 }      iwrite := '0';
5 O  |" L2 E6 _8 ~+ h/ w      iack := '1'; --NACK) r7 }) l7 \& Z: t3 ]' S5 ^
      istop := '1';  / ?6 Z0 g' i4 l
      istore_dout := '1';
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
4#
 樓主| 發表於 2008-12-21 12:51:42 | 只看該作者
感謝板大指導^^,似乎寫了有點多餘的部份
2 U9 k# h. q0 F. d5 S* V; D5 ~1 e8 Y
5 f1 @! q: F/ D6 S4 O3 X  Z% S

9 p, k. O5 M, m, V$ W. n" l
3#
發表於 2008-12-15 16:36:55 | 只看該作者

改成這樣如何?

when t6 =>        
3 ~! f  a3 _& M- {8 G, Z8 A% E     if (counter_i >= 6) then
, I6 R1 e/ |# A6 @8 d. A  Z: b         counter_i <= 0;   9 v3 [" y2 `* b9 p/ x9 {  j2 |' `
          nxt_state :=t7;
/ h( n- z! C. M# b. O      else    9 H$ I  V. k+ |. d8 ]- s6 L
          counter_i <= counter_i + 1 ;
5 {9 Z; y) g: l& o, m5 h  Z           nxt_state := t5;
! l3 n, G( s+ o3 d  b7 E      end if;
2#
 樓主| 發表於 2008-11-18 11:22:57 | 只看該作者
有前輩能抽空指教一下嗎 >"< ,困擾好久想不出解決方法呢。
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2025-2-25 08:41 PM , Processed in 0.153008 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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