BLOCK ASYNCPATHS ;
SYSCONFIG MCCLK_FREQ=38.8 CONFIG_IOVOLTAGE=3.3 ;
-BANK 0 VCCIO 2.5 V;
-BANK 1 VCCIO 2.5 V;
-BANK 2 VCCIO 2.5 V;
-BANK 3 VCCIO 2.5 V;
-BANK 6 VCCIO 3.3 V;
-BANK 7 VCCIO 3.3 V;
-BANK 8 VCCIO 3.3 V;
+BANK 0 VCCIO 2.5 V ;
+BANK 1 VCCIO 2.5 V ;
+BANK 2 VCCIO 2.5 V ;
+BANK 3 VCCIO 2.5 V ;
+BANK 6 VCCIO 3.3 V ;
+BANK 7 VCCIO 3.3 V ;
+BANK 8 VCCIO 3.3 V ;
#################################################################
# Clock I/O
#################################################################
-LOCATE COMP "CLK_125" SITE "A4" ;
-IOBUF PORT "CLK_125" IO_TYPE="LVDS" DIFFRESISTOR="100";
-LOCATE COMP "CLK_200" SITE "C18" ;
-IOBUF PORT "CLK_200" IO_TYPE="LVDS" DIFFRESISTOR="100";
+LOCATE COMP "CLK_125" SITE "A4" ;
+IOBUF PORT "CLK_125" IO_TYPE="LVDS" DIFFRESISTOR="100" ;
+LOCATE COMP "CLK_200" SITE "C18" ;
+IOBUF PORT "CLK_200" IO_TYPE="LVDS" DIFFRESISTOR="100" ;
#################################################################
# SFP
#################################################################
LOCATE COMP "SFP_TX_DIS" SITE "N3";
-IOBUF PORT "SFP_TX_DIS" IO_TYPE=LVTTL33 PULLMODE=NONE ;
+IOBUF PORT "SFP_TX_DIS" IO_TYPE=LVCMOS33 PULLMODE=NONE ;
LOCATE COMP "SFP_LOS" SITE "N2";
-IOBUF PORT "SFP_LOS" IO_TYPE=LVTTL33 PULLMODE=NONE ;
+IOBUF PORT "SFP_LOS" IO_TYPE=LVCMOS33 PULLMODE=NONE ;
LOCATE COMP "SFP_MOD_0" SITE "P1";
-IOBUF PORT "SFP_MOD_0" IO_TYPE=LVTTL33 PULLMODE=NONE ;
-LOCATE COMP "SFP_RATE_SEL" SITE "N1";
-IOBUF PORT "SFP_RATE_SEL" IO_TYPE=LVTTL33 PULLMODE=NONE ;
-LOCATE COMP "SFP_TX_FAULT" SITE "P2";
-IOBUF PORT "SFP_TX_FAULT" IO_TYPE=LVTTL33 PULLMODE=NONE ;
+IOBUF PORT "SFP_MOD_0" IO_TYPE=LVCMOS33 PULLMODE=NONE ;
+LOCATE COMP "SFP_RATESEL" SITE "N1";
+IOBUF PORT "SFP_RATESEL" IO_TYPE=LVCMOS33 PULLMODE=NONE ;
+LOCATE COMP "SFP_TX_FAULT" SITE "P3";
+IOBUF PORT "SFP_TX_FAULT" IO_TYPE=LVCMOS33 PULLMODE=NONE ;
LOCATE COMP "SFP_MOD_1" SITE "M1";
-IOBUF PORT "SFP_MOD_1" IO_TYPE=LVTTL33 PULLMODE=NONE ;
-LOCATE COMP "SFP_MOD_2" SITE "P3";
-IOBUF PORT "SFP_MOD_2" IO_TYPE=LVTTL33 PULLMODE=NONE ;
+IOBUF PORT "SFP_MOD_1" IO_TYPE=LVCMOS33 PULLMODE=NONE ;
+LOCATE COMP "SFP_MOD_2" SITE "P2";
+IOBUF PORT "SFP_MOD_2" IO_TYPE=LVCMOS33 PULLMODE=NONE ;
+
+LOCATE COMP "LED_SFP_YELLOW" SITE "K3";
+IOBUF PORT "LED_SFP_YELLOW" IO_TYPE=LVCMOS33 DRIVE="8" ;
+LOCATE COMP "LED_SFP_GREEN" SITE "L3";
+IOBUF PORT "LED_SFP_GREEN" IO_TYPE=LVCMOS33 DRIVE="8" ;
+LOCATE COMP "LED_SFP_RED" SITE "J3";
+IOBUF PORT "LED_SFP_RED" IO_TYPE=LVCMOS33 DRIVE="8" ;
#################################################################
# Temperature, Flash & ID
#################################################################
-LOCATE COMP "I2C_SDA" SITE "L2" ;
-IOBUF PORT "I2C_SDA" IO_TYPE=LVCMOS33 ;
-LOCATE COMP "I2C_SCL" SITE "L1" ;
-IOBUF PORT "I2C_SCL" IO_TYPE=LVCMOS33 ;
+LOCATE COMP "I2C_SDA" SITE "L2" ;
+IOBUF PORT "I2C_SDA" IO_TYPE=LVCMOS33 ;
+LOCATE COMP "I2C_SCL" SITE "L1" ;
+IOBUF PORT "I2C_SCL" IO_TYPE=LVCMOS33 ;
-LOCATE COMP "PROGRAMN" SITE "V1";
-IOBUF PORT "PROGRAMN" IO_TYPE=LVTTL33 PULLMODE=UP DRIVE=8 ;
+LOCATE COMP "PROGRAMN" SITE "V1";
+IOBUF PORT "PROGRAMN" IO_TYPE=LVCMOS33 PULLMODE=UP DRIVE="8" ;
-LOCATE COMP "FLASH_HOLD" SITE "W1" ;
-IOBUF PORT "FLASH_HOLD" IO_TYPE=LVTTL33 PULLMODE=NONE ;
-LOCATE COMP "FLASH_MISO" SITE "V2" ;
-IOBUF PORT "FLASH_MISO" IO_TYPE=LVTTL33 PULLMODE=NONE ;
-LOCATE COMP "FLASH_MOSI" SITE "W2" ;
-IOBUF PORT "FLASH_MOSI" IO_TYPE=LVTTL33 PULLMODE=NONE ;
-LOCATE COMP "FLASH_NCS" SITE "R2" ;
-IOBUF PORT "FLASH_NCS" IO_TYPE=LVTTL33 PULLMODE=NONE ;
-LOCATE COMP "FLASH_SCLK" SITE "U2" ;
-IOBUF PORT "FLASH_SCLK" IO_TYPE=LVTTL33 PULLMODE=NONE ;
-LOCATE COMP "FLASH_WP" SITE "Y2" ;
-IOBUF PORT "FLASH_WP" IO_TYPE=LVTTL33 PULLMODE=NONE ;
-LOCATE COMP "FLASH_SELECT" SITE "T3" ;
-IOBUF PORT "FLASH_SELECT" IO_TYPE=LVTTL33 PULLMODE=NONE ;
-LOCATE COMP "FLASH_OVERRIDE" SITE "U1" ;
-IOBUF PORT "FLASH_OVERRIDE" IO_TYPE=LVTTL33 PULLMODE=NONE ;
+LOCATE COMP "FLASH_HOLD" SITE "W1" ;
+IOBUF PORT "FLASH_HOLD" IO_TYPE=LVCMOS33 PULLMODE=NONE ;
+LOCATE COMP "FLASH_MISO" SITE "V2" ;
+IOBUF PORT "FLASH_MISO" IO_TYPE=LVCMOS33 PULLMODE=NONE ;
+LOCATE COMP "FLASH_MOSI" SITE "W2" ;
+IOBUF PORT "FLASH_MOSI" IO_TYPE=LVCMOS33 PULLMODE=NONE ;
+LOCATE COMP "FLASH_NCS" SITE "R2" ;
+IOBUF PORT "FLASH_NCS" IO_TYPE=LVCMOS33 PULLMODE=NONE ;
+LOCATE COMP "FLASH_SCLK" SITE "U2" ;
+IOBUF PORT "FLASH_SCLK" IO_TYPE=LVCMOS33 PULLMODE=NONE ;
+LOCATE COMP "FLASH_WP" SITE "Y2" ;
+IOBUF PORT "FLASH_WP" IO_TYPE=LVCMOS33 PULLMODE=NONE ;
+LOCATE COMP "FLASH_SELECT" SITE "T3" ;
+IOBUF PORT "FLASH_SELECT" IO_TYPE=LVCMOS33 PULLMODE=NONE ;
+LOCATE COMP "FLASH_OVERRIDE" SITE "U1" ;
+IOBUF PORT "FLASH_OVERRIDE" IO_TYPE=LVCMOS33 PULLMODE=NONE ;
#################################################################
# GPIO
#################################################################
LOCATE COMP "GPIO_15" SITE "A3" ;
-IOBUF PORT "GPIO_15" IO_TYPE=LVTTL33 PULLMODE=NONE ;
+IOBUF PORT "GPIO_15" IO_TYPE=LVCMOS33 PULLMODE=NONE ;
LOCATE COMP "GPIO_14" SITE "B3" ;
-IOBUF PORT "GPIO_14" IO_TYPE=LVTTL33 PULLMODE=NONE ;
+IOBUF PORT "GPIO_14" IO_TYPE=LVCMOS33 PULLMODE=NONE ;
LOCATE COMP "GPIO_13" SITE "A2" ;
-IOBUF PORT "GPIO_13" IO_TYPE=LVTTL33 PULLMODE=NONE ;
+IOBUF PORT "GPIO_13" IO_TYPE=LVCMOS33 PULLMODE=NONE ;
LOCATE COMP "GPIO_12" SITE "B2" ;
-IOBUF PORT "GPIO_12" IO_TYPE=LVTTL33 PULLMODE=NONE ;
+IOBUF PORT "GPIO_12" IO_TYPE=LVCMOS33 PULLMODE=NONE ;
LOCATE COMP "GPIO_11" SITE "B1" ;
-IOBUF PORT "GPIO_11" IO_TYPE=LVTTL33 PULLMODE=NONE ;
+IOBUF PORT "GPIO_11" IO_TYPE=LVCMOS33 PULLMODE=NONE ;
LOCATE COMP "GPIO_10" SITE "C2" ;
-IOBUF PORT "GPIO_10" IO_TYPE=LVTTL33 PULLMODE=NONE ;
+IOBUF PORT "GPIO_10" IO_TYPE=LVCMOS33 PULLMODE=NONE ;
LOCATE COMP "GPIO_9" SITE "C1" ;
-IOBUF PORT "GPIO_9" IO_TYPE=LVTTL33 PULLMODE=NONE ;
+IOBUF PORT "GPIO_9" IO_TYPE=LVCMOS33 PULLMODE=NONE ;
LOCATE COMP "GPIO_8" SITE "D2" ;
-IOBUF PORT "GPIO_8" IO_TYPE=LVTTL33 PULLMODE=NONE ;
+IOBUF PORT "GPIO_8" IO_TYPE=LVCMOS33 PULLMODE=NONE ;
LOCATE COMP "GPIO_7" SITE "D1" ;
-IOBUF PORT "GPIO_7" IO_TYPE=LVTTL33 PULLMODE=NONE ;
+IOBUF PORT "GPIO_7" IO_TYPE=LVCMOS33 PULLMODE=NONE ;
LOCATE COMP "GPIO_6" SITE "E2" ;
-IOBUF PORT "GPIO_6" IO_TYPE=LVTTL33 PULLMODE=NONE ;
+IOBUF PORT "GPIO_6" IO_TYPE=LVCMOS33 PULLMODE=NONE ;
LOCATE COMP "GPIO_5" SITE "E1" ;
-IOBUF PORT "GPIO_5" IO_TYPE=LVTTL33 PULLMODE=NONE ;
+IOBUF PORT "GPIO_5" IO_TYPE=LVCMOS33 PULLMODE=NONE ;
LOCATE COMP "GPIO_4" SITE "F2" ;
-IOBUF PORT "GPIO_4" IO_TYPE=LVTTL33 PULLMODE=NONE ;
+IOBUF PORT "GPIO_4" IO_TYPE=LVCMOS33 PULLMODE=NONE ;
LOCATE COMP "GPIO_3" SITE "F1" ;
-IOBUF PORT "GPIO_3" IO_TYPE=LVTTL33 PULLMODE=NONE ;
+IOBUF PORT "GPIO_3" IO_TYPE=LVCMOS33 PULLMODE=NONE ;
LOCATE COMP "GPIO_2" SITE "G2" ;
-IOBUF PORT "GPIO_2" IO_TYPE=LVTTL33 PULLMODE=NONE ;
+IOBUF PORT "GPIO_2" IO_TYPE=LVCMOS33 PULLMODE=NONE ;
LOCATE COMP "GPIO_1" SITE "G1" ;
-IOBUF PORT "GPIO_1" IO_TYPE=LVTTL33 PULLMODE=NONE ;
+IOBUF PORT "GPIO_1" IO_TYPE=LVCMOS33 PULLMODE=NONE ;
LOCATE COMP "GPIO_0" SITE "J4" ;
-IOBUF PORT "GPIO_0" IO_TYPE=LVTTL33 PULLMODE=NONE ;
+IOBUF PORT "GPIO_0" IO_TYPE=LVCMOS33 PULLMODE=NONE ;
LOCATE COMP "TIMING_TEST" SITE "H1" ;
-IOBUF PORT "TIMING_TEST" IO_TYPE=LVTTL33 PULLMODE=NONE ;
+IOBUF PORT "TIMING_TEST" IO_TYPE=LVCMOS33 PULLMODE=NONE ;
#################################################################
# LVDS interface
#################################################################
LOCATE COMP "INTCOM_9" SITE "D18" ;
-IOBUF PORT "INTCOM_9" IO_TYPE=LVDS DIFFRESISTOR=100;
+IOBUF PORT "INTCOM_9" IO_TYPE=LVDS ; # DIFFRESISTOR="100" ;
LOCATE COMP "INTCOM_8" SITE "F17" ;
-IOBUF PORT "INTCOM_8" IO_TYPE=LVDS DIFFRESISTOR=100;
+IOBUF PORT "INTCOM_8" IO_TYPE=LVDS ; # DIFFRESISTOR="100" ;
LOCATE COMP "INTCOM_7" SITE "H18" ;
-IOBUF PORT "INTCOM_7" IO_TYPE=LVDS DIFFRESISTOR=100;
+IOBUF PORT "INTCOM_7" IO_TYPE=LVDS ; # DIFFRESISTOR="100" ;
LOCATE COMP "INTCOM_6" SITE "K16" ;
-IOBUF PORT "INTCOM_6" IO_TYPE=LVDS DIFFRESISTOR=100;
+IOBUF PORT "INTCOM_6" IO_TYPE=LVDS ; # DIFFRESISTOR="100" ;
LOCATE COMP "INTCOM_5" SITE "N19" ;
-IOBUF PORT "INTCOM_5" IO_TYPE=LVDS DIFFRESISTOR=100;
+IOBUF PORT "INTCOM_5" IO_TYPE=LVDS ; # DIFFRESISTOR="100" ;
LOCATE COMP "INTCOM_4" SITE "C20" ;
-IOBUF PORT "INTCOM_4" IO_TYPE=LVDS DIFFRESISTOR=100;
+IOBUF PORT "INTCOM_4" IO_TYPE=LVDS ; # DIFFRESISTOR="100" ;
LOCATE COMP "INTCOM_3" SITE "E20" ;
-IOBUF PORT "INTCOM_3" IO_TYPE=LVDS DIFFRESISTOR=100;
+IOBUF PORT "INTCOM_3" IO_TYPE=LVDS ; # DIFFRESISTOR="100" ;
LOCATE COMP "INTCOM_2" SITE "G19" ;
-IOBUF PORT "INTCOM_2" IO_TYPE=LVDS DIFFRESISTOR=100;
+IOBUF PORT "INTCOM_2" IO_TYPE=LVDS ; # DIFFRESISTOR="100" ;
LOCATE COMP "INTCOM_1" SITE "J19" ;
-IOBUF PORT "INTCOM_1" IO_TYPE=LVDS DIFFRESISTOR=100;
+IOBUF PORT "INTCOM_1" IO_TYPE=LVDS ; # DIFFRESISTOR="100" ;
LOCATE COMP "INTCOM_0" SITE "L20" ;
-IOBUF PORT "INTCOM_0" IO_TYPE=LVDS DIFFRESISTOR=100;
+IOBUF PORT "INTCOM_0" IO_TYPE=LVDS ; # DIFFRESISTOR="100" ;
#################################################################
# LED
#################################################################
-LOCATE COMP "LED_SFP_YELLOW" SITE "L3";
-IOBUF PORT "LED_SFP_YELLOW" IO_TYPE=LVTTL33 ;
-LOCATE COMP "LED_SFP_GREEN" SITE "J3";
-IOBUF PORT "LED_SFP_GRENN" IO_TYPE=LVTTL33 ;
-LOCATE COMP "LED_SFP_RED" SITE "K3";
-IOBUF PORT "LED_SFP_RED" IO_TYPE=LVTTL33 ;
-
-LOCATE COMP "LED_0" SITE "K1";
-IOBUF PORT "LED_0" IO_TYPE=LVCMOS33 DRIVE=8;
-LOCATE COMP "LED_1" SITE "K2";
-IOBUF PORT "LED_1" IO_TYPE=LVCMOS33 DRIVE=8;
-LOCATE COMP "LED_2" SITE "J1";
-IOBUF PORT "LED_2" IO_TYPE=LVCMOS33 DRIVE=8;
-LOCATE COMP "LED_3" SITE "H2";
-IOBUF PORT "LED_3" IO_TYPE=LVCMOS33 DRIVE=8;
+LOCATE COMP "LED_0" SITE "K1";
+IOBUF PORT "LED_0" IO_TYPE=LVCMOS33 DRIVE="8" ;
+LOCATE COMP "LED_1" SITE "K2";
+IOBUF PORT "LED_1" IO_TYPE=LVCMOS33 DRIVE="8" ;
+LOCATE COMP "LED_2" SITE "J1";
+IOBUF PORT "LED_2" IO_TYPE=LVCMOS33 DRIVE="8" ;
+LOCATE COMP "LED_3" SITE "H2";
+IOBUF PORT "LED_3" IO_TYPE=LVCMOS33 DRIVE="8" ;
#################################################################
#################################################################
LED_SFP_RED : out std_logic;
-- LVDS intercom
INTCOM : inout std_logic_vector(9 downto 0);
+ -- timing measurements
+ TIMING_TEST : out std_logic;
-- GPIO
GPIO : out std_logic_vector(15 downto 0)
);
end entity;
architecture arch of tomcat_template is
- attribute syn_keep : boolean;
- attribute syn_preserve : boolean;
+ attribute syn_keep : boolean;
+ attribute syn_preserve : boolean;
signal clk_sys : std_logic;
signal clk_full : std_logic;
signal med2int : med2int_array_t(0 to 0);
signal int2med : int2med_array_t(0 to 0);
signal med_stat_debug : std_logic_vector (1*64-1 downto 0);
- signal sfp_los_i : std_logic;
- signal sfp_txdis_i : std_logic;
- signal sfp_prsnt_i : std_logic;
signal readout_rx : READOUT_RX;
signal readout_tx : readout_tx_array_t(0 to 0);
signal timer : TIMERS;
signal led_off : std_logic;
- attribute syn_keep of GSR_N : signal is true;
- attribute syn_preserve of GSR_N : signal is true;
+ signal link_stat_in_reg : std_logic;
+
+ attribute syn_keep of GSR_N : signal is true;
+ attribute syn_preserve of GSR_N : signal is true;
+
+ signal testctr : unsigned(31 downto 0);
- signal link_stat_in_reg : std_logic;
+begin
+-------------------------------------------------------------------------------
+-------------------------------------------------------------------------------
+THE_TESTCTR_PROC: process( clk_cal )
begin
+ if( rising_edge(clk_cal) ) then
+ testctr <= testctr + 1;
+ end if;
+end process THE_TESTCTR_PROC;
-trigger_in_i <= INTCOM(0); -- BUG: we need a "timing trigger"
+-------------------------------------------------------------------------------
+-------------------------------------------------------------------------------
+trigger_in_i <= INTCOM(0); -- BUG: we need a "timing trigger"
+-- at least 100ns!
+
+INTCOM(9 downto 1) <= std_logic_vector(testctr(8 downto 0));
+
+TIMING_TEST <= std_logic(testctr(31));
-------------------------------------------------------------------------------
-- Clock & Reset Handling
TX_DLM => open,
TX_DLM_WORD => open,
--SFP Connection
- SD_PRSNT_N_IN => sfp_prsnt_i,
- SD_LOS_IN => sfp_los_i,
- SD_TXDIS_OUT => sfp_txdis_i,
+ SD_PRSNT_N_IN => SFP_MOD_0,
+ SD_LOS_IN => SFP_LOS,
+ SD_TXDIS_OUT => SFP_TX_DIS,
--Control Interface
BUS_RX => bussci_rx,
BUS_TX => bussci_tx,
STAT_DEBUG => med_stat_debug(63 downto 0),
CTRL_DEBUG => open
);
-
- sfp_los_i <= SFP_LOS;
- sfp_prsnt_i <= SFP_MOD_0;
- SFP_TX_DIS <= sfp_txdis_i;
-------------------------------------------------------------------------------
-- Endpoint
FLASH_HOLD <= '1';
FLASH_WP <= '1';
- FLASH_OVERRIDE <= 'Z';
+ FLASH_OVERRIDE <= '1'; -- do nothing
-------------------------------------------------------------------------------
-- I/O
-------------------------------------------------------------------------------
+ GPIO <= std_logic_vector(testctr(15 downto 0));
-------------------------------------------------------------------------------
-- LED
-------------------------------------------------------------------------------
- LED_SFP_GREEN <= not med2int(0).stat_op(9) or led_off;
- LED_SFP_RED <= not (med2int(0).stat_op(10) or med2int(0).stat_op(11)) or led_off;
- LED_SFP_YELLOW <= not med2int(0).stat_op(8) or led_off;
- LED <= (others => '0');
+ LED_SFP_GREEN <= not med2int(0).stat_op(9) or led_off;
+ LED_SFP_RED <= not (med2int(0).stat_op(10) or med2int(0).stat_op(11)) or led_off;
+ LED_SFP_YELLOW <= not med2int(0).stat_op(8) or led_off;
+ LED(3) <= not std_logic(testctr(27));
+ LED(2) <= not std_logic(testctr(26));
+ LED(1) <= not std_logic(testctr(25));
+ LED(0) <= not std_logic(testctr(24));
-------------------------------------------------------------------------------
-- No trigger/data endpoint included