Chip123 科技應用創新平台
標題:
請問vhdl 的case中能否加入計數器?
[打印本頁]
作者:
spring69393
時間:
2008-11-17 03:15 PM
標題:
請問vhdl 的case中能否加入計數器?
請教各位前輩一下:
* F8 u4 V8 o1 r: z
小弟目前要在 t5 的狀態機下做六次的話,
* g: C5 _, x/ K8 }: C
讓它在t6 的地方判斷,如果大於六就做 t7,
7 V% c' X8 u- W9 u" U0 r4 X
不然就一直跳回 t5,這種寫法是否有誤呀?
8 p9 d2 v4 ?+ j- G7 \% z2 ~8 C
因為他一直狂讀n筆資料進來,不受我的t6控制?
9 v9 ~# D* I$ A* _5 g
( N/ A) V. f9 [0 Y X7 y/ @
麻請前輩們不吝指導一下,這個問題困擾小弟好久了,
7 ] V! \) M1 Y S4 C1 l* }5 R4 }' w" K
試了好多天,都是一樣的結果,感謝再感謝。
6 \/ I, |' t' V' c4 L8 P( a: ]" [1 P
: M1 _; {2 R5 U
when
t5
=> -- read LSB (lo-byte), send acknowledge, sent stop
3 ]$ ]8 f* T, s+ B# E; I# f o
if (cmd_ack = '1') then
2 b, H A$ ^0 f! x- _: Z
nxt_state :=t6;
' ]3 r0 [& l( `7 K4 b3 k- U( |! z4 {
if (lack = '1') then
5 I& [5 N; Z/ B4 V; h6 Z! G
ierr := '1'; -- no acknowledge received from last command, expected ACK
" S- j7 b& Z% ]7 B3 n' S
end if;
. b+ M3 j1 X7 l1 W1 r) M
istart := '0';
% f3 G: i ?0 O$ S5 O
iread := '1';
6 ?; o# U, q! [. h
iwrite := '0';
$ `) o0 D( P; T I/ [
iack := '0'; --NACK
; o( \# _) K' T. B0 L5 k
istop := '0';
8 w( G4 [/ @( ^% G6 ~: E( E
END IF;
* z8 Y1 E% j' Q. V) G9 m% p0 D
when
t6
=>
! W6 ?% Z$ C! A' n* O
if (counter_i >= 6) then
# e( h- Y6 c r' `9 X
counter_i <= 0;
2 j) Y4 U, d$ S
nxt_state :=t7;
R0 i2 r! T; f/ A, D% B
else
# H" y" U& V) X, E% S
counter_i <= counter_i + 1 ;
& L9 f- W: b% i# g" V4 ?+ V6 k
end if;
/ y) q8 j8 d- d# d
if (counter_i < 6 ) then
3 F% Q! Z$ A3 p5 ?+ N
nxt_state := t5;
8 V: C( s1 {/ Q8 M8 Z
end if;
$ K' w2 ]) Z/ K
7 p( J9 }# D; n6 m
when
t7
=> -- read LSB (lo-byte), send acknowledge, sent stop
) U% d9 q" p3 n
istart := '0';
0 E" e/ |1 `5 y1 I9 u+ J. _
iread := '1';
0 T9 k) Z2 P; O3 [5 {7 d/ A2 g
iwrite := '0';
, R" B& h2 \2 n. Q: e# W5 O
iack := '1'; --NACK
: Z% }" V- R ~/ U
istop := '1';
+ ?( ?3 l; F$ n! J* m9 g4 ]$ j# z' { q
istore_dout := '1';
作者:
spring69393
時間:
2008-11-18 11:22 AM
有前輩能抽空指教一下嗎 >"< ,困擾好久想不出解決方法呢。
作者:
tommywgt
時間:
2008-12-15 04:36 PM
標題:
改成這樣如何?
when t6 =>
1 R( W0 U x ], R: S* q
if (counter_i >= 6) then
) B2 F6 e7 H6 v6 m3 C' c
counter_i <= 0;
- N* _6 E9 j: Z7 g
nxt_state :=t7;
/ v/ v. ]# [0 Q" s, t
else
; a8 P7 U, b' u6 S# R
counter_i <= counter_i + 1 ;
. f6 I2 Z9 ?! k3 @) z! M
nxt_state := t5;
: E/ [# s/ D5 K9 P( d
end if;
作者:
spring69393
時間:
2008-12-21 12:51 PM
感謝板大指導^^,似乎寫了有點多餘的部份
) V) _0 p; g# b6 n
5 `- ]" x8 k% i4 J- T5 i# T2 q
4 N3 Z/ w/ F9 v- b- p
$ K' Z. `5 Z) y J1 K( y* n
歡迎光臨 Chip123 科技應用創新平台 (http://www.chip123.com/)
Powered by Discuz! X3.2