Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

[問題求助] VHDL程式計數器懇請高手幫助!

[複製鏈接]
跳轉到指定樓層
1#
發表於 2008-6-2 20:14:24 | 只看該作者 回帖獎勵 |正序瀏覽 |閱讀模式
各位高手安安∼
8 n1 u* Z5 c: d8 t0 _) o2 Y想請問一下; O/ q1 E; @+ K% }
目前小弟要做一個VHDL程式
3 \! b& H( ^, n: q. w* }動作是∼0∼9在7段顯示器顯示出來$ _% t  N2 p% j/ u  m
剛開始數字顯示在9並有1顆LED燈會亮∼
0 L, X( \7 `: k. b0 `& l1 `& C之後∼再按下SW1。數字會變成8,再按一次變成7,依序遞減到0(9變8時LED燈會熄滅)& z7 a  O! E7 l# i+ j/ `# @
然後再按下SW2數字由0變成1依序遞增上去至9,到9時LED燈號會亮起。
8 M; W/ L& B! H( s7 R7 O5 K請各位高手大大可以交交小弟阿∼∼ 小弟已經認真學習了∼但真的苦手
' m& R5 ?4 r' o7 k& t/ n* E7段顯示器是共陰
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
4#
發表於 2008-7-14 20:47:38 | 只看該作者
在我的電腦看那個6 }1 t" R2 {# L# t
<=
  ?! T+ `2 O7 |9 {" |會變成 $ i* u% q1 M" i" e
&It;=9 N! Y6 \+ N/ k! r3 q( `  I
也,好怪,有人看到不一樣的嗎?
3#
發表於 2008-7-14 20:44:10 | 只看該作者

給你參考一下

隨便寫一寫沒檢查語法
: J. A" X$ f( ]" D+ K前面的部分請自己加入宣告
$ {# Y) H+ u& a  E2 |( l7 I% d基本上這個code應該會動,如有小細節有問題自己改一下好了
( }; ~7 k9 k/ d9 @$ k另外這個code假設開關沒有彈跳且電路有額外提供一個clock source
8 ^: o& R- H; f4 j
! c7 o" m+ l& Q; H" O( d) K# Dconstant dig_0 : std_logic_vector(7 downto 0) :="xxxxxxxx"; --請自己定義共陰的信號0 m2 o' }. g# a  u6 Q: S
constant dig_1 : std_logic_vector(7 downto 0) :="xxxxxxxx"; --請自己定義共陰的信號3 c" e  D$ M/ @+ E
constant dig_2 : std_logic_vector(7 downto 0) :="xxxxxxxx"; --請自己定義共陰的信號+ C% ?: n: \0 v. {; G
constant dig_3 : std_logic_vector(7 downto 0) :="xxxxxxxx"; --請自己定義共陰的信號4 G! P# k( H: u) s8 ?8 L
constant dig_4 : std_logic_vector(7 downto 0) :="xxxxxxxx"; --請自己定義共陰的信號# \/ Y9 }. h8 V& y4 [% l7 m% ]5 F9 ?
constant dig_5 : std_logic_vector(7 downto 0) :="xxxxxxxx"; --請自己定義共陰的信號
4 j  }  z, Z- a" O( v* _, e/ c! ~& sconstant dig_6 : std_logic_vector(7 downto 0) :="xxxxxxxx"; --請自己定義共陰的信號
+ p; h) I/ K) e7 R* h# s% g( ?- xconstant dig_7 : std_logic_vector(7 downto 0) :="xxxxxxxx"; --請自己定義共陰的信號8 v: B  Q  x" J* H/ ?6 i1 v
constant dig_8 : std_logic_vector(7 downto 0) :="xxxxxxxx"; --請自己定義共陰的信號) M# q8 o& C" W
constant dig_9 : std_logic_vector(7 downto 0) :="xxxxxxxx"; --請自己定義共陰的信號$ |, a. V4 ]& B! T
signal cnt : std_logic_vector(3 downto 0);
) L2 e9 d7 M* L* \) c6 xsignal sw1D, sw1Q : std_logic;$ r3 M2 j5 j0 i$ |7 i
signal sw2D, sw2Q : std_logic;7 K0 l9 H  x, H1 ^
begin0 I4 ^# D. ~& a0 C0 R4 n$ D
' a7 N5 s2 ]. d: j# Q6 \4 A+ G
process(rst, clk, sw1)
( M: s3 m1 r1 B- {' g" @" I* O) \begin' H( }: r' n8 A5 D" T# _5 J
    if clk'event and clk='1' then: E0 }* `/ s" v
        if rst='1' then
9 a, n& p+ g" X  N( x            sw1D <= '0';3 i, L+ o9 u" P+ M6 F
            sw1Q <= '0';' C1 a- v7 v# V6 \) Q
        else
& v  W1 q0 X: l% w$ c( `; s" k            sw1D <= sw1;* K5 U- i3 v! m+ G2 s# m
            sw1Q <= not sw1D and sw1;, T* _" P% K- ^
        end if;$ P1 [' Y8 t2 {& v3 w. ^; |* D
    end if;" y/ r% p6 \! p
end process;
) i8 U9 ?; y8 ]0 N  c/ I
' V# s1 i  A. c5 o" W( _process(rst, clk, sw2). U! l+ x/ |- |, a2 ?5 \1 }" H
begin$ Z8 {: N8 ]8 [" a$ k. l
    if clk'event and clk='1' then: {4 ]! Z8 ]& k' j
        if rst='1' then
3 \. v5 v1 g8 v% f5 `; C2 S            sw2D <= '0';
$ S" r2 ~$ `& O- I2 o9 r& Q            sw2Q <= '0';, i% Z, y+ V0 B: c7 X5 p
        else
* s- C: p+ D' g3 j7 `9 P            sw2D <= sw2;
1 C6 F- _, ?/ R/ r" Y" V/ @            sw2Q <= not sw2D and sw2;
$ w: V. E4 b* A5 G+ G+ j2 T2 X' [        end if;: B& L/ \# [$ u
    end if;8 G% x  y0 e7 }" l% i6 n4 ?
end process;
) z5 r5 A+ @) X7 s8 z, p
% i+ t: ]* Q' c1 X* Pprocess(rst, clk, sw1Q, sw2Q)
0 t# w/ {! O% R& p1 x- Cbegin
6 R2 h3 h* E: {$ V: x2 z) k    if clk'event and clk='1' then& {( O( V1 l6 l& V9 h
        if rst='1' then- F1 e8 e- t1 s: S
            cnt <= "1001";             --initialize to 9 when reset
