close FILE;
$lpf =~ s#THE_TDC/#GEN_TDC.THE_TDC/#g;
-# only for TDC v1.6.3
-#$lpf =~ s#ff_array_en#ff_array_en_i#g;
# make the LPF diamond 2.1 compatible
# we assume that generate loops are all named with "gen_"
+#$lpf =~ s#(gen_)(\w+?)\.#$1$2_#gi;
+#$lpf =~ s#(gen_)(\w+?)(\d+)\.#$1$2$3_#gi;
+#$lpf =~ s#(gen_)(\w+?)(\*)\.#$1$2$3_#gi;
+#$lpf =~ s#SimAdder##g;
sub replace_dot {
my @m = @_;
$m[1] =~ s/\./_/g;
$lpf =~ s#(BLKNAME\s+)(.+?)([;\s])#replace_dot($1,$2,$3)#eg;
$lpf =~ s#(CELL\s+")(.+?)(")#replace_dot($1,$2,$3)#eg;
$lpf =~ s#(NET\s+")(.+?)(")#replace_dot($1,$2,$3)#eg;
+$lpf =~ s#ff_array_en#ff_array_en_i#g;
open FILE, ">$workdir/$TOPNAME.lpf" or die "Couldnt open file: $!";
constant DOUBLE_EDGE_TYPE : integer range 0 to 3 := 0;
--> change names in constraints file
- --ring buffer size: 32,64,96,128,dyn
- constant RING_BUFFER_SIZE : integer range 0 to 7 := 7; --ring buffer size: 0, 1, 2, 3, 7
+ --ring buffer size: 32,64,96,128,dyn
+ --for TDC v1.6.3, only 0,1,3 are valid
+ constant RING_BUFFER_SIZE : integer range 0 to 7 := 3; --ring buffer size: 0, 1, 2, 3, 7
+ constant TDC_CONTROL_REG_NR : integer := 6;
+
+
------------------------------------------------------------------------------
--End of design configuration
------------------------------------------------------------------------------
-../../tdc/releases/tdc_v2.1.3/
\ No newline at end of file
+../../tdc/releases/tdc_v1.6.3
\ No newline at end of file
add_file -vhdl -lib "work" "tdc_release/LogicAnalyser.vhd"
add_file -vhdl -lib "work" "tdc_release/Readout.vhd"
add_file -vhdl -lib "work" "tdc_release/risingEdgeDetect.vhd"
- add_file -vhdl -lib "work" "tdc_release/ROM_encoder_ecp3.vhd"
+ add_file -vhdl -lib "work" "tdc_release/ROM_encoder_3.vhd"
add_file -vhdl -lib "work" "tdc_release/ShiftRegisterSISO.vhd"
- add_file -vhdl -lib "work" "tdc_release/Stretcher_A.vhd"
- add_file -vhdl -lib "work" "tdc_release/Stretcher_B.vhd"
- add_file -vhdl -lib "work" "tdc_release/Stretcher.vhd"
add_file -vhdl -lib "work" "tdc_release/TDC.vhd"
add_file -vhdl -lib "work" "tdc_release/TriggerHandler.vhd"
add_file -vhdl -lib "work" "tdc_release/up_counter.vhd"
signal tdc_inputs : std_logic_vector(TDC_CHANNEL_NUMBER-2 downto 0);
- constant TDC_CONTROL_REG_NR : integer := 8;
type tdc_ctrl_reg_arr_t is array (0 to TDC_CONTROL_REG_NR-1) of std_logic_vector(31 downto 0);
signal tdc_ctrl_reg_arr : tdc_ctrl_reg_arr_t;
signal tdc_ctrl_reg : std_logic_vector(TDC_CONTROL_REG_NR*32-1 downto 0);
generic map (
CHANNEL_NUMBER => TDC_CHANNEL_NUMBER, -- Number of TDC channels
STATUS_REG_NR => 21, -- Number of status regs
+ TDC_VERSION => TDC_VERSION,
CONTROL_REG_NR => TDC_CONTROL_REG_NR, -- Number of control regs - higher than 8 check tdc_ctrl_addr
DEBUG => c_NO
)
CLK_READOUT => clk_100_i, -- Clock for the readout
REFERENCE_TIME => timing_trg_received_i, -- Reference time input
HIT_IN => tdc_inputs, -- Channel start signals
- HIT_CAL_IN => osc_int, --clk_20_i, -- Hits for calibrating the TDC
+ HIT_CALIBRATION => osc_int, --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
--