]> jspc29.x-matter.uni-frankfurt.de Git - trb3sc.git/commitdiff
equip CTS with additional simple trigger logic entity and add plattform setting for...
authorJan Michel <j.michel@gsi.de>
Wed, 16 Jan 2019 15:21:31 +0000 (16:21 +0100)
committerJan Michel <j.michel@gsi.de>
Wed, 16 Jan 2019 15:21:31 +0000 (16:21 +0100)
cts/config.vhd
cts/config_compile_frankfurt.pl
cts/trb3sc_cts.vhd
pinout/trb3sc_hub.lpf

index 2ffda1885afb94f44636cd054158b71147ee0e56..5aafa197347eeb65737c0d4553d65d5e1a8dad13 100644 (file)
@@ -36,12 +36,12 @@ package config is
     constant INCLUDE_DEBUG_INTERFACE: integer  := c_YES;
 
     --input monitor and trigger generation logic
-    constant INCLUDE_TDC            : integer  := c_YES;
-    constant INCLUDE_TRIGGER_LOGIC  : integer  := c_NO;
+    constant INCLUDE_TDC            : integer  := c_NO;
+    constant INCLUDE_TRIGGER_LOGIC  : integer  := c_YES;
     constant INCLUDE_STATISTICS     : integer  := c_YES;
-    constant TRIG_GEN_INPUT_NUM     : integer  := 0;
-    constant TRIG_GEN_OUTPUT_NUM    : integer  := 0;
-    constant MONITOR_INPUT_NUM      : integer  := 32;    
+    constant TRIG_GEN_INPUT_NUM     : integer  := 40;
+    constant TRIG_GEN_OUTPUT_NUM    : integer  := 2;
+    constant MONITOR_INPUT_NUM      : integer  := 40;    
 
     
     constant FPGA_TYPE               : integer  := 3;  --3: ECP3, 5: ECP5
@@ -68,9 +68,9 @@ package config is
     constant TRIGGER_COIN_COUNT      : integer := 1;
     constant TRIGGER_PULSER_COUNT    : integer := 3;
     constant TRIGGER_RAND_PULSER     : integer := 1;
-    constant TRIGGER_ADDON_COUNT     : integer := 2;
+    constant TRIGGER_ADDON_COUNT     : integer := 4;
     constant PERIPH_TRIGGER_COUNT    : integer := 0;      
-    constant ADDON_LINE_COUNT        : integer := 18;    
+    constant ADDON_LINE_COUNT        : integer := 44;    
     constant CTS_OUTPUT_MULTIPLEXERS : integer := 1;
 --TODO:    
 --     constant INCLUDE_MBS_MASTER : integer range c_NO to c_YES := c_NO; 
index 01ea7d890b7b8208519c2d7829770869832e9967..51d3ae2e01a52fe0502e805989d6b3a65da9919b 100644 (file)
@@ -1,8 +1,8 @@
 TOPNAME                      => "trb3sc_cts",
 lm_license_file_for_synplify => "27020\@jspc29", #"27000\@lxcad01.gsi.de";
 lm_license_file_for_par      => "1702\@hadeb05.gsi.de",
-lattice_path                 => '/d/jspc29/lattice/diamond/3.9_x64',
-synplify_path                => '/d/jspc29/lattice/synplify/K-2015.09/',
+lattice_path                 => '/d/jspc29/lattice/diamond/3.10_x64',
+synplify_path                => '/d/jspc29/lattice/synplify/O-2018.09-SP1',
 #synplify_command             => "/d/jspc29/lattice/diamond/3.5_x64/bin/lin64/synpwrap -fg -options",
 #synplify_command             => "/d/jspc29/lattice/synplify/J-2014.09-SP2/bin/synplify_premier_dp",
 
index 1e60ddb9c49d4ee6d02a0e2c53acb6437be24c86..5268205456b7d9d4ccffcc3849f142b7562e4af2 100644 (file)
@@ -25,8 +25,8 @@ entity trb3sc_cts is
     BACK_LVDS            : inout std_logic_vector( 1 downto 0);
     BACK_GPIO            : inout std_logic_vector( 3 downto 0);
     