- q& I" t2 ^- ~' s        else' m8 k* H3 r; k5 k4 r
            if sw1Q='1' then+ l2 p2 ?( z/ r- r& d: n6 U
                if cnt/="0000" then cnt <= cnt - '1';  --下數時下限為0$ F/ @8 S1 u# j
            elsif sw2Q='1' then9 q1 S' Q( c' W) C7 Z% D1 h
                if cnt /="1001" then cnt <= cnt + '1';  --上數時上限為9
" d# s4 H6 S- h, X  `. c' I. x, K- Y, _            end if;
' O0 B4 N- f' p/ e- O        end if;7 s$ v  y2 L3 F/ Z1 q. F% P
    end if;
$ ?* e4 b# {4 ~end process;, Y5 @) |$ C! R* l5 M( s+ Q

  b7 l1 Q: m1 f- T- b/ j& i7 Wled <= '1' when cnt="1001" else '0';! h  h) S7 [: P  Q' H
with cnt select led_dig <=
2 m9 Q) M1 P, d5 F; _; }$ ?    dig_0 when "0000",
1 G1 O1 G6 g; t: K  h, t2 E    dig_1 when "0001",2 U+ G' v- Z  K. q
    dig_2 when "0010",
+ y' b' }1 I* E4 H( O    dig_3 when "0011",
& X3 D% f* i2 u9 r9 L    dig_4 when "0100",
, }1 j/ ]3 M( G5 e    dig_5 when "0101",
& E. c& H9 J- V* d    dig_6 when "0110",# z+ t: Q; Y3 L/ n* |: w
    dig_7 when "0111",) m; D4 p1 C' C* Q0 m) k" b
    dig_8 when "1000",# |' c9 d/ ?+ y' P! [) {$ {' n( W
    dig_9 when others;; w5 A- X$ ~) w
6 b$ R; O4 r) M; _
end behavior;
2#
發表於 2008-7-14 16:21:40 | 只看該作者

3 h6 w9 H9 N6 _7 S: r3 v- Z/ `vhdl  的書本 及 網頁 都可以找到類似的......3 m( H8 f1 _/ a8 Z* S% H9 e- X
只要自己參考一下  做個變化 應該就可以達到你的要求....6 T3 L9 M' }- R& c' F2 I4 f; L
題目不難 ...   用心就OK!!
" n, h9 |$ @& U8 P+ H3 U, G- y1 G* V6 u* ]1 W
加油
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-5-21 04:41 PM , Processed in 0.110515 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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