Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2008-6-2 20:14:24 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
各位高手安安∼
+ S0 K2 G- j0 ?' M1 w想請問一下
' _" V3 E. e/ v& m% H# r6 X. g目前小弟要做一個VHDL程式
' B2 `3 G+ K4 j) a動作是∼0∼9在7段顯示器顯示出來1 V, v; ^# }  f' M' Z
剛開始數字顯示在9並有1顆LED燈會亮∼2 v/ v. u% q1 \$ @& u% W/ o6 g- [
之後∼再按下SW1。數字會變成8,再按一次變成7,依序遞減到0(9變8時LED燈會熄滅)0 W+ I. U- N# v2 t/ ?
然後再按下SW2數字由0變成1依序遞增上去至9,到9時LED燈號會亮起。; V8 b7 e5 m& M; Y3 j
請各位高手大大可以交交小弟阿∼∼ 小弟已經認真學習了∼但真的苦手  Z# x$ h3 _% ^, _% g9 I4 j1 m
7段顯示器是共陰
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
2#
發表於 2008-7-14 16:21:40 | 只看該作者
) u5 T  X" U5 {" ^+ ~
vhdl  的書本 及 網頁 都可以找到類似的......
% _( v3 v( m; L只要自己參考一下  做個變化 應該就可以達到你的要求..../ p- T' Z6 O. p- _2 r
題目不難 ...   用心就OK!!
6 q3 |/ Z, A- x: g" B& [, `3 d8 m. G6 ]7 S0 v0 u) r! b5 F1 q0 Y6 k
加油
3#
發表於 2008-7-14 20:44:10 | 只看該作者

給你參考一下

隨便寫一寫沒檢查語法& @! g- |* F, ]5 ]! n: H# k
前面的部分請自己加入宣告
2 c9 q5 P5 H8 H6 N) ^: {. B基本上這個code應該會動,如有小細節有問題自己改一下好了4 }8 t5 y! {& @7 t7 l
另外這個code假設開關沒有彈跳且電路有額外提供一個clock source- `( ~, V/ Q( r- v/ y6 e

0 q8 C$ |) s6 U6 w8 J. m3 nconstant dig_0 : std_logic_vector(7 downto 0) :="xxxxxxxx"; --請自己定義共陰的信號. T7 v+ j! U1 |! U8 @- g
constant dig_1 : std_logic_vector(7 downto 0) :="xxxxxxxx"; --請自己定義共陰的信號8 T! a; F1 ]$ ~+ l* l4 s% ?6 f
constant dig_2 : std_logic_vector(7 downto 0) :="xxxxxxxx"; --請自己定義共陰的信號9 N# O0 \  `0 w  i( p2 {3 H
constant dig_3 : std_logic_vector(7 downto 0) :="xxxxxxxx"; --請自己定義共陰的信號
" ~7 {- C( e5 B2 B$ y3 T: Zconstant dig_4 : std_logic_vector(7 downto 0) :="xxxxxxxx"; --請自己定義共陰的信號
& L* h& J3 ?. o) H/ `constant dig_5 : std_logic_vector(7 downto 0) :="xxxxxxxx"; --請自己定義共陰的信號
+ b6 J* a  r( O2 A; |. fconstant dig_6 : std_logic_vector(7 downto 0) :="xxxxxxxx"; --請自己定義共陰的信號
$ m5 z2 c' A/ G( o9 A( pconstant dig_7 : std_logic_vector(7 downto 0) :="xxxxxxxx"; --請自己定義共陰的信號" G8 w9 t6 q. ]7 i/ {9 U
constant dig_8 : std_logic_vector(7 downto 0) :="xxxxxxxx"; --請自己定義共陰的信號
* D# U  T6 O/ C8 cconstant dig_9 : std_logic_vector(7 downto 0) :="xxxxxxxx"; --請自己定義共陰的信號8 X( H- ?; D0 W3 t& F0 q
signal cnt : std_logic_vector(3 downto 0);
# g' I8 M: g# F5 psignal sw1D, sw1Q : std_logic;
% ?4 }) I' z' v' `7 Msignal sw2D, sw2Q : std_logic;
4 p9 t2 _1 B% b$ g+ M. L8 Ybegin
% u, |+ B6 g# ~: m. O; `8 E
$ s! p8 ~4 g3 P4 [9 X- u0 tprocess(rst, clk, sw1)1 _' e3 w! y  k9 B
begin
, \0 [7 S/ g+ _' g) c    if clk'event and clk='1' then
  ~; K1 `  T9 }$ [        if rst='1' then) d& R  u* Q6 B) B! K4 y% Z
            sw1D <= '0';3 u* t4 ^/ s6 z' ^" I
            sw1Q <= '0';
# O% F, w" n* r        else
6 p' y/ X3 Y1 ^1 z0 r- Z! ?* A6 y, u            sw1D <= sw1;( y' m4 z& q  N7 S
            sw1Q <= not sw1D and sw1;/ X" B5 v( Z; m+ X/ i/ Y8 Y
        end if;' f0 R6 d7 e& a3 ], S4 l
    end if;
" S9 ]" \" v* R8 ^0 p0 B: iend process;  _  k, q* |: R( ?9 C

, V% y: s$ o- E4 iprocess(rst, clk, sw2)
, T9 M9 k' I& x! H( O' l1 xbegin0 C1 v* ^4 [; ?4 l( }
    if clk'event and clk='1' then% y" T( S/ r1 z2 G* f% \3 C$ ?
        if rst='1' then
6 t( M5 g7 S1 ?5 `            sw2D <= '0';% a: ~6 P+ i0 F  n
            sw2Q <= '0';4 F9 X* i9 k) B# ^* `; y2 y# b
        else5 D7 y) S9 M# S; x: n! }
            sw2D <= sw2;
% a( o4 @5 F5 h9 c            sw2Q <= not sw2D and sw2;  a& t1 Z0 p: {+ k8 c  ?
        end if;* {' E) ?) h+ F; z& `) I
    end if;
: u+ y; R+ X9 O+ W; uend process;) G+ V; i7 n9 z3 S, b2 e, S
2 j' M' e; ^/ j5 d5 A
process(rst, clk, sw1Q, sw2Q)
  A# u. x" T3 E  I, r' H1 N* t! a& ?begin
8 E1 p5 l0 C4 @    if clk'event and clk='1' then
2 t( Q3 I9 p$ V2 g        if rst='1' then
- d  W) B0 v7 i9 Q            cnt <= "1001";             --initialize to 9 when reset7 c5 f. x: x; G7 n/ c9 V3 {  N
        else
- L/ V, O) G" [, T: e$ e            if sw1Q='1' then6 i, o' s& M# b2 a
                if cnt/="0000" then cnt <= cnt - '1';  --下數時下限為02 s. w! @1 m, @6 c4 _% K
            elsif sw2Q='1' then5 t: r- J5 B+ |
                if cnt /="1001" then cnt <= cnt + '1';  --上數時上限為9
9 n8 c! h) ?; r# D  Y8 @2 r' @            end if;
% _& v: S# Z9 A. s2 |        end if;
( h1 g" X4 }! C1 H7 K  {/ F8 v    end if;7 H  d" F0 X% e
end process;
3 c, `' E  @1 K3 q6 v7 y
) G! s) F5 r# F4 S/ C: c. Pled <= '1' when cnt="1001" else '0';0 z+ G. E/ d+ g/ ?6 t3 K
with cnt select led_dig <= 2 s! u& R6 X- J% E0 \
    dig_0 when "0000",$ ~5 B4 T, F- N# ^
    dig_1 when "0001",4 ~# w: u% ]! }7 x# c" j; z
    dig_2 when "0010",
2 x1 d* f) L" N' I6 _    dig_3 when "0011",- s7 Z1 K( A" c; f* N
    dig_4 when "0100",+ @$ P9 \5 Q4 Z2 S; q' ^6 r* s( s
    dig_5 when "0101",
8 \6 Y  d& q3 @    dig_6 when "0110",
& F+ j, @% I) k! t6 q7 J6 W    dig_7 when "0111",7 ?& O6 n0 O4 Z0 r' \9 [, B: N
    dig_8 when "1000",
: q* Z1 Z: g0 E$ z( _7 U; x, g  R. V    dig_9 when others;
# n! Q1 M9 a# a% M  Z% @; G
& n0 u6 z7 v5 {% I9 E) Z% jend behavior;
4#
發表於 2008-7-14 20:47:38 | 只看該作者
在我的電腦看那個
7 \1 [) d4 j1 Y& I<=) w+ A4 `/ R0 k3 Q
會變成 ) U+ O% s- {8 B9 N" m  X0 x; }
&It;=
- Y% s: P1 W$ S' M! M  `; g也,好怪,有人看到不一樣的嗎?
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-9-27 08:11 PM , Processed in 0.170009 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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