Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2008-6-2 20:14:24 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
各位高手安安∼, U5 k1 l6 b" ^
想請問一下
( j3 v: P- {6 o/ a% }目前小弟要做一個VHDL程式
: W3 g2 H. f% C! X4 Q5 \動作是∼0∼9在7段顯示器顯示出來
! j; v8 l! `; I剛開始數字顯示在9並有1顆LED燈會亮∼
* G) a. {' i4 y' j2 ?  I* ?之後∼再按下SW1。數字會變成8,再按一次變成7,依序遞減到0(9變8時LED燈會熄滅)
- `" n9 @% p' G. F然後再按下SW2數字由0變成1依序遞增上去至9,到9時LED燈號會亮起。! E5 k2 p- R+ l2 U: m+ ~
請各位高手大大可以交交小弟阿∼∼ 小弟已經認真學習了∼但真的苦手
) P! n$ ~) s& L& ?, P  T% @. l' u$ p7段顯示器是共陰
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
2#
發表於 2008-7-14 16:21:40 | 只看該作者
4 H; u( a: B, g+ s5 p* h
vhdl  的書本 及 網頁 都可以找到類似的......
% R8 t) J; q8 p5 H只要自己參考一下  做個變化 應該就可以達到你的要求....% A) g9 A& d0 j+ E
題目不難 ...   用心就OK!!
) {% G; y5 k" Z5 U; [* g" u* Y% i8 q8 i8 a% f% C: w0 J
加油
3#
發表於 2008-7-14 20:44:10 | 只看該作者

給你參考一下

隨便寫一寫沒檢查語法
; r7 ^' _/ N: Z7 d1 ~前面的部分請自己加入宣告
7 p+ y# B, k& M3 h9 h* N4 j2 x基本上這個code應該會動,如有小細節有問題自己改一下好了6 _2 j; Q4 X2 V& t0 B  w
另外這個code假設開關沒有彈跳且電路有額外提供一個clock source% i6 h. }+ ]# [! X; l4 i6 j7 M6 p- h

8 u2 O. C; o% m% X3 o2 V% Qconstant dig_0 : std_logic_vector(7 downto 0) :="xxxxxxxx"; --請自己定義共陰的信號
- _. {& t3 w  b1 X, mconstant dig_1 : std_logic_vector(7 downto 0) :="xxxxxxxx"; --請自己定義共陰的信號
3 ^! k% p+ A0 z, t0 y4 b$ m- F$ zconstant dig_2 : std_logic_vector(7 downto 0) :="xxxxxxxx"; --請自己定義共陰的信號& n! {2 ~& }# v6 c& h1 `6 Z
constant dig_3 : std_logic_vector(7 downto 0) :="xxxxxxxx"; --請自己定義共陰的信號
: N8 z# Q1 e+ e" F# Bconstant dig_4 : std_logic_vector(7 downto 0) :="xxxxxxxx"; --請自己定義共陰的信號
% x) {. q6 }; m5 p$ r4 Qconstant dig_5 : std_logic_vector(7 downto 0) :="xxxxxxxx"; --請自己定義共陰的信號# |% `& P  ?/ P- Z4 ~+ C
constant dig_6 : std_logic_vector(7 downto 0) :="xxxxxxxx"; --請自己定義共陰的信號
; C/ t4 w% F! i$ D6 nconstant dig_7 : std_logic_vector(7 downto 0) :="xxxxxxxx"; --請自己定義共陰的信號. L' J% s& Q. k6 b/ R3 \# `; Z8 j$ u1 D
constant dig_8 : std_logic_vector(7 downto 0) :="xxxxxxxx"; --請自己定義共陰的信號: o* {) n0 r% p  H
constant dig_9 : std_logic_vector(7 downto 0) :="xxxxxxxx"; --請自己定義共陰的信號- E0 m- e& o% Z3 ]% ?8 d' P/ A
signal cnt : std_logic_vector(3 downto 0);
9 Q! X' _# C# x" c' p3 Bsignal sw1D, sw1Q : std_logic;* L! K4 |4 v! n9 b: E
signal sw2D, sw2Q : std_logic;
1 T  A+ h0 \" bbegin
: y) a/ W: A: l; \! w; \9 B7 }# D7 m2 e) ~
process(rst, clk, sw1)
  P! c& p) U+ h7 o+ Y. ?begin
