Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2008-10-19 14:58:19 | 只看該作者 回帖獎勵 |正序瀏覽 |閱讀模式
大家好 我想請問一個問題,我將兩個書上的範例結合在一起想寫成一個0加到9的VHDL程式,, X7 {3 p9 e7 v* N2 W6 q+ V" A1 r1 V5 v5 ]1 L
但現在出現了一個問題,當我程式加上FREE_COUNTER這個block執行模擬時這個block內, W( Z  f" ?* s' |/ ^
的        DIN        <=        Q(23 downto 20); 的輸出值卻一直是"0000",變成1 h* B3 `4 z( {* \
我只能用cnt的值來控制我的七段顯示器輸出了,我想請問大家可能是什麼出了問題? 8 J% |  E/ j) I/ K! e5 w8 W
6 x& Q4 |7 z. u4 V
另外我想再請問一個問題,我將我模擬的波形放在附件中,seg_output的輸出會有一段一段
2 A! k+ }4 j$ D/ b6 ^很不規則的訊號該怎麼消除呢?  
. v2 ?8 p8 l# ], u, i5 r6 H% m
6 {! E, q6 H' k# _2 E' d不好意思耽誤各位的時間,麻煩大家了!!8 p; e. L/ N6 r5 q) O% o. k

9 v; n5 W' B7 D( m**字數太多了,我把宣告省略了*** A1 m5 X& l" X9 s% W* R
begin
' E- V: ]0 P4 W! b, }4 t: y$ wSYSTEM_CONNECT        :        block 0 X, Y8 ^; B9 S3 |6 X4 v
begin
, K% O) z; Z. u  N: _0 r        seg_output(6 downto 0) <= seg;+ _' R  @9 ^& b% D3 Y3 G: U
        seg_set <= seg_s;
5 a* q; B! l. R9 V0 Oend block SYSTEM_CONNECT;1 x% z  W# L- _. H

0 b7 }- e  f4 ~' T. f  d6 M  WSYSTEM_SET        :        block
4 s7 u+ I( E" W. }! F# W* Z" N) s+ w& kbegin
& V, t$ L* S: N$ f9 z; O/ A        process(CLK)
1 r; T% A9 [; g3 H# E2 p                VARIABLE cnt        :        std_logic_vector(3 downto 0);& ?; q/ N2 E7 y& x( K
        begin
/ q3 ^7 n" J0 y' i$ a1 _                if CLK'event and CLK = '1' then
5 h1 p# [. X% S4 Z  b% E. B( t& {+ b                        if clrn = '0' then
5 Y. W5 K  A3 O$ H# l6 ^                                cnt := "0000";0 I( ]& v* J) v  z" b$ n
                        elsif load = '0' then
* |  e  B- \+ H4 x+ T                                cnt := D ;0 U; ^% [1 }2 [5 q5 h
                        elsif (ENP and ENT) = '1' then
9 z; ~0 ^% d4 A% V                                if cnt = "1001" then
+ w7 i6 c5 t8 u. z0 q% T                                        cnt := "0000" ;6 X- V) V1 j# `0 s# s
                                else4 k  ?/ j# l, P" n$ M9 b! b4 D
                                        cnt := cnt + 1;
4 ?0 w  P* D5 c9 g7 w; q                                end if ;1 R3 h3 `8 p5 ?0 L  s, v
                        end if;
' V- k- K6 r  a                end if ;
$ p7 f& x) U  O                display        <= cnt;
# C. r, c1 \" R                --DIN <= cnt;
; H# P! G, G: T& A                Co                <= cnt(3) and cnt(0) and ENT;
" O! G4 n: z( t5 ~1 e6 Q/ O; d        end process;5 s2 l7 U6 U# S: q
end block SYSTEM_SET;        * t# [( l9 Q4 F0 V8 s' @5 M3 q* W
1 u# \( U$ k3 F
FREE_COUNTER        :        block
% I- f' `, |" ]1 c. u        signal Q        :        STD_LOGIC_VECTOR (23 downto 0);2 w4 n/ g. B1 g# T
        signal D_FREEC        :        STD_LOGIC_VECTOR ( 1 downto 0);
5 p, y- D  A$ L$ [; h
# |! S  D; @% S1 {begin% Y0 K- P/ Y* q
        process (CLK)
8 R+ V. X) v3 o: s4 L        begin
5 z0 ?; u# l8 L. ?                if CLK'event and CLK= '1' then* o6 `" @8 {# E% s, I! f+ N
                        Q        <=        Q + 1 ;) P; W- K9 N/ `. w: j/ ]) h
                end if ;( T' C/ m( I$ u+ b/ p; E* M1 L
        end process;7 u" e  [' h8 Z. ?5 p. \+ i% O& f) f
        DIN        <=        Q(23 downto 20);1 |( v  z* b& j! Y9 x8 w
        D_FREEC        <=        Q(15 downto 14);3 ]' f# q4 v" ^$ N, Z
        seg_s        <=        "0001" when D_FREEC=0 else
7 @* |6 |' \( ~( M; F. i                                "0010" when D_FREEC=1 else
) j: ^7 I9 w7 }1 S+ p5 e7 Z                                "0100" when D_FREEC=2 else
( }' X* b9 v7 a/ n( _& R5 i                                "1000" when D_FREEC=3 else. R5 A+ H: U' l( g
                                "0000";" w4 t/ [% V$ g2 s" p
end block FREE_COUNTER;
1 o( I# P8 Y3 h' [2 j+ T5 ~SEVEN_SEGMENT        :        block& B7 P4 ^4 }9 L  Z( J. ]# X: w
begin
! p3 j" s/ i; t' T1 R; o$ F9 J6 J/ M
seg        <=        "0111111" when DIN = "0000" else
4 d) o: E" N3 r& i$ m1 l        "0000110" when DIN = "0001" else' h2 e- ~% @/ w
        "1011011" when DIN = "0010" else2 `; ^# x$ Y- N. R( w# J% j
             省略
9 X: L: Z/ V" y        "1110111" ;* F) m4 `( I/ _9 Z4 Z1 B+ K8 T

7 w) m7 Z5 C" q; J1 ]end block SEVEN_SEGMENT;         
6 u5 d5 Y, H9 z# T: ]% S: h1 _end zeroto_9_type2_arch;

本帖子中包含更多資源

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

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

本版積分規則

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

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

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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