Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2009-1-18 22:06:27 | 只看該作者 回帖獎勵 |正序瀏覽 |閱讀模式
此程式為一個每按一次TACT SW就會進行累加1的程式,並且LED亮度會每累加一次+ h: G: T! t5 G9 b7 u
就會增加,共8段亮度(0~7),此程式這些功能都可以了,但是會有開關彈跳的問題,
* M1 X( s/ ], l, I* h( u( B" b希望能有高手幫我解決此問題% @' m$ I( B# ^. i" v
7 g& o1 ~- s8 ~  c

) B' i" l$ W  O& ]6 ]$ Elibrary ieee;0 t  W/ Q( D- @% Q2 k+ ]& Z. D
use ieee.std_logic_1164.all;
* B- m1 z, ]2 q& Uuse ieee.std_logic_arith.all;
! G3 c* V* I% q) X+ Duse ieee.std_logic_unsigned.all;
' g9 A4 ~' K# C* e3 }; g' K3 o2 P
0 C$ ~4 d. ?9 @entity pwm8 is Port (' Y  R% W- [+ u  j+ {4 Y; `
    CLK : in std_logic;--clock 1KHZ
1 G: f. P  W, O- w' o5 I: `    RST : in std_logic;--reset8 ]! q. v  x( T+ d' P$ K  [% r
    SW  : in std_logic;--switch in
4 P# R% v' [$ Z/ G  @5 u* P    SEG7 : out std_logic_vector(6 downto 0));--
' \) B2 }; A: @8 h. Hend pwm8;+ }2 y5 p+ h/ k
; Q2 x" m+ |3 k/ h9 C
architecture arch of pwm8 is1 l7 M% u3 |- W  R& t
6 l! j& ~3 m4 R) G: a
signal  SWCNT : std_logic_vector(2 downto 0);  Z. c9 d: J1 m, J( B6 h
signal  PWMCNT : std_logic_vector(2 downto 0);
) ^! Q7 s1 P" \+ e& z" c$ b' ]. rsignal  DISP : std_logic;
- D# v8 l7 C% E  K9 k3 o; [0 D# L0 x# Q/ v6 j. p
begin
: ?& f" o) p, |' e6 u. f5 v( b6 |/ J+ R0 E
--toggle switch input counter& I1 Z9 S  D. P9 G5 b$ T
process(RST,SW)
! X7 ~* W( D* D; p  `" z4 hbegin
) m6 z, R" t" J+ S+ m0 U    if RST='1' then
: u$ N  t: s! t, K( {5 K- e$ p" ^        SWCNT<="000";7 c1 w2 A# R* T7 N
    elsif rising_edge(SW) then# I2 M0 i  ^* x) f% ~7 N0 Q
        SWCNT<=SWCNT+'1';
+ E6 }6 _9 q5 d8 C8 \" B    end if;' P  a4 K) m9 \2 d; W
end process;
8 i) N$ \8 m; ~( V2 c/ r, V0 V
' }* z$ F: T$ D8 C2 O) x--pwm counter
5 D# P  Z0 P) j' O& hprocess(RST,CLK): k! G9 f) F4 j4 W
begin
" P* `6 d, T" g: l* F6 {" l    if RST='1' then
9 ^0 X5 P3 e6 K  Q; b! e: R7 f        PWMCNT<="000";
; N. q9 B9 n) V6 A  W% |# }' ]        DISP<='0';
( X% H+ [9 v/ L7 H9 d9 @    elsif rising_edge(CLK) then
$ O+ R# L8 [8 `0 U7 Y' I5 e6 l  t0 b& p        PWMCNT<=PWMCNT+'1';
( L5 R# F$ k+ O$ _2 I$ X9 p" M        if (PWMCNT="111") then" {( l9 s0 G  a: K1 u  Z- [
            DISP<='1';
' S: r' }7 @  u        elsif (PWMCNT=SWCNT) then
' q( `# M* b3 _: r6 u8 i5 ~2 h) {" k4 }            DISP<='0';
  j  [% p$ s% A- w1 l1 m5 s9 [        end if;0 `/ |& \" @' X' N
    end if;
5 r% ~# W7 l1 R; F0 y, s- Zend process;2 f! |8 ?1 \! K0 Z
5 V9 v: q, C0 e1 [% @3 m) @( V
--7-segment display decoder6 I3 i/ X/ s5 v/ g0 h
process(DISP,SWCNT)
, r( [" x9 {8 h, V: Z. [variable DISPEN : std_logic_vector(3 downto 0);
& b, s* E$ {1 S, U: S; Ebegin
0 {2 `6 A+ S! x3 g    DISPEN := DISP SWCNT;
7 Z& _' a2 U0 c! Z6 o    case DISPEN is --SEG7<="abcdefg"
" u, l8 {9 @# p1 j% x$ Q$ N& X        when "1000"=>SEG7<="1111110";
6 m4 C. x0 I5 Q  S$ H        when "1001"=>SEG7<="0110000";
6 k0 c# `5 s$ p* t        when "1010"=>SEG7<="1101101";. x- K/ Y- M! \' X0 z
        when "1011"=>SEG7<="1111001";) V* o; c' J( s5 g
        when "1100"=>SEG7<="0110011";, ], H! Z& {% x, s
        when "1101"=>SEG7<="1011011";% T( {' y0 D; i6 n, x, u8 J) r
        when "1110"=>SEG7<="1011111";
6 u& b& h1 {  i* `- r- o9 k, s        when "1111"=>SEG7<="1110000";
% Q2 D6 h. w0 ]        when others=>SEG7<="0000000";
+ k* [3 _7 Z5 e    end case;2 Y9 j8 }5 Y* z) b; Y- L* H
end process;
$ r4 p& B1 _; K3 L* @' l7 o% q  g$ lend arch;
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
2#
發表於 2009-2-2 13:02:01 | 只看該作者
process(RST,SW)2 A, _- O* H4 G' Z* F
begin. D5 r8 ?6 _% b2 V8 `
    if RST='1' then
- k7 E, q$ ?8 \' U9 K; Y* H" C! e        SWCNT<="000";( \: N5 E0 k+ g% s1 {7 _. x
    elsif rising_edge(SW) then
. {! j, S# f& Z% q        SWCNT<=SWCNT+'1';% r4 l( J7 V2 g% [& W3 r
    end if;5 E2 ]! p# O1 [. a" s! I7 }/ p" I8 q0 H
end process;- p/ d6 ~8 Z9 [4 e
將 SW 以 數ms~數十ms 的取樣率取到穩定的 High/Low 才當成上述的 clock 信號就可以解決
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2025-2-24 12:18 PM , Processed in 0.165009 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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