-- new file anme: pb1so2.vhd -- file name: pb1scrdout.vhd -- protection block1 -- input : forward input -- input : reverse input -- input : A+FAC A+(F.A.C)(input for this block coming from the -- output of firing angle calculation block). -- input : A-FAC A-(F.A.C)(input for this block coming from the -- output of firing angle calculation block). -- output: two outputs are comingb from this block are -- FOR1 AND REV1 and going to the scr firing forward -- and reverse buffers (all outputs of these buffers are -- active low . -- FOR1 and REV1 are active low ------------------------------------------------------------- -- inputs outputs ------------------------------------------------------------- -- FORC REVC A+FAC A-FAC FOR1 REV1 ------------------------------------------------------------- -- 1 1 0 0 1 1 -- 1 0 1 0 0 1 -- 1 0 0 1 0 1 -- 1 0 1 1 1 1 -- 0 1 0 0 1 0 -- 0 1 1 0 1 0 -- 0 1 0 1 1 0 -- 0 1 1 1 1 1 -- 1 1 0 1 1 1 -- 1 1 1 0 1 1 -- 1 1 1 1 1 1 ------------------------------------------------------------- library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity pb1so2 is port( FORC,REVC,APFAC,ANFAC : in std_logic ; FOR1,REV1 : out std_logic ); end pb1so2 ; architecture BEHAV of pb1so2 is begin PBLOCK1: process(FORC,REVC,APFAC,ANFAC) begin IF FORC = '0' THEN IF REVC = '0' THEN FOR1 <= '1' ; REV1 <= '1'; ELSIF REVC = '1' THEN IF APFAC = '1' THEN IF ANFAC ='0' THEN FOR1 <= '1' ; -- ENABLE FORWARD BUFFER CTRL REV1 <= '0' ; -- DISABLE REVERSE BUFFER CTRL ELSIF ANFAC ='1' then FOR1 <= '1' ; -- DISABLE FORWARD BUFFER CONTROL REV1 <= '1'; -- DISABLE REVERSE BUFFER CTRL END IF; ELSIF APFAC = '0' THEN IF ANFAC ='1' THEN FOR1 <= '1'; -- ENABLE FORWARD BUFFER CTRL REV1 <= '0'; -- DISABLE REVERSE BUFFER CTRL ELSIF ANFAC ='0' THEN FOR1 <= '1'; -- DISBALE FORWARD BUFFER CTRL REV1 <= '0'; -- DISABLE REVERSE BUFFER CTRL END IF; END IF ; END IF ; ELSIF FORC = '1' THEN IF REVC = '1' THEN FOR1 <= '1' ; REV1 <= '1' ; ELSIF REVC = '0' THEN IF APFAC = '1' THEN IF ANFAC ='0' THEN FOR1 <= '0' ; -- ENABLE FORWARD BUFFER CTRL REV1 <= '1' ; -- DISABLE REVERSE BUFFER CTRL ELSIF ANFAC ='1' then FOR1 <= '1' ; -- DISABLE FORWARD BUFFER CONTROL REV1 <= '1'; -- DISABLE REVERSE BUFFER CTRL END IF; ELSIF APFAC = '0' THEN IF ANFAC ='1' THEN FOR1 <= '0'; -- ENABLE FORWARD BUFFER CTRL REV1 <= '1'; -- DISABLE REVERSE BUFFER CTRL ELSIF ANFAC ='0' THEN FOR1 <= '0'; -- DISBALE FORWARD BUFFER CTRL REV1 <= '1'; -- DISABLE REVERSE BUFFER CTRL END IF; END IF ; END IF ; END IF ; END PROCESS PBLOCK1 ; END BEHAV ;