Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2009-1-18 22:06:27 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
此程式為一個每按一次TACT SW就會進行累加1的程式,並且LED亮度會每累加一次
* _: R& p1 L" G1 b) x( {. ?就會增加,共8段亮度(0~7),此程式這些功能都可以了,但是會有開關彈跳的問題,2 O/ C. [( P* b
希望能有高手幫我解決此問題: P6 F& p2 z! T: z; l" Z

) b8 ]" N/ X0 H- f& b- R7 }
; K9 V% @/ \& hlibrary ieee;
9 Q6 y6 W, i- U3 s" D$ f7 Z3 Buse ieee.std_logic_1164.all;
9 K9 I4 o( f7 c, suse ieee.std_logic_arith.all;
( T- r' {/ D+ M3 ouse ieee.std_logic_unsigned.all;
6 _+ A8 r. u, m6 Q2 o2 M6 a: r' f* W7 ^
entity pwm8 is Port (. ^& G& f) ?1 |* U+ d! _1 ]0 X2 ]
    CLK : in std_logic;--clock 1KHZ, u4 ]6 o* x  }9 {3 e' F
    RST : in std_logic;--reset* T% N! x- E$ S1 |1 E' H* R
    SW  : in std_logic;--switch in4 T& I3 k0 V' `/ n  T
    SEG7 : out std_logic_vector(6 downto 0));--+ J  c3 E% D2 B" r" i6 Y
end pwm8;
2 U' ]! p* u2 B1 N% ~* M. {1 t, c# d9 l# u0 T7 B
architecture arch of pwm8 is" f# ?3 v5 F# Z
6 ?  }7 ?9 h. h
signal  SWCNT : std_logic_vector(2 downto 0);& {  W. Q$ m9 Q/ ]' e* ]4 q" Q
signal  PWMCNT : std_logic_vector(2 downto 0);+ P2 i- e: x+ {+ ]
signal  DISP : std_logic;) ?# ^/ C% l5 E
7 A8 r9 w" F  |. w
begin9 Y4 P! _6 ]7 c, `, c! q1 c

$ a  y7 D, Y3 R' C--toggle switch input counter
- W( ~! x5 U7 W7 L2 ?/ fprocess(RST,SW)( s9 d1 E% R, y7 w# |
begin
' p& W- K3 C9 n* j    if RST='1' then$ X* I. B- m. C# w
        SWCNT<="000";
  r+ [3 r3 b" ]1 I9 X2 @2 b+ g+ Z    elsif rising_edge(SW) then) w- F$ s, K8 J* N  ?: |6 h1 _
        SWCNT<=SWCNT+'1';+ U& `9 t" i9 i1 S0 {
    end if;' @5 x  o% \4 F) s2 D+ L
end process;
9 q3 E  C( J( v6 t* N! B& r4 E1 R/ I$ A9 Z# a
--pwm counter
3 N$ E# g( H0 w# x: G, u* Wprocess(RST,CLK)$ C2 ?2 b$ f4 k9 o/ M
begin4 w! U9 s) y& P; y4 l8 l3 |
    if RST='1' then/ k* c; H. U& f/ n" ]. x0 w& ?
        PWMCNT<="000";) z( c# v8 \. ~, e) L
        DISP<='0';
: M' f. @6 b( `3 F( W( ~" q- S    elsif rising_edge(CLK) then2 _' a) I: |9 A3 t. A$ k, D! H  @
        PWMCNT<=PWMCNT+'1';
" x) b, m( U3 \$ @! J7 ~5 \        if (PWMCNT="111") then
' j" o% F5 m: [1 _, ]2 J+ w            DISP<='1';
( {5 ~" V- U2 o7 {- Z& C# u        elsif (PWMCNT=SWCNT) then
# |2 s0 [( c  J- g9 h$ ?$ x            DISP<='0';
' x$ c) t/ W3 s6 X        end if;
: d0 J6 L# v# E, U2 q    end if;% g% H2 [1 D5 N% M; e  \
end process;. m$ p7 {# q# |* ^' U3 i* v

' g9 e6 J0 m: n. l' p* \8 q--7-segment display decoder. `1 o$ Y3 V6 |& X* \
process(DISP,SWCNT)4 f# H6 q+ ]: h" _+ L/ S, t: a
variable DISPEN : std_logic_vector(3 downto 0);+ {' b. e2 Z( _# T8 `8 e
begin  I6 I( n4 N; h- r5 m
    DISPEN := DISP SWCNT;
6 g& w" J- z( W4 g" a    case DISPEN is --SEG7<="abcdefg"7 m6 k! j) U  N2 @3 Y
        when "1000"=>SEG7<="1111110";5 G. Z( ~+ E1 |" C/ f# X
        when "1001"=>SEG7<="0110000";& _" ~* Y/ p: W. y7 B# p3 N5 B# ]) o
        when "1010"=>SEG7<="1101101";; u- M% E* u: L/ A$ C* {& H
        when "1011"=>SEG7<="1111001";1 d9 _; ~; a5 l  E
        when "1100"=>SEG7<="0110011";
, C# _. }2 G; Z5 }3 s& T        when "1101"=>SEG7<="1011011";
* N8 f# ?8 m* }8 L        when "1110"=>SEG7<="1011111";4 p5 I8 F$ G! |( `) k
        when "1111"=>SEG7<="1110000";
' U- b  ]3 n' x9 g& |        when others=>SEG7<="0000000";
7 k* P. O4 |  f- P$ U2 F$ U7 Q    end case;+ H8 O  k! k& n9 V) e4 |5 m) T4 }
end process;, ^& i1 f3 S6 }4 d4 D
end arch;
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
2#
發表於 2009-2-2 13:02:01 | 只看該作者
process(RST,SW)* x/ \6 r9 s' |8 M8 V& K3 V
begin
! C" }0 a9 W2 b) W, d8 e. g$ w    if RST='1' then7 G/ K: N; p3 L" ~7 y
        SWCNT<="000";
5 Q! e. v8 \8 P6 s* `- e    elsif rising_edge(SW) then
9 Y! v, q8 c' `, Z: N3 c% d        SWCNT<=SWCNT+'1';
# t# L! p" M$ e) m1 |    end if;' T8 t, }  a  @2 i% w" R! A
end process;
* j* s& N& }0 i5 J將 SW 以 數ms~數十ms 的取樣率取到穩定的 High/Low 才當成上述的 clock 信號就可以解決
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2025-2-24 09:24 AM , Processed in 0.165009 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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