|
大家好 我想請問一個問題,我將兩個書上的範例結合在一起想寫成一個0加到9的VHDL程式,
3 G7 q% ?2 x( j( s7 E" _但現在出現了一個問題,當我程式加上FREE_COUNTER這個block執行模擬時這個block內
% B' d- r' y- _' _2 J1 \的 DIN <= Q(23 downto 20); 的輸出值卻一直是"0000",變成
) o7 i- a* Z% R. _+ q+ l我只能用cnt的值來控制我的七段顯示器輸出了,我想請問大家可能是什麼出了問題? 8 q# M) x& k/ o$ x+ n
% P! u( @ B: m5 [" G& g另外我想再請問一個問題,我將我模擬的波形放在附件中,seg_output的輸出會有一段一段
! V; w, O0 h5 k% o, W& P很不規則的訊號該怎麼消除呢?
+ e2 z. D `% I2 e! C1 z
3 D! H$ N- @, I, z2 q3 R不好意思耽誤各位的時間,麻煩大家了!!4 t e; K: L! U: F$ O+ G
$ q* P) v7 V2 _$ ?' Y, {: ^**字數太多了,我把宣告省略了**( u" Y( v p/ W0 |
begin1 m9 D: k6 O! o7 i4 M, x5 p! w
SYSTEM_CONNECT : block ) a$ _8 }0 `9 J6 E
begin$ j/ g. @) s" s# l
seg_output(6 downto 0) <= seg;
& c8 \1 |$ i( T* x. B# e+ r seg_set <= seg_s;
; b9 M/ v, O8 k& j4 cend block SYSTEM_CONNECT;
( T3 E5 ]0 u# g8 l4 [" u- g' @4 r) s% t* D/ ^; j. R! P7 K4 i3 J6 v
SYSTEM_SET : block8 @. ~. r4 Z, V H7 F
begin+ N* F J0 b; R7 {7 B9 v5 W
process(CLK)
% v% @* z1 \( E# ^2 f3 H VARIABLE cnt : std_logic_vector(3 downto 0);* o4 F# Y9 {3 O! @# @
begin
6 `2 k1 C/ m4 [ if CLK'event and CLK = '1' then
1 }8 @1 h4 z- o3 x if clrn = '0' then
+ r5 k) R/ Q+ t0 P. G1 h2 R+ i cnt := "0000";
6 _- b' D; q, u6 l7 @8 I4 ]/ K2 g elsif load = '0' then2 c9 O( {8 z# W0 t" }
cnt := D ;; j0 P' T) T4 `
elsif (ENP and ENT) = '1' then5 f( q7 f$ f( t( U; R/ I
if cnt = "1001" then
5 E* L% h( _4 {9 |8 i E8 ]- w$ w cnt := "0000" ;
2 i8 ~$ [2 E( K5 a else* g: o5 J/ M- G% ]' g. a# u
cnt := cnt + 1;) z; F% @6 t& H; ~* B V( u
end if ;
7 E+ N+ T- a0 ] O' n& ]- I end if;
$ p1 {8 _7 U$ N( Z6 m end if ;
/ s ]- u1 \4 O4 {- p4 ?8 o6 ? display <= cnt;, E C' k" f$ d" T
--DIN <= cnt;' w2 O2 ^5 t9 C: D4 s" Z
Co <= cnt(3) and cnt(0) and ENT;* @5 a' P* }! O
end process;
& ^! e; R4 X( x* wend block SYSTEM_SET; 1 I M I% y" q& _& l
3 J: {: X) {8 j2 w
FREE_COUNTER : block( Q' g7 i- J$ x1 D8 k4 T/ d+ f
signal Q : STD_LOGIC_VECTOR (23 downto 0);0 ^# K- P* ?" A4 @+ h8 V+ J1 A
signal D_FREEC : STD_LOGIC_VECTOR ( 1 downto 0);
" T3 V; u0 }& O9 `- B& b3 U: g0 P5 m1 ^* b. H0 S7 u
begin8 {$ P! K! {% O+ n% J' E( I! n
process (CLK), ]7 _6 R8 }& `; P* ?4 Z
begin/ }4 C5 G& D7 K8 \3 [1 J7 [
if CLK'event and CLK= '1' then
. p x; M7 _6 F N, J6 H( g* m7 X Q <= Q + 1 ;
& R" g# T9 O+ H$ _ end if ;
1 m& d1 R5 ?) P9 ?- H% k7 r end process;) q+ f2 c7 q [5 W1 W. E+ S2 ^
DIN <= Q(23 downto 20);, v; h3 Y7 `+ r/ Y
D_FREEC <= Q(15 downto 14);; o+ y8 j6 D) e, c D' H
seg_s <= "0001" when D_FREEC=0 else% E6 u4 u: @& ^; d1 E2 x% t$ W
"0010" when D_FREEC=1 else1 o# O6 w+ s" [. l
"0100" when D_FREEC=2 else
6 \( R( S" X8 s0 z% b( \8 P "1000" when D_FREEC=3 else" f- m) r! f9 b$ L" _; @3 f
"0000";
& X: M6 ?: o+ x$ ?3 B$ ~end block FREE_COUNTER;
0 B* p3 w' V/ n" {0 xSEVEN_SEGMENT : block% w. ~/ a& [& W- c5 g# Y0 N
begin
s1 W% ~& ~3 N7 Y5 }- C) k/ ]
7 V( B0 g5 u3 m Hseg <= "0111111" when DIN = "0000" else% V7 s: }9 F8 _5 h3 S
"0000110" when DIN = "0001" else7 `4 q* t7 z$ d) ]1 ]/ V( e6 g9 U
"1011011" when DIN = "0010" else7 L; A, L+ H4 ~3 i/ e! }! G1 k6 ]
省略6 A0 q0 J2 N- ], c
"1110111" ;
0 e. E5 i, H, w# Q- y! E' \ z; {9 d) K# n- g5 t: f+ v" g
end block SEVEN_SEGMENT; " T" {+ l" h5 u7 _2 u7 _
end zeroto_9_type2_arch; |
本帖子中包含更多資源
您需要 登錄 才可以下載或查看,沒有帳號?申請會員
x
|