Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2009-1-18 22:06:27 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
此程式為一個每按一次TACT SW就會進行累加1的程式,並且LED亮度會每累加一次
" y6 A! N6 X: G就會增加,共8段亮度(0~7),此程式這些功能都可以了,但是會有開關彈跳的問題,- z# {* ^, o* T
希望能有高手幫我解決此問題
  X1 Z$ _: E" b, L
* G' D" j( O7 n# J% d8 Z/ p6 F& z. B9 k
library ieee;
9 V4 ^/ }0 w7 b: ~2 i( U( y. ause ieee.std_logic_1164.all;
' Y8 W7 `  ^  ause ieee.std_logic_arith.all;
$ U0 \8 l$ {/ `* m' g5 o1 H) ause ieee.std_logic_unsigned.all;' z) |# d3 r) w5 L; I; O
& X3 o' [' N. Q2 D
entity pwm8 is Port (
/ v3 M, @( @0 {* ]; C( H( L, }8 Y: r    CLK : in std_logic;--clock 1KHZ
; P6 w1 T7 a+ j. G  c4 l    RST : in std_logic;--reset
$ z% c( v8 a' r; `; t( S    SW  : in std_logic;--switch in% _" V1 m4 C3 r( I2 @" j# I  |" o1 m
    SEG7 : out std_logic_vector(6 downto 0));--% ]$ K0 Z/ ?$ P6 m
end pwm8;
- s# v5 p+ x; s9 R) q$ l% s  Z. u, ?; R
architecture arch of pwm8 is$ J# C9 k. T5 t0 |# u

' k, c: M9 ^: U9 Z( r8 Vsignal  SWCNT : std_logic_vector(2 downto 0);
4 n( m7 U+ u: u0 n2 q# w; ksignal  PWMCNT : std_logic_vector(2 downto 0);4 U" f2 A0 \! H: X
signal  DISP : std_logic;# }/ {/ l- S/ S+ O- R6 o. x

- N0 L) L) G1 n# y9 Q' tbegin
( t  b- P2 b0 J4 v
: ^, [2 L, u$ z) h8 u--toggle switch input counter
. e* |9 \; i$ C1 H+ r, W5 M( @  sprocess(RST,SW)
9 C; m$ M* F8 h" C8 V6 v3 e" m4 ^begin, f( [( f, Q% P: N8 t
    if RST='1' then
, M% G6 C% q1 P2 K; r! A: ]  O3 i        SWCNT<="000";
( K. {3 R1 b$ t+ C    elsif rising_edge(SW) then: S9 o8 y. `$ u6 N$ a# n+ e7 l
        SWCNT<=SWCNT+'1';! z+ r7 b3 c) E7 h, l: W0 K  ~
    end if;
! ~  {$ T; ?7 I, C$ B/ pend process;$ M1 s# e! q/ s9 }

- g1 i, G$ M# X5 Z) y--pwm counter
% x( y' A' ^/ o) c% b- p! E; Oprocess(RST,CLK)
" a4 U  T, ^% d5 ^/ o+ d1 Tbegin
6 ]: Z* m; I7 Q6 H1 y( {4 I5 S9 T9 t    if RST='1' then. Z; r% L# T% K# Y
        PWMCNT<="000";8 n$ {9 m( R' ]6 ?/ j% m
        DISP<='0';
/ b: |) v- u( n; @! ?    elsif rising_edge(CLK) then; {: E; v. I& U7 r; \0 E4 R
        PWMCNT<=PWMCNT+'1';- l- j7 {) G" U0 V% {4 ]* F3 {
        if (PWMCNT="111") then$ ~& M) w6 C2 }. N' k2 C: G  A) N
            DISP<='1';1 x8 ^, B$ W* U9 t( U3 G( d/ B" H
        elsif (PWMCNT=SWCNT) then
8 l! R+ c4 V5 g  w$ k# o            DISP<='0';
% r1 Y* \( n- r4 t        end if;3 K) u- a* M. a% x8 U& @4 r
    end if;% O* j6 M1 [+ q
end process;4 k6 v# a" x5 J
2 r% }' o! _0 L
--7-segment display decoder& N6 y$ |& o. `( @3 B& k" f! J' q
process(DISP,SWCNT)
" k5 t- x4 l: T- e) Hvariable DISPEN : std_logic_vector(3 downto 0);
5 g0 d  u, O3 y$ x9 K$ Ybegin
- k9 _7 z. j" Y( a" v% A$ {  e; I    DISPEN := DISP SWCNT;
5 G! l& r- G, {2 d    case DISPEN is --SEG7<="abcdefg", s" G3 ^- v; R4 y9 H, _
        when "1000"=>SEG7<="1111110";
. x% q+ X1 h3 |        when "1001"=>SEG7<="0110000";+ M' O+ w' p3 {8 ~# D/ [
        when "1010"=>SEG7<="1101101";$ E. b% r# `/ s/ X; m
        when "1011"=>SEG7<="1111001";
6 v( U' V: p4 ?5 c        when "1100"=>SEG7<="0110011";
' h! \& k& c! d        when "1101"=>SEG7<="1011011";
3 m& s& u( n8 c9 x3 J        when "1110"=>SEG7<="1011111";
# w2 Z" G# n2 R5 }9 _" Q        when "1111"=>SEG7<="1110000";  Y' N' |8 G) Y8 z4 R* e5 g
        when others=>SEG7<="0000000";: d) S, d* H$ D6 C: J- C  Z; ]
    end case;
" ?6 M$ L! e3 u- b5 f  Q0 f; vend process;1 m% ?) ~7 c8 t, m+ o+ N* h
end arch;
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
2#
發表於 2009-2-2 13:02:01 | 只看該作者
process(RST,SW)
' D. X6 {% A, v" C+ p+ ebegin
' i# `9 u! ]1 u1 Z: w& n  W/ u    if RST='1' then+ U  y0 k. N/ S+ p3 Z- C# z
        SWCNT<="000";" C1 |7 P0 _" W% o  @0 k
    elsif rising_edge(SW) then
$ K0 }5 d$ A$ S& P! k1 }* I        SWCNT<=SWCNT+'1';9 C/ C8 w, ~+ F
    end if;. t8 v! s6 ?/ K+ d6 g5 O: w. T9 C
end process;) L$ l1 \, p- N: C* _
將 SW 以 數ms~數十ms 的取樣率取到穩定的 High/Low 才當成上述的 clock 信號就可以解決
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-5-16 05:20 AM , Processed in 0.101013 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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