]> jspc29.x-matter.uni-frankfurt.de Git - trb3.git/commitdiff
cbmtof project changes
authorCahit <c.ugur@gsi.de>
Thu, 29 Aug 2013 10:00:57 +0000 (12:00 +0200)
committerCahit <c.ugur@gsi.de>
Thu, 29 Aug 2013 10:00:57 +0000 (12:00 +0200)
base/cbmtof.lpf
cbmtof/cbmtof.vhd
cbmtof/compile_constraints.pl

index 6f1137dcae91152c206a760dc9b30f25f49ff990..e803262a15ed8aaa732ecb2c3bfcb026a4a4c2a1 100644 (file)
@@ -63,10 +63,12 @@ LOCATE COMP "CLK_CM_8"                      SITE "V20";  #CM9
 LOCATE COMP "CLK_EXT"                  SITE "C14";  #external
 DEFINE PORT GROUP "CLK_group"
 "CLK_CM_*" 
-"CLK_EXT"
+#"CLK_EXT"
 "CLK_OSC";
 IOBUF GROUP "CLK_group" IO_TYPE=LVDS25 DIFFRESISTOR=100;
 
+IOBUF PORT "CLK_EXT" IO_TYPE=LVDS25;
+
 #################################################################
 # Clock Manager
 #################################################################
@@ -150,8 +152,42 @@ LOCATE COMP "INPUT_29"                     SITE "W1";
 LOCATE COMP "INPUT_30"                 SITE "V6";
 LOCATE COMP "INPUT_31"                 SITE "T1";
 LOCATE COMP "INPUT_32"                 SITE "M4";
-DEFINE PORT GROUP "INPUT_group" "INPUT*" ;
-IOBUF GROUP "INPUT_group" IO_TYPE=LVDS25 DIFFRESISTOR=100 ;
+#DEFINE PORT GROUP "INPUT_group" "INPUT*" ;
+#IOBUF GROUP "INPUT_group" IO_TYPE=LVDS25 DIFFRESISTOR=100 ;
+
+IOBUF PORT "INPUT_1" IO_TYPE=LVDS25; # diff resistor can't be placed
+IOBUF PORT "INPUT_2" IO_TYPE=LVDS25; # diff resistor can't be placed
+IOBUF PORT "INPUT_3" IO_TYPE=LVDS25; # diff resistor can't be placed
+IOBUF PORT "INPUT_4" IO_TYPE=LVDS25 DIFFRESISTOR=100 ;
+IOBUF PORT "INPUT_5" IO_TYPE=LVDS25 DIFFRESISTOR=100 ;
+IOBUF PORT "INPUT_6" IO_TYPE=LVDS25 DIFFRESISTOR=100 ;
+IOBUF PORT "INPUT_7" IO_TYPE=LVDS25 DIFFRESISTOR=100 ;
+IOBUF PORT "INPUT_8" IO_TYPE=LVDS25 DIFFRESISTOR=100 ;
+IOBUF PORT "INPUT_9" IO_TYPE=LVDS25 DIFFRESISTOR=100 ;
+IOBUF PORT "INPUT_10" IO_TYPE=LVDS25 DIFFRESISTOR=100 ;
+IOBUF PORT "INPUT_11" IO_TYPE=LVDS25 DIFFRESISTOR=100 ;
+IOBUF PORT "INPUT_12" IO_TYPE=LVDS25 DIFFRESISTOR=100 ;
+IOBUF PORT "INPUT_13" IO_TYPE=LVDS25 DIFFRESISTOR=100 ;
+IOBUF PORT "INPUT_14" IO_TYPE=LVDS25 DIFFRESISTOR=100 ;
+IOBUF PORT "INPUT_15" IO_TYPE=LVDS25 DIFFRESISTOR=100 ;
+IOBUF PORT "INPUT_16" IO_TYPE=LVDS25 DIFFRESISTOR=100 ;
+IOBUF PORT "INPUT_17" IO_TYPE=LVDS25 DIFFRESISTOR=100 ;
+IOBUF PORT "INPUT_18" IO_TYPE=LVDS25 DIFFRESISTOR=100 ;
+IOBUF PORT "INPUT_19" IO_TYPE=LVDS25 DIFFRESISTOR=100 ;
+IOBUF PORT "INPUT_20" IO_TYPE=LVDS25 DIFFRESISTOR=100 ;
+IOBUF PORT "INPUT_21" IO_TYPE=LVDS25; # diff resistor can't be placed
+IOBUF PORT "INPUT_22" IO_TYPE=LVDS25 DIFFRESISTOR=100 ;
+IOBUF PORT "INPUT_23" IO_TYPE=LVDS25; # diff resistor can't be placed
+IOBUF PORT "INPUT_24" IO_TYPE=LVDS25; # diff resistor can't be placed
+IOBUF PORT "INPUT_25" IO_TYPE=LVDS25 DIFFRESISTOR=100 ;
+IOBUF PORT "INPUT_26" IO_TYPE=LVDS25 DIFFRESISTOR=100 ;
+IOBUF PORT "INPUT_27" IO_TYPE=LVDS25 DIFFRESISTOR=100 ;
+IOBUF PORT "INPUT_28" IO_TYPE=LVDS25 DIFFRESISTOR=100 ;
+IOBUF PORT "INPUT_29" IO_TYPE=LVDS25 DIFFRESISTOR=100 ;
+IOBUF PORT "INPUT_30" IO_TYPE=LVDS25 DIFFRESISTOR=100 ;
+IOBUF PORT "INPUT_31" IO_TYPE=LVDS25 DIFFRESISTOR=100 ;
+IOBUF PORT "INPUT_32" IO_TYPE=LVDS25 DIFFRESISTOR=100 ;
+
 
 #################################################################
 # SFP
