Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2008-10-19 14:58:19 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
大家好 我想請問一個問題,我將兩個書上的範例結合在一起想寫成一個0加到9的VHDL程式,+ A; i& E0 z4 V% \* a6 F5 g
但現在出現了一個問題,當我程式加上FREE_COUNTER這個block執行模擬時這個block內# l4 |3 r$ I; A: A- ~+ ~4 _; Z
的        DIN        <=        Q(23 downto 20); 的輸出值卻一直是"0000",變成" \: S  ^$ t2 o& ^: M1 Y- j& A9 Y
我只能用cnt的值來控制我的七段顯示器輸出了,我想請問大家可能是什麼出了問題? . U% x2 p7 h2 r

7 Y, y; N* r+ X9 K4 B9 C另外我想再請問一個問題,我將我模擬的波形放在附件中,seg_output的輸出會有一段一段) y& W, |% G$ Y; N
很不規則的訊號該怎麼消除呢?  
) A2 B$ b# }6 R1 w' f7 g5 i' F& H  g# s& `6 K9 t$ ?. D
不好意思耽誤各位的時間,麻煩大家了!!
( V# Q  |* \, R- e7 ?8 Q1 k. o
**字數太多了,我把宣告省略了*** M9 `# ]* I% O# K! N
begin
0 u6 t0 U0 K3 ?( g  k: gSYSTEM_CONNECT        :        block 7 Y  _6 N7 J) \% z
begin
7 n; y, ]- z* c9 c9 A. a        seg_output(6 downto 0) <= seg;
* d) Q7 p' X' ?: E/ y' w        seg_set <= seg_s;
2 G5 ?/ `$ D+ y: `. yend block SYSTEM_CONNECT;6 H6 u4 k, g/ A% l; T. H
0 O* y% E$ M6 ?; ~# _9 \
SYSTEM_SET        :        block3 {8 D9 `- |7 D# g
begin7 e. ?/ i) o  L& E
        process(CLK)
: d- o0 Z7 U6 _3 p                VARIABLE cnt        :        std_logic_vector(3 downto 0);6 ~- r: F  y4 T( R
        begin3 V8 r; I& v( w
                if CLK'event and CLK = '1' then. E& h2 Z! t/ \7 }
                        if clrn = '0' then6 t) X& ?/ V0 z& O: }6 w+ ~
                                cnt := "0000";' q, p: H7 R1 J6 Z# F! J
                        elsif load = '0' then( K: X  f: k0 [3 P8 x
                                cnt := D ;
( }+ l2 M2 g1 G3 @; G6 Y                        elsif (ENP and ENT) = '1' then
; n+ A: u$ c/ n+ i8 R4 D$ z                                if cnt = "1001" then
6 z2 e& f  Q( J' A; o7 K' A; P                                        cnt := "0000" ;1 |" x; t+ J1 V' M
                                else3 S, ]3 ~1 P0 [
                                        cnt := cnt + 1;0 k& X. _. z' J, |
                                end if ;- t! V5 |  s$ Q7 O6 }" |$ g
                        end if;
: I, ~" b1 b. L$ R$ m& [* n                end if ;8 G" q. i& q, j7 A8 G2 ^
                display        <= cnt;
* ^, S8 a$ C3 D                --DIN <= cnt;2 Y, _# T1 @0 m; n4 E. }, O" ~
                Co                <= cnt(3) and cnt(0) and ENT;  b6 p0 [. N6 }7 e7 b! q2 z" m
        end process;
4 H  t- {) i, i" ^3 Zend block SYSTEM_SET;       
3 Y9 ^4 ]( ^) I! W: ?  _8 y: I* t0 [) d7 w/ L/ |/ @
FREE_COUNTER        :        block
3 k0 y$ h' e- |- g        signal Q        :        STD_LOGIC_VECTOR (23 downto 0);3 i0 B3 x3 C2 u0 K
        signal D_FREEC        :        STD_LOGIC_VECTOR ( 1 downto 0);+ o+ e9 k- Z7 K7 |# h
7 v1 E8 j0 e1 Y2 |9 i
begin- h! o1 Y! c9 @. N& _4 O0 T& \  m
        process (CLK)0 u1 l7 @5 r  ^6 _: c: S: R/ M) q
        begin
& R# _% S9 Q) a. n                if CLK'event and CLK= '1' then
4 Z7 Q$ l; o- B6 C  w1 U( y( S                        Q        <=        Q + 1 ;6 u9 ~0 ]6 A# a4 f. `+ |
                end if ;& T  l9 W4 a4 R+ r% c
        end process;
% }7 s' \# o$ ~8 b* A        DIN        <=        Q(23 downto 20);
: y( j% I+ X, C        D_FREEC        <=        Q(15 downto 14);
3 H1 L' R( z% ^8 l, @( ]; S        seg_s        <=        "0001" when D_FREEC=0 else) b9 e, t. u, @' [" q/ {% B
                                "0010" when D_FREEC=1 else% j  ]/ Z: N, t$ H/ G
                                "0100" when D_FREEC=2 else
/ R# C* d/ E- V$ Y+ ^; }                                "1000" when D_FREEC=3 else, d) O7 v$ b3 y. r- R
                                "0000";
2 G6 A3 n) [  b% ^end block FREE_COUNTER;3 s# B) f  d9 j2 ]1 o- s' P
SEVEN_SEGMENT        :        block
- m+ i- k3 P$ ]# a% V0 r$ ubegin+ E1 ]& Z: I6 [7 E1 U, M+ U
$ j5 }( K" c1 \% J4 W
seg        <=        "0111111" when DIN = "0000" else0 ?8 Z4 W9 Z9 F: N, w0 m1 H
        "0000110" when DIN = "0001" else, X* o' s! |# T  Z3 ?, W# _# ]
        "1011011" when DIN = "0010" else1 F2 c) k7 K0 y1 \7 _1 m3 p
             省略
9 n/ W' ^; G  d5 P, q! ^        "1110111" ;. L( C/ J, I8 X1 s
6 f# m6 o5 q3 b- G
end block SEVEN_SEGMENT;         
" S! x3 `* R0 {6 c% D! K6 e. n) a9 |end zeroto_9_type2_arch;

本帖子中包含更多資源

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

x
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
2#
發表於 2008-11-1 10:00:10 | 只看該作者
Q        <=        Q + 1 ; 你沒給q初值吧。他不知從那加起。( }9 l/ S8 ^# t) L! A
  DIN        <=        Q(23 downto 20); din 看名字應該是輸入為什還能給信號,不懂??
3#
發表於 2008-11-1 21:00:30 | 只看該作者
如同spring69393大大所言, 的確是怪怪的2 i9 P" f( V9 A0 i5 \! r. e
DIN        <=        Q(23 downto 20); 的輸出值卻一直是"0000"  應該原因在此
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2025-2-24 12:34 AM , Processed in 0.160009 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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