Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2008-6-2 20:14:24 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
各位高手安安∼. q- V. P. Z! B8 ?2 ?  i% m
想請問一下
5 l: J# U0 l+ D! t目前小弟要做一個VHDL程式
2 U3 o" U7 U0 r$ p; i# ]9 B動作是∼0∼9在7段顯示器顯示出來
" |4 @/ `0 i& Y$ T, |% `剛開始數字顯示在9並有1顆LED燈會亮∼4 r) ^+ ~2 R# r7 ?2 a
之後∼再按下SW1。數字會變成8,再按一次變成7,依序遞減到0(9變8時LED燈會熄滅)
, @+ j; C( m1 q. A7 Y3 H, z; Q然後再按下SW2數字由0變成1依序遞增上去至9,到9時LED燈號會亮起。
: c4 o3 o* l: s! p請各位高手大大可以交交小弟阿∼∼ 小弟已經認真學習了∼但真的苦手/ n3 ~9 q2 J) a5 ]3 `% R: k# _- r
7段顯示器是共陰
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
2#
發表於 2008-7-14 16:21:40 | 只看該作者

; `. r+ b9 ^$ Q4 R5 P% S$ qvhdl  的書本 及 網頁 都可以找到類似的......  R: e. m+ y; p
只要自己參考一下  做個變化 應該就可以達到你的要求....
# D8 Z1 s7 G1 a" [! }* Z題目不難 ...   用心就OK!!
4 r# n5 m) j- s  x+ k6 `3 t3 x9 [
; S" E* G% m7 ^加油
3#
發表於 2008-7-14 20:44:10 | 只看該作者

給你參考一下

隨便寫一寫沒檢查語法
0 J: {( M) Z' c0 M1 V8 I7 Q7 O前面的部分請自己加入宣告
6 U' U) e! O7 [: T) _; U4 k5 P) W0 Y基本上這個code應該會動,如有小細節有問題自己改一下好了
; H4 P! k0 K8 _7 m) \另外這個code假設開關沒有彈跳且電路有額外提供一個clock source
  I+ J% i2 t% v, U* z( \4 T1 |8 O5 c# v9 e) T3 C0 E
constant dig_0 : std_logic_vector(7 downto 0) :="xxxxxxxx"; --請自己定義共陰的信號1 j" X+ w# H% A7 Q
constant dig_1 : std_logic_vector(7 downto 0) :="xxxxxxxx"; --請自己定義共陰的信號
$ m2 Q  O  v4 v2 a7 l) ~constant dig_2 : std_logic_vector(7 downto 0) :="xxxxxxxx"; --請自己定義共陰的信號
) P+ t; I! T: z, O' ~constant dig_3 : std_logic_vector(7 downto 0) :="xxxxxxxx"; --請自己定義共陰的信號
( v( Z; \- z# f* Q: aconstant dig_4 : std_logic_vector(7 downto 0) :="xxxxxxxx"; --請自己定義共陰的信號
) d8 R9 @5 P1 o) D) u! h5 kconstant dig_5 : std_logic_vector(7 downto 0) :="xxxxxxxx"; --請自己定義共陰的信號0 ~. |9 \4 v2 }' y$ J+ F
constant dig_6 : std_logic_vector(7 downto 0) :="xxxxxxxx"; --請自己定義共陰的信號
6 ~' k. p" u- R( y% K7 @  q( Kconstant dig_7 : std_logic_vector(7 downto 0) :="xxxxxxxx"; --請自己定義共陰的信號& k+ M' H6 i% a% A- Z* `
constant dig_8 : std_logic_vector(7 downto 0) :="xxxxxxxx"; --請自己定義共陰的信號0 r" `  Q* I' M7 x: ~$ a
constant dig_9 : std_logic_vector(7 downto 0) :="xxxxxxxx"; --請自己定義共陰的信號9 t6 z) d) b6 M2 F/ @5 n$ O
signal cnt : std_logic_vector(3 downto 0);. V: z3 \0 o/ }6 O1 n. L: Q
signal sw1D, sw1Q : std_logic;
- X; f" [$ c0 }/ d/ Jsignal sw2D, sw2Q : std_logic;
; @6 O! S. o2 G7 [& K6 a" v% Q7 Zbegin, i) E) i6 Y6 h. a! Y8 b
/ X" W. J5 P4 c& S$ N8 r
process(rst, clk, sw1)
. H- w& X; W7 L5 K$ Fbegin1 D5 p% u6 Z) G* X) |
    if clk'event and clk='1' then
