⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stemdetecor_moore_onehot.vhd

📁 这是一些经典的vhdl example
💻 VHD
字号:
LIBRARY IEEE; 
USE ieee.std_logic_1164.all ;
ENTITY StemDetecor_moore_onehot IS
	PORT(
		clk								: IN	STD_LOGIC;    --状态机时钟
		reset							: IN	STD_LOGIC;    --异步复位
		din								: IN	STD_LOGIC;    --数据输入
		dout							: OUT	STD_LOGIC);   --检测结果输出
END StemDetecor_moore_onehot;

ARCHITECTURE behavier OF StemDetecor_moore_onehot IS

	constant A: STD_logic_vector(2 downto 0):="001";		   --定义状态编码
	constant B: STD_logic_vector(2 downto 0):="010";
	constant C: STD_logic_vector(2 downto 0):="100";
	SIGNAL present_state: STD_logic_vector(2 downto 0);
	SIGNAL next_state: STD_logic_vector(2 downto 0);
BEGIN
	update :PROCESS(reset, clk)			    --每个时钟上升沿,更新状态
     BEGIN
   	     IF (reset = '1') THEN 					--状态机复位
	 		present_state <= A;
	     ELSIF (clk'EVENT AND clk='1') THEN     --状态更新
	 		present_state <= next_state;
	     END IF;
    END PROCESS update;

	statedecoder:PROCESS(clk)					--状态译码
	BEGIN
		CASE present_state IS
			WHEN A =>
				IF din='1' THEN
					next_state <= B;
				ELSE
					next_state <= A;
				END IF;
			WHEN B =>
				IF din='0' THEN
					next_state <= A;
				ELSE
					next_state <= C;
				END IF;
			WHEN C =>
				IF din='0' THEN
					next_state <= A;
				ELSE
					next_state <= C;
				END IF;
			WHEN OTHERS =>						  --多于状态处理
				next_state<=A;
		END CASE;
	END PROCESS statedecoder;

	outputdecoder:PROCESS(clk,present_state,din)      --输出译码
	BEGIN	
		IF reset='1' THEN
			dout<='0';
		ELSE
			--IF clk'EVENT AND clk = '1' THEN			 --同步输出
				IF present_state = C THEN
					dout<='1';
				ELSE
					dout<='0';
				END IF;	
			--END IF;
	    END IF;
	END PROCESS outputdecoder;
END behavier;

⌨️ 快捷键说明

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