my $TOPNAME = "trb3_periph_adc"; #Name of top-level entity
my $lattice_path = '/d/jspc29/lattice/diamond/2.1_x64';
my $synplify_path = '/d/jspc29/lattice/synplify/F-2012.03-SP1/';
-my $lm_license_file_for_synplify = "27000\@lxcad01.gsi.de";
+my $lm_license_file_for_synplify = "27020\@jspc29";
my $lm_license_file_for_par = "1702\@hadeb05.gsi.de";
###################################################################################
#$c=qq|mpartrce -p "../$TOPNAME.p2t" -log "$TOPNAME.log" -o "$TOPNAME.rpt" -pr "$TOPNAME.prf" -tf "$TOPNAME.pt" "|.$TOPNAME.qq|_map.ncd" "$TOPNAME.ncd"|;
# $c=qq|$lattice_path/ispfpga/bin/lin/multipar -pr "$TOPNAME.prf" -o "mpar_$TOPNAME.rpt" -log "mpar_$TOPNAME.log" -p "../$TOPNAME.p2t" "$tpmap.ncd" "$TOPNAME.ncd"|;
-$c=qq|$lattice_path/ispfpga/bin/lin/par -w -l 5 -i 6 -t 4 -c 0 -e 0 -exp parUseNBR=1:parCDP=0:parCDR=0:parPathBased=OFF $tpmap.ncd $TOPNAME.ncd $TOPNAME.prf|;
+$c=qq|$lattice_path/ispfpga/bin/lin/par -w -l 5 -i 6 -t 7 -c 0 -e 0 -exp parUseNBR=1:parCDP=0:parCDR=0:parPathBased=OFF $tpmap.ncd $TOPNAME.ncd $TOPNAME.prf|;
execute($c);
$c=qq|$lattice_path/ispfpga/bin/lin/ltxt2ptxt $TOPNAME.ncd|;
exit 129;
}
}
- }
\ No newline at end of file
+ }
entity adc_ad9219 is
generic(
- NUM_DEVICES : integer := 5
+ NUM_DEVICES : integer := 5;
+ IS_TRB3 : integer := 0
);
port(
CLK : in std_logic;
-- LOCK => lock(0)
-- );
+gen_240_to_200 : if IS_TRB3 = 0 generate
THE_ADC_PLL_0 : entity work.pll_adc10bit
port map(
CLK => CLK_ADCRAW,
CLKOP => clk_adcfast_i,
LOCK => lock(1)
);
+end generate;
+gen_no_pll : if IS_TRB3 = 1 generate
+ clk_adcfast_i <= CLK_ADCRAW;
+end generate;
restart_i <= RESTART_IN when rising_edge(clk_data);
use work.adc_package.all;
entity adc_handler is
+ generic(
+ IS_TRB3 : integer := 0
+ );
port(
CLK : in std_logic;
CLK_ADCRAW : in std_logic;
THE_ADC_LEFT : entity work.adc_ad9219
generic map(
- NUM_DEVICES => DEVICES_1
+ NUM_DEVICES => DEVICES_1,
+ IS_TRB3 => IS_TRB3
)
port map(
CLK => CLK,
THE_ADC_RIGHT : entity work.adc_ad9219
generic map(
- NUM_DEVICES => DEVICES_2
+ NUM_DEVICES => DEVICES_2,
+ IS_TRB3 => IS_TRB3
)
port map(
CLK => CLK,
elsif or_all(std_logic_vector(after_trg_cnt)) = '0' then
stop_writing_rdo <= '1';
after_trg_cnt <= (others => '1');
- elsif after_trg_cnt(11) = '0' then
+ elsif after_trg_cnt(11) = '0' and ram_write = '1' then
after_trg_cnt <= after_trg_cnt - 1;
end if;
);
-
+
+ THE_ADC_REF : entity work.pll_in200_out40
+ port map(
+ CLK => CLK_PCLK_RIGHT,
+ CLKOP => P_CLOCK,
+ LOCK => open
+ );
---------------------------------------------------------------------------
-- The TrbNet media interface (to other FPGA)
---------------------------------------------------------------------------
gen_reallogic : if USE_DUMMY_READOUT = 0 generate
THE_ADC : entity work.adc_handler
+ generic map(
+ IS_TRB3 => 1
+ )
port map(
CLK => clk_100_i,
CLK_ADCRAW => CLK_PCLK_RIGHT,
# Clocks
#################################################################
#USE PRIMARY NET "CLK_GPLL_RIGHT_c";
-#USE PRIMARY NET "CLK_PCLK_LEFT_c";
+USE PRIMARY NET "CLK_PCLK_LEFT_c";
USE PRIMARY NET "CLK_PCLK_RIGHT_c";
#USE PRIMARY2EDGE NET "THE_ADC/clk_adcfast_i_0";