From: palka Date: Tue, 8 Jan 2008 12:10:18 +0000 (+0000) Subject: for general porpuse addon X-Git-Url: https://jspc29.x-matter.uni-frankfurt.de/git/?a=commitdiff_plain;h=aea08e702126b7ad11b4b6f2d67b12f1947fb9af;p=trbv2.git for general porpuse addon --- diff --git a/GP_Addon/gp_add_on.ucf b/GP_Addon/gp_add_on.ucf new file mode 100644 index 0000000..9228aac --- /dev/null +++ b/GP_Addon/gp_add_on.ucf @@ -0,0 +1,139 @@ + # NET +<3> LOC = E8; +# NET ADDON_RESET LOC ="B10"| IOSTANDARD = "LVTTL"; + NET ADO_TTL<0> LOC ="A12"| IOSTANDARD = "LVTTL"; + NET ADO_TTL<1> LOC ="A13"| IOSTANDARD = "LVTTL"; + NET ADO_TTL<2> LOC ="A14"| IOSTANDARD = "LVTTL"; + NET ADO_TTL<3> LOC ="B13"| IOSTANDARD = "LVTTL"; + NET ADO_TTL<4> LOC ="C12"| IOSTANDARD = "LVTTL"; + NET ADO_TTL<5> LOC ="C13"| IOSTANDARD = "LVTTL"; + NET ADO_TTL<6> LOC ="D12"| IOSTANDARD = "LVTTL"; + NET ADO_TTL<7> LOC ="D15"| IOSTANDARD = "LVTTL"; + NET ADO_TTL<8> LOC ="E11"| IOSTANDARD = "LVTTL"; + NET ADO_TTL<9> LOC ="E13"| IOSTANDARD = "LVTTL"; + NET ADO_TTL<10> LOC ="A9"| IOSTANDARD = "LVTTL"; + NET ADO_TTL<11> LOC ="A10"| IOSTANDARD = "LVTTL"; + NET ADO_TTL<12> LOC ="A11"| IOSTANDARD = "LVTTL"; + NET ADO_TTL<13> LOC ="B11"| IOSTANDARD = "LVTTL"; + NET ADO_TTL<14> LOC ="B12"| IOSTANDARD = "LVTTL"; + NET ADO_TTL<15> LOC ="C11"| IOSTANDARD = "LVTTL"; + NET ADO_TTL<16> LOC ="D9"| IOSTANDARD = "LVTTL"; + NET ADO_TTL<17> LOC ="D11"| IOSTANDARD = "LVTTL"; + NET ADO_TTL<18> LOC ="E10"| IOSTANDARD = "LVTTL"; + NET ADO_TTL<19> LOC ="M10"| IOSTANDARD = "LVTTL"; + NET ADO_TTL<20> LOC ="N9"| IOSTANDARD = "LVTTL"; + NET ADO_TTL<21> LOC ="N10"| IOSTANDARD = "LVTTL"; + NET ADO_TTL<22> LOC ="P10"| IOSTANDARD = "LVTTL"; + NET ADO_TTL<23> LOC ="P11"| IOSTANDARD = "LVTTL"; + NET ADO_TTL<24> LOC ="R9"| IOSTANDARD = "LVTTL"; + NET ADO_TTL<25> LOC ="R10"| IOSTANDARD = "LVTTL"; + NET ADO_TTL<26> LOC ="R11"| IOSTANDARD = "LVTTL"; + NET ADO_TTL<27> LOC ="T10"| IOSTANDARD = "LVTTL"; + NET ADO_TTL<28> LOC ="T11"| IOSTANDARD = "LVTTL"; + NET ADO_TTL<29> LOC ="M11"| IOSTANDARD = "LVTTL"; + NET ADO_TTL<30> LOC ="N11"| IOSTANDARD = "LVTTL"; + NET ADO_TTL<31> LOC ="N12"| IOSTANDARD = "LVTTL"; + NET ADO_TTL<32> LOC ="P12"| IOSTANDARD = "LVTTL"; + NET ADO_TTL<33> LOC ="R12"| IOSTANDARD = "LVTTL"; + NET ADO_TTL<34> LOC ="R13"| IOSTANDARD = "LVTTL"; + NET ADO_TTL_OUT LOC ="R14"| IOSTANDARD = "LVTTL"; +# NET ADO_TTL<35> LOC ="R14"| IOSTANDARD = "LVTTL"; +# NET ADO_TTL<36> LOC ="T12"| IOSTANDARD = "LVTTL"; +# NET ADO_TTL<37> LOC ="T13"| IOSTANDARD = "LVTTL"; +# NET ADO_TTL<38> LOC ="T14"| IOSTANDARD = "LVTTL"; +# NET ADO_TTL<39> LOC ="T6"| IOSTANDARD = "LVTTL"; +# NET ADO_TTL<40> LOC ="T5"| IOSTANDARD = "LVTTL"; +# NET ADO_TTL<41> LOC ="T4"| IOSTANDARD = "LVTTL"; +# NET ADO_TTL<42> LOC ="R6"| IOSTANDARD = "LVTTL"; +# NET ADO_TTL<43> LOC ="R5"| IOSTANDARD = "LVTTL"; +# NET ADO_TTL<44> LOC ="R4"| IOSTANDARD = "LVTTL"; +# NET ADO_TTL<45> LOC ="P5"| IOSTANDARD = "LVTTL"; +# NET ADO_TTL<46> LOC ="E7"| IOSTANDARD = "LVTTL"; + NET A_R LOC ="A6"| IOSTANDARD = "TTL"; + NET A_RB LOC ="D8"; + NET A_RD<0> LOC ="B7"| IOSTANDARD = "TTL"; + NET A_RD<1> LOC ="B8"| IOSTANDARD = "TTL"; + NET A_RD<2> LOC ="C7"| IOSTANDARD = "TTL"; + NET A_RD<3> LOC ="C8"| IOSTANDARD = "TTL"; + NET A_RE LOC ="D7"| IOSTANDARD = "TTL"; + NET A_RS LOC ="B6"| IOSTANDARD = "TTL"; + NET A_T LOC ="A4"| IOSTANDARD = "TTL"; + NET A_TB LOC ="D3"| IOSTANDARD = "TTL"; + NET A_TB_B2_DIR LOC ="H2"| IOSTANDARD = "TTL"; + NET A_TB_B1_DIR LOC ="H16"| IOSTANDARD = "TTL"; + NET A_TB_D_DIR LOC ="E6"| IOSTANDARD = "TTL"; + NET A_TB_E2_DIR LOC ="H4"| IOSTANDARD = "TTL"; + NET A_TB_E1_DIR LOC ="D6"| IOSTANDARD = "TTL"; + NET A_TD<0> LOC ="B4"| IOSTANDARD = "TTL"; + NET A_TD<1> LOC ="B5"| IOSTANDARD = "TTL"; + NET A_TD<2> LOC ="C1"| IOSTANDARD = "TTL"; + NET A_TD<3> LOC ="C5"| IOSTANDARD = "TTL"; + NET A_TE LOC ="C6"| IOSTANDARD = "TTL"; + NET A_TS LOC ="A5"| IOSTANDARD = "TTL"; + NET B_R LOC ="L12"| IOSTANDARD = "TTL"; + NET B_RB LOC ="N16"| IOSTANDARD = "TTL"; + NET B_RD<0> LOC ="L16"| IOSTANDARD = "TTL"; + NET B_RD<1> LOC ="M14"| IOSTANDARD = "TTL"; + NET B_RD<2> LOC ="M15"| IOSTANDARD = "TTL"; + NET B_RD<3> LOC ="M16"| IOSTANDARD = "TTL"; + NET B_RE LOC ="N15"| IOSTANDARD = "TTL"; + NET B_RS LOC ="L13"| IOSTANDARD = "TTL"; + NET B_T LOC ="J14"| IOSTANDARD = "TTL"; + NET B_TB LOC ="L14"| IOSTANDARD = "TTL"; + NET B_TB_B2_DIR LOC ="J5"| IOSTANDARD = "TTL"; + NET B_TB_B1_DIR LOC ="P15"| IOSTANDARD = "TTL"; + NET B_TB_D_DIR LOC ="K12"| IOSTANDARD = "TTL"; + NET B_TB_E1_DIR LOC ="L15"| IOSTANDARD = "TTL"; + NET B_TB_E2_DIR LOC ="J3"| IOSTANDARD = "TTL"; + NET B_TD<0> LOC ="J16"| IOSTANDARD = "TTL"; + NET B_TD<1> LOC ="K13"| IOSTANDARD = "TTL"; + NET B_TD<2> LOC ="K14"| IOSTANDARD = "TTL"; + NET B_TD<3> LOC ="K15"| IOSTANDARD = "TTL"; + NET B_TE LOC ="K16"| IOSTANDARD = "TTL"; + NET B_TS LOC ="J15"| IOSTANDARD = "TTL"; +# NET CPLD_CLK LOC ="B9"; + NET DIFF_IN<0> LOC ="F16"; + NET DIFF_IN<1> LOC ="G13"; + NET DIFF_IN<2> LOC ="G14"; + NET DIFF_IN<3> LOC ="G15"; + NET DIFF_IN<4> LOC ="G16"; + NET DIFF_IN<5> LOC ="H12"; + NET DIFF_IN<6> LOC ="H13"; + NET DIFF_IN<7> LOC ="H14"; + # NET DISP_A<0> LOC ="M2"; + # NET DISP_A<1> LOC ="L5"; + # NET DISP_D<0> LOC ="M3"; + # NET DISP_D<1> LOC ="M4"; + # NET DISP_D<2> LOC ="N2"; + # NET DISP_D<3> LOC ="N3"; + # NET DISP_D<4> LOC ="P1"; + # NET DISP_D<5> LOC ="R1"; + # NET DISP_D<6> LOC ="T1"; + # NET DISP_WR LOC ="L2"; + # NET FROM_LVDS<28> LOC ="C16"; + # NET FROM_LVDS<29> LOC ="D16"; + # NET FROM_LVDS<30> LOC ="E14"; + # NET FS_PE<0> LOC ="A7"; + # NET FS_PE<1> LOC ="K1"; + # NET FS_PE<2> LOC ="J13"; + # NET FS_PE<4> LOC ="C10"; + # NET FS_PE<5> LOC ="N8"; + # NET FS_PE<6> LOC ="P6"; + # NET FS_PE<7> LOC ="P7"; + # NET FS_PE<8> LOC ="P8"; + # NET FS_PE<9> LOC ="P9"; + # NET FS_PE<10> LOC ="R7"; + # NET FS_PE<11> LOC ="R8"; + # NET FS_PE<12> LOC ="T7"; + # NET FS_PE<13> LOC ="T8"; + # NET FS_PE<14> LOC ="T9"; + # NET FS_PE<15> LOC ="M7"; + # NET FS_PE<16> LOC ="N6"; + # NET FS_PE<17> LOC ="N7"; + # NET GND LOC ="L11"; + NET LED_CNT_1 LOC ="F13"; + NET LED_CNT_2 LOC ="F14"; +# NET LED_CTU_EN LOC ="F15"; + NET LED_ERROR LOC ="E16"; + NET LED_GOOD LOC ="F12"; +# NET LED_LVDS_EN LOC ="E15"; + diff --git a/GP_Addon/gp_add_on.vhd b/GP_Addon/gp_add_on.vhd new file mode 100644 index 0000000..1a19b87 --- /dev/null +++ b/GP_Addon/gp_add_on.vhd @@ -0,0 +1,199 @@ +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +use IEEE.STD_LOGIC_ARITH.ALL; +use IEEE.STD_LOGIC_UNSIGNED.ALL; +use IEEE.NUMERIC_STD.all; + +-- use work.support.all; +library UNISIM; +use UNISIM.VCOMPONENTS.all; + +entity gp_add_on is + port( +-- -- # NET +<3> LOC = E8; +-- ADDON_RESET :in std_logic; + ADO_TTL : inout std_logic_vector(34 downto 0); + ADO_TTL_OUT : out std_logic; +-- ------------------------------------------------------------------------------ +-- -- LVL1 +-- ------------------------------------------------------------------------------ + B_R : in std_logic; + B_RB : out std_logic; + B_RD : in std_logic_vector(3 downto 0); + B_RE : out std_logic; + B_RS : in std_logic; + ------------------------------------------------------------------------------ + -- LVL2 + ------------------------------------------------------------------------------ + B_T : in std_logic; + B_TB : out std_logic; + B_TB_B2_DIR :out std_logic; + B_TB_B1_DIR :out std_logic; + B_TB_D_DIR :out std_logic; + B_TB_E2_DIR :out std_logic; + B_TB_E1_DIR :out std_logic; + B_TD :in std_logic_vector(3 downto 0); + B_TE : out std_logic; + B_TS : in std_logic; + +------------------------------------------------------------------------------- +-- to next trb dtu data +------------------------------------------------------------------------------- +------------------------------------------------------------------------------ +-- LVL1 +-------------------------------------------------------------------------------- + A_R : out std_logic; + A_RB : in std_logic; + A_RD : out std_logic_vector(3 downto 0); + A_RE : in std_logic; + A_RS : out std_logic; +------------------------------------------------------------------------------ +-- LVL2 +------------------------------------------------------------------------------ + A_T : out std_logic; + A_TB : in std_logic; + A_TB_B2_DIR :out std_logic; + A_TB_B1_DIR :out std_logic; + A_TB_D_DIR :out std_logic; + A_TB_E2_DIR :out std_logic; + A_TB_E1_DIR :out std_logic; + A_TD : out std_logic_vector(3 downto 0); + A_TE : in std_logic; + A_TS : out std_logic; + +-- CPLD_CLK :in std_logic; + DIFF_IN : in std_logic_vector(7 downto 0); +-- -- DISP_A<0> LOC = M2; +-- -- DISP_A<1> LOC = L5; +-- -- DISP_D<0> LOC = M3; +-- -- DISP_D<1> LOC = M4; +-- -- DISP_D<2> LOC = N2; +-- -- DISP_D<3> LOC = N3; +-- -- DISP_D<4> LOC = P1; +-- -- DISP_D<5> LOC = R1; +-- -- DISP_D<6> LOC = T1; +-- -- DISP_WR LOC = L2; +-- -- FROM_LVDS<28> LOC = C16; +-- -- FROM_LVDS<29> LOC = D16; +-- -- FROM_LVDS<30> LOC = E14; +-- -- FS_PE<0> LOC = A7; +-- -- FS_PE<1> LOC = K1; +-- -- FS_PE<2> LOC = J13; +-- -- FS_PE<4> LOC = C10; +-- -- FS_PE<5> LOC = N8; +-- -- FS_PE<6> LOC = P6; +-- -- FS_PE<7> LOC = P7; +-- -- FS_PE<8> LOC = P8; +-- -- FS_PE<9> LOC = P9; +-- -- FS_PE<10> LOC = R7; +-- -- FS_PE<11> LOC = R8; +-- -- FS_PE<12> LOC = T7; +-- -- FS_PE<13> LOC = T8; +-- -- FS_PE<14> LOC = T9; +-- -- FS_PE<15> LOC = M7; +-- -- FS_PE<16> LOC = N6; +-- -- FS_PE<17> LOC = N7; +-- -- GND LOC = L11; + LED_CNT_1 :out std_logic; + LED_CNT_2 :out std_logic; +-- -- LED_CTU_EN :out std_logic; + LED_ERROR :out std_logic; + LED_GOOD :out std_logic +-- -- LED_LVDS_EN :out std_logic + ); +end gp_add_on; +architecture gp_add_on of gp_add_on is + signal diff_in_i : std_logic_vector(7 downto 0); + signal busy : std_logic; +begin -- gp_add_on + LED_CNT_1 <= '0'; + LED_ERROR <= '1'; + LED_GOOD <= '0'; + LED_CNT_2 <= '0'; +------------------------------------------------------------------------------- +-- dtu interface +------------------------------------------------------------------------------- + +-- ------------------------------------------------------------------------------ +-- -- LVL1 +-- ------------------------------------------------------------------------------ +-- ADO_TTL(4) <= B_R; +-- B_RB <= ADO_TTL(0) or A_RB; +-- ADO_TTL(8 downto 5) <= B_RD; +-- B_RE <= ADO_TTL(1); +-- ADO_TTL(9) <= B_RS; +-- ------------------------------------------------------------------------------ +-- -- LVL2 +-- ------------------------------------------------------------------------------ +-- ADO_TTL(10) <= B_T; +-- B_TB <= ADO_TTL(2) or A_TB; +-- ADO_TTL(14 downto 11) <= B_TD; +-- B_TE <= ADO_TTL(3); +-- ADO_TTL(15) <= B_TS; +-- ----------------------------------------------------------------------------- +-- -- Hades bus direction +-- ----------------------------------------------------------------------------- +-- B_TB_B2_DIR <= '1'; +-- B_TB_B1_DIR <= '1'; +-- B_TB_D_DIR <= '0'; +-- B_TB_E2_DIR <= '1'; +-- B_TB_E1_DIR <= '1'; +-- ADO_TTL(3 downto 0) <= (others => 'Z'); +------------------------------------------------------------------------------- +-- to next trb dtu data +------------------------------------------------------------------------------- +-- A_R <= B_R; +-- -- A_RB; --BUSY FROM NEXT TRB +-- A_RD <= B_RD; +-- -- A_RE ;--ERROR FROM NEXT TRB +-- A_RS <= B_RS; +-- ------------------------------------------------------------------------------ +-- -- LVL2 +-- ------------------------------------------------------------------------------ +-- A_T <= B_T; +-- -- A_TB ; --BUSY FROM NEXT TRB +-- A_TD <= B_TD; +-- -- A_TE ; --ERROR FROM NEXT TRB +-- A_TS <= B_TS; +-- ----------------------------------------------------------------------------- +-- -- Hades bus direction +-- ----------------------------------------------------------------------------- +-- A_TB_B2_DIR <= '0'; +-- A_TB_B1_DIR <= '0'; +-- A_TB_D_DIR <= '1'; +-- A_TB_E2_DIR <= '0'; +-- A_TB_E1_DIR <= '0'; + + ---------------------------------------------------------------------------- + -- scalers + ---------------------------------------------------------------------------- +-- ADO_TTL(38 downto 35) <= DIFF_IN(3 downto 0); +-- ADO_TTL(42 downto 39) <= DIFF_IN(7 downto 4); + + +---------------------------------------------------------------------------- +-- vulom interface +-------------------------------------- -------------------------------------- +-- aaa: process (B_TD, B_T) +-- begin -- process aaa +-- if B_T = '1' then +-- busy <= '1' +-- elsif B_TD'event and B_TD = '1' then +-- busy <= B_RS; +-- end if; +-- end process aaa; + +------------------------------------------------------------------------------- +-- Vulom interface +------------------------------------------------------------------------------- + + ADO_TTL(4) <= 'Z'; +-- ADO_TTL(3 downto 0) <= DIFF_IN(0 to 3); + ADO_TTL(1) <= DIFF_IN(0); + ADO_TTL(2) <= DIFF_IN(1); + ADO_TTL(3) <= DIFF_IN(2); +-- ADO_TTL(3) <= DIFF_IN(3); +-- ADO_TTL(15 downto 12) <= DIFF_IN(3 downto 0); + busy <= ADO_TTL(4); + ADO_TTL_OUT <= busy;--ADO_TTL(4); +end gp_add_on;