5 W4 c0 Z$ R  s: H$ c. b& P" o    if clk'event and clk='1' then
( H$ r( \' ~  l, c        if rst='1' then
( q; s  F3 [$ ~* j            sw1D <= '0';
( c& O7 j, K! _5 N: r5 V0 u" r            sw1Q <= '0';9 S" T1 l" B' q+ R+ s
        else; `1 X$ }2 U3 g+ T
            sw1D <= sw1;; s! A8 D. E4 W) {
            sw1Q <= not sw1D and sw1;5 @7 P. J) R/ s9 I
        end if;1 e7 t+ ?& f( d; I: ^
    end if;% O5 V3 U0 j. [* g2 B  @
end process;
0 y* _% q+ w0 H. F5 i0 U0 _5 _! E1 T9 @  y) |
process(rst, clk, sw2)6 k$ I. {* f* ^. c. X* l
begin
7 U# ]+ a8 r/ e    if clk'event and clk='1' then  g% @1 t9 E0 n4 N
        if rst='1' then
8 H0 j: l. q! P% y3 U/ \$ g# C            sw2D <= '0';
1 @# Y6 P* |% [- |: |            sw2Q <= '0';
& w0 O7 m3 l) c        else
- O( L3 L7 E7 Z; ?            sw2D <= sw2;3 V) A; r- [+ M6 G& u
            sw2Q <= not sw2D and sw2;
! r; i/ h9 P( D1 y        end if;4 V1 I. I5 |0 P, ]. u
    end if;, {- C2 @( U* c0 ]+ f- i
end process;
1 W; Y# A& h6 [+ M5 N4 @& P$ |7 q) ^6 g# z% O
process(rst, clk, sw1Q, sw2Q)
0 l, {  D& L3 {& ^+ L5 Cbegin! F" d) b* H/ O- v) g2 J
    if clk'event and clk='1' then% {  S4 u$ n! U0 t" h9 n. o! s( g
        if rst='1' then
" W* P) d- }# l7 y            cnt <= "1001";             --initialize to 9 when reset5 B; K/ n. v2 ^. _3 h% u% K- f
        else
' c+ O' u: Z/ S( C            if sw1Q='1' then; _* C- T1 {+ M! }' N7 v
                if cnt/="0000" then cnt <= cnt - '1';  --下數時下限為0
" L+ h6 f6 D6 E  A5 [            elsif sw2Q='1' then
  l) G$ o! F  m8 V                if cnt /="1001" then cnt <= cnt + '1';  --上數時上限為9
0 h6 b/ b, i1 ~  r3 R* u            end if;+ l) R1 r4 d, [* i3 U
        end if;2 N* {( _$ ?' Y5 P
    end if;% z5 g* z* k' Q' z
end process;1 `- a; |1 g7 G3 j6 L4 H2 o
. O# `: e) j- d6 I
led <= '1' when cnt="1001" else '0';- r6 k9 W# {# D# E
with cnt select led_dig <= - y9 g2 D8 c( N! A9 g% W2 K
    dig_0 when "0000",3 I+ U: I5 I# n* w
    dig_1 when "0001",: d! m" z! B7 _7 ]9 |% P
    dig_2 when "0010",! {7 k/ U( ?  q. z! B- t/ N. ~
    dig_3 when "0011",
4 e8 I7 p* B5 y4 p' v" J8 D    dig_4 when "0100",
5 w! Q- p- C! M( i    dig_5 when "0101",8 e5 ~6 s0 F2 Y" O
    dig_6 when "0110",
3 N  A- r) i8 p, J7 z4 r    dig_7 when "0111",. @8 j1 x, D* C+ Q
    dig_8 when "1000",
# P$ p8 ?, c* L* O2 ^    dig_9 when others;: e- G# v; I0 D4 [: c

! y& [$ J. _- U' @( Q, P- Tend behavior;
4#
發表於 2008-7-14 20:47:38 | 只看該作者
在我的電腦看那個
  {& Q% W" l( J( n5 `<=
7 w) |6 s9 {  M6 c! J" F會變成 
% c7 {1 J; d: |' T3 B&It;=7 j! G( ?9 m( p6 `( P, r6 {
也,好怪,有人看到不一樣的嗎?
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-4-30 10:44 AM , Processed in 0.107007 second(s), 17 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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