Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2008-6-2 20:14:24 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
各位高手安安∼
9 F" f2 A6 s2 p+ f" R+ D$ X想請問一下
/ ~$ S+ R' J" [- S( I目前小弟要做一個VHDL程式
; N/ U1 B7 _) Y動作是∼0∼9在7段顯示器顯示出來
" L9 ~* F  H" }剛開始數字顯示在9並有1顆LED燈會亮∼! q; j  {( {7 l# F" E8 Y
之後∼再按下SW1。數字會變成8,再按一次變成7,依序遞減到0(9變8時LED燈會熄滅)
8 }' n( n$ i  g然後再按下SW2數字由0變成1依序遞增上去至9,到9時LED燈號會亮起。
* a4 P: M4 i4 }請各位高手大大可以交交小弟阿∼∼ 小弟已經認真學習了∼但真的苦手* L! s4 R0 k- N9 y( t% C  k
7段顯示器是共陰
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
2#
發表於 2008-7-14 16:21:40 | 只看該作者
) F7 g. J. X5 z! b7 M% j" r0 t
vhdl  的書本 及 網頁 都可以找到類似的......8 \: l. `. \$ O/ M8 L5 V) k
只要自己參考一下  做個變化 應該就可以達到你的要求....; W& i" k+ }6 V1 u! O5 O+ o
題目不難 ...   用心就OK!!
% [8 L6 {& S; Z' k1 L( [' c
& R, y+ u/ b1 S- G& h0 B7 W2 ~加油
3#
發表於 2008-7-14 20:44:10 | 只看該作者

給你參考一下

隨便寫一寫沒檢查語法( N# O" e! S; B. L
前面的部分請自己加入宣告
$ D0 D' m# c' G基本上這個code應該會動,如有小細節有問題自己改一下好了
6 A: A9 v# o8 A4 v8 v0 |: g' N9 G: U- r另外這個code假設開關沒有彈跳且電路有額外提供一個clock source" p8 G+ |4 n, r8 k3 E" \0 d
+ C3 b3 i2 A4 m- k; D! k1 ^& t
constant dig_0 : std_logic_vector(7 downto 0) :="xxxxxxxx"; --請自己定義共陰的信號8 V' c0 v+ u2 U" ^; g
constant dig_1 : std_logic_vector(7 downto 0) :="xxxxxxxx"; --請自己定義共陰的信號* f: i+ G8 I0 l/ W+ D. T
constant dig_2 : std_logic_vector(7 downto 0) :="xxxxxxxx"; --請自己定義共陰的信號, e* g8 K0 W0 Y; N
constant dig_3 : std_logic_vector(7 downto 0) :="xxxxxxxx"; --請自己定義共陰的信號
9 i8 R% B) v* q0 x" I/ G0 g- nconstant dig_4 : std_logic_vector(7 downto 0) :="xxxxxxxx"; --請自己定義共陰的信號
8 V9 C3 e6 W6 p+ S. [8 dconstant dig_5 : std_logic_vector(7 downto 0) :="xxxxxxxx"; --請自己定義共陰的信號
4 ^3 V( u3 l  r' Sconstant dig_6 : std_logic_vector(7 downto 0) :="xxxxxxxx"; --請自己定義共陰的信號
! D) i! c1 E% o0 Tconstant dig_7 : std_logic_vector(7 downto 0) :="xxxxxxxx"; --請自己定義共陰的信號4 {+ M' ^2 Y# q) j+ q. Q& [3 }
constant dig_8 : std_logic_vector(7 downto 0) :="xxxxxxxx"; --請自己定義共陰的信號" D% k+ J/ n  U! f3 F3 B4 I; `
constant dig_9 : std_logic_vector(7 downto 0) :="xxxxxxxx"; --請自己定義共陰的信號$ W" h5 i# Y8 D1 H9 J
signal cnt : std_logic_vector(3 downto 0);* g2 a5 S. g- r) ^8 L% ^# n
signal sw1D, sw1Q : std_logic;/ _5 d  j) }+ p
signal sw2D, sw2Q : std_logic;
+ e) ~* B: b4 K# P# u- ]begin1 P- F* B" T8 f5 ^
. X3 E3 r, Z5 E1 e5 c- }" ~
process(rst, clk, sw1)
, {6 M4 N* ^' [& a. O; Z! p1 |3 gbegin0 w3 g" d9 w) T4 G1 P
    if clk'event and clk='1' then) [1 D' T+ E, i: C! e. l6 \
        if rst='1' then
& ?# b! \+ _7 j            sw1D <= '0';
6 Q& U' J$ J8 [: B5 y2 u& D5 C            sw1Q <= '0';) q2 w6 `4 Y. ~3 Z- C- U5 ~# z9 Y
        else
8 ?$ a* M: a( \% j            sw1D <= sw1;3 J9 Q( K: E" s. y
            sw1Q <= not sw1D and sw1;- d4 k+ P. M  a; V5 u7 A7 z
        end if;% J& W( y- u# U7 L+ a) z
    end if;
! N' V  R, ]4 N# E: A) z. ?* H+ F0 Rend process;3 x$ L+ e# ?8 u) r8 F2 P9 Q
# g& q6 g; `: i7 d+ [
process(rst, clk, sw2)
& s+ M( V& b1 Hbegin& c8 @. @$ X( l, r+ g! B
    if clk'event and clk='1' then7 V; J4 d& d  ?4 {  W8 {
        if rst='1' then, u+ z5 e% o1 g+ y; O1 u) r5 N
            sw2D <= '0';
& p$ u& }. t, @! U9 l            sw2Q <= '0';
0 M6 w4 @! Y" L        else
8 o$ W+ ^1 j/ `# [            sw2D <= sw2;
$ p) H  y$ e: e, b            sw2Q <= not sw2D and sw2;
& ?% p1 q' L3 d- `4 h        end if;" ^$ Q/ e! g' k6 q
    end if;0 x! O2 X3 r" Y6 ?
end process;* s; e! N  N6 N& x

9 Y$ P1 o6 @7 B' F) Uprocess(rst, clk, sw1Q, sw2Q)6 Y' n8 u. A) b2 Y
begin" H: _- p3 A  d3 t9 S. r/ P
    if clk'event and clk='1' then8 n; ^7 D$ [; H! [, S1 _! p" P/ Z
        if rst='1' then1 K% ^+ i+ z& w
            cnt <= "1001";             --initialize to 9 when reset) c. r6 o6 y) f3 K
        else5 O0 \0 _: v$ e( f2 [' E& ?% d6 C
            if sw1Q='1' then
: _% A1 \* C8 J  p                if cnt/="0000" then cnt <= cnt - '1';  --下數時下限為0' Y6 G0 f9 G# |3 K
            elsif sw2Q='1' then4 ]! f/ j6 B  C( a3 C* K
                if cnt /="1001" then cnt <= cnt + '1';  --上數時上限為9
4 `$ H& K# e8 l# K* N$ H& B            end if;
/ |) c& F# X7 [# `+ w8 X        end if;
; p& d) U) s0 T1 X    end if;
( I/ S- n, R: c+ ~end process;
% ?6 E" W7 a* H0 p8 D. P- h1 w3 F# |+ X! M5 ]4 ]: s, h
led <= '1' when cnt="1001" else '0';
4 p. A6 e" {; l! c# Y& B# ewith cnt select led_dig <=
. A4 {- P) i0 q: f0 N7 C- o    dig_0 when "0000",) n& |: S% ]; ~+ e. j) h5 W+ F+ H
    dig_1 when "0001",% y& [6 M* f8 \9 b1 T& ]
    dig_2 when "0010",1 Y: u# j9 @/ K/ [0 m
    dig_3 when "0011",
. T6 f7 D6 I& T% P6 V- p    dig_4 when "0100",0 X  V( k6 p4 G& u( }( @
    dig_5 when "0101",$ x3 T6 S, Y/ M# t0 n
    dig_6 when "0110",
, @  }2 I4 {0 ]    dig_7 when "0111",
8 s" w9 ^7 P% ~    dig_8 when "1000",5 B5 u1 p2 M& P* ]
    dig_9 when others;; k" L7 H7 f5 ]- o' w
1 B5 f" g" q7 z/ E2 p! R! C
end behavior;
4#
發表於 2008-7-14 20:47:38 | 只看該作者
在我的電腦看那個) K" y# u8 w1 B$ t! d) X6 Q( O( s
<=
- o- A8 b3 K4 e會變成 9 y7 `0 l$ _& v! @; [# y
&It;=* k5 t; }/ E5 J  p* g. Q* y( W
也,好怪,有人看到不一樣的嗎?
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-6-8 04:07 AM , Processed in 0.134517 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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