Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2008-6-2 20:14:24 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
各位高手安安∼
9 S) _4 }4 n& j$ @4 s想請問一下
+ Y* z' n) d8 M1 N目前小弟要做一個VHDL程式' u6 k' C- `3 [' _
動作是∼0∼9在7段顯示器顯示出來
" M; g! W' q* e- n$ o- `: {剛開始數字顯示在9並有1顆LED燈會亮∼
  v9 `4 ]7 B6 z/ \& Z9 d+ r5 k之後∼再按下SW1。數字會變成8,再按一次變成7,依序遞減到0(9變8時LED燈會熄滅)
1 Y, d6 V7 l6 I然後再按下SW2數字由0變成1依序遞增上去至9,到9時LED燈號會亮起。0 w; _3 Y8 E5 v* C1 b; m+ Q3 ^, i* q6 w
請各位高手大大可以交交小弟阿∼∼ 小弟已經認真學習了∼但真的苦手0 Q0 k7 f4 L: C2 Z% R) ]: V
7段顯示器是共陰
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
2#
發表於 2008-7-14 16:21:40 | 只看該作者

3 p4 ^2 }+ A% V+ a& v+ M1 u) I8 nvhdl  的書本 及 網頁 都可以找到類似的......7 K- s' K2 T& r9 F4 Y
只要自己參考一下  做個變化 應該就可以達到你的要求..... }  T- Y# Q  c- f4 d
題目不難 ...   用心就OK!!
( l- V9 E' |" a3 A: B$ Z( a: D8 F
  B+ k* k9 s, \3 _6 ~' A0 i$ z加油
3#
發表於 2008-7-14 20:44:10 | 只看該作者

給你參考一下

隨便寫一寫沒檢查語法
% A7 j0 i: L) ^' R% q' f' V前面的部分請自己加入宣告
2 W1 N& c* [( t' c  Y3 c3 {$ U基本上這個code應該會動,如有小細節有問題自己改一下好了
" `# I7 t" Y8 u8 k1 \另外這個code假設開關沒有彈跳且電路有額外提供一個clock source
9 \* s# g' g2 u3 k; N/ j
9 ^. o$ E9 y+ F) \& ]$ i& Lconstant dig_0 : std_logic_vector(7 downto 0) :="xxxxxxxx"; --請自己定義共陰的信號
2 e, l) M6 O5 z- ?1 B- ^constant dig_1 : std_logic_vector(7 downto 0) :="xxxxxxxx"; --請自己定義共陰的信號' S1 w  F- R. m7 O
constant dig_2 : std_logic_vector(7 downto 0) :="xxxxxxxx"; --請自己定義共陰的信號
# C, _' y$ V+ J, T# Y+ }constant dig_3 : std_logic_vector(7 downto 0) :="xxxxxxxx"; --請自己定義共陰的信號0 l8 t5 x0 C: V7 W7 a$ W7 i
constant dig_4 : std_logic_vector(7 downto 0) :="xxxxxxxx"; --請自己定義共陰的信號% |! g2 P/ ?/ E# }0 w4 g
constant dig_5 : std_logic_vector(7 downto 0) :="xxxxxxxx"; --請自己定義共陰的信號
4 r: `1 {8 ~# a/ m% ?  D, D: [constant dig_6 : std_logic_vector(7 downto 0) :="xxxxxxxx"; --請自己定義共陰的信號
" f# I, k2 s" s( Bconstant dig_7 : std_logic_vector(7 downto 0) :="xxxxxxxx"; --請自己定義共陰的信號
1 m# Q# P. f1 j: h  q6 C2 wconstant dig_8 : std_logic_vector(7 downto 0) :="xxxxxxxx"; --請自己定義共陰的信號& q( q0 [2 Q$ a$ k
constant dig_9 : std_logic_vector(7 downto 0) :="xxxxxxxx"; --請自己定義共陰的信號
, @1 C3 \( u! ^' |/ l" dsignal cnt : std_logic_vector(3 downto 0);
5 W( K7 _4 I: Msignal sw1D, sw1Q : std_logic;
& {  D; @7 g: ~8 k+ j1 S! asignal sw2D, sw2Q : std_logic;
4 W' n5 m% o. r* P2 U+ F2 Sbegin
/ ~( m; m) E) U, x( l) z4 ~
! p( d1 {1 l7 R. R) v2 f5 j. iprocess(rst, clk, sw1)) ]4 L/ D! \! y; {1 ^
begin8 S* r, A6 Q3 C( H( K7 Q
    if clk'event and clk='1' then
0 f( S1 T# Y# b5 r        if rst='1' then, {! R( W! W2 H! @; g; j6 W3 }1 X
            sw1D <= '0';
: a% k5 X) u( p7 Z6 r% \5 C            sw1Q <= '0';
2 Y2 n) z4 N1 b$ Y4 H+ X$ S        else+ N7 D/ F$ w- Q% N: K# N3 R) R
            sw1D <= sw1;
/ H; U/ [+ z- X            sw1Q <= not sw1D and sw1;
. T+ K$ L, c- N# L0 `        end if;( @0 U6 H" c: v3 C+ `
    end if;# r: F% @% [. }
end process;
5 Y) S# R' o- _. W
: D4 g. p  C7 {, V) X2 qprocess(rst, clk, sw2)
! ~# f! s( Q$ |3 @/ |# {( ~; pbegin1 a3 K3 }# m6 u' J& R/ m: A1 G
    if clk'event and clk='1' then