-    SPARE_IN             : in    std_logic_vector( 1 downto 0);
-    INP                  : in    std_logic_vector(95 downto 64); 
+    SPARE_IN             : in    std_logic_vector( 1 downto  0);
+    KEL                  : in    std_logic_vector(40 downto  1); 
     RJ_IO                : out   std_logic_vector( 3 downto  0); --0, inner RJ trigger output
     
     --LED
@@ -96,7 +96,7 @@ entity trb3sc_cts is
   attribute syn_useioff of FLASH_OUT  : signal is true;
 
   attribute syn_useioff of SPARE_IN  : signal is false;
-  attribute syn_useioff of INP       : signal is false;
+  attribute syn_useioff of KEL       : signal is false;
   
 end entity;
 
@@ -152,7 +152,8 @@ architecture trb3sc_arch of trb3sc_cts is
   signal med_ctrl_op          : std_logic_vector (5*16-1 downto 0);
   signal rdack, wrack         : std_logic;
   
-  signal monitor_inputs_i : std_logic_vector(MONITOR_INPUT_NUM-1 downto 0);
+  signal monitor_inputs_i     : std_logic_vector(MONITOR_INPUT_NUM-1 downto 0);
+  signal trigger_gen_outputs_i: std_logic_vector(TRIG_GEN_OUTPUT_NUM-1 downto 0);
   signal trigger_busy_i              : std_logic;
   signal cts_trigger_out             : std_logic;
   
@@ -656,9 +657,10 @@ end generate;
     THE_CTS : CTS
       generic map (
         EXTERNAL_TRIGGER_ID => ETM_ID,  -- fill in trigger logic enumeration id of external trigger logic
+        PLATTFORM => 1, --TRB3sc+KEL+RJ45
         OUTPUT_MULTIPLEXERS => CTS_OUTPUT_MULTIPLEXERS,
-        ADDON_GROUPS      => 2,
-        ADDON_GROUP_UPPER => (1,17, others => 0)
+        ADDON_GROUPS      => 3,
+        ADDON_GROUP_UPPER => (2,40,2, others => 0)
         )
       port map (
         CLK   => clk_sys,
@@ -718,7 +720,8 @@ end generate;
         );   
 
   cts_addon_triggers_in(1 downto 0)  <= SPARE_IN(1 downto 0);
-  cts_addon_triggers_in(17 downto 2) <= INP(79 downto 64);
+  cts_addon_triggers_in(41 downto 2) <= KEL(40 downto 1);
+  cts_addon_triggers_in(43 downto 42) <= trigger_gen_outputs_i;
   buscts_tx.nack <= '0';
   buscts_tx.ack  <= '0';
 
@@ -731,8 +734,8 @@ end generate;
         CLK               => clk_sys,
         RESET_IN          => reset_i,
         
-        TIMER_CLOCK_IN    => INP(80), 
-        TIMER_RESET_IN    => INP(81),
+        TIMER_CLOCK_IN    => KEL(20), 
+        TIMER_RESET_IN    => KEL(21),
 
         TRIGGER_IN         => cts_trigger_out,
         BUSRDO_RX          => cts_rdo_rx,
@@ -753,7 +756,7 @@ end generate;
         CLK      => clk_sys,
         RESET_IN => reset_i,
 
-        MBS_IN  => INP(80),
+        MBS_IN  => KEL(20),
         CLK_200 => clk_full,
 
         TRG_ASYNC_OUT => mbs_async_out, --TODO MBS async connect to TDC
@@ -849,8 +852,8 @@ end generate;
       ADC_CLK     => ADC_CLK,
       --Trigger & Monitor 
       MONITOR_INPUTS => monitor_inputs_i,
-      TRIG_GEN_INPUTS  => open,
-      TRIG_GEN_OUTPUTS => open,      
+      TRIG_GEN_INPUTS  => monitor_inputs_i,
+      TRIG_GEN_OUTPUTS => trigger_gen_outputs_i,      
       --SED
       SED_ERROR_OUT => sed_error_i,
       --Slowcontrol
@@ -863,7 +866,7 @@ end generate;
       DEBUG_OUT  => open
       );      
 
-monitor_inputs_i <= INP;
+monitor_inputs_i <= KEL;
       
 gen_reboot_no_gbe : if INCLUDE_GBE = c_NO generate
   do_reboot_i <= common_ctrl_reg(15);
