Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

[問題求助] 0上数到9的VHDL程式,有點小問題

[複製鏈接]
跳轉到指定樓層
1#
發表於 2008-10-19 14:58:19 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
大家好 我想請問一個問題,我將兩個書上的範例結合在一起想寫成一個0加到9的VHDL程式,
& a; L/ m3 T6 d但現在出現了一個問題,當我程式加上FREE_COUNTER這個block執行模擬時這個block內
; h, O, l# J! p的        DIN        <=        Q(23 downto 20); 的輸出值卻一直是"0000",變成
; Q6 e6 ?$ D7 i7 n! R我只能用cnt的值來控制我的七段顯示器輸出了,我想請問大家可能是什麼出了問題? 8 e( M" o3 ~8 t
; e, q3 {: z8 J5 q
另外我想再請問一個問題,我將我模擬的波形放在附件中,seg_output的輸出會有一段一段& h& Z: w1 h# G. `/ @
很不規則的訊號該怎麼消除呢?  
! F( l0 R; d  g$ F& v- A, K" J% r' _
不好意思耽誤各位的時間,麻煩大家了!!; L' G) n' Q: P" I

$ C7 D) g+ H6 m) Q- |**字數太多了,我把宣告省略了**
% p) Y# r9 H6 tbegin6 y3 `! C8 s3 ^6 e( c1 s! `+ ~
SYSTEM_CONNECT        :        block % O& N; C+ x& |, V, d
begin; Z9 [! @7 Z$ x( i8 h5 B, W& H
        seg_output(6 downto 0) <= seg;
1 R- l) d; m, E, x$ }4 O9 U4 L        seg_set <= seg_s;
' k$ V' S$ M9 }( M/ G) Fend block SYSTEM_CONNECT;4 @7 j/ }) K: G  z1 v6 b

+ Z4 f; @8 K2 {7 ]SYSTEM_SET        :        block
; r: g( Q, l7 {2 {) T, k% a, H% Zbegin
4 S% k8 I5 B; ]4 Z% V$ s        process(CLK)  h. ^1 c5 D5 S$ C9 Y- B
                VARIABLE cnt        :        std_logic_vector(3 downto 0);9 k) }4 b" i# o
        begin( G& ~7 j1 l9 v6 e, h# Y/ w  J5 ?9 j
                if CLK'event and CLK = '1' then
4 y* ]' @3 ]# Q; t, Q2 S* Y1 H                        if clrn = '0' then) v' O- |4 {4 r
                                cnt := "0000";2 J1 _$ U% s( f( E% T8 G# z9 Y
                        elsif load = '0' then$ Y1 G, f$ f, _- J& q
                                cnt := D ;
: I9 y3 R/ r7 i( W                        elsif (ENP and ENT) = '1' then
! Z2 f& a; {1 n3 Y+ B# Y                                if cnt = "1001" then
# r  `# ~* C: P- ?) @/ {6 {                                        cnt := "0000" ;) z9 g, L6 V) X+ y' f
                                else
7 s- C3 c5 q1 r                                        cnt := cnt + 1;  V0 \! u% x2 k6 a
                                end if ;8 ^  `% s5 i7 Z8 `/ t7 e/ [% L
                        end if;* i4 d% j" t5 e& D- `
                end if ;+ T  F. e2 l- J; M
                display        <= cnt;
: F6 i) Y4 b% N/ ?, `6 `: s0 t                --DIN <= cnt;* h  s+ a! B& }" R3 G
                Co                <= cnt(3) and cnt(0) and ENT;
9 H4 ~- H* |' `* m- ]- V: ~        end process;
; N' V9 ]9 {/ E( X9 W9 C7 |& u2 |" uend block SYSTEM_SET;       
! x+ l/ O3 _1 i! {* K. e9 M; S6 O7 }7 J
FREE_COUNTER        :        block6 h9 Q. Z( G9 ?2 v) O. Q5 |7 r" v2 v
        signal Q        :        STD_LOGIC_VECTOR (23 downto 0);
% Z$ H2 E! X! q* ]2 ]& b        signal D_FREEC        :        STD_LOGIC_VECTOR ( 1 downto 0);
1 e4 y# k! A$ \# r  q+ }
; C: Z6 q; {( ~* P. a" Wbegin; t& s2 Y4 h8 u8 A
        process (CLK)4 _% M0 x9 A( ~: g7 K6 k- w
        begin
4 O0 s; ^! J* C+ y1 w# K8 S                if CLK'event and CLK= '1' then
9 V' U6 d4 w6 @0 f7 Z3 R                        Q        <=        Q + 1 ;6 i. ?: D; n1 W, {- P5 a
                end if ;0 {8 h1 @. H0 |' `% n
        end process;
! ^/ g3 P+ K/ r5 @6 n0 V        DIN        <=        Q(23 downto 20);
8 f" M- ?0 l8 a7 k; j! H' S/ u! d        D_FREEC        <=        Q(15 downto 14);7 }0 Z8 |4 `* g
        seg_s        <=        "0001" when D_FREEC=0 else
5 |- k% y4 w. Z5 N, m                                "0010" when D_FREEC=1 else3 a4 I9 I1 W5 R! s4 a7 O% r: k
                                "0100" when D_FREEC=2 else- O' `: }( X& ]( f% g5 |7 K! Q
                                "1000" when D_FREEC=3 else* D$ d  t6 k. ~9 C9 ~7 J3 N
                                "0000";
+ F* V0 u3 t" z$ q- W2 f, ~end block FREE_COUNTER;
3 n* a+ y* V4 KSEVEN_SEGMENT        :        block! e' b6 w# G$ M" C1 ?# C1 _
begin
. v# w. q- H/ D- s9 Q3 d
8 i1 L& r: b& t$ {  W9 u4 ^seg        <=        "0111111" when DIN = "0000" else, f' V, D4 }1 G8 y
        "0000110" when DIN = "0001" else3 d' x' u& C+ q& b, }
        "1011011" when DIN = "0010" else/ |. g& I& k; ~6 H
             省略
8 }: Y2 t" [7 a! v; j# X8 F$ P        "1110111" ;
6 C& \6 z$ I) S( o! z% ^& q# Q( j) z
end block SEVEN_SEGMENT;          # v9 ]" U9 J% J. W, J1 T
end zeroto_9_type2_arch;

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有帳號?申請會員

x
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
2#
發表於 2008-11-1 10:00:10 | 只看該作者
Q        <=        Q + 1 ; 你沒給q初值吧。他不知從那加起。8 P% a8 Q3 b3 m5 n) ]+ s! m  h# c
  DIN        <=        Q(23 downto 20); din 看名字應該是輸入為什還能給信號,不懂??
3#
發表於 2008-11-1 21:00:30 | 只看該作者
如同spring69393大大所言, 的確是怪怪的& C7 w- E: {5 l  W4 r
DIN        <=        Q(23 downto 20); 的輸出值卻一直是"0000"  應該原因在此
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2025-2-24 07:48 AM , Processed in 0.162009 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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