📄 s2p-seq.vhd
字号:
use WORK.TYPES.ALL; -- Use the TYPES packageentity SER_PAR is -- Declare the interface port(SERIAL_IN, CLOCK, RESET: in BIT; PARALLEL_OUT: out PARALLEL_TYPE; PARITY_ERROR, READ_ENABLE: out BIT);end;architecture BEHAVIOR of SER_PAR is -- Signals for stored values signal CURRENT_STATE, NEXT_STATE: STATE_TYPE; signal CURRENT_PARITY, NEXT_PARITY: BIT; signal CURRENT_HIGH_BIT, NEXT_HIGH_BIT: BIT; signal CURRENT_PARALLEL_OUT, NEXT_PARALLEL_OUT: PARALLEL_TYPE;beginNEXT_ST: process(SERIAL_IN, CURRENT_STATE, RESET, CURRENT_HIGH_BIT, CURRENT_PARITY, CURRENT_PARALLEL_OUT) -- This process computes all outputs, the next -- state, and the next value of all stored values begin PARITY_ERROR <= '0'; -- Default values for all READ_ENABLE <= '0'; -- outputs and stored values NEXT_STATE <= CURRENT_STATE; NEXT_HIGH_BIT <= '0'; NEXT_PARITY <= '0'; NEXT_PARALLEL_OUT <= PARALLEL_TYPE'(others=>'0'); if(RESET = '1') then -- Synchronous reset NEXT_STATE <= WAIT_FOR_START; else case CURRENT_STATE is -- State processing when WAIT_FOR_START => if (SERIAL_IN = '1') then NEXT_STATE <= READ_BITS; NEXT_PARALLEL_OUT <= PARALLEL_TYPE'(others=>'0'); end if; when READ_BITS => if (CURRENT_HIGH_BIT = '1') then if (CURRENT_PARITY = SERIAL_IN) then NEXT_STATE <= ALLOW_READ; READ_ENABLE <= '1'; else NEXT_STATE <= PARITY_ERROR_DETECTED; end if; else NEXT_HIGH_BIT <= CURRENT_PARALLEL_OUT(0); NEXT_PARALLEL_OUT <= CURRENT_PARALLEL_OUT( 1 to PARALLEL_BIT_COUNT-1) & SERIAL_IN; NEXT_PARITY <= CURRENT_PARITY xor SERIAL_IN; end if; when PARITY_ERROR_DETECTED => PARITY_ERROR <= '1'; when ALLOW_READ => NEXT_STATE <= WAIT_FOR_START; end case; end if; end process; SYNCH: process -- This process remembers the stored values -- across clock cycles begin wait until CLOCK'event and CLOCK = '1'; CURRENT_STATE <= NEXT_STATE; CURRENT_HIGH_BIT <= NEXT_HIGH_BIT; CURRENT_PARITY <= NEXT_PARITY; CURRENT_PARALLEL_OUT <= NEXT_PARALLEL_OUT; end process; PARALLEL_OUT <= CURRENT_PARALLEL_OUT;end BEHAVIOR;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -