Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2008-10-19 14:58:19 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
大家好 我想請問一個問題,我將兩個書上的範例結合在一起想寫成一個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
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
2#
發表於 2008-11-1 10:00:10 | 只看該作者
Q        <=        Q + 1 ; 你沒給q初值吧。他不知從那加起。& W5 n) |7 ~' w7 q
  DIN        <=        Q(23 downto 20); din 看名字應該是輸入為什還能給信號,不懂??
3#
發表於 2008-11-1 21:00:30 | 只看該作者
如同spring69393大大所言, 的確是怪怪的
3 w- @6 N. J1 E4 w. e& r- e% ADIN        <=        Q(23 downto 20); 的輸出值卻一直是"0000"  應該原因在此
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2025-2-24 07:19 AM , Processed in 0.168010 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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