跑丢的孩子

VHDL实现边沿检测技术

0
阅读(4198)

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity trigger is
Port ( clk : in STD_LOGIC;
rst : in STD_LOGIC;
trigger : in STD_LOGIC;
rise : out STD_LOGIC;
fall : out STD_LOGIC);
end trigger;

architecture Behavioral of trigger is
signal temp : std_logic;
begin
process(clk,rst)
begin
if (rst='0') then
temp <= '0';
elsif rising_edge(clk) then
temp <= trigger;
end if;
end process;
fall <= temp and (not trigger);
rise <= trigger and (not temp);
end Behavioral;
RTL级原理图
所谓的边沿检测,就是对输入信号的上升沿和下降沿的检测。上面一段简短的代码实现了对输入信号上升沿和下降沿的检测,对应的RTL级原理图如上图所示。该模块一共有5个信号,分别是复位信号rst,时钟信号clk,触发信号trigger,下降沿信号fall,上升沿信号rise。当时钟有效时,触发器会锁存前一个时刻的触发信号,然后分别通过两个与门与当前时刻的触发信号进行逻辑运算,来判断是上升沿还是下降沿。为了消除抖动,使得信号更加稳定,可以多加几级触发器。读者可以自己试着完成。
Baidu
map