Verilog VHDL Translation software
Verilog VHDL Translation software



-------------------------------------

-- VHDL File of a JTAG Tap Controller

-------------------------------------

library ieee;

use ieee.std_logic_1164.all;

entity tap_controller is

   port (tms : in std_ulogic;

	 tck : in std_ulogic;

	 trst : in std_ulogic;

	 sel : out std_ulogic;

	 enable : out std_ulogic;

	 test_logic_reset : out std_ulogic;

	 idle : out std_ulogic;

	 resetn : out std_ulogic;

	 shift_ir : out std_ulogic;

	 update_ir : out std_ulogic;

	 clock_ir : out std_ulogic;

	 shift_dr : out std_ulogic;

	 capture_dr : out std_ulogic;

	 clock_dr : out std_ulogic;

	 update_dr : out std_ulogic);

end tap_controller;



library mgc_bscan;

architecture BEHAVIORAL of tap_controller is

signal D : std_ulogic := '1';

signal C : std_ulogic := '1';

signal B : std_ulogic := '1';

signal A : std_ulogic := '1';

signal NA : std_ulogic;

signal NB : std_ulogic;

signal NC : std_ulogic;

signal ND : std_ulogic;

signal GRST : std_ulogic;

signal GENB : std_ulogic;

signal GSIR : std_ulogic;

signal GSDR : std_ulogic;

signal tckd : std_ulogic;

signal trsthi : std_ulogic;

signal tmsbuf : std_ulogic;  -- buffered

signal trstnbuf : std_ulogic;  -- buffered





-- concurrent statements to define output logic.



begin

trsthi <= not trstnbuf; SEL <="D;"
tckd <="not" tck;
CLOCK_IR <="not" (not A and B and D and tckd);
UPDATE_IR <="A" and not B and C and D and tckd;
CLOCK_DR <="not" (not A and B and not D and tckd);
test_logic_reset <="A" and B and C and D;
test-logic-reset idle <="not" A and not B and C and D;
run-test/idle UPDATE_DR <="A" and not B and C and not D and tckd;
CAPTURE_DR <="not" A and B and C and not D;
tmsbuf <="tms;"
trstnbuf <="trst;" -- concurrent statements to define next state logic. NA <="not((not(not" tmsbuf and (not C and A)) and not(tmsbuf and not B)) and (not(tmsbuf and not A) and not(tmsbuf and (C and D)))); NB <="not((((((not(not" tmsbuf and (B and not A)) and not(not tmsbuf and not C)) and not(not tmsbuf and (not D and B))) and not(not tmsbuf and (not D and not A))) and not(tmsbuf and (C and not B))) and not((tmsbuf and D) and (C and A)))); NC <="not(not(C" and not B) and (not(C and A) and not(tmsbuf and not B))); ND <="not((not(D" and not C) and not(D and B)) and (not(not tmsbuf and (C and not B)) and not((not D and C) and (not B and not A)))); ---Combinational logic GRST <="not((A" and B) and (C and D)); GSIR <="(not" A and B) and (not C and D); -- made active high by mrd GSDR <="(not" A and B) and (not C and not D); GENB <="not(not" GSIR and not GSDR); GENB <="GSIR" or GSDR; -- Define D inputs and sets to four state FFs process (TRSTHI, TCKD) begin if TRSTHI="1" then RESETN <="0" ; elsif rising_edge(TCKD) then RESETN <="GRST;" end if; end process; process (TRSTHI, TCKD) begin if TRSTHI="1" then ENABLE <="0" ; elsif rising_edge(TCKD) then ENABLE <="GENB;" end if; end process; process (TRSTHI, TCKD) begin if TRSTHI="1" then SHIFT_IR <="1" ; elsif rising_edge(TCKD) then SHIFT_IR <="GSIR;" end if; end process; process (TRSTHI, TCKD) begin if TRSTHI="1" then SHIFT_DR <="1" ; elsif rising_edge(TCKD) then SHIFT_DR <="GSDR;" end if; end process; -- Define D inputs and resets to four output FFs. process (TRSTHI, tck) begin if trsthi="1" then D <="1" ; elsif rising_edge(tck) then D <="ND;" end if; end process; process (trsthi, tck) begin if trsthi="1" then C <="1" ; elsif rising_edge(tck) then C <="NC;" end if; end process; process (trsthi, tck) begin if trsthi="1" then B <="1" ; elsif rising_edge(tck) then B <="NB;" end if; end process; process (trsthi, tck) begin if trsthi="1" then A <="1" ;
elsif rising_edge(tck) then A <="NA;" end if;
end process;
end BEHAVIORAL;

Back to VHDL2verilog Index


home  company   products  news   employment  contact   info   

Copyright © 1998-2005 Alternative System Concepts, Inc

Alternative System Concepts About Alternative System Concepts ASC Products ASC News Employment opportunities at ASC ASC Contact information Alternative System Concepts - driving design innovation