|
大家好 我想請問一個問題,我將兩個書上的範例結合在一起想寫成一個0加到9的VHDL程式,
; J6 j1 D! j* p- s+ g) n但現在出現了一個問題,當我程式加上FREE_COUNTER這個block執行模擬時這個block內' M5 p; y, Q; ]
的 DIN <= Q(23 downto 20); 的輸出值卻一直是"0000",變成
8 B+ {9 E: _% K9 C# \+ l我只能用cnt的值來控制我的七段顯示器輸出了,我想請問大家可能是什麼出了問題? + s1 B$ Y, B8 v9 B4 m2 y1 r
: l4 E4 X" K# t& K
另外我想再請問一個問題,我將我模擬的波形放在附件中,seg_output的輸出會有一段一段
: N# {: E# N" j, E很不規則的訊號該怎麼消除呢? ! \' h! z. C7 A, ?) k
: ~! [: S% f& x% Z5 c9 L
不好意思耽誤各位的時間,麻煩大家了!!
4 n1 E$ x: T$ B4 u! G% R/ G6 P2 ^2 ?0 ?2 _2 [: |- p
**字數太多了,我把宣告省略了**" b* g; V% H& h: b- S; K
begin' y( G1 U! }" |$ \* d- g; n% C# z
SYSTEM_CONNECT : block
/ d* Q) Y/ A' ?1 w2 ybegin
8 J3 S+ I3 Q4 R3 u! `; ] seg_output(6 downto 0) <= seg;
) b& F2 S- l% R$ x/ X) U6 e) b seg_set <= seg_s;
# D: e7 }5 y# ]) R: f$ h! f" U* k% n4 ~end block SYSTEM_CONNECT;* p# _ z0 z- L9 V. Y
5 C, u; X) ~+ U2 f5 v* _2 {8 MSYSTEM_SET : block; t9 I4 J2 w5 N" b3 [; p
begin+ b. D; _! I( n" [+ ]
process(CLK)7 B' x- d# C/ P0 v S3 e
VARIABLE cnt : std_logic_vector(3 downto 0);% S- t8 w9 i# E& }, I3 y5 O( {
begin
! A8 E/ l, o9 X; c2 f# [. N if CLK'event and CLK = '1' then
/ W) G7 F3 Z% W7 V3 Z9 R if clrn = '0' then
6 m* F' X& l; O+ `/ y- L cnt := "0000";
% E: {* `% ~+ C8 y elsif load = '0' then
4 C$ C# n5 a$ T/ i' M cnt := D ;/ p {7 O1 R% ^. X: L
elsif (ENP and ENT) = '1' then0 j' B* s, `" R4 N2 u* k
if cnt = "1001" then
7 i6 G* v, {; w; u+ O7 j: H" Y cnt := "0000" ;; B) w/ Y. T# ^+ Z4 }
else1 o$ A! q. G- y" l7 A* c$ t" Z% O
cnt := cnt + 1;
% L4 e- O( G' D& U$ \: z6 m! t end if ;5 L3 ^, G+ y- J( E% ]( f4 J
end if;' ^* Q& j' u2 A! C) A5 }) G
end if ;+ m7 ?, y9 E. K) q
display <= cnt;
& q7 ~; M9 }6 I --DIN <= cnt;
0 J+ J" F* K4 l Co <= cnt(3) and cnt(0) and ENT;
3 F& c) P1 w4 Y1 p/ A end process;
8 a, A* S3 \4 i% Z Qend block SYSTEM_SET;
$ w h( u" G( A( x4 i
0 e* Y6 h6 {- G% I. c/ nFREE_COUNTER : block
% C" V- E* ]; G: w9 F" P signal Q : STD_LOGIC_VECTOR (23 downto 0);& l- ~6 R& J, s
signal D_FREEC : STD_LOGIC_VECTOR ( 1 downto 0);
4 e2 y! O* y4 ?
3 K$ {% j1 B/ @- Mbegin# M1 ^1 s# Q9 P+ O1 K
process (CLK)% p: @$ u* M' R; h- ~
begin$ o% p. B# A% M2 @$ g" m
if CLK'event and CLK= '1' then
' r* q2 l% f5 n2 s Q <= Q + 1 ;5 k; h0 m% N8 g2 z
end if ;2 p s" D4 B3 C
end process;6 M+ l% Y- P I' i) I
DIN <= Q(23 downto 20);& { w2 D Y% y) ?
D_FREEC <= Q(15 downto 14);
& c" `2 y/ s$ [+ \# \- l' ~2 I& Q& P seg_s <= "0001" when D_FREEC=0 else
1 ~6 }5 U) T9 i8 W0 R3 P8 m* @ "0010" when D_FREEC=1 else) o6 K; x! I! A, j8 @. N8 S( I) w8 _) I
"0100" when D_FREEC=2 else( ~, G6 C/ l L0 q; {
"1000" when D_FREEC=3 else
, U7 {" r2 A, w4 V1 w; I# ? "0000";
' b, }# [( w# jend block FREE_COUNTER;
( K4 Z1 L& Z# pSEVEN_SEGMENT : block7 c$ `; T2 l8 s
begin
8 D" g/ A5 B4 n% l& V0 D
: r- Z* m8 O' E# ^! ^) ^ S1 [! Yseg <= "0111111" when DIN = "0000" else
0 J k8 L: W) R3 K& b "0000110" when DIN = "0001" else
9 E( s' p. K$ n4 _5 \ "1011011" when DIN = "0010" else
7 T' U: t' \0 c6 l0 p 省略
' \0 p I: [" ]9 l5 ^ "1110111" ;% @" t: I" b/ U1 c
8 C( d( c0 S: Cend block SEVEN_SEGMENT; " i( D# a0 F5 q, x' [- E
end zeroto_9_type2_arch; |
本帖子中包含更多資源
您需要 登錄 才可以下載或查看,沒有帳號?申請會員
x
|