Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

[問題求助] 此VHDL程式中的TACT SW要如何加才能防止開關彈跳

[複製鏈接]
跳轉到指定樓層
1#
發表於 2009-1-18 22:06:27 | 只看該作者 回帖獎勵 |正序瀏覽 |閱讀模式
此程式為一個每按一次TACT SW就會進行累加1的程式,並且LED亮度會每累加一次* q* [1 U3 {5 n) H) H# o0 w& R/ P
就會增加,共8段亮度(0~7),此程式這些功能都可以了,但是會有開關彈跳的問題,! g& E$ T) c2 U1 v/ b, q* J
希望能有高手幫我解決此問題7 L" ^1 g  G& l
9 L" Q# e2 q) b! `7 @% L' a

6 ?! t' o- r6 a" c. _library ieee;& C" N# |9 I$ T( A1 a! N
use ieee.std_logic_1164.all;4 F( W; x+ @& X+ O
use ieee.std_logic_arith.all;; D9 k* t- u7 r$ t
use ieee.std_logic_unsigned.all;
$ R" _# N- w' y9 ?* H& h5 P$ e5 m0 Q) V0 k
entity pwm8 is Port (
3 j$ i- j2 e% |  p+ x' h2 D    CLK : in std_logic;--clock 1KHZ4 P& J8 o8 r: f- v6 F) B3 U
    RST : in std_logic;--reset
0 `3 \* D9 \  E! W7 @    SW  : in std_logic;--switch in
- r' G1 W/ w7 P3 Q/ m    SEG7 : out std_logic_vector(6 downto 0));--
3 r8 @. r9 Y5 p! v" Y( Tend pwm8;
! L+ `: s% h! R& \: ^: @+ ^! R+ S9 a6 h) ~
architecture arch of pwm8 is
6 F& p1 f# y& ~! l( I$ H4 v
0 E7 p5 r( m! z5 h: L4 b, u" tsignal  SWCNT : std_logic_vector(2 downto 0);
; D( c7 Y: P  l. V0 w5 osignal  PWMCNT : std_logic_vector(2 downto 0);. [) X7 I: a7 i* x0 w8 s
signal  DISP : std_logic;" J* _! I' a& U1 o% h( J

' o4 Y& P. X: L" Wbegin; Z+ W& Y; S  o, m7 M9 l2 e

  v* X% R2 f5 R# g. {4 |7 d- a, B--toggle switch input counter% n- f3 |. s- ]7 _6 k
process(RST,SW)
& L% M' J# P. ^9 _4 Ubegin* Y$ t1 F8 ~7 B3 p+ h+ O  ~
    if RST='1' then
% w1 \9 p, S7 p) w! Q        SWCNT<="000";; [" p4 V2 x2 q8 N0 T" _
    elsif rising_edge(SW) then
+ p# {1 `( B* Z) |& ]& H: E        SWCNT<=SWCNT+'1';
' c% v7 F* W$ N4 f3 k2 W6 {0 p" d    end if;
- U6 Q3 h* u8 D0 fend process;. t( \" U# {; I% v* z" T

/ b7 d5 ~4 i6 A+ Z' U" `. E, h: Q7 i2 w--pwm counter4 T: g$ r- ^4 Y' ~
process(RST,CLK)
0 z& i! e3 }' ubegin; }6 }( R5 d( W+ z$ W8 r4 ?" |
    if RST='1' then% k2 o6 h" ~6 S" x1 K9 h( B
        PWMCNT<="000";5 S( W8 ~. A6 l4 |% \- w2 ~+ G
        DISP<='0';) `* m# ~, \+ `' ]9 x, |0 m  D
    elsif rising_edge(CLK) then2 X6 I! w% `2 @; u
        PWMCNT<=PWMCNT+'1';# o3 T2 q7 e1 }8 A: T
        if (PWMCNT="111") then; v. s# M3 k& z. |2 E7 F
            DISP<='1';
* [* |1 P3 h" O! Y! g% Z        elsif (PWMCNT=SWCNT) then
5 b) X& n# k+ N! J4 M. E2 ~            DISP<='0';/ X- w- j- Z5 p( |0 ^
        end if;8 f: {- I0 p3 ]4 B: O/ H
    end if;
" q; x0 L4 M0 f  Uend process;
8 m! k, @2 r/ v9 |
& h4 n8 s0 N3 d  K- E--7-segment display decoder
$ {$ p$ i% N1 {( ^! Cprocess(DISP,SWCNT)- Q' R6 {0 g( L) _
variable DISPEN : std_logic_vector(3 downto 0);
% p  F) i1 m$ a- @$ S, W6 e' \* }* ~begin
. Q* ^( c+ \1 t    DISPEN := DISP SWCNT;
" P6 m0 W5 P5 c: w* K0 f    case DISPEN is --SEG7<="abcdefg"
% B* K: P8 s* T2 Z9 T        when "1000"=>SEG7<="1111110";1 w+ v, Q# [7 w  V
        when "1001"=>SEG7<="0110000";
  R* E' {2 t% q, F+ p" j+ z        when "1010"=>SEG7<="1101101";
8 C! }$ n5 ]8 r0 b        when "1011"=>SEG7<="1111001";2 ?/ [* t  g% F; ?/ f: B% N
        when "1100"=>SEG7<="0110011";
; i; `: g. P  c        when "1101"=>SEG7<="1011011";
* a" |# N4 {& Q9 @) p  Q* F5 h        when "1110"=>SEG7<="1011111";& U$ e# h) Q- i, @7 e6 v
        when "1111"=>SEG7<="1110000";6 R$ @; P, X( x2 \/ B% j. r
        when others=>SEG7<="0000000";
. }3 l: R" v4 o5 P    end case;( v$ n& R5 N0 X+ ^6 w  R# F3 @+ a
end process;
- k* f: U3 D8 S' z4 k7 cend arch;
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
2#
發表於 2009-2-2 13:02:01 | 只看該作者
process(RST,SW)& Q$ q5 q; x  D, a$ i
begin
+ t1 m( S) c% v3 q2 U  t5 H    if RST='1' then7 }7 A# e7 v! O" w; q7 N' P
        SWCNT<="000";
8 M) ~7 N; ]7 g' ^% |* J6 A1 F    elsif rising_edge(SW) then
% D2 o. p, Y  V8 W" B# I, i% J/ ^- ]) C        SWCNT<=SWCNT+'1';
) K' A& e6 R* g* m5 i% }    end if;
0 A( n& v6 B2 B$ s6 Gend process;4 G" o* L  Z% q8 `; T+ f
將 SW 以 數ms~數十ms 的取樣率取到穩定的 High/Low 才當成上述的 clock 信號就可以解決
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-6-24 08:26 PM , Processed in 0.118515 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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