1樓:匿名使用者
3個取樣,兩個相同才變!
2樓:
一般消抖電路用多次取樣,再比較的方法實現。下面給個例子,每1毫秒取樣一次,把最後10次取樣值存下來,如果都一致,再翻轉。如果需要更長時間的消抖,可以加大取樣間隔,比如每10毫秒取樣一次,比較最後5次取樣值就可以消除50ms的抖動。
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
entity debounce is
generic (
clk_freq_mhz : integer := 20; --in mhz
button_press_status : std_logic := '0'
);port (
reset_n : in std_logic;
clk : in std_logic;
btnin : in std_logic;
btnpressed : out std_logic
);end debounce;
architecture debounce_arch of debounce is
constant max_ms_cnt : integer := clk_freq_mhz * 1000 - 1;
signal mscnt : integer range 0 to max_ms_cnt;
signal msclk : std_logic; --做乙個毫秒脈衝,每1毫秒對按鈕取樣一次
signal btnin_q : std_logic_vector(9 downto 0); --記住最後10次取樣
signal btn : std_logic;
signal btn_q : std_logic;
begin
--產生毫秒脈衝
process(reset_n, clk)
begin
if reset_n = '0' then
mscnt <= 0;
msclk <= '0';
elsif rising_edge(clk) then
if mscnt >= max_ms_cnt then
mscnt <= 0;
msclk <= '1';
else
mscnt <= mscnt + 1;
msclk <= '0';
end if;
end if;
end process;
--記住最後10次取樣
process(reset_n, clk)
begin
if reset_n = '0' then
btnin_q <= (others => not button_press_status);
elsif rising_edge(clk) then
if msclk = '1' then
btnin_q <= btnin_q(btnin_q'left-1 downto 0) & btnin;
else
btnin_q <= btnin_q;
end if;
end if;
end process;
process(reset_n, clk)
variable all_samples_are_pressed : std_logic_vector(btnin_q'left downto 0) := (others => button_press_status);
begin
if reset_n = '0' then
btn <= '0';
btn_q <= '0';
elsif rising_edge(clk) then
if btnin_q = all_samples_are_pressed then
btn <= '1'; --最後10次取樣都是按下狀態,就確認按鈕按下(10ms消抖)
elsif btnin_q = not all_samples_are_pressed then
btn <= '0'; --最後10次取樣都是抬起狀態,就確認按鈕抬起(10ms消抖)
else
btn <= btn; --否則保持不變
end if;
btn_q <= btn;
end if;
end process;
btnpressed <= '1' when btn = '1' and btn_q = '0' else '0'; --按鈕按下上公升沿檢測
end debounce_arch;
面部進行除皺後一段時間內會反彈嗎
赤峰麗都美容醫院 不會發生這種情況。以保妥適為例,保妥適會放鬆引起表情皺紋的面部肌肉,皺紋將在3 4個月期間逐漸重現,但不會引起更多皺紋形成。如果停止了保妥適 您的肌肉將會恢復正常活動,同時您的皺紋也將逐漸恢復到 前水平。多次 往往帶來更持久的療效。 面部除皺的方法很多,而針對皺紋的情況選擇不同的方...
電腦開機後一段時間內反應很慢是怎麼回事
豐山蘭堯越 系統啟動載入一個一個的程序當然會卡.你看看工作管理員裡有多少個程序在跑 我win8系統一般有6 7十個程序,想象一下,從0個啟動到幾十個程序 卡是必然的,再好的機器也卡,只是有的卡的時間短而已 禹英飆納哲 因為在載入很多服務,所以會很卡,和360本身確實有關係,但是忍了吧,就幾分鐘,把3...
怎樣才能短時間內忘掉一段沒有結果的感情
忘記.一個心痛的問題。說到底忘記過去是在騙自己,也是在騙別人,只要有一點點可以聯絡到過去的事的東西,你就不可能忘記過去的。不要逃,後悔也沒有用。有一句話不是這麼說嗎?你可能在1秒鐘的時間遇到一個人,用一天的時間愛上一個人,卻要用一生的時間忘記一個人。這就是愛情!刻意去忘記,會記的更深,所以別刻意的去...