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

📄 state.vhd

📁 用于视频运动图像编码的HUFFMAN编码
💻 VHD
字号:
package TYPES is	type STATES is (S0,S1,S2);end package TYPES;library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use work.MYfunction.all;
use work.types.all;entity HT is
	port(	START,CLK,RESET,DREADY,EQU:in std_logic;
		BUSY,READY,LATCH1,LATCH2,SYNCH2,RESET1,RESET2,RD,LOAD:out std_logic			);
end HT;

architecture BEHAVIORAL of HT is
			signal CNT :std_logic_vector( 4 downto 0);	signal CURRENT_STATE,NEXT_STATE:STATES;		begin
		STATE_TRANS:process(CURRENT_STATE,START,DREADY,EQU)	begin		case CURRENT_STATE is			when S0 =>				if START='1'  then					NEXT_STATE<=S1;				else				end if;			when S1 =>				if  DREADY='1' then					NEXT_STATE<=S2;				elsif START='0' then					NEXT_STATE<=S0; 				end if;			when S2 =>				if EQU='1'  then					NEXT_STATE<=S1;				elsif START='0' then					NEXT_STATE<=S0;				end if;			end case;	end process STATE_TRANS;		UPDATE:process(RESET,CLK)	begin		if RESET='0' then			CURRENT_STATE<=S0;					elsif CLK'event and CLK='1' then			CURRENT_STATE<=NEXT_STATE;		end if;	end process UPDATE;		COUNT_P:process	begin		wait until CLK'event and CLK='1'; 		case CURRENT_STATE is			when S0 => CNT<="00000";			when S1 => CNT<="00000";				when S2 =>									if  CNT = "11111" then						CNT<="00000";					else 						CNT<=CNT+1;					end if;												when others =>null;		end case;	end process COUNT_P;		OUTPUT_P:process (CURRENT_STATE,CNT)	begin		case CURRENT_STATE is			when S0 =>				BUSY<='0';				LATCH1<='0';				LATCH2<='0';				SYNCH2<='0';				RESET1<='1';				RESET2<='1';				RD<='0';				LOAD<='0';			when S1 => 				BUSY<='1';				READY<='1';				LATCH1<='0';				LATCH2<='0';				SYNCH2<='0';				RESET1<='1';				RESET2<='0';				RD<='0';				LOAD<='0';			when S2 =>				case CNT is					when "00000" =>						LATCH1<='1';						LATCH2<='0';						SYNCH2<='0';						LOAD<='0';					when "00001" =>						LATCH1<='0';						LATCH2<='1';						SYNCH2<='0';						LOAD<='1';					when "00010" =>						LATCH1<='0';						LATCH2<='1';						SYNCH2<='0';						LOAD<='0';					when "00011" =>						LATCH1<='0';						LATCH2<='0';						SYNCH2<='0';						LOAD<='0';										when others =>											LATCH1<='0';						LATCH2<='0';						SYNCH2<='1';						LOAD<='0';				end case;				RESET1<='0';				RESET2<='1';				RD<='1';			when others => null;		end case;	end process OUTPUT_P;									end BEHAVIORAL;
	

⌨️ 快捷键说明

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