Commit 2908b258 authored by Tomasz Wlostowski's avatar Tomasz Wlostowski

fd_wishbone_slave: added new calibration registers

parent 5094074c
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
--------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------
-- File : fd_wbgen2_pkg.vhd -- File : fd_wbgen2_pkg.vhd
-- Author : auto-generated by wbgen2 from fd_wishbone_slave.wb -- Author : auto-generated by wbgen2 from fd_wishbone_slave.wb
-- Created : Wed Sep 7 17:10:37 2011 -- Created : Mon Oct 24 13:42:09 2011
-- Standard : VHDL'87 -- Standard : VHDL'87
--------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------
-- THIS FILE WAS GENERATED BY wbgen2 FROM SOURCE FILE fd_wishbone_slave.wb -- THIS FILE WAS GENERATED BY wbgen2 FROM SOURCE FILE fd_wishbone_slave.wb
...@@ -104,10 +104,13 @@ package fd_wbgen2_pkg is ...@@ -104,10 +104,13 @@ package fd_wbgen2_pkg is
tar_addr_o : std_logic_vector(3 downto 0); tar_addr_o : std_logic_vector(3 downto 0);
tdcsr_write_o : std_logic; tdcsr_write_o : std_logic;
tdcsr_read_o : std_logic; tdcsr_read_o : std_logic;
tdcsr_stop_en_o : std_logic;
tdcsr_start_dis_o : std_logic; tdcsr_start_dis_o : std_logic;
tdcsr_start_en_o : std_logic; tdcsr_start_en_o : std_logic;
tdcsr_stop_dis_o : std_logic; tdcsr_stop_dis_o : std_logic;
tdcsr_stop_en_o : std_logic; tdcsr_alutrig_o : std_logic;
calr_cal_pulse_o : std_logic;
calr_psel_o : std_logic_vector(3 downto 0);
adsfr_o : std_logic_vector(17 downto 0); adsfr_o : std_logic_vector(17 downto 0);
atmcr_c_thr_o : std_logic_vector(3 downto 0); atmcr_c_thr_o : std_logic_vector(3 downto 0);
atmcr_f_thr_o : std_logic_vector(22 downto 0); atmcr_f_thr_o : std_logic_vector(22 downto 0);
...@@ -122,7 +125,7 @@ package fd_wbgen2_pkg is ...@@ -122,7 +125,7 @@ package fd_wbgen2_pkg is
dcr1_pg_arm_o : std_logic; dcr1_pg_arm_o : std_logic;
dcr1_pg_arm_load_o : std_logic; dcr1_pg_arm_load_o : std_logic;
dcr1_update_o : std_logic; dcr1_update_o : std_logic;
dcr1_force_cp_o : std_logic; dcr1_force_dly_o : std_logic;
dcr1_pol_o : std_logic; dcr1_pol_o : std_logic;
frr1_o : std_logic_vector(9 downto 0); frr1_o : std_logic_vector(9 downto 0);
u_start1_o : std_logic_vector(31 downto 0); u_start1_o : std_logic_vector(31 downto 0);
...@@ -136,7 +139,7 @@ package fd_wbgen2_pkg is ...@@ -136,7 +139,7 @@ package fd_wbgen2_pkg is
dcr2_pg_arm_o : std_logic; dcr2_pg_arm_o : std_logic;
dcr2_pg_arm_load_o : std_logic; dcr2_pg_arm_load_o : std_logic;
dcr2_update_o : std_logic; dcr2_update_o : std_logic;
dcr2_force_cp_o : std_logic; dcr2_force_dly_o : std_logic;
dcr2_pol_o : std_logic; dcr2_pol_o : std_logic;
frr2_o : std_logic_vector(9 downto 0); frr2_o : std_logic_vector(9 downto 0);
u_start2_o : std_logic_vector(31 downto 0); u_start2_o : std_logic_vector(31 downto 0);
...@@ -150,7 +153,7 @@ package fd_wbgen2_pkg is ...@@ -150,7 +153,7 @@ package fd_wbgen2_pkg is
dcr3_pg_arm_o : std_logic; dcr3_pg_arm_o : std_logic;
dcr3_pg_arm_load_o : std_logic; dcr3_pg_arm_load_o : std_logic;
dcr3_update_o : std_logic; dcr3_update_o : std_logic;
dcr3_force_cp_o : std_logic; dcr3_force_dly_o : std_logic;
dcr3_pol_o : std_logic; dcr3_pol_o : std_logic;
frr3_o : std_logic_vector(9 downto 0); frr3_o : std_logic_vector(9 downto 0);
u_start3_o : std_logic_vector(31 downto 0); u_start3_o : std_logic_vector(31 downto 0);
...@@ -164,7 +167,7 @@ package fd_wbgen2_pkg is ...@@ -164,7 +167,7 @@ package fd_wbgen2_pkg is
dcr4_pg_arm_o : std_logic; dcr4_pg_arm_o : std_logic;
dcr4_pg_arm_load_o : std_logic; dcr4_pg_arm_load_o : std_logic;
dcr4_update_o : std_logic; dcr4_update_o : std_logic;
dcr4_force_cp_o : std_logic; dcr4_force_dly_o : std_logic;
dcr4_pol_o : std_logic; dcr4_pol_o : std_logic;
frr4_o : std_logic_vector(9 downto 0); frr4_o : std_logic_vector(9 downto 0);
u_start4_o : std_logic_vector(31 downto 0); u_start4_o : std_logic_vector(31 downto 0);
...@@ -187,10 +190,13 @@ package fd_wbgen2_pkg is ...@@ -187,10 +190,13 @@ package fd_wbgen2_pkg is
tar_addr_o => (others => '0'), tar_addr_o => (others => '0'),
tdcsr_write_o => '0', tdcsr_write_o => '0',
tdcsr_read_o => '0', tdcsr_read_o => '0',
tdcsr_stop_en_o => '0',
tdcsr_start_dis_o => '0', tdcsr_start_dis_o => '0',
tdcsr_start_en_o => '0', tdcsr_start_en_o => '0',
tdcsr_stop_dis_o => '0', tdcsr_stop_dis_o => '0',
tdcsr_stop_en_o => '0', tdcsr_alutrig_o => '0',
calr_cal_pulse_o => '0',
calr_psel_o => (others => '0'),
adsfr_o => (others => '0'), adsfr_o => (others => '0'),
atmcr_c_thr_o => (others => '0'), atmcr_c_thr_o => (others => '0'),
atmcr_f_thr_o => (others => '0'), atmcr_f_thr_o => (others => '0'),
...@@ -205,7 +211,7 @@ package fd_wbgen2_pkg is ...@@ -205,7 +211,7 @@ package fd_wbgen2_pkg is
dcr1_pg_arm_o => '0', dcr1_pg_arm_o => '0',
dcr1_pg_arm_load_o => '0', dcr1_pg_arm_load_o => '0',
dcr1_update_o => '0', dcr1_update_o => '0',
dcr1_force_cp_o => '0', dcr1_force_dly_o => '0',
dcr1_pol_o => '0', dcr1_pol_o => '0',
frr1_o => (others => '0'), frr1_o => (others => '0'),
u_start1_o => (others => '0'), u_start1_o => (others => '0'),
...@@ -219,7 +225,7 @@ package fd_wbgen2_pkg is ...@@ -219,7 +225,7 @@ package fd_wbgen2_pkg is
dcr2_pg_arm_o => '0', dcr2_pg_arm_o => '0',
dcr2_pg_arm_load_o => '0', dcr2_pg_arm_load_o => '0',
dcr2_update_o => '0', dcr2_update_o => '0',
dcr2_force_cp_o => '0', dcr2_force_dly_o => '0',
dcr2_pol_o => '0', dcr2_pol_o => '0',
frr2_o => (others => '0'), frr2_o => (others => '0'),
u_start2_o => (others => '0'), u_start2_o => (others => '0'),
...@@ -233,7 +239,7 @@ package fd_wbgen2_pkg is ...@@ -233,7 +239,7 @@ package fd_wbgen2_pkg is
dcr3_pg_arm_o => '0', dcr3_pg_arm_o => '0',
dcr3_pg_arm_load_o => '0', dcr3_pg_arm_load_o => '0',
dcr3_update_o => '0', dcr3_update_o => '0',
dcr3_force_cp_o => '0', dcr3_force_dly_o => '0',
dcr3_pol_o => '0', dcr3_pol_o => '0',
frr3_o => (others => '0'), frr3_o => (others => '0'),
u_start3_o => (others => '0'), u_start3_o => (others => '0'),
...@@ -247,7 +253,7 @@ package fd_wbgen2_pkg is ...@@ -247,7 +253,7 @@ package fd_wbgen2_pkg is
dcr4_pg_arm_o => '0', dcr4_pg_arm_o => '0',
dcr4_pg_arm_load_o => '0', dcr4_pg_arm_load_o => '0',
dcr4_update_o => '0', dcr4_update_o => '0',
dcr4_force_cp_o => '0', dcr4_force_dly_o => '0',
dcr4_pol_o => '0', dcr4_pol_o => '0',
frr4_o => (others => '0'), frr4_o => (others => '0'),
u_start4_o => (others => '0'), u_start4_o => (others => '0'),
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
--------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------
-- File : fd_wishbone_slave.vhd -- File : fd_wishbone_slave.vhd
-- Author : auto-generated by wbgen2 from fd_wishbone_slave.wb -- Author : auto-generated by wbgen2 from fd_wishbone_slave.wb
-- Created : Wed Sep 7 17:10:37 2011 -- Created : Mon Oct 24 13:42:09 2011
-- Standard : VHDL'87 -- Standard : VHDL'87
--------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------
-- THIS FILE WAS GENERATED BY wbgen2 FROM SOURCE FILE fd_wishbone_slave.wb -- THIS FILE WAS GENERATED BY wbgen2 FROM SOURCE FILE fd_wishbone_slave.wb
...@@ -92,6 +92,11 @@ signal fd_tdcsr_load_sync0 : std_logic ; ...@@ -92,6 +92,11 @@ signal fd_tdcsr_load_sync0 : std_logic ;
signal fd_tdcsr_load_sync1 : std_logic ; signal fd_tdcsr_load_sync1 : std_logic ;
signal fd_tdcsr_empty_sync0 : std_logic ; signal fd_tdcsr_empty_sync0 : std_logic ;
signal fd_tdcsr_empty_sync1 : std_logic ; signal fd_tdcsr_empty_sync1 : std_logic ;
signal fd_tdcsr_stop_en_int : std_logic ;
signal fd_tdcsr_stop_en_int_delay : std_logic ;
signal fd_tdcsr_stop_en_sync0 : std_logic ;
signal fd_tdcsr_stop_en_sync1 : std_logic ;
signal fd_tdcsr_stop_en_sync2 : std_logic ;
signal fd_tdcsr_start_dis_int : std_logic ; signal fd_tdcsr_start_dis_int : std_logic ;
signal fd_tdcsr_start_dis_int_delay : std_logic ; signal fd_tdcsr_start_dis_int_delay : std_logic ;
signal fd_tdcsr_start_dis_sync0 : std_logic ; signal fd_tdcsr_start_dis_sync0 : std_logic ;
...@@ -107,11 +112,22 @@ signal fd_tdcsr_stop_dis_int_delay : std_logic ; ...@@ -107,11 +112,22 @@ signal fd_tdcsr_stop_dis_int_delay : std_logic ;
signal fd_tdcsr_stop_dis_sync0 : std_logic ; signal fd_tdcsr_stop_dis_sync0 : std_logic ;
signal fd_tdcsr_stop_dis_sync1 : std_logic ; signal fd_tdcsr_stop_dis_sync1 : std_logic ;
signal fd_tdcsr_stop_dis_sync2 : std_logic ; signal fd_tdcsr_stop_dis_sync2 : std_logic ;
signal fd_tdcsr_stop_en_int : std_logic ; signal fd_tdcsr_alutrig_int : std_logic ;
signal fd_tdcsr_stop_en_int_delay : std_logic ; signal fd_tdcsr_alutrig_int_delay : std_logic ;
signal fd_tdcsr_stop_en_sync0 : std_logic ; signal fd_tdcsr_alutrig_sync0 : std_logic ;
signal fd_tdcsr_stop_en_sync1 : std_logic ; signal fd_tdcsr_alutrig_sync1 : std_logic ;
signal fd_tdcsr_stop_en_sync2 : std_logic ; signal fd_tdcsr_alutrig_sync2 : std_logic ;
signal fd_calr_cal_pulse_int : std_logic ;
signal fd_calr_cal_pulse_int_delay : std_logic ;
signal fd_calr_cal_pulse_sync0 : std_logic ;
signal fd_calr_cal_pulse_sync1 : std_logic ;
signal fd_calr_cal_pulse_sync2 : std_logic ;
signal fd_calr_psel_int : std_logic_vector(3 downto 0);
signal fd_calr_psel_swb : std_logic ;
signal fd_calr_psel_swb_delay : std_logic ;
signal fd_calr_psel_swb_s0 : std_logic ;
signal fd_calr_psel_swb_s1 : std_logic ;
signal fd_calr_psel_swb_s2 : std_logic ;
signal fd_adsfr_int : std_logic_vector(17 downto 0); signal fd_adsfr_int : std_logic_vector(17 downto 0);
signal fd_adsfr_swb : std_logic ; signal fd_adsfr_swb : std_logic ;
signal fd_adsfr_swb_delay : std_logic ; signal fd_adsfr_swb_delay : std_logic ;
...@@ -212,11 +228,11 @@ signal fd_dcr1_update_sync1 : std_logic ; ...@@ -212,11 +228,11 @@ signal fd_dcr1_update_sync1 : std_logic ;
signal fd_dcr1_update_sync2 : std_logic ; signal fd_dcr1_update_sync2 : std_logic ;
signal fd_dcr1_upd_done_sync0 : std_logic ; signal fd_dcr1_upd_done_sync0 : std_logic ;
signal fd_dcr1_upd_done_sync1 : std_logic ; signal fd_dcr1_upd_done_sync1 : std_logic ;
signal fd_dcr1_force_cp_int : std_logic ; signal fd_dcr1_force_dly_int : std_logic ;
signal fd_dcr1_force_cp_int_delay : std_logic ; signal fd_dcr1_force_dly_int_delay : std_logic ;
signal fd_dcr1_force_cp_sync0 : std_logic ; signal fd_dcr1_force_dly_sync0 : std_logic ;
signal fd_dcr1_force_cp_sync1 : std_logic ; signal fd_dcr1_force_dly_sync1 : std_logic ;
signal fd_dcr1_force_cp_sync2 : std_logic ; signal fd_dcr1_force_dly_sync2 : std_logic ;
signal fd_dcr1_pol_int : std_logic ; signal fd_dcr1_pol_int : std_logic ;
signal fd_dcr1_pol_sync0 : std_logic ; signal fd_dcr1_pol_sync0 : std_logic ;
signal fd_dcr1_pol_sync1 : std_logic ; signal fd_dcr1_pol_sync1 : std_logic ;
...@@ -286,11 +302,11 @@ signal fd_dcr2_update_sync1 : std_logic ; ...@@ -286,11 +302,11 @@ signal fd_dcr2_update_sync1 : std_logic ;
signal fd_dcr2_update_sync2 : std_logic ; signal fd_dcr2_update_sync2 : std_logic ;
signal fd_dcr2_upd_done_sync0 : std_logic ; signal fd_dcr2_upd_done_sync0 : std_logic ;
signal fd_dcr2_upd_done_sync1 : std_logic ; signal fd_dcr2_upd_done_sync1 : std_logic ;
signal fd_dcr2_force_cp_int : std_logic ; signal fd_dcr2_force_dly_int : std_logic ;
signal fd_dcr2_force_cp_int_delay : std_logic ; signal fd_dcr2_force_dly_int_delay : std_logic ;
signal fd_dcr2_force_cp_sync0 : std_logic ; signal fd_dcr2_force_dly_sync0 : std_logic ;
signal fd_dcr2_force_cp_sync1 : std_logic ; signal fd_dcr2_force_dly_sync1 : std_logic ;
signal fd_dcr2_force_cp_sync2 : std_logic ; signal fd_dcr2_force_dly_sync2 : std_logic ;
signal fd_dcr2_pol_int : std_logic ; signal fd_dcr2_pol_int : std_logic ;
signal fd_dcr2_pol_sync0 : std_logic ; signal fd_dcr2_pol_sync0 : std_logic ;
signal fd_dcr2_pol_sync1 : std_logic ; signal fd_dcr2_pol_sync1 : std_logic ;
...@@ -360,11 +376,11 @@ signal fd_dcr3_update_sync1 : std_logic ; ...@@ -360,11 +376,11 @@ signal fd_dcr3_update_sync1 : std_logic ;
signal fd_dcr3_update_sync2 : std_logic ; signal fd_dcr3_update_sync2 : std_logic ;
signal fd_dcr3_upd_done_sync0 : std_logic ; signal fd_dcr3_upd_done_sync0 : std_logic ;
signal fd_dcr3_upd_done_sync1 : std_logic ; signal fd_dcr3_upd_done_sync1 : std_logic ;
signal fd_dcr3_force_cp_int : std_logic ; signal fd_dcr3_force_dly_int : std_logic ;
signal fd_dcr3_force_cp_int_delay : std_logic ; signal fd_dcr3_force_dly_int_delay : std_logic ;
signal fd_dcr3_force_cp_sync0 : std_logic ; signal fd_dcr3_force_dly_sync0 : std_logic ;
signal fd_dcr3_force_cp_sync1 : std_logic ; signal fd_dcr3_force_dly_sync1 : std_logic ;
signal fd_dcr3_force_cp_sync2 : std_logic ; signal fd_dcr3_force_dly_sync2 : std_logic ;
signal fd_dcr3_pol_int : std_logic ; signal fd_dcr3_pol_int : std_logic ;
signal fd_dcr3_pol_sync0 : std_logic ; signal fd_dcr3_pol_sync0 : std_logic ;
signal fd_dcr3_pol_sync1 : std_logic ; signal fd_dcr3_pol_sync1 : std_logic ;
...@@ -434,11 +450,11 @@ signal fd_dcr4_update_sync1 : std_logic ; ...@@ -434,11 +450,11 @@ signal fd_dcr4_update_sync1 : std_logic ;
signal fd_dcr4_update_sync2 : std_logic ; signal fd_dcr4_update_sync2 : std_logic ;
signal fd_dcr4_upd_done_sync0 : std_logic ; signal fd_dcr4_upd_done_sync0 : std_logic ;
signal fd_dcr4_upd_done_sync1 : std_logic ; signal fd_dcr4_upd_done_sync1 : std_logic ;
signal fd_dcr4_force_cp_int : std_logic ; signal fd_dcr4_force_dly_int : std_logic ;
signal fd_dcr4_force_cp_int_delay : std_logic ; signal fd_dcr4_force_dly_int_delay : std_logic ;
signal fd_dcr4_force_cp_sync0 : std_logic ; signal fd_dcr4_force_dly_sync0 : std_logic ;
signal fd_dcr4_force_cp_sync1 : std_logic ; signal fd_dcr4_force_dly_sync1 : std_logic ;
signal fd_dcr4_force_cp_sync2 : std_logic ; signal fd_dcr4_force_dly_sync2 : std_logic ;
signal fd_dcr4_pol_int : std_logic ; signal fd_dcr4_pol_int : std_logic ;
signal fd_dcr4_pol_sync0 : std_logic ; signal fd_dcr4_pol_sync0 : std_logic ;
signal fd_dcr4_pol_sync1 : std_logic ; signal fd_dcr4_pol_sync1 : std_logic ;
...@@ -543,14 +559,21 @@ begin ...@@ -543,14 +559,21 @@ begin
fd_tdcsr_write_int_delay <= '0'; fd_tdcsr_write_int_delay <= '0';
fd_tdcsr_read_int <= '0'; fd_tdcsr_read_int <= '0';
fd_tdcsr_read_int_delay <= '0'; fd_tdcsr_read_int_delay <= '0';
fd_tdcsr_stop_en_int <= '0';
fd_tdcsr_stop_en_int_delay <= '0';
fd_tdcsr_start_dis_int <= '0'; fd_tdcsr_start_dis_int <= '0';
fd_tdcsr_start_dis_int_delay <= '0'; fd_tdcsr_start_dis_int_delay <= '0';
fd_tdcsr_start_en_int <= '0'; fd_tdcsr_start_en_int <= '0';
fd_tdcsr_start_en_int_delay <= '0'; fd_tdcsr_start_en_int_delay <= '0';
fd_tdcsr_stop_dis_int <= '0'; fd_tdcsr_stop_dis_int <= '0';
fd_tdcsr_stop_dis_int_delay <= '0'; fd_tdcsr_stop_dis_int_delay <= '0';
fd_tdcsr_stop_en_int <= '0'; fd_tdcsr_alutrig_int <= '0';
fd_tdcsr_stop_en_int_delay <= '0'; fd_tdcsr_alutrig_int_delay <= '0';
fd_calr_cal_pulse_int <= '0';
fd_calr_cal_pulse_int_delay <= '0';
fd_calr_psel_int <= "0000";
fd_calr_psel_swb <= '0';
fd_calr_psel_swb_delay <= '0';
fd_adsfr_int <= "000000000000000000"; fd_adsfr_int <= "000000000000000000";
fd_adsfr_swb <= '0'; fd_adsfr_swb <= '0';
fd_adsfr_swb_delay <= '0'; fd_adsfr_swb_delay <= '0';
...@@ -594,8 +617,8 @@ begin ...@@ -594,8 +617,8 @@ begin
fd_dcr1_pg_arm_int_write <= '0'; fd_dcr1_pg_arm_int_write <= '0';
fd_dcr1_update_int <= '0'; fd_dcr1_update_int <= '0';
fd_dcr1_update_int_delay <= '0'; fd_dcr1_update_int_delay <= '0';
fd_dcr1_force_cp_int <= '0'; fd_dcr1_force_dly_int <= '0';
fd_dcr1_force_cp_int_delay <= '0'; fd_dcr1_force_dly_int_delay <= '0';
fd_dcr1_pol_int <= '0'; fd_dcr1_pol_int <= '0';
fd_frr1_int <= "0000000000"; fd_frr1_int <= "0000000000";
fd_frr1_swb <= '0'; fd_frr1_swb <= '0';
...@@ -627,8 +650,8 @@ begin ...@@ -627,8 +650,8 @@ begin
fd_dcr2_pg_arm_int_write <= '0'; fd_dcr2_pg_arm_int_write <= '0';
fd_dcr2_update_int <= '0'; fd_dcr2_update_int <= '0';
fd_dcr2_update_int_delay <= '0'; fd_dcr2_update_int_delay <= '0';
fd_dcr2_force_cp_int <= '0'; fd_dcr2_force_dly_int <= '0';
fd_dcr2_force_cp_int_delay <= '0'; fd_dcr2_force_dly_int_delay <= '0';
fd_dcr2_pol_int <= '0'; fd_dcr2_pol_int <= '0';
fd_frr2_int <= "0000000000"; fd_frr2_int <= "0000000000";
fd_frr2_swb <= '0'; fd_frr2_swb <= '0';
...@@ -660,8 +683,8 @@ begin ...@@ -660,8 +683,8 @@ begin
fd_dcr3_pg_arm_int_write <= '0'; fd_dcr3_pg_arm_int_write <= '0';
fd_dcr3_update_int <= '0'; fd_dcr3_update_int <= '0';
fd_dcr3_update_int_delay <= '0'; fd_dcr3_update_int_delay <= '0';
fd_dcr3_force_cp_int <= '0'; fd_dcr3_force_dly_int <= '0';
fd_dcr3_force_cp_int_delay <= '0'; fd_dcr3_force_dly_int_delay <= '0';
fd_dcr3_pol_int <= '0'; fd_dcr3_pol_int <= '0';
fd_frr3_int <= "0000000000"; fd_frr3_int <= "0000000000";
fd_frr3_swb <= '0'; fd_frr3_swb <= '0';
...@@ -693,8 +716,8 @@ begin ...@@ -693,8 +716,8 @@ begin
fd_dcr4_pg_arm_int_write <= '0'; fd_dcr4_pg_arm_int_write <= '0';
fd_dcr4_update_int <= '0'; fd_dcr4_update_int <= '0';
fd_dcr4_update_int_delay <= '0'; fd_dcr4_update_int_delay <= '0';
fd_dcr4_force_cp_int <= '0'; fd_dcr4_force_dly_int <= '0';
fd_dcr4_force_cp_int_delay <= '0'; fd_dcr4_force_dly_int_delay <= '0';
fd_dcr4_pol_int <= '0'; fd_dcr4_pol_int <= '0';
fd_frr4_int <= "0000000000"; fd_frr4_int <= "0000000000";
fd_frr4_swb <= '0'; fd_frr4_swb <= '0';
...@@ -752,14 +775,20 @@ begin ...@@ -752,14 +775,20 @@ begin
fd_tdcsr_write_int_delay <= '0'; fd_tdcsr_write_int_delay <= '0';
fd_tdcsr_read_int <= fd_tdcsr_read_int_delay; fd_tdcsr_read_int <= fd_tdcsr_read_int_delay;
fd_tdcsr_read_int_delay <= '0'; fd_tdcsr_read_int_delay <= '0';
fd_tdcsr_stop_en_int <= fd_tdcsr_stop_en_int_delay;
fd_tdcsr_stop_en_int_delay <= '0';
fd_tdcsr_start_dis_int <= fd_tdcsr_start_dis_int_delay; fd_tdcsr_start_dis_int <= fd_tdcsr_start_dis_int_delay;
fd_tdcsr_start_dis_int_delay <= '0'; fd_tdcsr_start_dis_int_delay <= '0';
fd_tdcsr_start_en_int <= fd_tdcsr_start_en_int_delay; fd_tdcsr_start_en_int <= fd_tdcsr_start_en_int_delay;
fd_tdcsr_start_en_int_delay <= '0'; fd_tdcsr_start_en_int_delay <= '0';
fd_tdcsr_stop_dis_int <= fd_tdcsr_stop_dis_int_delay; fd_tdcsr_stop_dis_int <= fd_tdcsr_stop_dis_int_delay;
fd_tdcsr_stop_dis_int_delay <= '0'; fd_tdcsr_stop_dis_int_delay <= '0';
fd_tdcsr_stop_en_int <= fd_tdcsr_stop_en_int_delay; fd_tdcsr_alutrig_int <= fd_tdcsr_alutrig_int_delay;
fd_tdcsr_stop_en_int_delay <= '0'; fd_tdcsr_alutrig_int_delay <= '0';
fd_calr_cal_pulse_int <= fd_calr_cal_pulse_int_delay;
fd_calr_cal_pulse_int_delay <= '0';
fd_calr_psel_swb <= fd_calr_psel_swb_delay;
fd_calr_psel_swb_delay <= '0';
fd_adsfr_swb <= fd_adsfr_swb_delay; fd_adsfr_swb <= fd_adsfr_swb_delay;
fd_adsfr_swb_delay <= '0'; fd_adsfr_swb_delay <= '0';
fd_atmcr_c_thr_swb <= fd_atmcr_c_thr_swb_delay; fd_atmcr_c_thr_swb <= fd_atmcr_c_thr_swb_delay;
...@@ -810,8 +839,8 @@ begin ...@@ -810,8 +839,8 @@ begin
end if; end if;
fd_dcr1_update_int <= fd_dcr1_update_int_delay; fd_dcr1_update_int <= fd_dcr1_update_int_delay;
fd_dcr1_update_int_delay <= '0'; fd_dcr1_update_int_delay <= '0';
fd_dcr1_force_cp_int <= fd_dcr1_force_cp_int_delay; fd_dcr1_force_dly_int <= fd_dcr1_force_dly_int_delay;
fd_dcr1_force_cp_int_delay <= '0'; fd_dcr1_force_dly_int_delay <= '0';
fd_frr1_swb <= fd_frr1_swb_delay; fd_frr1_swb <= fd_frr1_swb_delay;
fd_frr1_swb_delay <= '0'; fd_frr1_swb_delay <= '0';
fd_u_start1_swb <= fd_u_start1_swb_delay; fd_u_start1_swb <= fd_u_start1_swb_delay;
...@@ -834,8 +863,8 @@ begin ...@@ -834,8 +863,8 @@ begin
end if; end if;
fd_dcr2_update_int <= fd_dcr2_update_int_delay; fd_dcr2_update_int <= fd_dcr2_update_int_delay;
fd_dcr2_update_int_delay <= '0'; fd_dcr2_update_int_delay <= '0';
fd_dcr2_force_cp_int <= fd_dcr2_force_cp_int_delay; fd_dcr2_force_dly_int <= fd_dcr2_force_dly_int_delay;
fd_dcr2_force_cp_int_delay <= '0'; fd_dcr2_force_dly_int_delay <= '0';
fd_frr2_swb <= fd_frr2_swb_delay; fd_frr2_swb <= fd_frr2_swb_delay;
fd_frr2_swb_delay <= '0'; fd_frr2_swb_delay <= '0';
fd_u_start2_swb <= fd_u_start2_swb_delay; fd_u_start2_swb <= fd_u_start2_swb_delay;
...@@ -858,8 +887,8 @@ begin ...@@ -858,8 +887,8 @@ begin
end if; end if;
fd_dcr3_update_int <= fd_dcr3_update_int_delay; fd_dcr3_update_int <= fd_dcr3_update_int_delay;
fd_dcr3_update_int_delay <= '0'; fd_dcr3_update_int_delay <= '0';
fd_dcr3_force_cp_int <= fd_dcr3_force_cp_int_delay; fd_dcr3_force_dly_int <= fd_dcr3_force_dly_int_delay;
fd_dcr3_force_cp_int_delay <= '0'; fd_dcr3_force_dly_int_delay <= '0';
fd_frr3_swb <= fd_frr3_swb_delay; fd_frr3_swb <= fd_frr3_swb_delay;
fd_frr3_swb_delay <= '0'; fd_frr3_swb_delay <= '0';
fd_u_start3_swb <= fd_u_start3_swb_delay; fd_u_start3_swb <= fd_u_start3_swb_delay;
...@@ -882,8 +911,8 @@ begin ...@@ -882,8 +911,8 @@ begin
end if; end if;
fd_dcr4_update_int <= fd_dcr4_update_int_delay; fd_dcr4_update_int <= fd_dcr4_update_int_delay;
fd_dcr4_update_int_delay <= '0'; fd_dcr4_update_int_delay <= '0';
fd_dcr4_force_cp_int <= fd_dcr4_force_cp_int_delay; fd_dcr4_force_dly_int <= fd_dcr4_force_dly_int_delay;
fd_dcr4_force_cp_int_delay <= '0'; fd_dcr4_force_dly_int_delay <= '0';
fd_frr4_swb <= fd_frr4_swb_delay; fd_frr4_swb <= fd_frr4_swb_delay;
fd_frr4_swb_delay <= '0'; fd_frr4_swb_delay <= '0';
fd_u_start4_swb <= fd_u_start4_swb_delay; fd_u_start4_swb <= fd_u_start4_swb_delay;
...@@ -954,14 +983,18 @@ begin ...@@ -954,14 +983,18 @@ begin
rddata_reg(0) <= 'X'; rddata_reg(0) <= 'X';
fd_gcr_input_en_int <= wrdata_reg(1); fd_gcr_input_en_int <= wrdata_reg(1);
rddata_reg(1) <= 'X'; rddata_reg(1) <= 'X';
rddata_reg(2) <= 'X';
fd_gcr_csync_int_int <= wrdata_reg(2); fd_gcr_csync_int_int <= wrdata_reg(2);
fd_gcr_csync_int_int_delay <= wrdata_reg(2); fd_gcr_csync_int_int_delay <= wrdata_reg(2);
rddata_reg(3) <= 'X';
fd_gcr_csync_wr_int <= wrdata_reg(3); fd_gcr_csync_wr_int <= wrdata_reg(3);
fd_gcr_csync_wr_int_delay <= wrdata_reg(3); fd_gcr_csync_wr_int_delay <= wrdata_reg(3);
rddata_reg(4) <= 'X'; rddata_reg(4) <= 'X';
else else
rddata_reg(0) <= fd_gcr_bypass_int; rddata_reg(0) <= fd_gcr_bypass_int;
rddata_reg(1) <= fd_gcr_input_en_int; rddata_reg(1) <= fd_gcr_input_en_int;
rddata_reg(2) <= 'X';
rddata_reg(3) <= 'X';
rddata_reg(4) <= fd_gcr_wr_ready_sync1; rddata_reg(4) <= fd_gcr_wr_ready_sync1;
rddata_reg(5) <= 'X'; rddata_reg(5) <= 'X';
rddata_reg(6) <= 'X'; rddata_reg(6) <= 'X';
...@@ -1014,27 +1047,42 @@ begin ...@@ -1014,27 +1047,42 @@ begin
ack_in_progress <= '1'; ack_in_progress <= '1';
when "000100" => when "000100" =>
if (wb_we_i = '1') then if (wb_we_i = '1') then
rddata_reg(0) <= 'X';
fd_tdcsr_write_int <= wrdata_reg(0); fd_tdcsr_write_int <= wrdata_reg(0);
fd_tdcsr_write_int_delay <= wrdata_reg(0); fd_tdcsr_write_int_delay <= wrdata_reg(0);
rddata_reg(1) <= 'X';
fd_tdcsr_read_int <= wrdata_reg(1); fd_tdcsr_read_int <= wrdata_reg(1);
fd_tdcsr_read_int_delay <= wrdata_reg(1); fd_tdcsr_read_int_delay <= wrdata_reg(1);
rddata_reg(2) <= 'X'; rddata_reg(2) <= 'X';
rddata_reg(3) <= 'X'; rddata_reg(3) <= 'X';
rddata_reg(4) <= 'X'; rddata_reg(4) <= 'X';
rddata_reg(5) <= 'X'; rddata_reg(5) <= 'X';
fd_tdcsr_start_dis_int <= wrdata_reg(6); rddata_reg(6) <= 'X';
fd_tdcsr_start_dis_int_delay <= wrdata_reg(6); fd_tdcsr_stop_en_int <= wrdata_reg(6);
fd_tdcsr_start_en_int <= wrdata_reg(7); fd_tdcsr_stop_en_int_delay <= wrdata_reg(6);
fd_tdcsr_start_en_int_delay <= wrdata_reg(7); rddata_reg(7) <= 'X';
fd_tdcsr_stop_dis_int <= wrdata_reg(8); fd_tdcsr_start_dis_int <= wrdata_reg(7);
fd_tdcsr_stop_dis_int_delay <= wrdata_reg(8); fd_tdcsr_start_dis_int_delay <= wrdata_reg(7);
fd_tdcsr_stop_en_int <= wrdata_reg(9); rddata_reg(8) <= 'X';
fd_tdcsr_stop_en_int_delay <= wrdata_reg(9); fd_tdcsr_start_en_int <= wrdata_reg(8);
fd_tdcsr_start_en_int_delay <= wrdata_reg(8);
rddata_reg(9) <= 'X';
fd_tdcsr_stop_dis_int <= wrdata_reg(9);
fd_tdcsr_stop_dis_int_delay <= wrdata_reg(9);
rddata_reg(10) <= 'X';
fd_tdcsr_alutrig_int <= wrdata_reg(10);
fd_tdcsr_alutrig_int_delay <= wrdata_reg(10);
else else
rddata_reg(0) <= 'X';
rddata_reg(1) <= 'X';
rddata_reg(2) <= fd_tdcsr_err_sync1; rddata_reg(2) <= fd_tdcsr_err_sync1;
rddata_reg(3) <= fd_tdcsr_int_sync1; rddata_reg(3) <= fd_tdcsr_int_sync1;
rddata_reg(4) <= fd_tdcsr_load_sync1; rddata_reg(4) <= fd_tdcsr_load_sync1;
rddata_reg(5) <= fd_tdcsr_empty_sync1; rddata_reg(5) <= fd_tdcsr_empty_sync1;
rddata_reg(6) <= 'X';
rddata_reg(7) <= 'X';
rddata_reg(8) <= 'X';
rddata_reg(9) <= 'X';
rddata_reg(10) <= 'X'; rddata_reg(10) <= 'X';
rddata_reg(11) <= 'X'; rddata_reg(11) <= 'X';
rddata_reg(12) <= 'X'; rddata_reg(12) <= 'X';
...@@ -1061,6 +1109,47 @@ begin ...@@ -1061,6 +1109,47 @@ begin
ack_sreg(4) <= '1'; ack_sreg(4) <= '1';
ack_in_progress <= '1'; ack_in_progress <= '1';
when "000101" => when "000101" =>
if (wb_we_i = '1') then
rddata_reg(0) <= 'X';
fd_calr_cal_pulse_int <= wrdata_reg(0);
fd_calr_cal_pulse_int_delay <= wrdata_reg(0);
fd_calr_psel_int <= wrdata_reg(4 downto 1);
fd_calr_psel_swb <= '1';
fd_calr_psel_swb_delay <= '1';
else
rddata_reg(0) <= 'X';
rddata_reg(4 downto 1) <= fd_calr_psel_int;
rddata_reg(5) <= 'X';
rddata_reg(6) <= 'X';
rddata_reg(7) <= 'X';
rddata_reg(8) <= 'X';
rddata_reg(9) <= 'X';
rddata_reg(10) <= 'X';
rddata_reg(11) <= 'X';
rddata_reg(12) <= 'X';
rddata_reg(13) <= 'X';
rddata_reg(14) <= 'X';
rddata_reg(15) <= 'X';
rddata_reg(16) <= 'X';
rddata_reg(17) <= 'X';
rddata_reg(18) <= 'X';
rddata_reg(19) <= 'X';
rddata_reg(20) <= 'X';
rddata_reg(21) <= 'X';
rddata_reg(22) <= 'X';
rddata_reg(23) <= 'X';
rddata_reg(24) <= 'X';
rddata_reg(25) <= 'X';
rddata_reg(26) <= 'X';
rddata_reg(27) <= 'X';
rddata_reg(28) <= 'X';
rddata_reg(29) <= 'X';
rddata_reg(30) <= 'X';
rddata_reg(31) <= 'X';
end if;
ack_sreg(4) <= '1';
ack_in_progress <= '1';
when "000110" =>
if (wb_we_i = '1') then if (wb_we_i = '1') then
fd_adsfr_int <= wrdata_reg(17 downto 0); fd_adsfr_int <= wrdata_reg(17 downto 0);
fd_adsfr_swb <= '1'; fd_adsfr_swb <= '1';
...@@ -1084,7 +1173,7 @@ begin ...@@ -1084,7 +1173,7 @@ begin
end if; end if;
ack_sreg(3) <= '1'; ack_sreg(3) <= '1';
ack_in_progress <= '1'; ack_in_progress <= '1';
when "000110" => when "000111" =>
if (wb_we_i = '1') then if (wb_we_i = '1') then
fd_atmcr_c_thr_int <= wrdata_reg(3 downto 0); fd_atmcr_c_thr_int <= wrdata_reg(3 downto 0);
fd_atmcr_c_thr_swb <= '1'; fd_atmcr_c_thr_swb <= '1';
...@@ -1103,7 +1192,7 @@ begin ...@@ -1103,7 +1192,7 @@ begin
end if; end if;
ack_sreg(3) <= '1'; ack_sreg(3) <= '1';
ack_in_progress <= '1'; ack_in_progress <= '1';
when "000111" => when "001000" =>
if (wb_we_i = '1') then if (wb_we_i = '1') then
fd_asor_offset_int <= wrdata_reg(22 downto 0); fd_asor_offset_int <= wrdata_reg(22 downto 0);
fd_asor_offset_swb <= '1'; fd_asor_offset_swb <= '1';
...@@ -1122,7 +1211,7 @@ begin ...@@ -1122,7 +1211,7 @@ begin
end if; end if;
ack_sreg(3) <= '1'; ack_sreg(3) <= '1';
ack_in_progress <= '1'; ack_in_progress <= '1';
when "001000" => when "001001" =>
if (wb_we_i = '1') then if (wb_we_i = '1') then
else else
fd_iecraw_lwb <= '1'; fd_iecraw_lwb <= '1';
...@@ -1131,7 +1220,7 @@ begin ...@@ -1131,7 +1220,7 @@ begin
end if; end if;
ack_sreg(5) <= '1'; ack_sreg(5) <= '1';
ack_in_progress <= '1'; ack_in_progress <= '1';
when "001001" => when "001010" =>
if (wb_we_i = '1') then if (wb_we_i = '1') then
else else
fd_iectag_lwb <= '1'; fd_iectag_lwb <= '1';
...@@ -1140,11 +1229,13 @@ begin ...@@ -1140,11 +1229,13 @@ begin
end if; end if;
ack_sreg(5) <= '1'; ack_sreg(5) <= '1';
ack_in_progress <= '1'; ack_in_progress <= '1';
when "001010" => when "001011" =>
if (wb_we_i = '1') then if (wb_we_i = '1') then
rddata_reg(0) <= 'X';
fd_iepd_rst_stat_int <= wrdata_reg(0); fd_iepd_rst_stat_int <= wrdata_reg(0);
fd_iepd_rst_stat_int_delay <= wrdata_reg(0); fd_iepd_rst_stat_int_delay <= wrdata_reg(0);
else else
rddata_reg(0) <= 'X';
fd_iepd_pdelay_lwb <= '1'; fd_iepd_pdelay_lwb <= '1';
fd_iepd_pdelay_lwb_delay <= '1'; fd_iepd_pdelay_lwb_delay <= '1';
fd_iepd_pdelay_lwb_in_progress <= '1'; fd_iepd_pdelay_lwb_in_progress <= '1';
...@@ -1174,7 +1265,7 @@ begin ...@@ -1174,7 +1265,7 @@ begin
end if; end if;
ack_sreg(5) <= '1'; ack_sreg(5) <= '1';
ack_in_progress <= '1'; ack_in_progress <= '1';
when "001011" => when "001100" =>
if (wb_we_i = '1') then if (wb_we_i = '1') then
else else
fd_rcrr_lwb <= '1'; fd_rcrr_lwb <= '1';
...@@ -1183,7 +1274,7 @@ begin ...@@ -1183,7 +1274,7 @@ begin
end if; end if;
ack_sreg(5) <= '1'; ack_sreg(5) <= '1';
ack_in_progress <= '1'; ack_in_progress <= '1';
when "001100" => when "001101" =>
if (wb_we_i = '1') then if (wb_we_i = '1') then
else else
fd_rcfr_lwb <= '1'; fd_rcfr_lwb <= '1';
...@@ -1192,17 +1283,21 @@ begin ...@@ -1192,17 +1283,21 @@ begin
end if; end if;
ack_sreg(5) <= '1'; ack_sreg(5) <= '1';
ack_in_progress <= '1'; ack_in_progress <= '1';
when "001101" => when "001110" =>
if (wb_we_i = '1') then if (wb_we_i = '1') then
rddata_reg(0) <= 'X'; rddata_reg(0) <= 'X';
fd_tsbcr_enable_int <= wrdata_reg(0); fd_tsbcr_enable_int <= wrdata_reg(0);
fd_tsbcr_purge_int <= wrdata_reg(1); fd_tsbcr_purge_int <= wrdata_reg(1);
rddata_reg(1) <= 'X';
rddata_reg(2) <= 'X';
fd_tsbcr_rst_seq_int <= wrdata_reg(2); fd_tsbcr_rst_seq_int <= wrdata_reg(2);
fd_tsbcr_rst_seq_int_delay <= wrdata_reg(2); fd_tsbcr_rst_seq_int_delay <= wrdata_reg(2);
rddata_reg(3) <= 'X'; rddata_reg(3) <= 'X';
rddata_reg(4) <= 'X'; rddata_reg(4) <= 'X';
else else
rddata_reg(0) <= fd_tsbcr_enable_int; rddata_reg(0) <= fd_tsbcr_enable_int;
rddata_reg(1) <= 'X';
rddata_reg(2) <= 'X';
rddata_reg(3) <= regs_i.tsbcr_full_i; rddata_reg(3) <= regs_i.tsbcr_full_i;
rddata_reg(4) <= regs_i.tsbcr_empty_i; rddata_reg(4) <= regs_i.tsbcr_empty_i;
rddata_reg(5) <= 'X'; rddata_reg(5) <= 'X';
...@@ -1235,14 +1330,14 @@ begin ...@@ -1235,14 +1330,14 @@ begin
end if; end if;
ack_sreg(4) <= '1'; ack_sreg(4) <= '1';
ack_in_progress <= '1'; ack_in_progress <= '1';
when "001110" => when "001111" =>
if (wb_we_i = '1') then if (wb_we_i = '1') then
else else
rddata_reg(31 downto 0) <= regs_i.tsbr_u_i; rddata_reg(31 downto 0) <= regs_i.tsbr_u_i;
end if; end if;
ack_sreg(0) <= '1'; ack_sreg(0) <= '1';
ack_in_progress <= '1'; ack_in_progress <= '1';
when "001111" => when "010000" =>
if (wb_we_i = '1') then if (wb_we_i = '1') then
else else
rddata_reg(27 downto 0) <= regs_i.tsbr_c_i; rddata_reg(27 downto 0) <= regs_i.tsbr_c_i;
...@@ -1253,7 +1348,7 @@ begin ...@@ -1253,7 +1348,7 @@ begin
end if; end if;
ack_sreg(0) <= '1'; ack_sreg(0) <= '1';
ack_in_progress <= '1'; ack_in_progress <= '1';
when "010000" => when "010001" =>
if (wb_we_i = '1') then if (wb_we_i = '1') then
else else
rddata_reg(11 downto 0) <= regs_i.tsbr_fid_fine_i; rddata_reg(11 downto 0) <= regs_i.tsbr_fid_fine_i;
...@@ -1279,11 +1374,13 @@ begin ...@@ -1279,11 +1374,13 @@ begin
fd_dcr1_pg_arm_lw_read_in_progress <= '0'; fd_dcr1_pg_arm_lw_read_in_progress <= '0';
fd_dcr1_pg_arm_rwsel <= '1'; fd_dcr1_pg_arm_rwsel <= '1';
rddata_reg(3) <= 'X'; rddata_reg(3) <= 'X';
rddata_reg(4) <= 'X';
fd_dcr1_update_int <= wrdata_reg(4); fd_dcr1_update_int <= wrdata_reg(4);
fd_dcr1_update_int_delay <= wrdata_reg(4); fd_dcr1_update_int_delay <= wrdata_reg(4);
rddata_reg(5) <= 'X'; rddata_reg(5) <= 'X';
fd_dcr1_force_cp_int <= wrdata_reg(6); rddata_reg(6) <= 'X';
fd_dcr1_force_cp_int_delay <= wrdata_reg(6); fd_dcr1_force_dly_int <= wrdata_reg(6);
fd_dcr1_force_dly_int_delay <= wrdata_reg(6);
fd_dcr1_pol_int <= wrdata_reg(7); fd_dcr1_pol_int <= wrdata_reg(7);
rddata_reg(7) <= 'X'; rddata_reg(7) <= 'X';
else else
...@@ -1295,7 +1392,9 @@ begin ...@@ -1295,7 +1392,9 @@ begin
fd_dcr1_pg_arm_lw_read_in_progress <= '1'; fd_dcr1_pg_arm_lw_read_in_progress <= '1';
fd_dcr1_pg_arm_rwsel <= '0'; fd_dcr1_pg_arm_rwsel <= '0';
rddata_reg(3) <= fd_dcr1_pg_trig_sync1; rddata_reg(3) <= fd_dcr1_pg_trig_sync1;
rddata_reg(4) <= 'X';
rddata_reg(5) <= fd_dcr1_upd_done_sync1; rddata_reg(5) <= fd_dcr1_upd_done_sync1;
rddata_reg(6) <= 'X';
rddata_reg(7) <= fd_dcr1_pol_int; rddata_reg(7) <= fd_dcr1_pol_int;
rddata_reg(8) <= 'X'; rddata_reg(8) <= 'X';
rddata_reg(9) <= 'X'; rddata_reg(9) <= 'X';
...@@ -1477,11 +1576,13 @@ begin ...@@ -1477,11 +1576,13 @@ begin
fd_dcr2_pg_arm_lw_read_in_progress <= '0'; fd_dcr2_pg_arm_lw_read_in_progress <= '0';
fd_dcr2_pg_arm_rwsel <= '1'; fd_dcr2_pg_arm_rwsel <= '1';
rddata_reg(3) <= 'X'; rddata_reg(3) <= 'X';
rddata_reg(4) <= 'X';
fd_dcr2_update_int <= wrdata_reg(4); fd_dcr2_update_int <= wrdata_reg(4);
fd_dcr2_update_int_delay <= wrdata_reg(4); fd_dcr2_update_int_delay <= wrdata_reg(4);
rddata_reg(5) <= 'X'; rddata_reg(5) <= 'X';
fd_dcr2_force_cp_int <= wrdata_reg(6); rddata_reg(6) <= 'X';
fd_dcr2_force_cp_int_delay <= wrdata_reg(6); fd_dcr2_force_dly_int <= wrdata_reg(6);
fd_dcr2_force_dly_int_delay <= wrdata_reg(6);
fd_dcr2_pol_int <= wrdata_reg(7); fd_dcr2_pol_int <= wrdata_reg(7);
rddata_reg(7) <= 'X'; rddata_reg(7) <= 'X';
else else
...@@ -1493,7 +1594,9 @@ begin ...@@ -1493,7 +1594,9 @@ begin
fd_dcr2_pg_arm_lw_read_in_progress <= '1'; fd_dcr2_pg_arm_lw_read_in_progress <= '1';
fd_dcr2_pg_arm_rwsel <= '0'; fd_dcr2_pg_arm_rwsel <= '0';
rddata_reg(3) <= fd_dcr2_pg_trig_sync1; rddata_reg(3) <= fd_dcr2_pg_trig_sync1;
rddata_reg(4) <= 'X';
rddata_reg(5) <= fd_dcr2_upd_done_sync1; rddata_reg(5) <= fd_dcr2_upd_done_sync1;
rddata_reg(6) <= 'X';
rddata_reg(7) <= fd_dcr2_pol_int; rddata_reg(7) <= fd_dcr2_pol_int;
rddata_reg(8) <= 'X'; rddata_reg(8) <= 'X';
rddata_reg(9) <= 'X'; rddata_reg(9) <= 'X';
...@@ -1675,11 +1778,13 @@ begin ...@@ -1675,11 +1778,13 @@ begin
fd_dcr3_pg_arm_lw_read_in_progress <= '0'; fd_dcr3_pg_arm_lw_read_in_progress <= '0';
fd_dcr3_pg_arm_rwsel <= '1'; fd_dcr3_pg_arm_rwsel <= '1';
rddata_reg(3) <= 'X'; rddata_reg(3) <= 'X';
rddata_reg(4) <= 'X';
fd_dcr3_update_int <= wrdata_reg(4); fd_dcr3_update_int <= wrdata_reg(4);
fd_dcr3_update_int_delay <= wrdata_reg(4); fd_dcr3_update_int_delay <= wrdata_reg(4);
rddata_reg(5) <= 'X'; rddata_reg(5) <= 'X';
fd_dcr3_force_cp_int <= wrdata_reg(6); rddata_reg(6) <= 'X';
fd_dcr3_force_cp_int_delay <= wrdata_reg(6); fd_dcr3_force_dly_int <= wrdata_reg(6);
fd_dcr3_force_dly_int_delay <= wrdata_reg(6);
fd_dcr3_pol_int <= wrdata_reg(7); fd_dcr3_pol_int <= wrdata_reg(7);
rddata_reg(7) <= 'X'; rddata_reg(7) <= 'X';
else else
...@@ -1691,7 +1796,9 @@ begin ...@@ -1691,7 +1796,9 @@ begin
fd_dcr3_pg_arm_lw_read_in_progress <= '1'; fd_dcr3_pg_arm_lw_read_in_progress <= '1';
fd_dcr3_pg_arm_rwsel <= '0'; fd_dcr3_pg_arm_rwsel <= '0';
rddata_reg(3) <= fd_dcr3_pg_trig_sync1; rddata_reg(3) <= fd_dcr3_pg_trig_sync1;
rddata_reg(4) <= 'X';
rddata_reg(5) <= fd_dcr3_upd_done_sync1; rddata_reg(5) <= fd_dcr3_upd_done_sync1;
rddata_reg(6) <= 'X';
rddata_reg(7) <= fd_dcr3_pol_int; rddata_reg(7) <= fd_dcr3_pol_int;
rddata_reg(8) <= 'X'; rddata_reg(8) <= 'X';
rddata_reg(9) <= 'X'; rddata_reg(9) <= 'X';
...@@ -1873,11 +1980,13 @@ begin ...@@ -1873,11 +1980,13 @@ begin
fd_dcr4_pg_arm_lw_read_in_progress <= '0'; fd_dcr4_pg_arm_lw_read_in_progress <= '0';
fd_dcr4_pg_arm_rwsel <= '1'; fd_dcr4_pg_arm_rwsel <= '1';
rddata_reg(3) <= 'X'; rddata_reg(3) <= 'X';
rddata_reg(4) <= 'X';
fd_dcr4_update_int <= wrdata_reg(4); fd_dcr4_update_int <= wrdata_reg(4);
fd_dcr4_update_int_delay <= wrdata_reg(4); fd_dcr4_update_int_delay <= wrdata_reg(4);
rddata_reg(5) <= 'X'; rddata_reg(5) <= 'X';
fd_dcr4_force_cp_int <= wrdata_reg(6); rddata_reg(6) <= 'X';
fd_dcr4_force_cp_int_delay <= wrdata_reg(6); fd_dcr4_force_dly_int <= wrdata_reg(6);
fd_dcr4_force_dly_int_delay <= wrdata_reg(6);
fd_dcr4_pol_int <= wrdata_reg(7); fd_dcr4_pol_int <= wrdata_reg(7);
rddata_reg(7) <= 'X'; rddata_reg(7) <= 'X';
else else
...@@ -1889,7 +1998,9 @@ begin ...@@ -1889,7 +1998,9 @@ begin
fd_dcr4_pg_arm_lw_read_in_progress <= '1'; fd_dcr4_pg_arm_lw_read_in_progress <= '1';
fd_dcr4_pg_arm_rwsel <= '0'; fd_dcr4_pg_arm_rwsel <= '0';
rddata_reg(3) <= fd_dcr4_pg_trig_sync1; rddata_reg(3) <= fd_dcr4_pg_trig_sync1;
rddata_reg(4) <= 'X';
rddata_reg(5) <= fd_dcr4_upd_done_sync1; rddata_reg(5) <= fd_dcr4_upd_done_sync1;
rddata_reg(6) <= 'X';
rddata_reg(7) <= fd_dcr4_pol_int; rddata_reg(7) <= fd_dcr4_pol_int;
rddata_reg(8) <= 'X'; rddata_reg(8) <= 'X';
rddata_reg(9) <= 'X'; rddata_reg(9) <= 'X';
...@@ -2513,6 +2624,23 @@ begin ...@@ -2513,6 +2624,23 @@ begin
end process; end process;
-- Start enable
process (clk_ref_i, rst_n_i)
begin
if (rst_n_i = '0') then
regs_o.tdcsr_stop_en_o <= '0';
fd_tdcsr_stop_en_sync0 <= '0';
fd_tdcsr_stop_en_sync1 <= '0';
fd_tdcsr_stop_en_sync2 <= '0';
elsif rising_edge(clk_ref_i) then
fd_tdcsr_stop_en_sync0 <= fd_tdcsr_stop_en_int;
fd_tdcsr_stop_en_sync1 <= fd_tdcsr_stop_en_sync0;
fd_tdcsr_stop_en_sync2 <= fd_tdcsr_stop_en_sync1;
regs_o.tdcsr_stop_en_o <= fd_tdcsr_stop_en_sync2 and (not fd_tdcsr_stop_en_sync1);
end if;
end process;
-- Start disable -- Start disable
process (clk_ref_i, rst_n_i) process (clk_ref_i, rst_n_i)
begin begin
...@@ -2530,7 +2658,7 @@ begin ...@@ -2530,7 +2658,7 @@ begin
end process; end process;
-- Start enable -- Stop enable
process (clk_ref_i, rst_n_i) process (clk_ref_i, rst_n_i)
begin begin
if (rst_n_i = '0') then if (rst_n_i = '0') then
...@@ -2547,7 +2675,7 @@ begin ...@@ -2547,7 +2675,7 @@ begin
end process; end process;
-- Start disable -- Stop disable
process (clk_ref_i, rst_n_i) process (clk_ref_i, rst_n_i)
begin begin
if (rst_n_i = '0') then if (rst_n_i = '0') then
...@@ -2564,19 +2692,56 @@ begin ...@@ -2564,19 +2692,56 @@ begin
end process; end process;
-- Start enable -- write 1: Pulse the Alutrigger line
process (clk_ref_i, rst_n_i) process (clk_ref_i, rst_n_i)
begin begin
if (rst_n_i = '0') then if (rst_n_i = '0') then
regs_o.tdcsr_stop_en_o <= '0'; regs_o.tdcsr_alutrig_o <= '0';
fd_tdcsr_stop_en_sync0 <= '0'; fd_tdcsr_alutrig_sync0 <= '0';
fd_tdcsr_stop_en_sync1 <= '0'; fd_tdcsr_alutrig_sync1 <= '0';
fd_tdcsr_stop_en_sync2 <= '0'; fd_tdcsr_alutrig_sync2 <= '0';
elsif rising_edge(clk_ref_i) then elsif rising_edge(clk_ref_i) then
fd_tdcsr_stop_en_sync0 <= fd_tdcsr_stop_en_int; fd_tdcsr_alutrig_sync0 <= fd_tdcsr_alutrig_int;
fd_tdcsr_stop_en_sync1 <= fd_tdcsr_stop_en_sync0; fd_tdcsr_alutrig_sync1 <= fd_tdcsr_alutrig_sync0;
fd_tdcsr_stop_en_sync2 <= fd_tdcsr_stop_en_sync1; fd_tdcsr_alutrig_sync2 <= fd_tdcsr_alutrig_sync1;
regs_o.tdcsr_stop_en_o <= fd_tdcsr_stop_en_sync2 and (not fd_tdcsr_stop_en_sync1); regs_o.tdcsr_alutrig_o <= fd_tdcsr_alutrig_sync2 and (not fd_tdcsr_alutrig_sync1);
end if;
end process;
-- Triggers calibration pulses
process (clk_ref_i, rst_n_i)
begin
if (rst_n_i = '0') then
regs_o.calr_cal_pulse_o <= '0';
fd_calr_cal_pulse_sync0 <= '0';
fd_calr_cal_pulse_sync1 <= '0';
fd_calr_cal_pulse_sync2 <= '0';
elsif rising_edge(clk_ref_i) then
fd_calr_cal_pulse_sync0 <= fd_calr_cal_pulse_int;
fd_calr_cal_pulse_sync1 <= fd_calr_cal_pulse_sync0;
fd_calr_cal_pulse_sync2 <= fd_calr_cal_pulse_sync1;
regs_o.calr_cal_pulse_o <= fd_calr_cal_pulse_sync2 and (not fd_calr_cal_pulse_sync1);
end if;
end process;
-- Enable pulse generation
-- asynchronous std_logic_vector register : Enable pulse generation (type RW/RO, clk_ref_i <-> bus_clock_int)
process (clk_ref_i, rst_n_i)
begin
if (rst_n_i = '0') then
fd_calr_psel_swb_s0 <= '0';
fd_calr_psel_swb_s1 <= '0';
fd_calr_psel_swb_s2 <= '0';
regs_o.calr_psel_o <= "0000";
elsif rising_edge(clk_ref_i) then
fd_calr_psel_swb_s0 <= fd_calr_psel_swb;
fd_calr_psel_swb_s1 <= fd_calr_psel_swb_s0;
fd_calr_psel_swb_s2 <= fd_calr_psel_swb_s1;
if ((fd_calr_psel_swb_s2 = '0') and (fd_calr_psel_swb_s1 = '1')) then
regs_o.calr_psel_o <= fd_calr_psel_int;
end if;
end if; end if;
end process; end process;
...@@ -2945,19 +3110,19 @@ begin ...@@ -2945,19 +3110,19 @@ begin
end process; end process;
-- Force Calibration Pulse -- Force Calibration Delay
process (clk_ref_i, rst_n_i) process (clk_ref_i, rst_n_i)
begin begin
if (rst_n_i = '0') then if (rst_n_i = '0') then
regs_o.dcr1_force_cp_o <= '0'; regs_o.dcr1_force_dly_o <= '0';
fd_dcr1_force_cp_sync0 <= '0'; fd_dcr1_force_dly_sync0 <= '0';
fd_dcr1_force_cp_sync1 <= '0'; fd_dcr1_force_dly_sync1 <= '0';
fd_dcr1_force_cp_sync2 <= '0'; fd_dcr1_force_dly_sync2 <= '0';
elsif rising_edge(clk_ref_i) then elsif rising_edge(clk_ref_i) then
fd_dcr1_force_cp_sync0 <= fd_dcr1_force_cp_int; fd_dcr1_force_dly_sync0 <= fd_dcr1_force_dly_int;
fd_dcr1_force_cp_sync1 <= fd_dcr1_force_cp_sync0; fd_dcr1_force_dly_sync1 <= fd_dcr1_force_dly_sync0;
fd_dcr1_force_cp_sync2 <= fd_dcr1_force_cp_sync1; fd_dcr1_force_dly_sync2 <= fd_dcr1_force_dly_sync1;
regs_o.dcr1_force_cp_o <= fd_dcr1_force_cp_sync2 and (not fd_dcr1_force_cp_sync1); regs_o.dcr1_force_dly_o <= fd_dcr1_force_dly_sync2 and (not fd_dcr1_force_dly_sync1);
end if; end if;
end process; end process;
...@@ -3225,19 +3390,19 @@ begin ...@@ -3225,19 +3390,19 @@ begin
end process; end process;
-- Force Calibration Pulse -- Force Calibration Delay
process (clk_ref_i, rst_n_i) process (clk_ref_i, rst_n_i)
begin begin
if (rst_n_i = '0') then if (rst_n_i = '0') then
regs_o.dcr2_force_cp_o <= '0'; regs_o.dcr2_force_dly_o <= '0';
fd_dcr2_force_cp_sync0 <= '0'; fd_dcr2_force_dly_sync0 <= '0';
fd_dcr2_force_cp_sync1 <= '0'; fd_dcr2_force_dly_sync1 <= '0';
fd_dcr2_force_cp_sync2 <= '0'; fd_dcr2_force_dly_sync2 <= '0';
elsif rising_edge(clk_ref_i) then elsif rising_edge(clk_ref_i) then
fd_dcr2_force_cp_sync0 <= fd_dcr2_force_cp_int; fd_dcr2_force_dly_sync0 <= fd_dcr2_force_dly_int;
fd_dcr2_force_cp_sync1 <= fd_dcr2_force_cp_sync0; fd_dcr2_force_dly_sync1 <= fd_dcr2_force_dly_sync0;
fd_dcr2_force_cp_sync2 <= fd_dcr2_force_cp_sync1; fd_dcr2_force_dly_sync2 <= fd_dcr2_force_dly_sync1;
regs_o.dcr2_force_cp_o <= fd_dcr2_force_cp_sync2 and (not fd_dcr2_force_cp_sync1); regs_o.dcr2_force_dly_o <= fd_dcr2_force_dly_sync2 and (not fd_dcr2_force_dly_sync1);
end if; end if;
end process; end process;
...@@ -3505,19 +3670,19 @@ begin ...@@ -3505,19 +3670,19 @@ begin
end process; end process;
-- Force Calibration Pulse -- Force Calibration Delay
process (clk_ref_i, rst_n_i) process (clk_ref_i, rst_n_i)
begin begin
if (rst_n_i = '0') then if (rst_n_i = '0') then
regs_o.dcr3_force_cp_o <= '0'; regs_o.dcr3_force_dly_o <= '0';
fd_dcr3_force_cp_sync0 <= '0'; fd_dcr3_force_dly_sync0 <= '0';
fd_dcr3_force_cp_sync1 <= '0'; fd_dcr3_force_dly_sync1 <= '0';
fd_dcr3_force_cp_sync2 <= '0'; fd_dcr3_force_dly_sync2 <= '0';
elsif rising_edge(clk_ref_i) then elsif rising_edge(clk_ref_i) then
fd_dcr3_force_cp_sync0 <= fd_dcr3_force_cp_int; fd_dcr3_force_dly_sync0 <= fd_dcr3_force_dly_int;
fd_dcr3_force_cp_sync1 <= fd_dcr3_force_cp_sync0; fd_dcr3_force_dly_sync1 <= fd_dcr3_force_dly_sync0;
fd_dcr3_force_cp_sync2 <= fd_dcr3_force_cp_sync1; fd_dcr3_force_dly_sync2 <= fd_dcr3_force_dly_sync1;
regs_o.dcr3_force_cp_o <= fd_dcr3_force_cp_sync2 and (not fd_dcr3_force_cp_sync1); regs_o.dcr3_force_dly_o <= fd_dcr3_force_dly_sync2 and (not fd_dcr3_force_dly_sync1);
end if; end if;
end process; end process;
...@@ -3785,19 +3950,19 @@ begin ...@@ -3785,19 +3950,19 @@ begin
end process; end process;
-- Force Calibration Pulse -- Force Calibration Delay
process (clk_ref_i, rst_n_i) process (clk_ref_i, rst_n_i)
begin begin
if (rst_n_i = '0') then if (rst_n_i = '0') then
regs_o.dcr4_force_cp_o <= '0'; regs_o.dcr4_force_dly_o <= '0';
fd_dcr4_force_cp_sync0 <= '0'; fd_dcr4_force_dly_sync0 <= '0';
fd_dcr4_force_cp_sync1 <= '0'; fd_dcr4_force_dly_sync1 <= '0';
fd_dcr4_force_cp_sync2 <= '0'; fd_dcr4_force_dly_sync2 <= '0';
elsif rising_edge(clk_ref_i) then elsif rising_edge(clk_ref_i) then
fd_dcr4_force_cp_sync0 <= fd_dcr4_force_cp_int; fd_dcr4_force_dly_sync0 <= fd_dcr4_force_dly_int;
fd_dcr4_force_cp_sync1 <= fd_dcr4_force_cp_sync0; fd_dcr4_force_dly_sync1 <= fd_dcr4_force_dly_sync0;
fd_dcr4_force_cp_sync2 <= fd_dcr4_force_cp_sync1; fd_dcr4_force_dly_sync2 <= fd_dcr4_force_dly_sync1;
regs_o.dcr4_force_cp_o <= fd_dcr4_force_cp_sync2 and (not fd_dcr4_force_cp_sync1); regs_o.dcr4_force_dly_o <= fd_dcr4_force_dly_sync2 and (not fd_dcr4_force_dly_sync1);
end if; end if;
end process; end process;
......
-- -*- Mode: LUA; tab-width: 2 -*- -- -*- Mode: LUA; tab-width: 2 -*-
peripheral { peripheral {
name = "Fine Delay Wishbone slave"; name = "Fine Delay Wishbone slave";
hdl_entity = "fd_wishbone_slave"; hdl_entity = "fd_wishbone_slave";
prefix = "fd"; prefix = "fd";
reg { reg {
name = "Reset Register"; name = "Reset Register";
prefix = "RSTR"; prefix = "RSTR";
field { field {
name = "Reset trigger"; name = "Reset trigger";
description = "Writing 0xDEADBEEF into this register will trigger a full reset of the \ fine delay core"; description = "Writing 0xDEADBEEF into this register will trigger a full reset of the \ fine delay core";
type = PASS_THROUGH; type = PASS_THROUGH;
size = 32; size = 32;
}; };
}; };
reg { reg {
name = "ID Register"; name = "ID Register";
...@@ -33,32 +34,32 @@ peripheral { ...@@ -33,32 +34,32 @@ peripheral {
}; };
reg { reg {
name = "Global Control Register"; name = "Global Control Register";
prefix = "GCR"; prefix = "GCR";
field { field {
clock = "clk_ref_i"; clock = "clk_ref_i";
name = "Bypass delay block"; name = "Bypass delay block";
prefix = "BYPASS"; prefix = "BYPASS";
description = "0: normal operation (fine-delay)\ description = "0: normal operation (fine-delay)\
1: TDC and delay lines controlled from the host"; 1: TDC and delay lines controlled from the host";
type = BIT; type = BIT;
access_bus = READ_WRITE; access_bus = READ_WRITE;
access_dev = READ_ONLY; access_dev = READ_ONLY;
}; };
field { field {
clock = "clk_ref_i"; clock = "clk_ref_i";
name = "Enable trigger input"; name = "Enable trigger input";
prefix = "INPUT_EN"; prefix = "INPUT_EN";
description = ""; description = "";
type = BIT; type = BIT;
access_bus = READ_WRITE; access_bus = READ_WRITE;
access_dev = READ_ONLY; access_dev = READ_ONLY;
}; };
field { field {
name = "Internal Counter Sync"; name = "Internal Counter Sync";
...@@ -85,123 +86,154 @@ peripheral { ...@@ -85,123 +86,154 @@ peripheral {
prefix = "WR_READY"; prefix = "WR_READY";
type = BIT; type = BIT;
clock = "clk_ref_i"; clock = "clk_ref_i";
access_bus = READ_ONLY; access_bus = READ_ONLY;
access_dev = WRITE_ONLY; access_dev = WRITE_ONLY;
}; };
}; };
reg { reg {
name = "TDC Address/Data Register"; name = "TDC Address/Data Register";
prefix = "TAR"; prefix = "TAR";
field { field {
clock = "clk_ref_i"; clock = "clk_ref_i";
name = "DATA"; name = "DATA";
prefix = "DATA"; prefix = "DATA";
type = SLV; type = SLV;
size = 28; size = 28;
access_bus = READ_WRITE; access_bus = READ_WRITE;
access_dev = READ_WRITE; access_dev = READ_WRITE;
load = LOAD_EXT; load = LOAD_EXT;
}; };
field { field {
clock = "clk_ref_i"; clock = "clk_ref_i";
name = "ADDR"; name = "ADDR";
prefix = "ADDR"; prefix = "ADDR";
type = SLV; type = SLV;
size = 4; size = 4;
access_bus = READ_WRITE; access_bus = READ_WRITE;
access_dev = READ_ONLY; access_dev = READ_ONLY;
}; };
}; };
reg { reg {
name = "TDC control/status reg"; name = "TDC control/status reg";
prefix = "TDCSR"; prefix = "TDCSR";
field { field {
name = "Start TDC write"; name = "Start TDC write";
prefix = "WRITE"; prefix = "WRITE";
clock = "clk_ref_i"; clock = "clk_ref_i";
type = MONOSTABLE; type = MONOSTABLE;
}; };
field { field {
name = "Start TDC read"; name = "Start TDC read";
prefix = "READ"; prefix = "READ";
clock = "clk_ref_i"; clock = "clk_ref_i";
type = MONOSTABLE; type = MONOSTABLE;
}; };
field {
field { clock = "clk_ref_i";
clock = "clk_ref_i"; name = "Error flag";
name = "Error flag"; prefix = "ERR";
prefix = "ERR"; type = BIT;
type = BIT; access_bus = READ_ONLY;
access_bus = READ_ONLY; access_dev = WRITE_ONLY;
access_dev = WRITE_ONLY; };
};
field {
field { clock = "clk_ref_i";
clock = "clk_ref_i"; name = "Interrupt flag";
name = "Interrupt flag"; prefix = "INT";
prefix = "INT"; type = BIT;
type = BIT; access_bus = READ_ONLY;
access_bus = READ_ONLY; access_dev = WRITE_ONLY;
access_dev = WRITE_ONLY; };
};
field {
field { clock = "clk_ref_i";
clock = "clk_ref_i"; name = "Load flag";
name = "Load flag"; prefix = "LOAD";
prefix = "LOAD"; type = BIT;
type = BIT; access_bus = READ_ONLY;
access_bus = READ_ONLY; access_dev = WRITE_ONLY;
access_dev = WRITE_ONLY; };
};
field {
field { clock = "clk_ref_i";
clock = "clk_ref_i"; name = "Empty flag";
name = "Empty flag"; prefix = "EMPTY";
prefix = "EMPTY"; type = BIT;
type = BIT; access_bus = READ_ONLY;
access_bus = READ_ONLY; access_dev = WRITE_ONLY;
access_dev = WRITE_ONLY; };
};
field {
field { clock = "clk_ref_i";
clock = "clk_ref_i"; name = "Start enable";
name = "Start disable"; prefix = "STOP_EN";
prefix = "START_DIS"; type = MONOSTABLE;
type = MONOSTABLE; };
};
field {
field { clock = "clk_ref_i";
clock = "clk_ref_i"; name = "Start disable";
name = "Start enable"; prefix = "START_DIS";
prefix = "START_EN"; type = MONOSTABLE;
type = MONOSTABLE; };
};
field {
field { clock = "clk_ref_i";
clock = "clk_ref_i"; name = "Stop enable";
name = "Start disable"; prefix = "START_EN";
prefix = "STOP_DIS"; type = MONOSTABLE;
type = MONOSTABLE; };
};
field {
field { clock = "clk_ref_i";
clock = "clk_ref_i"; name = "Stop disable";
name = "Start enable"; prefix = "STOP_DIS";
prefix = "STOP_EN"; type = MONOSTABLE;
type = MONOSTABLE; };
};
field {
}; clock = "clk_ref_i";
name = "write 1: Pulse the Alutrigger line";
prefix = "ALUTRIG";
type = MONOSTABLE;
};
};
reg {
prefix = "CALR";
name = "Calibration register";
field {
clock = "clk_ref_i";
name = "Triggers calibration pulses";
description = "write 1: Generates synchronous calibration pulses the channels selected in PSEL field.";
prefix = "CAL_PULSE";
type = MONOSTABLE;
};
field {
clock = "clk_ref_i";
name = "Enable pulse generation";
description = "1: enable generation of calibration pulses on the output corresponding to the written bit\
0: disable generation of these pulses";
prefix = "PSEL";
type = SLV;
size = 4;
access_bus = READ_WRITE;
access_dev = READ_ONLY;
};
};
reg { reg {
...@@ -216,85 +248,85 @@ peripheral { ...@@ -216,85 +248,85 @@ peripheral {
clock = "clk_ref_i"; clock = "clk_ref_i";
access_bus = READ_WRITE; access_bus = READ_WRITE;
access_dev = READ_ONLY; access_dev = READ_ONLY;
}; };
}; };
reg { reg {
prefix = "ATMCR"; prefix = "ATMCR";
name = "Acam Timestamp Merging Control Register"; name = "Acam Timestamp Merging Control Register";
description = "Register controlling the merging of the fine timestamps prouced by Acam with the coarse timestamps gatheret by the FPGA. These values are hardware-specific. The register should be loaded with the paramete 'ATMCR' from the mezzanine's configuration EEPROM"; description = "Register controlling the merging of the fine timestamps prouced by Acam with the coarse timestamps gatheret by the FPGA. These values are hardware-specific. The register should be loaded with the paramete 'ATMCR' from the mezzanine's configuration EEPROM";
field { field {
name = "Wraparound Coarse Threshold"; name = "Wraparound Coarse Threshold";
prefix = "C_THR"; prefix = "C_THR";
size = 4; size = 4;
type = SLV; type = SLV;
clock = "clk_ref_i"; clock = "clk_ref_i";
access_bus = READ_WRITE; access_bus = READ_WRITE;
access_dev = READ_ONLY; access_dev = READ_ONLY;
}; };
field { field {
name = "Wraparound Fine Threshold"; name = "Wraparound Fine Threshold";
prefix = "F_THR"; prefix = "F_THR";
size = 23; size = 23;
type = SLV; type = SLV;
clock = "clk_ref_i"; clock = "clk_ref_i";
access_bus = READ_WRITE; access_bus = READ_WRITE;
access_dev = READ_ONLY; access_dev = READ_ONLY;
}; };
}; };
reg { reg {
prefix = "ASOR"; prefix = "ASOR";
name = "Acam Start Offset Register"; name = "Acam Start Offset Register";
description = ""; description = "";
field { field {
name = "Start Offset"; name = "Start Offset";
prefix = "OFFSET"; prefix = "OFFSET";
size = 23; size = 23;
type = SLV; type = SLV;
clock = "clk_ref_i"; clock = "clk_ref_i";
access_bus = READ_WRITE; access_bus = READ_WRITE;
access_dev = READ_ONLY; access_dev = READ_ONLY;
}; };
}; };
reg { reg {
name = "Raw Input Events Counter Register "; name = "Raw Input Events Counter Register ";
prefix = "IECRAW"; prefix = "IECRAW";
field { field {
name = "Number of raw events"; name = "Number of raw events";
description = "Number of all input pulses detected by the timestamper"; description = "Number of all input pulses detected by the timestamper";
type = SLV; type = SLV;
size = 32; size = 32;
clock = "clk_ref_i"; clock = "clk_ref_i";
access_bus = READ_ONLY; access_bus = READ_ONLY;
access_dev= WRITE_ONLY; access_dev= WRITE_ONLY;
}; };
}; };
reg { reg {
name = "Tagged Input Events Counter Register "; name = "Tagged Input Events Counter Register ";
prefix = "IECTAG"; prefix = "IECTAG";
field { field {
name = "Number of tagged events"; name = "Number of tagged events";
description = "Number of all input pulses which passed the width checks and have produced valid timestamps."; description = "Number of all input pulses which passed the width checks and have produced valid timestamps.";
type = SLV; type = SLV;
size = 32; size = 32;
clock = "clk_ref_i"; clock = "clk_ref_i";
access_bus = READ_ONLY; access_bus = READ_ONLY;
access_dev= WRITE_ONLY; access_dev= WRITE_ONLY;
}; };
}; };
reg { reg {
name = "Input Event Processing Delay Register"; name = "Input Event Processing Delay Register";
prefix = "IEPD"; prefix = "IEPD";
field { field {
name = "Reset stats"; name = "Reset stats";
...@@ -302,20 +334,20 @@ peripheral { ...@@ -302,20 +334,20 @@ peripheral {
description = "Write 1: resets the delay/pulse count counters (IECRAW, IECTAG and IEPD_WDELAY)\ description = "Write 1: resets the delay/pulse count counters (IECRAW, IECTAG and IEPD_WDELAY)\
write 0: no effect"; write 0: no effect";
type = MONOSTABLE; type = MONOSTABLE;
clock = "clk_ref_i"; clock = "clk_ref_i";
}; };
field { field {
name = "Processing delay"; name = "Processing delay";
description = "Worst-case delay between the input event and the generation of its timestamp. Expressed as a number of 125 MHz clock cycles."; description = "Worst-case delay between the input event and the generation of its timestamp. Expressed as a number of 125 MHz clock cycles.";
prefix = "PDELAY"; prefix = "PDELAY";
type = SLV; type = SLV;
size = 8; size = 8;
clock = "clk_ref_i"; clock = "clk_ref_i";
access_bus = READ_ONLY; access_bus = READ_ONLY;
access_dev = WRITE_ONLY; access_dev = WRITE_ONLY;
}; };
}; };
-- reg { -- reg {
-- name = "SPI Control Register"; -- name = "SPI Control Register";
...@@ -332,7 +364,7 @@ peripheral { ...@@ -332,7 +364,7 @@ peripheral {
-- access_dev = READ_WRITE; -- access_dev = READ_WRITE;
-- access_bus = READ_WRITE; -- access_bus = READ_WRITE;
-- }; -- };
-- field { -- field {
-- name = "Select DAC"; -- name = "Select DAC";
-- prefix = "SEL_DAC"; -- prefix = "SEL_DAC";
...@@ -405,7 +437,7 @@ peripheral { ...@@ -405,7 +437,7 @@ peripheral {
}; };
reg { reg {
name = "Reference Clock Frequency Register"; name = "Reference Clock Frequency Register";
prefix = "RCFR"; prefix = "RCFR";
description = "Current frequency of the reference clock. Used for testing/calibration purposes."; description = "Current frequency of the reference clock. Used for testing/calibration purposes.";
...@@ -420,55 +452,55 @@ peripheral { ...@@ -420,55 +452,55 @@ peripheral {
} }
}; };
reg { reg {
name = "Timestamp Buffer Control Register"; name = "Timestamp Buffer Control Register";
prefix = "TSBCR"; prefix = "TSBCR";
field { field {
name = "Buffer enable"; name = "Buffer enable";
prefix = "ENABLE"; prefix = "ENABLE";
type = BIT; type = BIT;
access_bus = READ_WRITE; access_bus = READ_WRITE;
access_dev = READ_ONLY; access_dev = READ_ONLY;
}; };
field { field {
name = "Buffer purge"; name = "Buffer purge";
prefix = "PURGE"; prefix = "PURGE";
type = MONOSTABLE; type = MONOSTABLE;
}; };
field { field {
name = "Reset TS Sequence Number"; name = "Reset TS Sequence Number";
prefix = "RST_SEQ"; prefix = "RST_SEQ";
clock = "clk_ref_i"; clock = "clk_ref_i";
type = MONOSTABLE; type = MONOSTABLE;
}; };
field { field {
name = "Buffer full"; name = "Buffer full";
prefix = "FULL"; prefix = "FULL";
type = BIT; type = BIT;
access_bus = READ_ONLY; access_bus = READ_ONLY;
access_dev = WRITE_ONLY; access_dev = WRITE_ONLY;
}; };
field { field {
name = "Buffer empty"; name = "Buffer empty";
prefix = "EMPTY"; prefix = "EMPTY";
type = BIT; type = BIT;
access_bus = READ_ONLY; access_bus = READ_ONLY;
access_dev = WRITE_ONLY; access_dev = WRITE_ONLY;
}; };
}; };
irq { irq {
name = "TS Buffer not empty"; name = "TS Buffer not empty";
trigger = LEVEL_0; trigger = LEVEL_0;
prefix = "ts_buf_notempty"; prefix = "ts_buf_notempty";
}; };
reg { reg {
name = "Timestamp Buffer Readout UTC Register"; name = "Timestamp Buffer Readout UTC Register";
...@@ -479,7 +511,7 @@ peripheral { ...@@ -479,7 +511,7 @@ peripheral {
size = 32; size = 32;
type = SLV; type = SLV;
access_bus = READ_ONLY; access_bus = READ_ONLY;
access_dev = WRITE_ONLY; access_dev = WRITE_ONLY;
}; };
}; };
...@@ -492,60 +524,60 @@ peripheral { ...@@ -492,60 +524,60 @@ peripheral {
size = 28; size = 28;
type = SLV; type = SLV;
access_bus = READ_ONLY; access_bus = READ_ONLY;
access_dev = WRITE_ONLY; access_dev = WRITE_ONLY;
}; };
}; };
reg { reg {
name = "Timestamp Buffer Readout Fine / Seq ID Register"; name = "Timestamp Buffer Readout Fine / Seq ID Register";
prefix = "TSBR_FID"; prefix = "TSBR_FID";
field { field {
name = "Fine Value [in phase units]"; name = "Fine Value [in phase units]";
prefix = "FINE"; prefix = "FINE";
size = 12; size = 12;
type = SLV; type = SLV;
access_bus = READ_ONLY; access_bus = READ_ONLY;
access_dev = WRITE_ONLY; access_dev = WRITE_ONLY;
}; };
field { field {
name = "Timestamp Sequence ID"; name = "Timestamp Sequence ID";
prefix = "SEQID"; prefix = "SEQID";
align = 16; align = 16;
size = 16; size = 16;
type = SLV; type = SLV;
access_bus = READ_ONLY; access_bus = READ_ONLY;
access_dev = WRITE_ONLY; access_dev = WRITE_ONLY;
ack_read = "advance_rbuf_o"; ack_read = "advance_rbuf_o";
}; };
}; };
fifo_reg { fifo_reg {
direction = CORE_TO_BUS; direction = CORE_TO_BUS;
size = 256; size = 256;
prefix = "RAWFIFO"; prefix = "RAWFIFO";
name = "RAW FIFO"; name = "RAW FIFO";
flags_bus = {FIFO_EMPTY}; flags_bus = {FIFO_EMPTY};
flags_dev = {FIFO_FULL}; flags_dev = {FIFO_FULL};
clock = "clk_ref_i"; clock = "clk_ref_i";
field { field {
name = "RawFrac"; name = "RawFrac";
prefix = "FRAC"; prefix = "FRAC";
size = 28; size = 28;
type = SLV; type = SLV;
}; };
field { field {
name = "RawCoarse"; name = "RawCoarse";
prefix = "COARSE"; prefix = "COARSE";
size = 28; size = 28;
type = SLV; type = SLV;
}; };
}; };
}; };
channel_template = { channel_template = {
...@@ -587,176 +619,176 @@ channel_template = { ...@@ -587,176 +619,176 @@ channel_template = {
Note that the time written to [U/C/F]START must be bigger by at least 200 ns than the value of the UTC counter at the moment of arming the pulse generator. In practice, the safety margin should be much bigger, as it's affected by the non-determinism of the operating system."; Note that the time written to [U/C/F]START must be bigger by at least 200 ns than the value of the UTC counter at the moment of arming the pulse generator. In practice, the safety margin should be much bigger, as it's affected by the non-determinism of the operating system.";
type = BIT; type = BIT;
access_bus = READ_WRITE; access_bus = READ_WRITE;
access_dev = READ_WRITE; access_dev = READ_WRITE;
load = LOAD_EXT; load = LOAD_EXT;
clock = "clk_ref_i"; clock = "clk_ref_i";
}; };
field { field {
name = "Pulse generator triggered"; name = "Pulse generator triggered";
prefix = "PG_TRIG"; prefix = "PG_TRIG";
description = "read 1: pulse generator has been triggered and produced a pulse\ description = "read 1: pulse generator has been triggered and produced a pulse\
read 0: pulse generator is busy or hasn't triggered yet"; read 0: pulse generator is busy or hasn't triggered yet";
type = BIT; type = BIT;
clock = "clk_ref_i"; clock = "clk_ref_i";
access_bus = READ_ONLY; access_bus = READ_ONLY;
access_dev = WRITE_ONLY; access_dev = WRITE_ONLY;
}; };
field { field {
name = "Start Delay Update"; name = "Start Delay Update";
prefix = "UPDATE"; prefix = "UPDATE";
description = "write 1: Starts delay update procedure. The start and end times from [U/C/F][START/END] will be transferred in an atomic way to the internal delay/pulse generator registers\ description = "write 1: Starts delay update procedure. The start and end times from [U/C/F][START/END] will be transferred in an atomic way to the internal delay/pulse generator registers\
write 0: no effect."; write 0: no effect.";
type = MONOSTABLE; type = MONOSTABLE;
clock = "clk_ref_i"; clock = "clk_ref_i";
}; };
field { field {
name = "Delay Update Done"; name = "Delay Update Done";
prefix = "UPD_DONE"; prefix = "UPD_DONE";
description = "read 1: The delays from [U/C/F][START/END] have been loaded into internal registers\ description = "read 1: The delays from [U/C/F][START/END] have been loaded into internal registers\
read 0: update operation in progress"; read 0: update operation in progress";
clock = "clk_ref_i"; clock = "clk_ref_i";
type = BIT; type = BIT;
access_bus = READ_ONLY; access_bus = READ_ONLY;
access_dev = WRITE_ONLY; access_dev = WRITE_ONLY;
}; };
field { field {
name = "Force Calibration Pulse"; name = "Force Calibration Delay";
prefix = "FORCE_CP"; prefix = "FORCE_DLY";
description = "write 1: preloads the delay line with the contents of FRR register and produces a single-cycle (8ns) pulse at the beginning of the ACAM Start period. Used for self-calibration purposes\ description = "write 1: preloads the delay line with the contents of FRR register. Used for self-calibration purposes.\
write 0: no effect"; write 0: no effect";
clock = "clk_ref_i"; clock = "clk_ref_i";
type = MONOSTABLE; type = MONOSTABLE;
}; };
field { field {
name = "Output Polarity"; name = "Output Polarity";
prefix = "POL"; prefix = "POL";
description = "1: output is active HIGH\ description = "1: output is active HIGH\
0: output is active LOW"; 0: output is active LOW";
clock = "clk_ref_i"; clock = "clk_ref_i";
type = BIT; type = BIT;
access_bus = READ_WRITE; access_bus = READ_WRITE;
access_dev = READ_ONLY; access_dev = READ_ONLY;
}; };
}; };
reg { reg {
name = "Fine Range Register (channel %d)"; name = "Fine Range Register (channel %d)";
prefix = "FRR%d"; prefix = "FRR%d";
description = "Delay line tap setting at which the line generates an 8 ns (one cycle) longer delay than when set to 0."; description = "Delay line tap setting at which the line generates an 8 ns (one cycle) longer delay than when set to 0.";
field { field {
name = "Fine Range"; name = "Fine Range";
size = 10; size = 10;
type = SLV; type = SLV;
clock = "clk_ref_i"; clock = "clk_ref_i";
access_bus = READ_WRITE; access_bus = READ_WRITE;
access_dev = READ_ONLY; access_dev = READ_ONLY;
}; };
}; };
reg { reg {
name = "Pulse start time / offset (UTC part, channel %d)"; name = "Pulse start time / offset (UTC part, channel %d)";
prefix = "U_START%d"; prefix = "U_START%d";
description = "UTC part of the pulse start absolute time (when in PG mode) / offset from trigger (when in delay mode)."; description = "UTC part of the pulse start absolute time (when in PG mode) / offset from trigger (when in delay mode).";
field { field {
name = "UTC seconds"; name = "UTC seconds";
size = 32; size = 32;
type = SLV; type = SLV;
clock = "clk_ref_i"; clock = "clk_ref_i";
access_bus = READ_WRITE; access_bus = READ_WRITE;
access_dev = READ_ONLY; access_dev = READ_ONLY;
}; };
}; };
reg { reg {
name = "Pulse start time / offset (8 ns cycles, channel %d)"; name = "Pulse start time / offset (8 ns cycles, channel %d)";
prefix = "C_START%d"; prefix = "C_START%d";
description = "Sub-second part of the pulse start absolute time (when in PG mode) / offset from trigger (when in delay mode). Expressed as a number of 125 MHz clock cycles. Acceptable range: 0 to 124999999."; description = "Sub-second part of the pulse start absolute time (when in PG mode) / offset from trigger (when in delay mode). Expressed as a number of 125 MHz clock cycles. Acceptable range: 0 to 124999999.";
field { field {
name = "Refclk cycles"; name = "Refclk cycles";
size = 28; size = 28;
type = SLV; type = SLV;
clock = "clk_ref_i"; clock = "clk_ref_i";
access_bus = READ_WRITE; access_bus = READ_WRITE;
access_dev = READ_ONLY; access_dev = READ_ONLY;
}; };
}; };
reg { reg {
name = "Pulse start time / offset (sub-cycle fine part, channel %d)"; name = "Pulse start time / offset (sub-cycle fine part, channel %d)";
prefix = "F_START%d"; prefix = "F_START%d";
description = "Sub-clock cycle part of the pulse start absolute time (when in PG mode) / offset from trigger (when in delay mode). Scales linearly to <0..8 ns>: 0 = 0 ps, 4095 = 7999 ps."; description = "Sub-clock cycle part of the pulse start absolute time (when in PG mode) / offset from trigger (when in delay mode). Scales linearly to <0..8 ns>: 0 = 0 ps, 4095 = 7999 ps.";
field { field {
name = "Fractional part"; name = "Fractional part";
size = 12; size = 12;
type = SLV; type = SLV;
clock = "clk_ref_i"; clock = "clk_ref_i";
access_bus = READ_WRITE; access_bus = READ_WRITE;
access_dev = READ_ONLY; access_dev = READ_ONLY;
}; };
}; };
reg { reg {
name = "Pulse end time / offset (UTC part, channel %d)"; name = "Pulse end time / offset (UTC part, channel %d)";
prefix = "U_END%d"; prefix = "U_END%d";
description = "UTC part of the pulse end absolute time (when in PG mode) / offset from trigger (when in delay mode)."; description = "UTC part of the pulse end absolute time (when in PG mode) / offset from trigger (when in delay mode).";
field { field {
name = "UTC seconds"; name = "UTC seconds";
size = 32; size = 32;
type = SLV; type = SLV;
clock = "clk_ref_i"; clock = "clk_ref_i";
access_bus = READ_WRITE; access_bus = READ_WRITE;
access_dev = READ_ONLY; access_dev = READ_ONLY;
}; };
}; };
reg { reg {
name = "Pulse end time / offset (8 ns cycles, channel %d)"; name = "Pulse end time / offset (8 ns cycles, channel %d)";
prefix = "C_END%d"; prefix = "C_END%d";
description = "Sub-second part of the pulse end absolute time (when in PG mode) / offset from trigger (when in delay mode). Expressed as a number of 125 MHz clock cycles. Acceptable range: 0 to 124999999."; description = "Sub-second part of the pulse end absolute time (when in PG mode) / offset from trigger (when in delay mode). Expressed as a number of 125 MHz clock cycles. Acceptable range: 0 to 124999999.";
field { field {
name = "Refclk cycles"; name = "Refclk cycles";
size = 28; size = 28;
type = SLV; type = SLV;
clock = "clk_ref_i"; clock = "clk_ref_i";
access_bus = READ_WRITE; access_bus = READ_WRITE;
access_dev = READ_ONLY; access_dev = READ_ONLY;
}; };
}; };
reg { reg {
name = "Pulse end time / offset (sub-cycle fine part, channel %d)"; name = "Pulse end time / offset (sub-cycle fine part, channel %d)";
prefix = "F_END%d"; prefix = "F_END%d";
description = "Sub-clock cycle part of the pulse end absolute time (when in PG mode) / offset from trigger (when in delay mode). Scales linearly to <0..8 ns>: 0 = 0 ps, 4095 = 7999 ps."; description = "Sub-clock cycle part of the pulse end absolute time (when in PG mode) / offset from trigger (when in delay mode). Scales linearly to <0..8 ns>: 0 = 0 ps, 4095 = 7999 ps.";
field { field {
name = "Fractional part"; name = "Fractional part";
size = 12; size = 12;
type = SLV; type = SLV;
clock = "clk_ref_i"; clock = "clk_ref_i";
access_bus = READ_WRITE; access_bus = READ_WRITE;
access_dev = READ_ONLY; access_dev = READ_ONLY;
}; };
}; };
}; };
...@@ -769,10 +801,10 @@ function generate_channels(n) ...@@ -769,10 +801,10 @@ function generate_channels(n)
foreach_reg({TYPE_REG}, function(r) foreach_reg({TYPE_REG}, function(r)
r.name = string.format(r.name, i); r.name = string.format(r.name, i);
r.prefix = string.format(r.prefix, i); r.prefix = string.format(r.prefix, i);
print(r.name) print(r.name)
end, T); end, T);
table_join(periph, T); table_join(periph, T);
end end
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment