📄 state.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 + -