freq_cnt.vhd

来自「利用FPGA实现的脉宽测试技术,基于VHDL,测试误差为时钟周期」· VHDL 代码 · 共 62 行

VHD
62
字号
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;

ENTITY freq_cnt IS
	PORT(
			clk : IN std_logic;
			reset : IN std_logic;
			signel : IN std_logic;
			lock : IN std_logic;
			freq : OUT std_logic_vector(26 downto 0)
		);
END freq_cnt;

ARCHITECTURE freq_detect OF freq_cnt IS
SIGNAL count_int:std_logic_vector(26 downto 0); --std_logic_vector(0 to 26);
SIGNAL lock_buf:std_logic;
SIGNAL signel_buf:std_logic;
BEGIN

	PROCESS --(clk,reset)
	BEGIN
		WAIT UNTIL rising_edge(clk);
			lock_buf <= lock; 
	END PROCESS;
	
	PROCESS --(clk,reset)
	BEGIN
		WAIT UNTIL rising_edge(clk);
			signel_buf <= signel; 
	END PROCESS;
	
		
	PROCESS--(clk,reset)
	BEGIN
		WAIT UNTIL rising_edge(clk);
		IF reset = '1' THEN
			count_int <= (OTHERS => '0');
		ELSE
			IF lock_buf = '0' AND lock = '1' THEN --100000000-1
				count_int<= (OTHERS => '0');
			ELSIF signel = '1' AND signel_buf = '0' THEN
				count_int <= count_int + 1;
			END IF;
		END IF;
	END PROCESS;
	
	
	PROCESS--(clk,reset) 
	BEGIN
		WAIT UNTIL rising_edge(clk);
		IF reset = '1' THEN
			freq <= (OTHERS => '0');
		ELSIF lock_buf = '0' AND lock = '1' THEN
			freq <= count_int;
		END IF;
	END PROCESS;	
	
	
END freq_detect;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?