Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2008-6-2 20:14:24 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
各位高手安安∼
# f6 r* D2 }, M% V想請問一下
4 [6 h9 j! k' j目前小弟要做一個VHDL程式
3 B) A& e; U/ N0 Y& T8 s  d9 k動作是∼0∼9在7段顯示器顯示出來
* i: d' o8 n. B0 [, C$ ?剛開始數字顯示在9並有1顆LED燈會亮∼! q6 {8 I% [1 K0 a; R6 N
之後∼再按下SW1。數字會變成8,再按一次變成7,依序遞減到0(9變8時LED燈會熄滅)
% X* ^; O6 I# x8 U然後再按下SW2數字由0變成1依序遞增上去至9,到9時LED燈號會亮起。" b" f+ J: I5 v3 \( V) r6 d$ g
請各位高手大大可以交交小弟阿∼∼ 小弟已經認真學習了∼但真的苦手4 R  P& [  Z1 h+ x" q" n
7段顯示器是共陰
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
2#
發表於 2008-7-14 16:21:40 | 只看該作者

$ o2 w! [8 E& B9 o" F; fvhdl  的書本 及 網頁 都可以找到類似的......
6 ~: C) o5 M) W/ G  h; q只要自己參考一下  做個變化 應該就可以達到你的要求....
: z1 D& @, u# F題目不難 ...   用心就OK!!4 b. q2 Q2 s; m4 e4 U1 G

6 v7 b# W  _9 \" s加油
3#
發表於 2008-7-14 20:44:10 | 只看該作者

給你參考一下