@@ -884,12 +887,12 @@ end generate;
 ---------------------------------------------------------------------------
 -- I/O
 ---------------------------------------------------------------------------
-  spi_miso(5 downto 4) <= DAC_IN_SDI(6 downto 5);
-  DAC_OUT_SCK(6 downto 5) <= spi_clk(5 downto 4);
-  DAC_OUT_CS(6 downto 5)  <= spi_cs(5 downto 4);
-  DAC_OUT_SDO(6 downto 5) <= spi_mosi(5 downto 4);
-  spi_miso(3 downto 0)    <= (others => '0');
-  spi_miso(15 downto 7)   <= (others => '0');
+--   spi_miso(5 downto 4) <= DAC_IN_SDI(6 downto 5);
+--   DAC_OUT_SCK(6 downto 5) <= spi_clk(5 downto 4);
+--   DAC_OUT_CS(6 downto 5)  <= spi_cs(5 downto 4);
+--   DAC_OUT_SDO(6 downto 5) <= spi_mosi(5 downto 4);
+--   spi_miso(3 downto 0)    <= (others => '0');
+--   spi_miso(15 downto 7)   <= (others => '0');
   
   RJ_IO(0)                           <= cts_trigger_out;
 
@@ -937,43 +940,42 @@ end generate;
 -------------------------------------------------------------------------------
 -- TDC
 -------------------------------------------------------------------------------
-  THE_TDC : entity work.TDC_record
-    generic map (
-      CHANNEL_NUMBER => NUM_TDC_CHANNELS,  -- Number of TDC channels per module
-      STATUS_REG_NR  => 21,             -- Number of status regs
-      DEBUG          => c_YES,
-      SIMULATION     => c_NO)
-    port map (
-      RESET              => reset_i,
-      CLK_TDC            => clk_full_osc,
-      CLK_READOUT        => clk_sys,    -- Clock for the readout
-      REFERENCE_TIME     => cts_trigger_out,  -- Reference time input
-      HIT_IN             => hit_in_i(NUM_TDC_CHANNELS-1 downto 1),  -- Channel start signals
-      HIT_CAL_IN         => clk_cal,    -- Hits for calibrating the TDC
-      -- Trigger signals from handler
-      BUSRDO_RX          => cts_rdo_rx,
-      BUSRDO_TX          => cts_rdo_additional(INCLUDE_TIMESTAMP_GENERATOR + INCLUDE_ETM),
-      -- Slow control bus
-      BUS_RX             => bustdc_rx,
-      BUS_TX             => bustdc_tx,
-      -- Dubug signals
-      INFO_IN            => timer,
-      LOGIC_ANALYSER_OUT => open
-      );
-
-  -- For single edge measurements
-  gen_single : if DOUBLE_EDGE_TYPE = 0 or DOUBLE_EDGE_TYPE = 1 or DOUBLE_EDGE_TYPE = 3 generate
-    hit_in_i(NUM_TDC_CHANNELS-1 downto 1) <= INP(NUM_TDC_CHANNELS-2+64 downto 64);
-  end generate;
-
-  -- For ToT Measurements
-  gen_double : if DOUBLE_EDGE_TYPE = 2 generate
-    Gen_Hit_In_Signals : for i in 0 to NUM_TDC_CHANNELS-2 generate
-      hit_in_i(i*2+1)   <= INP(i+64);
-      hit_in_i(i*2+2)   <= not INP(i+64);
-    end generate Gen_Hit_In_Signals;
-  end generate;
-  
+--   THE_TDC : entity work.TDC_record
+--     generic map (
+--       CHANNEL_NUMBER => NUM_TDC_CHANNELS,  -- Number of TDC channels per module
+--       STATUS_REG_NR  => 21,             -- Number of status regs
+--       DEBUG          => c_YES,
+--       SIMULATION     => c_NO)
+--     port map (
+--       RESET              => reset_i,
+--       CLK_TDC            => clk_full_osc,
+--       CLK_READOUT        => clk_sys,    -- Clock for the readout
+--       REFERENCE_TIME     => cts_trigger_out,  -- Reference time input
+--       HIT_IN             => hit_in_i(NUM_TDC_CHANNELS-1 downto 1),  -- Channel start signals
+--       HIT_CAL_IN         => clk_cal,    -- Hits for calibrating the TDC
+--       -- Trigger signals from handler
+--       BUSRDO_RX          => cts_rdo_rx,
+--       BUSRDO_TX          => cts_rdo_additional(INCLUDE_TIMESTAMP_GENERATOR + INCLUDE_ETM),
+--       -- Slow control bus
+--       BUS_RX             => bustdc_rx,
+--       BUS_TX             => bustdc_tx,
+--       -- Dubug signals
+--       INFO_IN            => timer,
+--       LOGIC_ANALYSER_OUT => open
+--       );
+-- 
+--   -- For single edge measurements
+--   gen_single : if DOUBLE_EDGE_TYPE = 0 or DOUBLE_EDGE_TYPE = 1 or DOUBLE_EDGE_TYPE = 3 generate
+--     hit_in_i(NUM_TDC_CHANNELS-1 downto 1) <= INP(NUM_TDC_CHANNELS-2+64 downto 64);
+--   end generate;
+-- 
+--   -- For ToT Measurements
+--   gen_double : if DOUBLE_EDGE_TYPE = 2 generate
+--     Gen_Hit_In_Signals : for i in 0 to NUM_TDC_CHANNELS-2 generate
+--       hit_in_i(i*2+1)   <= INP(i+64);
+--       hit_in_i(i*2+2)   <= not INP(i+64);
+--     end generate Gen_Hit_In_Signals;
+--   end generate;
   
 end architecture;
 
