|
請教各位前輩一下:
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'; |
|