7 S/ N6 {4 i0 h        if rst='1' then
5 |4 {! \+ j  |            sw2D <= '0';( |6 q' x- r2 ~1 h& r7 k/ R/ P
            sw2Q <= '0';2 T" m# p9 d7 q% l" Q
        else' [0 l1 G( X- Z. U
            sw2D <= sw2;1 w, L  P0 V5 U0 y$ N: Z; ?
            sw2Q <= not sw2D and sw2;3 f* h# \- D& H, L  @* O
        end if;
' \- j+ O2 @1 s7 }: b    end if;
& _5 O- `# t9 u$ N9 \) t. iend process;
$ o) u% D& V  e
, R$ J4 W% b* {) Y  Z+ @: K8 b+ Gprocess(rst, clk, sw1Q, sw2Q): n3 ]: O- M( p/ q9 h, r% _
begin' q+ i$ C! c. P$ g2 Z( ^9 s! H
    if clk'event and clk='1' then
. Q" P0 S+ n- Z2 r        if rst='1' then
% ^. O  o% c& }            cnt <= "1001";             --initialize to 9 when reset
' G7 F: v. O; B5 o) o; ?        else
+ g$ G$ P% x. h            if sw1Q='1' then: J1 `7 M) ^9 T/ b3 r. |: e
                if cnt/="0000" then cnt <= cnt - '1';  --下數時下限為0
1 E9 \" I' C7 }2 k% [; ~            elsif sw2Q='1' then
+ J' B+ w' S; t; Z' R                if cnt /="1001" then cnt <= cnt + '1';  --上數時上限為93 r, |% C$ b8 ^" [
            end if;0 ]+ T0 B7 ^$ H+ e  \% M
        end if;6 d# H( V. Z+ d6 r( n
    end if;
7 J* I: B) H2 u4 @" _end process;
( i7 K" }9 `: w
! R. ^) U- R* ^. S; Dled <= '1' when cnt="1001" else '0';0 d6 h9 `/ t5 }2 y/ u
with cnt select led_dig <=
, ~$ M3 f) ?! {0 K0 V; V3 [) r* A+ x    dig_0 when "0000",
' a* k- M4 }% Y5 H. s' F2 ]: L% L    dig_1 when "0001",
' }  C9 l  D* o    dig_2 when "0010",
8 O4 ?! W9 ~2 g) \$ z# l    dig_3 when "0011",
: y0 ]% F" M1 A1 C  J) w: `( ?    dig_4 when "0100",- F; c1 y1 R5 u
    dig_5 when "0101",
7 P+ @6 o$ x1 V: R0 j    dig_6 when "0110",9 r( `& s# e0 m3 e8 [; K4 S1 a
    dig_7 when "0111",
) [2 o0 T" H" A' z    dig_8 when "1000",2 {& M3 D7 {+ n0 l7 i0 k
    dig_9 when others;3 W7 _8 j/ F! [4 [! R5 j$ B! ]) `

, ~& M& a7 V1 t4 Hend behavior;
4#
發表於 2008-7-14 20:47:38 | 只看該作者
在我的電腦看那個4 ^9 }; P( M( u8 K
<=* y& v% w$ A4 g- S9 s7 t
會變成 
% X* L- L2 B$ K% j7 l  N&It;=
" J7 B& b, ?. ?也,好怪,有人看到不一樣的嗎?
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-6-2 12:31 AM , Processed in 0.121515 second(s), 17 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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