隨便寫一寫沒檢查語法! T# A  s0 s5 V, m) S, a
前面的部分請自己加入宣告
4 g. d2 H9 [0 o0 c3 |1 }基本上這個code應該會動,如有小細節有問題自己改一下好了; A. Q) _# E- @
另外這個code假設開關沒有彈跳且電路有額外提供一個clock source
% k0 D6 Z2 w/ l; ]6 g/ o8 h. ?( H1 g8 u- a1 U
constant dig_0 : std_logic_vector(7 downto 0) :="xxxxxxxx"; --請自己定義共陰的信號3 V2 K$ y2 o  C0 G* q
constant dig_1 : std_logic_vector(7 downto 0) :="xxxxxxxx"; --請自己定義共陰的信號
* Q( B' ?! S9 R: Yconstant dig_2 : std_logic_vector(7 downto 0) :="xxxxxxxx"; --請自己定義共陰的信號2 p* ~- S: i6 ?- s; X; t
constant dig_3 : std_logic_vector(7 downto 0) :="xxxxxxxx"; --請自己定義共陰的信號
* O' y% u9 E# l6 A. mconstant dig_4 : std_logic_vector(7 downto 0) :="xxxxxxxx"; --請自己定義共陰的信號9 C$ ]# Z+ m; ^  b9 _0 `- |
constant dig_5 : std_logic_vector(7 downto 0) :="xxxxxxxx"; --請自己定義共陰的信號& i- h1 `$ l) ?, P. o- T
constant dig_6 : std_logic_vector(7 downto 0) :="xxxxxxxx"; --請自己定義共陰的信號  U7 d1 I& s: Q( y
constant dig_7 : std_logic_vector(7 downto 0) :="xxxxxxxx"; --請自己定義共陰的信號/ T! I& @# ]4 r  `2 E
constant dig_8 : std_logic_vector(7 downto 0) :="xxxxxxxx"; --請自己定義共陰的信號
$ O" F" V$ t! w& Q' p/ Y4 Fconstant dig_9 : std_logic_vector(7 downto 0) :="xxxxxxxx"; --請自己定義共陰的信號
5 g4 }4 v/ x7 C+ C9 fsignal cnt : std_logic_vector(3 downto 0);6 B4 W  X% N8 G; y; }5 a, N+ C
signal sw1D, sw1Q : std_logic;+ V2 M) `  q; z6 Q: m- M& {. \: i
signal sw2D, sw2Q : std_logic;2 {& k+ ]7 y0 [4 _3 ~1 y) w! y! ?
begin
7 V; L& x5 y2 A5 ^" t! [0 ~- O5 g1 }, _4 b6 B7 R: W- x% Y
process(rst, clk, sw1)
. @1 e/ x" k! X- c" V6 s" s9 Cbegin
5 j. O0 u+ Z' y: g    if clk'event and clk='1' then# s8 r( V/ ^1 j$ s* d. v# H" }
        if rst='1' then
. s2 V! E) {& S4 T* m* y            sw1D <= '0';' u4 P2 n3 C4 \0 a5 ^
            sw1Q <= '0';
/ i; b+ ?% ?# D* D* {# ~        else; x& }  A8 A; I5 V, x
            sw1D <= sw1;% z- d) ]$ Q+ c! Q: y, Y
            sw1Q <= not sw1D and sw1;1 I! @; ~8 @, i7 m
        end if;9 D$ \7 t! J) ~3 k! I5 C2 o0 m
    end if;/ g, T  a4 Y1 ?0 ?
end process;
4 T- V9 v- @2 O+ Q6 W0 \/ E" K1 w7 _
/ u+ m, w! s* w) h0 x( O7 `/ R# z; E3 ?process(rst, clk, sw2)) m$ {* v) z" q" v" ?# ~3 I0 ]
begin; T2 y7 f0 m' a  X
    if clk'event and clk='1' then1 H# I; U  l% I# \( _: f' @+ X
        if rst='1' then3 |, F6 P# M" A* a* m8 C
            sw2D <= '0';. Q% [/ Q0 U; z. z# A4 r
            sw2Q <= '0';
% T2 [3 ~3 [1 E        else
& c5 I1 [* {# Y) I, g            sw2D <= sw2;7 d+ f! E* L7 ]$ X+ ?! S0 k
            sw2Q <= not sw2D and sw2;
8 J  `: H" p9 r0 L" p3 K        end if;
1 t: b" h$ ?" P% X) @$ ]! o    end if;
6 e3 l7 u; K  K, m, x; Q8 {end process;
! a. W, B4 a3 Y8 X" v& ?% w8 f$ Y
" ]1 u4 j) T  Y4 C8 U; Zprocess(rst, clk, sw1Q, sw2Q)% l, @5 x  y  f  p' W( l6 b
begin: b6 c1 j% h2 G' |
    if clk'event and clk='1' then4 ~/ o* w) Q$ j. i- Q0 X/ Y
        if rst='1' then
3 W$ J3 U6 }& `# W            cnt <= "1001";             --initialize to 9 when reset
" e8 l+ h- `) |% R1 k, p# d. s        else! U# k3 j+ G4 O3 x) C. X* S7 n' m6 T
            if sw1Q='1' then
2 N9 A. `1 U! `# w: E0 n                if cnt/="0000" then cnt <= cnt - '1';  --下數時下限為0
: ]6 T# S9 C) K: k3 K            elsif sw2Q='1' then7 g% o+ U( D4 o; r" C; B& U0 a. e3 t
                if cnt /="1001" then cnt <= cnt + '1';  --上數時上限為9! n/ e  k2 L/ L* U
            end if;
9 }) B" Q3 h" f  I7 o5 m        end if;
' G( `) C: L0 E    end if;
6 g# E* Q- y( X0 `7 e/ N' D! qend process;4 j: c2 W. z2 H+ t( ^" B0 ^/ F
7 c$ ]) i7 O$ F2 s- c
led <= '1' when cnt="1001" else '0';% ?. l" ?+ ~9 v1 J8 s
with cnt select led_dig <= - n* r- H1 c% r8 N" W4 v6 {
    dig_0 when "0000",$ d, c3 w  ]* [# d$ t
    dig_1 when "0001",
7 i! `# h: q/ L+ m; @1 w    dig_2 when "0010",1 X0 g1 q" k( F& K: k
    dig_3 when "0011",1 w" ^6 l# m2 H4 G
    dig_4 when "0100",
! W' ~. l! E2 d* t; C$ |2 S    dig_5 when "0101",, t7 U. v' R" ?* u  d
    dig_6 when "0110",) `9 M0 i0 q7 b5 D- O7 S8 v  O
    dig_7 when "0111",( _% E. f& x7 ]. o; ]
    dig_8 when "1000",- Z/ ~" @& x3 c
    dig_9 when others;' ^, `5 S4 g' ?* i9 H* Q, v

$ i9 P3 a$ f4 B7 f5 Send behavior;
4#
發表於 2008-7-14 20:47:38 | 只看該作者
在我的電腦看那個
, |4 z) j0 ^1 N' t! x6 w" z<=
* w/ C& ]( R& {& U7 m會變成 
1 R6 r- X6 o. i1 i&It;=
4 `& L2 K* T$ ]6 @. d- f4 d也,好怪,有人看到不一樣的嗎?
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-6-16 10:12 PM , Processed in 0.120015 second(s), 17 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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