@@ -174,10 +210,14 @@ IOBUF GROUP "SFP_group" IO_TYPE=LVCMOS25 PULLMODE=UP;
 # Other I/O
 #################################################################
 LOCATE COMP "SPARE_LINE_0"             SITE "E13";
+IOBUF PORT "SPARE_LINE_0" IO_TYPE=LVDS25;
 LOCATE COMP "SPARE_LINE_1"             SITE "L21";
+IOBUF PORT "SPARE_LINE_1" IO_TYPE=LVDS25 DIFFRESISTOR=100;
 LOCATE COMP "SPARE_LINE_2"             SITE "P5";
-DEFINE PORT GROUP "SPARE_LINE_group" "SPARE_LINE*" ;
-IOBUF GROUP "SPARE_LINE_group" IO_TYPE=LVDS25 DIFFRESISTOR=100;
+IOBUF PORT "SPARE_LINE_2" IO_TYPE=LVDS25 DIFFRESISTOR=100;
+
+#DEFINE PORT GROUP "SPARE_LINE_group" "SPARE_LINE*" ;
+#IOBUF GROUP "SPARE_LINE_group" IO_TYPE=LVDS25 DIFFRESISTOR=100;
 
 LOCATE COMP "LVDS_1"                   SITE "J23";
 LOCATE COMP "LVDS_2"                   SITE "G26";
index a12b03b6dc1284f0faab418441145a3dd8ed7790..9bb2c4874cda3d72d217986e3fc364fc83630a55 100644 (file)
@@ -90,7 +90,7 @@ entity cbmtof is
   attribute syn_useioff of FLASH_DIN  : signal is true;
   attribute syn_useioff of FLASH_DOUT : signal is true;
   attribute syn_useioff of TEST_LINE  : signal is true;
-  attribute syn_useioff of SPARE_LINE : signal is false; --true;
+  attribute syn_useioff of SPARE_LINE : signal is true;
   attribute syn_useioff of LVDS       : signal is true;
   attribute syn_useioff of OR_IN      : signal is true;
 
@@ -361,6 +361,18 @@ begin
 ---------------------------------------------------------------------------
 -- Endpoint
 ---------------------------------------------------------------------------