. M$ U# D! f) F. v& i& ]" b        if rst='1' then
4 p7 X! Q! v: Y$ e0 K- q3 n            sw1D <= '0';+ L7 `* T7 s* H# A1 f: H
            sw1Q <= '0';
& H* V/ ]& l. O8 d        else9 H" M, \$ G) H5 L, Q' v. Q
            sw1D <= sw1;- z, l' ?5 R* ]
            sw1Q <= not sw1D and sw1;0 e' f' a) [3 _! k4 v1 B+ D. s2 s
        end if;- {  ]+ V+ n, M- V6 Y" g" T
    end if;$ A. E% j) m, L2 D6 n1 m9 W5 a8 s
end process;
- o: B) h3 w0 `, M+ e
9 p9 ?/ _2 {/ s/ m. U/ vprocess(rst, clk, sw2)
; {% `" Y9 ^( k. U) ]begin
# f8 t0 p9 T/ e& S! J, g; i" N- O    if clk'event and clk='1' then6 t6 m+ z% b7 U
        if rst='1' then& q5 N- Y; c& Q& v2 \, W6 G
            sw2D <= '0';
" W+ x! L  }+ z; k+ B            sw2Q <= '0';
& o# |1 L, }' |( G' u        else
* j/ S# m% W. k& s6 A            sw2D <= sw2;
" ]. ^# D* a4 x" T9 j1 }# s2 F            sw2Q <= not sw2D and sw2;# z  F; r, o+ r$ j' U
        end if;6 z7 a6 A' j6 e8 L1 I) C
    end if;1 n! s2 {* c  H: C8 C4 O+ V6 g
end process;
9 M/ Y, a3 h7 N& F" T2 `. _8 B4 F0 ?
process(rst, clk, sw1Q, sw2Q)0 c2 ]* J" p& I5 A( P* {
begin
; l/ t! l4 Y. f) F! j+ f    if clk'event and clk='1' then
% S% u5 o5 h$ H        if rst='1' then
, @# z$ C  q9 P3 p8 g) Y3 r% R            cnt <= "1001";             --initialize to 9 when reset
! p" Q! D# H+ K% i5 F        else
  M5 Y/ `  K5 r1 p- S            if sw1Q='1' then
* @' y- w, ?) y* Z                if cnt/="0000" then cnt <= cnt - '1';  --下數時下限為0- {7 P: _. p/ V$ Y+ U9 E
            elsif sw2Q='1' then; l+ ]. \2 R1 m- C0 ~& c/ `* l* Y' D
                if cnt /="1001" then cnt <= cnt + '1';  --上數時上限為9( _2 m% f$ s8 {5 S; D0 Z5 I# g( w
            end if;4 |5 p  l' f: [3 [; _  H
        end if;' l2 ^# V0 p0 p8 ~; ^; d8 A+ r: d
    end if;' ^+ o  n$ F9 u- [' G8 X; @
end process;
; M; v  M2 \, I4 A
% B, j3 K" j. P9 Q/ N. G9 u/ ^led <= '1' when cnt="1001" else '0';
' W/ {2 |/ h; ^; ]with cnt select led_dig <= , H. L* ]& r3 b, l4 z, z
    dig_0 when "0000",9 X7 y) D( a5 x, R1 ]6 c# x6 I- ]
    dig_1 when "0001",
7 g2 q, @; R! h  c5 t( M$ T    dig_2 when "0010",
& g0 X/ _0 t" a$ `2 ^4 I+ C    dig_3 when "0011",
. F( _! n) V5 ]' B4 u+ Z8 _! F    dig_4 when "0100",* ^) ^( G' H8 ]& p- u
    dig_5 when "0101",
+ n* x! t" U5 {: H% T    dig_6 when "0110",
& W; n  [7 B  A! F8 _* K: t    dig_7 when "0111",1 G% b) v+ y7 @# N1 p0 {5 @
    dig_8 when "1000",
( S9 y( Q; y4 ~4 B9 K    dig_9 when others;4 i6 f9 x' _, z8 N! D+ r4 F! S

) f& K" i9 u$ i! Jend behavior;
4#
發表於 2008-7-14 20:47:38 | 只看該作者
在我的電腦看那個
) f3 v* K5 f! G, b3 V<=
9 p! G" K* l6 c% U8 o會變成 
6 V) F% V1 I6 K  v1 j( L&It;=
. K+ w* ~. u5 N# U也,好怪,有人看到不一樣的嗎?
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-5-15 10:04 PM , Processed in 0.101513 second(s), 17 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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