index 587933a1d17f97accb7d91d1274f759e9e6e3b12..c6c95fabbff651f43041e72904feb1c8b16435a8 100644 (file)
@@ -109,58 +109,99 @@ IOBUF GROUP "LED_HUB_group" IO_TYPE=LVCMOS25 PULLMODE=UP;
 #################################################################\r
 # Pin-header IO\r
 #################################################################\r
-#on KEL1\r
-LOCATE COMP  "INP_64"   SITE "AP5";\r
-LOCATE COMP  "INP_65"   SITE "AP2";\r
-LOCATE COMP  "INP_66"   SITE "AN1";\r
-LOCATE COMP  "INP_67"   SITE "AN3";\r
-LOCATE COMP  "INP_68"   SITE "AL5";\r
-LOCATE COMP  "INP_69"   SITE "AM6";\r
-LOCATE COMP  "INP_70"   SITE "AL4";\r
-LOCATE COMP  "INP_71"   SITE "AJ5";\r
-LOCATE COMP  "INP_72"   SITE "AJ2";\r
-LOCATE COMP  "INP_73"   SITE "AL3";\r
-LOCATE COMP  "INP_74"   SITE "AD9";\r
-LOCATE COMP  "INP_75"   SITE "AJ4";\r
-LOCATE COMP  "INP_76"   SITE "V4";\r
-LOCATE COMP  "INP_77"   SITE "V5";     \r
-LOCATE COMP  "INP_78"   SITE "T9";\r
-LOCATE COMP  "INP_79"   SITE "T2";\r
- #on KEL2\r
-LOCATE COMP  "INP_80"   SITE "AP29";\r
-LOCATE COMP  "INP_81"   SITE "AP33";\r
-LOCATE COMP  "INP_82"   SITE "AN34";\r
-LOCATE COMP  "INP_83"   SITE "AP31";\r
-LOCATE COMP  "INP_84"   SITE "AN32";\r
-LOCATE COMP  "INP_85"   SITE "AM29";\r
-LOCATE COMP  "INP_86"   SITE "AL31";\r
-LOCATE COMP  "INP_87"   SITE "AL30";   \r
-LOCATE COMP  "INP_88"   SITE "AL34";\r
-LOCATE COMP  "INP_89"   SITE "AJ31";\r
-LOCATE COMP  "INP_90"   SITE "AH33";\r
-LOCATE COMP  "INP_91"   SITE "AL32";\r
-LOCATE COMP  "INP_92"   SITE "AF32";\r
-LOCATE COMP  "INP_93"   SITE "AE32";\r
-LOCATE COMP  "INP_94"   SITE "AE30";\r
-LOCATE COMP  "INP_95"   SITE "AD26";\r
-DEFINE PORT GROUP "INP_group" "INP*" ;\r
-IOBUF GROUP "INP_group" IO_TYPE=LVDS25 DIFFRESISTOR=100;\r
-\r
-LOCATE COMP  "DAC_IN_SDI_5"  SITE "P7";\r
-LOCATE COMP  "DAC_IN_SDI_6"  SITE "M29";\r
-DEFINE PORT GROUP "IN_group" "DAC_IN*" ;\r
-IOBUF GROUP "IN_group" IO_TYPE=LVDS25 DIFFRESISTOR=100;\r
-\r
-\r
-LOCATE COMP  "DAC_OUT_SDO_5"   SITE "R8";\r
-LOCATE COMP  "DAC_OUT_SCK_5"   SITE "R2";\r
-LOCATE COMP  "DAC_OUT_CS_5"    SITE "P9";\r
-LOCATE COMP  "DAC_OUT_SDO_6"   SITE "AC28";\r
-LOCATE COMP  "DAC_OUT_SCK_6"   SITE "M34";\r
-LOCATE COMP  "DAC_OUT_CS_6"    SITE "L28";\r
-DEFINE PORT GROUP "OUT_group" "DAC_OUT*" ;\r
-IOBUF GROUP "OUT_group" IO_TYPE=LVDS25 DIFFRESISTOR=OFF;\r
-\r
+# #on KEL1\r
+# LOCATE COMP  "INP_64"   SITE "AP5";\r
+# LOCATE COMP  "INP_65"   SITE "AP2";\r
+# LOCATE COMP  "INP_66"   SITE "AN1";\r
+# LOCATE COMP  "INP_67"   SITE "AN3";\r
+# LOCATE COMP  "INP_68"   SITE "AL5";\r
+# LOCATE COMP  "INP_69"   SITE "AM6";\r
+# LOCATE COMP  "INP_70"   SITE "AL4";\r
+# LOCATE COMP  "INP_71"   SITE "AJ5";\r
+# LOCATE COMP  "INP_72"   SITE "AJ2";\r
+# LOCATE COMP  "INP_73"   SITE "AL3";\r
+# LOCATE COMP  "INP_74"   SITE "AD9";\r
+# LOCATE COMP  "INP_75"   SITE "AJ4";\r
+# LOCATE COMP  "INP_76"   SITE "V4";\r
+# LOCATE COMP  "INP_77"   SITE "V5";     \r
+# LOCATE COMP  "INP_78"   SITE "T9";\r
+# LOCATE COMP  "INP_79"   SITE "T2";\r
+#  #on KEL2\r
+# LOCATE COMP  "INP_80"   SITE "AP29";\r
+# LOCATE COMP  "INP_81"   SITE "AP33";\r
+# LOCATE COMP  "INP_82"   SITE "AN34";\r
+# LOCATE COMP  "INP_83"   SITE "AP31";\r
+# LOCATE COMP  "INP_84"   SITE "AN32";\r
+# LOCATE COMP  "INP_85"   SITE "AM29";\r
+# LOCATE COMP  "INP_86"   SITE "AL31";\r
+# LOCATE COMP  "INP_87"   SITE "AL30";   \r
+# LOCATE COMP  "INP_88"   SITE "AL34";\r
+# LOCATE COMP  "INP_89"   SITE "AJ31";\r
+# LOCATE COMP  "INP_90"   SITE "AH33";\r
+# LOCATE COMP  "INP_91"   SITE "AL32";\r
+# LOCATE COMP  "INP_92"   SITE "AF32";\r
+# LOCATE COMP  "INP_93"   SITE "AE32";\r
+# LOCATE COMP  "INP_94"   SITE "AE30";\r
+# LOCATE COMP  "INP_95"   SITE "AD26";\r
+# DEFINE PORT GROUP "INP_group" "INP*" ;\r
+# IOBUF GROUP "INP_group" IO_TYPE=LVDS25 DIFFRESISTOR=100;\r
+# \r
+# LOCATE COMP  "DAC_IN_SDI_5"  SITE "P7";\r
+# LOCATE COMP  "DAC_IN_SDI_6"  SITE "M29";\r
+# DEFINE PORT GROUP "IN_group" "DAC_IN*" ;\r
+# IOBUF GROUP "IN_group" IO_TYPE=LVDS25 DIFFRESISTOR=100;\r
+# \r
+# \r
+# LOCATE COMP  "DAC_OUT_SDO_5"   SITE "R8";\r
+# LOCATE COMP  "DAC_OUT_SCK_5"   SITE "R2";\r
+# LOCATE COMP  "DAC_OUT_CS_5"    SITE "P9";\r
+# LOCATE COMP  "DAC_OUT_SDO_6"   SITE "AC28";\r
+# LOCATE COMP  "DAC_OUT_SCK_6"   SITE "M34";\r
+# LOCATE COMP  "DAC_OUT_CS_6"    SITE "L28";\r
+# DEFINE PORT GROUP "OUT_group" "DAC_OUT*" ;\r
+# IOBUF GROUP "OUT_group" IO_TYPE=LVDS25 DIFFRESISTOR=OFF;\r
+LOCATE COMP "KEL_1"                         SITE "AP5";\r
+LOCATE COMP "KEL_2"                         SITE "AP2";\r
+LOCATE COMP "KEL_3"                         SITE "AN1";\r
+LOCATE COMP "KEL_4"                         SITE "AN3";\r
+LOCATE COMP "KEL_5"                         SITE "AL5";\r
+LOCATE COMP "KEL_6"                         SITE "AM6";\r
+LOCATE COMP "KEL_7"                         SITE "AL4";\r
+LOCATE COMP "KEL_8"                         SITE "AJ5";\r
+LOCATE COMP "KEL_9"                         SITE "AJ2";\r
+LOCATE COMP "KEL_10"                        SITE "AL3";\r
+LOCATE COMP "KEL_11"                        SITE "AD9";\r
+LOCATE COMP "KEL_12"                        SITE "AJ4";\r
+LOCATE COMP "KEL_13"                        SITE "V4";\r
+LOCATE COMP "KEL_14"                        SITE "V5";\r
+LOCATE COMP "KEL_15"                        SITE "T9";\r
+LOCATE COMP "KEL_16"                        SITE "T2";\r
+LOCATE COMP "KEL_17"                        SITE "P7";\r
+LOCATE COMP "KEL_18"                        SITE "R8";\r
+LOCATE COMP "KEL_19"                        SITE "R2";\r
+LOCATE COMP "KEL_20"                        SITE "P9";\r
+LOCATE COMP "KEL_21"                        SITE "AP29";\r
+LOCATE COMP "KEL_22"                        SITE "AP33";\r
+LOCATE COMP "KEL_23"                        SITE "AN34";\r
+LOCATE COMP "KEL_24"                        SITE "AP31";\r
+LOCATE COMP "KEL_25"                        SITE "AN32";\r
+LOCATE COMP "KEL_26"                        SITE "AM29";\r
+LOCATE COMP "KEL_27"                        SITE "AL31";\r
+LOCATE COMP "KEL_28"                        SITE "AL30";\r
+LOCATE COMP "KEL_29"                        SITE "AL34";\r
+LOCATE COMP "KEL_30"                        SITE "AJ31";\r
+LOCATE COMP "KEL_31"                        SITE "AH33";\r
+LOCATE COMP "KEL_32"                        SITE "AL32";\r
+LOCATE COMP "KEL_33"                        SITE "AF32";\r
+LOCATE COMP "KEL_34"                        SITE "AE32";\r
+LOCATE COMP "KEL_35"                        SITE "AE30";\r
+LOCATE COMP "KEL_36"                        SITE "AD26";\r
+LOCATE COMP "KEL_37"                        SITE "M29";\r
+LOCATE COMP "KEL_38"                        SITE "AC28";\r
+LOCATE COMP "KEL_39"                        SITE "M34";\r
+LOCATE COMP "KEL_40"                        SITE "L28";\r
+DEFINE PORT GROUP "KEL_group" "KEL*" ;\r
+IOBUF GROUP  "KEL_group" IO_TYPE=LVDS25  DIFFRESISTOR=100;\r
 \r
 \r
 #################################################################\r