+  --regio_hardware_version_i <= x"9100" & addOn_type_i & edge_type_i & tdc_channel_no_i & x"0";
+
+  --addOn_type_i     <= x"0";             -- x"0" - ADA AddOn version 1
+  --                                      -- x"1" - ADA AddOn version 2
+  --                                      -- x"2" - multi purpose test AddOn
+  --                                      -- x"3" - SFP hub AddOn
+  --                                      -- x"4" - Wasa AddOn
+  --edge_type_i      <= x"0";             -- x"0" - single edge
+  --                                      -- x"1" - double edge
+  --                                      -- x"8" - double edge on consecutive channels
+  --tdc_channel_no_i <= x"6";             -- 2^n channels
+
   THE_ENDPOINT : trb_net16_endpoint_hades_full_handler
     generic map(
       REGIO_NUM_STAT_REGS       => REGIO_NUM_STAT_REGS,  --4,    --16 stat reg
@@ -369,7 +381,7 @@ begin
       BROADCAST_BITMASK         => x"FF",
       BROADCAST_SPECIAL_ADDR    => x"50",
       REGIO_COMPILE_TIME        => std_logic_vector(to_unsigned(VERSION_NUMBER_TIME, 32)),
-      REGIO_HARDWARE_VERSION    => x"92000000",
+      REGIO_HARDWARE_VERSION    => x"92000860",
       REGIO_INIT_ADDRESS        => x"f300",
       REGIO_USE_VAR_ENDPOINT_ID => c_YES,
       CLOCK_FREQUENCY           => 100,
@@ -481,7 +493,7 @@ begin
     generic map(
       PORT_NUMBER    => 9,
       PORT_ADDRESSES => (0 => x"d000", 1 => x"d100", 2 => x"d400", 3 => x"c000", 4 => x"c100", 5 => x"c200", 6 => x"c300", 7 => x"c400", 8 => x"c800", others => x"0000"),
-      PORT_ADDR_MASK => (0 => 1, 1 => 6, 2 => 5, 3 => 7, 4 => 5, 5 => 7, 6 => 7, others => 0)
+      PORT_ADDR_MASK => (0 => 1, 1 => 6, 2 => 5, 3 => 7, 4 => 5, 5 => 7, 6 => 7, 7 => 7, 8 => 3, others => 0)
       )
     port map(
       CLK   => clk_100_i,
@@ -744,15 +756,16 @@ begin
 -------------------------------------------------------------------------------
   THE_TDC : TDC
     generic map (
-      CHANNEL_NUMBER => 5,             -- Number of TDC channels
+      CHANNEL_NUMBER => 33,             -- Number of TDC channels
       CONTROL_REG_NR => 5,              -- Number of control regs
       TDC_VERSION    => "001" & x"51")  -- TDC version numberTDC_VERSION    => "001" & x"51")  -- TDC version number
     port map (
       RESET                 => reset_i,
-      CLK_TDC               => CLK_OSC,  -- Clock used for the time measurement
+--    CLK_TDC               => CLK_OSC,  -- Oscillator used for the time measurement
+      CLK_TDC               => CLK_EXT,  -- External Clock used for the time measurement
       CLK_READOUT           => clk_100_i,   -- Clock for the readout
       REFERENCE_TIME        => timing_trg_received_i,  -- Reference time input
-      HIT_IN                => hit_in_i(4 downto 1),  -- Channel start signals
+      HIT_IN                => hit_in_i(32 downto 1),  -- Channel start signals
       HIT_CALIBRATION       => clk_20_i,    -- Hits for calibrating the TDC
       TRG_WIN_PRE           => tdc_ctrl_reg(42 downto 32),  -- Pre-Trigger window width
       TRG_WIN_POST          => tdc_ctrl_reg(58 downto 48),  -- Post-Trigger window width
@@ -823,14 +836,14 @@ begin
 --  hit_in_i <= INPUT;
 
   -- to detect rising & falling edges
-  --Gen_Hit_In_Signals : for i in 1 to 32 generate
-  --  hit_in_i(i*2-1) <= INPUT(i);
-  --  hit_in_i(i*2)   <= not INPUT(i);
-  --end generate Gen_Hit_In_Signals;
-
-  Gen_Hit_In_Signals : for i in 1 to 2 generate
-    hit_in_i(i*2-1) <= SPARE_LINE(i);
-    hit_in_i(i*2)   <= not SPARE_LINE(i);
+  Gen_Hit_In_Signals : for i in 1 to 32 generate
+    hit_in_i(i*2-1) <= INPUT(i);
+    hit_in_i(i*2)   <= not INPUT(i);
   end generate Gen_Hit_In_Signals;
 
+  --Gen_Hit_In_Signals : for i in 1 to 2 generate
+  --  hit_in_i(i*2-1) <= SPARE_LINE(i);
+  --  hit_in_i(i*2)   <= not SPARE_LINE(i);
+  --end generate Gen_Hit_In_Signals;
+
 end architecture;
index 7dc3c84632f4bc04c17bded6593305ae02eeb646..1b40726d6e62ebe7d9ecc0c45f371df9c134e4ae 100755 (executable)
@@ -7,7 +7,7 @@ my $TOPNAME                      = "cbmtof";  #Name of top-level entity
 
 
 #create full lpf file
-system("cp ../base/cbmtof.lpf workdir/$TOPNAME.lpf");
-system("cat ../tdc_releases/tdc_v1.3/trbnet_constraints.lpf >> workdir/$TOPNAME.lpf");
-system("cat ../tdc_releases/tdc_v1.3/tdc_constraints.lpf >> workdir/$TOPNAME.lpf");
+system("cp ../base/cbmtof.lpf diamond/$TOPNAME.lpf");
+system("cat currentRelease/trbnet_constraints.lpf >> diamond/$TOPNAME.lpf");
+system("cat currentRelease/tdc_constraints.lpf >> diamond/$TOPNAME.lpf");