Commit ad87833c authored by Marek Gumiński's avatar Marek Gumiński

Fixed submodules versions.

Modified HDL so that PLL connectec to CLK2 may be reset. Test03 should work reliably.
Added some diagnostics and error handling in acq.sh.
parent 99babf85
etherbone-core @ 2fcdbb3e
Subproject commit c1e676dc9d35028910c50431d70328e522396c89 Subproject commit 2fcdbb3e2a141cabd45eb2c9debd49b9c0b56af9
general-cores @ 12c045eb
Subproject commit 97bc71975252b32cf8a47ba895f7010734f015e5 Subproject commit 12c045ebd49033d17f68b84cb6dec73a144f78cf
gn4124-core @ 5fd1a8b1
Subproject commit ffea5479190c09938cbba9b7076953c5c41645f3 Subproject commit 5fd1a8b14063464eef714be14d79d36550080cb4
wr-cores @ 87ad0d56
Subproject commit 598a2f6ccbf1ac937ff589c0797cd2a487306efe Subproject commit 87ad0d563bae8eaf1ce5fddc646262d5bc234544
...@@ -83,6 +83,8 @@ entity dds_core is ...@@ -83,6 +83,8 @@ entity dds_core is
dac_dds_load_o : out std_logic; dac_dds_load_o : out std_logic;
dac_dds_data_o : out std_logic_vector( 16-1 downto 0 ); dac_dds_data_o : out std_logic_vector( 16-1 downto 0 );
pll_clk2_lock_i : in std_logic;
pll_clk2_rst_o : out std_logic;
eeprom_scl_i : in std_logic; eeprom_scl_i : in std_logic;
eeprom_sda_i : in std_logic; eeprom_sda_i : in std_logic;
...@@ -402,6 +404,8 @@ architecture behavioral of dds_core is ...@@ -402,6 +404,8 @@ architecture behavioral of dds_core is
signal adc_trigger : std_logic; signal adc_trigger : std_logic;
signal rst_freq_meters : std_logic;
signal rst_n_freq_meters : std_logic;
function f_signed_multiply(a : std_logic_vector; b : std_logic_vector; shift : integer; output_length : integer) function f_signed_multiply(a : std_logic_vector; b : std_logic_vector; shift : integer; output_length : integer)
...@@ -804,8 +808,13 @@ begin -- behavioral ...@@ -804,8 +808,13 @@ begin -- behavioral
); );
pll_clk2_rst_o <= regs_out.fpgapll_clk2_ctrl_rst_o;
regs_in_local.fpgapll_clk2_stat_lock_i <= pll_clk2_lock_i;
swrst <= regs_out.rstr_sw_rst_o or (not rst_n_i); swrst <= regs_out.rstr_sw_rst_o or (not rst_n_i);
-- rst_freq_meters <= regs_out.rstr_freq_res_o or (not rst_n_i);
-- rst_n_freq_meters <= not rst_freq_meters;
swrst_o <= swrst; swrst_o <= swrst;
swrst_n <= not swrst; swrst_n <= not swrst;
fpll_reset_o <= regs_out.rstr_pll_rst_o or (not rst_n_i); fpll_reset_o <= regs_out.rstr_pll_rst_o or (not rst_n_i);
......
This diff is collapsed.
...@@ -356,6 +356,16 @@ peripheral { ...@@ -356,6 +356,16 @@ peripheral {
access_dev = READ_ONLY; access_dev = READ_ONLY;
}; };
field {
name = "Freqency meters reset";
prefix = "FREQ_RES";
type = BIT;
access_bus = READ_WRITE;
access_dev = READ_ONLY;
};
}; };
reg { reg {
...@@ -643,6 +653,32 @@ peripheral { ...@@ -643,6 +653,32 @@ peripheral {
}; };
}; };
reg {
name = "FPGA PLL CLK2 Control";
prefix = "FPGAPLL_CLK2_CTRL";
field {
name = "Reset";
prefix = "RST";
access_bus = READ_WRITE;
access_dev = READ_ONLY;
type = BIT;
};
};
reg {
name = "FPGA PLL CLK2 Status";
prefix = "FPGAPLL_CLK2_STAT";
field {
name = "Lock detect";
prefix = "LOCK";
access_bus = READ_ONLY;
access_dev = WRITE_ONLY;
type = BIT;
};
};
reg { reg {
name = "FPGA Frequency measurement of frequecy from DAC"; name = "FPGA Frequency measurement of frequecy from DAC";
prefix = "Clk0"; prefix = "Clk0";
......
--------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------
-- Title : Wishbone slave core for DDS RF distribution WB Slave -- Title : Wishbone slave core for DDS RF distribution WB Slave
--------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------
-- File : /home/gumas/pts/test/fmcdac600m12b1chadds//gateware/rtl/dds_wbgen2_pkg.vhd -- File : /home/gumas/tmp/pts/test/fmcdac600m12b1chadds//gateware/rtl/dds_wbgen2_pkg.vhd
-- Author : auto-generated by wbgen2 from /home/gumas/pts/test/fmcdac600m12b1chadds//gateware/rtl/dds_wb_slave.wb -- Author : auto-generated by wbgen2 from /home/gumas/tmp/pts/test/fmcdac600m12b1chadds//gateware/rtl/dds_wb_slave.wb
-- Created : Tue Aug 11 14:03:44 2015 -- Created : Tue Feb 2 09:40:18 2016
-- Standard : VHDL'87 -- Standard : VHDL'87
--------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------
-- THIS FILE WAS GENERATED BY wbgen2 FROM SOURCE FILE /home/gumas/pts/test/fmcdac600m12b1chadds//gateware/rtl/dds_wb_slave.wb -- THIS FILE WAS GENERATED BY wbgen2 FROM SOURCE FILE /home/gumas/tmp/pts/test/fmcdac600m12b1chadds//gateware/rtl/dds_wb_slave.wb
-- DO NOT HAND-EDIT UNLESS IT'S ABSOLUTELY NECESSARY! -- DO NOT HAND-EDIT UNLESS IT'S ABSOLUTELY NECESSARY!
--------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------
...@@ -45,6 +45,7 @@ package dds_wbgen2_pkg is ...@@ -45,6 +45,7 @@ package dds_wbgen2_pkg is
pi_data_i : std_logic_vector(15 downto 0); pi_data_i : std_logic_vector(15 downto 0);
gw_id_i : std_logic_vector(31 downto 0); gw_id_i : std_logic_vector(31 downto 0);
fpgactrl_mainpll_i : std_logic; fpgactrl_mainpll_i : std_logic;
fpgapll_clk2_stat_lock_i : std_logic;
clk0_freq_i : std_logic_vector(31 downto 0); clk0_freq_i : std_logic_vector(31 downto 0);
clk1_freq_i : std_logic_vector(31 downto 0); clk1_freq_i : std_logic_vector(31 downto 0);
clk2_freq_i : std_logic_vector(31 downto 0); clk2_freq_i : std_logic_vector(31 downto 0);
...@@ -79,6 +80,7 @@ package dds_wbgen2_pkg is ...@@ -79,6 +80,7 @@ package dds_wbgen2_pkg is
pi_data_i => (others => '0'), pi_data_i => (others => '0'),
gw_id_i => (others => '0'), gw_id_i => (others => '0'),
fpgactrl_mainpll_i => '0', fpgactrl_mainpll_i => '0',
fpgapll_clk2_stat_lock_i => '0',
clk0_freq_i => (others => '0'), clk0_freq_i => (others => '0'),
clk1_freq_i => (others => '0'), clk1_freq_i => (others => '0'),
clk2_freq_i => (others => '0'), clk2_freq_i => (others => '0'),
...@@ -121,6 +123,7 @@ package dds_wbgen2_pkg is ...@@ -121,6 +123,7 @@ package dds_wbgen2_pkg is
gain_o : std_logic_vector(15 downto 0); gain_o : std_logic_vector(15 downto 0);
rstr_pll_rst_o : std_logic; rstr_pll_rst_o : std_logic;
rstr_sw_rst_o : std_logic; rstr_sw_rst_o : std_logic;
rstr_freq_res_o : std_logic;
i2cr_scl_out_o : std_logic; i2cr_scl_out_o : std_logic;
i2cr_sda_out_o : std_logic; i2cr_sda_out_o : std_logic;
pir_kp_o : std_logic_vector(15 downto 0); pir_kp_o : std_logic_vector(15 downto 0);
...@@ -137,6 +140,7 @@ package dds_wbgen2_pkg is ...@@ -137,6 +140,7 @@ package dds_wbgen2_pkg is
test_comm_reg_o : std_logic_vector(15 downto 0); test_comm_reg_o : std_logic_vector(15 downto 0);
test_comm_led_r_o : std_logic; test_comm_led_r_o : std_logic;
test_comm_led_g_o : std_logic; test_comm_led_g_o : std_logic;
fpgapll_clk2_ctrl_rst_o : std_logic;
oscdac_data_o : std_logic_vector(15 downto 0); oscdac_data_o : std_logic_vector(15 downto 0);
oscdac_load_o : std_logic; oscdac_load_o : std_logic;
adcinterface_source_o : std_logic; adcinterface_source_o : std_logic;
...@@ -178,6 +182,7 @@ package dds_wbgen2_pkg is ...@@ -178,6 +182,7 @@ package dds_wbgen2_pkg is
gain_o => (others => '0'), gain_o => (others => '0'),
rstr_pll_rst_o => '0', rstr_pll_rst_o => '0',
rstr_sw_rst_o => '0', rstr_sw_rst_o => '0',
rstr_freq_res_o => '0',
i2cr_scl_out_o => '0', i2cr_scl_out_o => '0',
i2cr_sda_out_o => '0', i2cr_sda_out_o => '0',
pir_kp_o => (others => '0'), pir_kp_o => (others => '0'),
...@@ -194,6 +199,7 @@ package dds_wbgen2_pkg is ...@@ -194,6 +199,7 @@ package dds_wbgen2_pkg is
test_comm_reg_o => (others => '0'), test_comm_reg_o => (others => '0'),
test_comm_led_r_o => '0', test_comm_led_r_o => '0',
test_comm_led_g_o => '0', test_comm_led_g_o => '0',
fpgapll_clk2_ctrl_rst_o => '0',
oscdac_data_o => (others => '0'), oscdac_data_o => (others => '0'),
oscdac_load_o => '0', oscdac_load_o => '0',
adcinterface_source_o => '0', adcinterface_source_o => '0',
...@@ -256,6 +262,7 @@ tmp.pi_wr_req_i := f_x_to_zero(left.pi_wr_req_i) or f_x_to_zero(right.pi_wr_req_ ...@@ -256,6 +262,7 @@ tmp.pi_wr_req_i := f_x_to_zero(left.pi_wr_req_i) or f_x_to_zero(right.pi_wr_req_
tmp.pi_data_i := f_x_to_zero(left.pi_data_i) or f_x_to_zero(right.pi_data_i); tmp.pi_data_i := f_x_to_zero(left.pi_data_i) or f_x_to_zero(right.pi_data_i);
tmp.gw_id_i := f_x_to_zero(left.gw_id_i) or f_x_to_zero(right.gw_id_i); tmp.gw_id_i := f_x_to_zero(left.gw_id_i) or f_x_to_zero(right.gw_id_i);
tmp.fpgactrl_mainpll_i := f_x_to_zero(left.fpgactrl_mainpll_i) or f_x_to_zero(right.fpgactrl_mainpll_i); tmp.fpgactrl_mainpll_i := f_x_to_zero(left.fpgactrl_mainpll_i) or f_x_to_zero(right.fpgactrl_mainpll_i);
tmp.fpgapll_clk2_stat_lock_i := f_x_to_zero(left.fpgapll_clk2_stat_lock_i) or f_x_to_zero(right.fpgapll_clk2_stat_lock_i);
tmp.clk0_freq_i := f_x_to_zero(left.clk0_freq_i) or f_x_to_zero(right.clk0_freq_i); tmp.clk0_freq_i := f_x_to_zero(left.clk0_freq_i) or f_x_to_zero(right.clk0_freq_i);
tmp.clk1_freq_i := f_x_to_zero(left.clk1_freq_i) or f_x_to_zero(right.clk1_freq_i); tmp.clk1_freq_i := f_x_to_zero(left.clk1_freq_i) or f_x_to_zero(right.clk1_freq_i);
tmp.clk2_freq_i := f_x_to_zero(left.clk2_freq_i) or f_x_to_zero(right.clk2_freq_i); tmp.clk2_freq_i := f_x_to_zero(left.clk2_freq_i) or f_x_to_zero(right.clk2_freq_i);
......
...@@ -519,9 +519,11 @@ NET "clk_125m_gtp_n_i" TNM_NET = "clk_125m_gtp_n_i"; ...@@ -519,9 +519,11 @@ NET "clk_125m_gtp_n_i" TNM_NET = "clk_125m_gtp_n_i";
TIMESPEC TS_clk_125m_gtp_n_i = PERIOD "clk_125m_gtp_n_i" 8 ns HIGH 50 %; TIMESPEC TS_clk_125m_gtp_n_i = PERIOD "clk_125m_gtp_n_i" 8 ns HIGH 50 %;
NET "dds_vcxo_clk_p_i" TNM_NET = "dds_vcxo_clk_p_i"; NET "dds_vcxo_clk_p_i" TNM_NET = "dds_vcxo_clk_p_i";
TIMESPEC TS_dds_vcxo_clk_p_i = PERIOD "dds_vcxo_clk_p_i" 8 ns HIGH 50 %; # TIMESPEC TS_dds_vcxo_clk_p_i = PERIOD "dds_vcxo_clk_p_i" 8 ns HIGH 50 %;
TIMESPEC TS_dds_vcxo_clk_p_i = PERIOD "dds_vcxo_clk_p_i" 20 ns HIGH 50 %;
NET "dds_vcxo_clk_n_i" TNM_NET = "dds_vcxo_clk_n_i"; NET "dds_vcxo_clk_n_i" TNM_NET = "dds_vcxo_clk_n_i";
TIMESPEC TS_dds_vcxo_clk_n_i = PERIOD "dds_vcxo_clk_n_i" 8 ns HIGH 50 %; # TIMESPEC TS_dds_vcxo_clk_n_i = PERIOD "dds_vcxo_clk_n_i" 8 ns HIGH 50 %;
TIMESPEC TS_dds_vcxo_clk_n_i = PERIOD "dds_vcxo_clk_n_i" 20 ns HIGH 50 %;
......
...@@ -192,6 +192,7 @@ entity spec_top is ...@@ -192,6 +192,7 @@ entity spec_top is
dds_adc_sdi_o : out std_logic; dds_adc_sdi_o : out std_logic;
-- Silabs clock gen control -- Silabs clock gen control
-- dds_si57x_oe_o : out std_logic; -- dds_si57x_oe_o : out std_logic;
-- dds_si57x_sda_b : inout std_logic; -- dds_si57x_sda_b : inout std_logic;
...@@ -361,6 +362,7 @@ architecture rtl of spec_top is ...@@ -361,6 +362,7 @@ architecture rtl of spec_top is
signal tm_dac_value : std_logic_vector(23 downto 0); signal tm_dac_value : std_logic_vector(23 downto 0);
signal tm_dac_wr : std_logic; signal tm_dac_wr : std_logic;
signal cnt_led : unsigned( 31 downto 0);
component dds_core component dds_core
port ( port (
...@@ -423,6 +425,8 @@ architecture rtl of spec_top is ...@@ -423,6 +425,8 @@ architecture rtl of spec_top is
eeprom_scl_o : out std_logic; eeprom_scl_o : out std_logic;
eeprom_sda_o : out std_logic; eeprom_sda_o : out std_logic;
pll_clk2_lock_i : in std_logic;
pll_clk2_rst_o : out std_logic;
-- si57x_oe_o : out std_logic; -- si57x_oe_o : out std_logic;
-- si57x_sda_b : inout std_logic; -- si57x_sda_b : inout std_logic;
...@@ -504,15 +508,12 @@ architecture rtl of spec_top is ...@@ -504,15 +508,12 @@ architecture rtl of spec_top is
signal pllout_clk_rf : std_logic; signal pllout_clk_rf : std_logic;
signal clk_rf : std_logic; signal clk_rf : std_logic;
signal pll_clk2_lock : std_logic;
signal pll_clk2_rst : std_logic;
begin -- rtl begin -- rtl
-- dds_pll_vcxo_function_o <= '1';
-- dds_pll_vcxo_cs_n_o <= '1';
-- new on dds v2
delay_data_out <= dds_delay_data; delay_data_out <= dds_delay_data;
delay_value_out <= dds_delay_value; delay_value_out <= dds_delay_value;
...@@ -594,18 +595,6 @@ begin -- rtl ...@@ -594,18 +595,6 @@ begin -- rtl
IB => trig_n_in -- Diff_n buffer input (connect directly to top-level port) IB => trig_n_in -- Diff_n buffer input (connect directly to top-level port)
); );
-- reseting:
-- 1) U_Reset_Generator generates reset some time after dmtd clk (allways running) locks
-- 2) After spec_reset_n go inactive U_AD9516_bootstrap program external PLL and sets pll_nit_done
-- 3) pll_init_done resets internal PLL cmp_sys_clk_pll
-- 4) cmp_sys_clk_pll tries to lock on clock from external d3s pll
-- 5) When done fpll_locked is risen
-- 6) Some delay is added (p_gen_reset)
-- 7) local_reset_n is lowered
-- 8) wrcore (and others) should start running
-- not a good solution
-- board will be dead unless powered on with correct setup
U_Reset_Generator : spec_reset_gen U_Reset_Generator : spec_reset_gen
port map ( port map (
...@@ -614,23 +603,7 @@ begin -- rtl ...@@ -614,23 +603,7 @@ begin -- rtl
rst_button_n_a_i => button1_i, rst_button_n_a_i => button1_i,
rst_n_o => spec_reset_n); rst_n_o => spec_reset_n);
-- this core loads pll chip configuration
-- configuration over SPI
-- dont know what configuration is it
-- U_AD9516_bootstrap : pll_init
-- generic map (
-- g_simulation => g_simulation)
-- port map (
-- clk_i => clk_dmtd,
-- rst_n_i => spec_reset_n,
-- done_o => pll_init_done,
-- cs_n_o => dds_pll_sys_cs_n,
-- mosi_o => dds_pll_sdio,
-- sck_o => dds_pll_sclk);
-- dds_pll_sys_sync_n <= '1';
-- dds_pll_sys_reset_n <= '1';
pll_init_done <= spec_reset_n; pll_init_done <= spec_reset_n;
dds_pll_sys_cs_n_o <= dds_pll_sys_cs_n; dds_pll_sys_cs_n_o <= dds_pll_sys_cs_n;
...@@ -743,41 +716,27 @@ begin -- rtl ...@@ -743,41 +716,27 @@ begin -- rtl
CLKIN => clk_20m_vcxo_buf); CLKIN => clk_20m_vcxo_buf);
cmp_rf_clk_pll : PLL_BASE cmp_rf_clk_pll : PLL_BASE
generic map ( generic map (
BANDWIDTH => "OPTIMIZED", BANDWIDTH => "OPTIMIZED",
CLK_FEEDBACK => "CLKFBOUT", CLK_FEEDBACK => "CLKFBOUT",
COMPENSATION => "INTERNAL", COMPENSATION => "INTERNAL",
DIVCLK_DIVIDE => 1, DIVCLK_DIVIDE => 1,
CLKFBOUT_MULT => 8, CLKFBOUT_MULT => 20,
CLKFBOUT_PHASE => 0.000, CLKFBOUT_PHASE => 0.000,
CLKOUT0_DIVIDE => 8, -- 125 MHz CLKOUT0_DIVIDE => 20,
CLKOUT0_PHASE => 0.000, CLKOUT0_PHASE => 0.000,
CLKOUT0_DUTY_CYCLE => 0.500, CLKOUT0_DUTY_CYCLE => 0.500,
CLKOUT1_DIVIDE => 8, -- 125 MHz
CLKOUT1_PHASE => 0.000,
CLKOUT1_DUTY_CYCLE => 0.500,
CLKOUT2_DIVIDE => 16,
CLKOUT2_PHASE => 0.000,
CLKOUT2_DUTY_CYCLE => 0.500,
CLKIN_PERIOD => 8.0, CLKIN_PERIOD => 8.0,
REF_JITTER => 0.016) REF_JITTER => 0.016)
port map ( port map (
CLKFBOUT => pllout_clk_fb_rf, CLKFBOUT => pllout_clk_fb_rf,
CLKOUT0 => pllout_clk_rf, CLKOUT0 => pllout_clk_rf,
CLKOUT1 => open, LOCKED => pll_clk2_lock,
CLKOUT2 => open, RST => pll_clk2_rst,
-- CLKOUT2 => open,
CLKOUT3 => open,
CLKOUT4 => open,
CLKOUT5 => open,
LOCKED => open,
RST => '0',
CLKFBIN => pllout_clk_fb_rf, CLKFBIN => pllout_clk_fb_rf,
CLKIN => dds_vcxo_clk); CLKIN => dds_vcxo_clk);
cmp_clk_rf_buf : BUFG cmp_clk_rf_buf : BUFG
port map ( port map (
O => clk_rf, O => clk_rf,
...@@ -793,12 +752,6 @@ begin -- rtl ...@@ -793,12 +752,6 @@ begin -- rtl
O => clk_sys, O => clk_sys,
I => pllout_clk_sys); I => pllout_clk_sys);
-- cmp_clk_dds_buf : BUFG
-- port map (
-- O => clk_dds,
-- I => pllout_clk_dds);
cmp_clk_ref_buf : BUFG cmp_clk_ref_buf : BUFG
port map ( port map (
O => clk_ref, O => clk_ref,
...@@ -903,7 +856,6 @@ begin -- rtl ...@@ -903,7 +856,6 @@ begin -- rtl
clk_sys_i => clk_sys, clk_sys_i => clk_sys,
clk_dds_i => clk_dds, clk_dds_i => clk_dds,
clk_ref_i => clk_ref, clk_ref_i => clk_ref,
-- clk_rf_i => dds_vcxo_clk,
clk_rf_i => clk_rf, clk_rf_i => clk_rf,
clk_dac_i => clk_dac, clk_dac_i => clk_dac,
rst_n_i => local_reset_n, rst_n_i => local_reset_n,
...@@ -959,6 +911,8 @@ begin -- rtl ...@@ -959,6 +911,8 @@ begin -- rtl
delay_len_o => dds_delay_len, delay_len_o => dds_delay_len,
trigger_i => dds_trigger, trigger_i => dds_trigger,
pll_clk2_lock_i => pll_clk2_lock,
pll_clk2_rst_o => pll_clk2_rst,
slave_i => cnx_master_out(c_SLAVE_DDS_CORE), slave_i => cnx_master_out(c_SLAVE_DDS_CORE),
slave_o => cnx_master_in(c_SLAVE_DDS_CORE), slave_o => cnx_master_in(c_SLAVE_DDS_CORE),
...@@ -973,6 +927,7 @@ begin -- rtl ...@@ -973,6 +927,7 @@ begin -- rtl
-- si57x_oe_o => dds_si57x_oe_o -- si57x_oe_o => dds_si57x_oe_o
); );
led_red <= leds( 1 ); led_red <= leds( 1 );
led_green <= leds( 0 ); led_green <= leds( 0 );
...@@ -1014,128 +969,6 @@ begin -- rtl ...@@ -1014,128 +969,6 @@ begin -- rtl
tm_utc <= ( others => '0' ); tm_utc <= ( others => '0' );
-- U_WR_CORE : xwr_core
-- generic map (
-- g_simulation => g_simulation,
-- g_phys_uart => true,
-- g_virtual_uart => true,
-- g_with_external_clock_input => true,
-- g_aux_clks => 0,
-- g_ep_rxbuf_size => 1024,
-- g_tx_runt_padding => true,
-- g_dpram_initf => "",
-- g_dpram_size => 131072/4,
-- g_interface_mode => PIPELINED,
-- g_address_granularity => BYTE)
-- port map (
-- clk_sys_i => clk_sys,
-- clk_dmtd_i => clk_dmtd,
-- clk_ref_i => clk_ref,
-- -- rst_n_i => local_reset_n,
-- rst_n_i => wr_reset_n,
-- dac_hpll_load_p1_o => dac_hpll_load_p1,
-- dac_hpll_data_o => dac_hpll_data,
-- dac_dpll_load_p1_o => dac_dpll_load_p1,
-- dac_dpll_data_o => dac_dpll_data,
-- phy_ref_clk_i => clk_ref,
-- phy_tx_data_o => phy_tx_data,
-- phy_tx_k_o => phy_tx_k,
-- phy_tx_disparity_i => phy_tx_disparity,
-- phy_tx_enc_err_i => phy_tx_enc_err,
-- phy_rx_data_i => phy_rx_data,
-- phy_rx_rbclk_i => phy_rx_rbclk,
-- phy_rx_k_i => phy_rx_k,
-- phy_rx_enc_err_i => phy_rx_enc_err,
-- phy_rx_bitslide_i => phy_rx_bitslide,
-- phy_rst_o => phy_rst,
-- phy_loopen_o => phy_loopen,
-- led_act_o => LED_RED,
-- led_link_o => LED_GREEN,
-- scl_o => wrc_scl_out,
-- scl_i => wrc_scl_in,
-- sda_o => wrc_sda_out,
-- sda_i => wrc_sda_in,
-- sfp_scl_o => sfp_scl_out,
-- sfp_scl_i => sfp_scl_in,
-- sfp_sda_o => sfp_sda_out,
-- sfp_sda_i => sfp_sda_in,
-- sfp_det_i => sfp_mod_def0_b,
-- uart_rxd_i => uart_rxd_i,
-- uart_txd_o => uart_txd_o,
-- owr_en_o => wrc_owr_en,
-- owr_i => wrc_owr_in,
-- slave_i => cnx_master_out(c_SLAVE_WRCORE),
-- slave_o => cnx_master_in(c_SLAVE_WRCORE),
-- wrf_src_o => wrc_true_src_out,
-- wrf_src_i => wrc_true_src_in,
-- wrf_snk_o => wrc_true_snk_out,
-- wrf_snk_i => wrc_true_snk_in,
-- tm_link_up_o => tm_link_up,
-- tm_time_valid_o => tm_time_valid,
-- tm_tai_o => tm_utc,
-- tm_cycles_o => tm_cycles,
-- btn1_i => '1',
-- btn2_i => '1',
-- rst_aux_n_o => open,
-- pps_p_o => pps
-- );
-- U_GTP : wr_gtp_phy_spartan6
-- generic map (
-- g_simulation => g_simulation,
-- g_enable_ch0 => 0,
-- g_enable_ch1 => 1)
-- port map (
-- gtp_clk_i => clk_ref,
-- ch0_ref_clk_i => clk_ref,
-- ch0_tx_data_i => x"00",
-- ch0_tx_k_i => '0',
-- ch0_tx_disparity_o => open,
-- ch0_tx_enc_err_o => open,
-- ch0_rx_rbclk_o => open,
-- ch0_rx_data_o => open,
-- ch0_rx_k_o => open,
-- ch0_rx_enc_err_o => open,
-- ch0_rx_bitslide_o => open,
-- ch0_rst_i => '1',
-- ch0_loopen_i => '0',
-- ch1_ref_clk_i => clk_ref,
-- ch1_tx_data_i => phy_tx_data,
-- ch1_tx_k_i => phy_tx_k,
-- ch1_tx_disparity_o => phy_tx_disparity,
-- ch1_tx_enc_err_o => phy_tx_enc_err,
-- ch1_rx_data_o => phy_rx_data,
-- ch1_rx_rbclk_o => phy_rx_rbclk,
-- ch1_rx_k_o => phy_rx_k,
-- ch1_rx_enc_err_o => phy_rx_enc_err,
-- ch1_rx_bitslide_o => phy_rx_bitslide,
-- ch1_rst_i => phy_rst,
-- ch1_loopen_i => '0', --phy_loopen,
-- pad_txn0_o => open,
-- pad_txp0_o => open,
-- pad_rxn0_i => '0',
-- pad_rxp0_i => '0',
-- pad_txn1_o => sfp_txn_o,
-- pad_txp1_o => sfp_txp_o,
-- pad_rxn1_i => sfp_rxn_i,
-- pad_rxp1_i => sfp_rxp_i);
U_DAC_ARB : spec_serial_dac_arb U_DAC_ARB : spec_serial_dac_arb
generic map ( generic map (
...@@ -1257,7 +1090,6 @@ begin -- rtl ...@@ -1257,7 +1090,6 @@ begin -- rtl
cs_data( 8 ) <= dac_din; cs_data( 8 ) <= dac_din;
cs_data( 9 ) <= dac_cs1_n; cs_data( 9 ) <= dac_cs1_n;
cs_data( 10 ) <= dac_cs2_n; cs_data( 10 ) <= dac_cs2_n;
cs_data( 11 ) <= phy_rst; cs_data( 11 ) <= phy_rst;
cs_data( 12 ) <= wr_reset_n; cs_data( 12 ) <= wr_reset_n;
......
#!/bin/bash #!/bin/bash
( (
prg=$0 ###########################################
if [ ! -e "$prg" ]; then ######### prepare environment #############
case $prg in ###########################################
(*/*) exit 1;;
(*) prg=$(command -v -- "$prg") || exit;; #finding top directory location
esac prg=$0
fi if [ ! -e "$prg" ]; then
dir=$( case $prg in
cd -P -- "$(dirname -- "$prg")" && pwd -P (*/*) exit 1;;
) || exit (*) prg=$(command -v -- "$prg") || exit;;
prg=$dir/$(basename -- "$prg") || exit esac
fi
top=`echo "$prg" | sed 's/fmcdac600m12b1chadds.*/fmcdac600m12b1chadds\//'` dir=$(
# echo $top cd -P -- "$(dirname -- "$prg")" && pwd -P
export PATH="\ ) || exit
$top/software/fmc-adc-100m14b4cha-sw/tools:\ prg=$dir/$(basename -- "$prg") || exit
$top/software/fmc-adc-100m14b4cha-sw/libtools:\
$PATH" # top directory location stored in variable
top=`echo "$prg" | sed 's/fmcdac600m12b1chadds.*/fmcdac600m12b1chadds\//'`
# echo $PATH
# format adc identifier
rm /tmp/data.bin id=`printf "%02x00" $3`
# echo "1"
tmp=`printf "%02x00" $3` # prepare adc interface path
adcpath="/sys/bus/zio/devices/adc-100m14b-$tmp/" adcpath="/sys/bus/zio/devices/adc-100m14b-$id/"
echo 1 > "${adcpath}/cset0/trigger/sw-trg-enable"
# echo 1 > /sys/bus/zio/devices/adc-100m14b-0200/cset0/trigger/sw-trg-enable ###########################################
# echo "2" ############# clean up ##################
sleep 1 ###########################################
# echo "3"
fald-acq -b 0 -a $1 -r $2 -B /tmp/data.bin "0x${tmp}" & # kill acquisition program
# echo "4" pid=`ps aux | awk '$11 == "fald-acq" {print $2}'`
sleep 2 if [ -n "$pid" ]
# echo "5" then
echo 1 > "${adcpath}/cset0/trigger/sw-trg-fire" echo "killing: $pid"
# echo 1 > /sys/bus/zio/devices/adc-100m14b-0200/cset0/trigger/sw-trg-fire kill -9 $pid
# echo "6" fi
wait
# echo "7" # then data buffer
rm -f /tmp/data.bin
###########################################
############# acquire data ################
###########################################
# configure software trigger
echo 1 > "${adcpath}/cset0/trigger/sw-trg-enable"
sleep 1
# run acquisition program detached from current terminal
timeout 10 "$top/software/fmc-adc-100m14b4cha-sw/libtools/fald-acq" -b 0 -a $1 -r $2 -B /tmp/data.bin "0x${id}" &
# wait
sleep 1
# software trigger
echo 1 > "${adcpath}/cset0/trigger/sw-trg-fire"
# wait for fald-acq to return
# it will either return after acquisition or with timeout
wait $!
if [ "$?" -eq 0 ]
then
echo "fald-acq retured succesfully"
exit 0
else
# echo "fald-acq retured with status $?"
echo "$(tput setab 1)fald-acq retured with status $?(tput sgr 0)"
echo "retrying with bigger delay"
# kill acquisition program
pid=`ps aux | awk '$11 == "fald-acq" {print $2}'`
if [ -n "$pid" ]
then
echo "killing: $pid"
kill -9 $pid
fi
# then data buffer
rm -f /tmp/data.bin
# run acquisition program detached from current terminal
timeout 15 "$top/software/fmc-adc-100m14b4cha-sw/libtools/fald-acq" -b 0 -a $1 -r $2 -B /tmp/data.bin "0x${id}" &
# wait
sleep 5
# software trigger
echo 1 > "${adcpath}/cset0/trigger/sw-trg-fire"
wait $!
if [ "$?" -eq 0 ]
then
echo "fald-acq retured succesfully"
exit 0
else
echo "fald-acq retured with status $?"
echo "abording"
exit 1
fi
fi
) )
...@@ -40,21 +40,23 @@ DDS_REG_GW = 0x00000044 ...@@ -40,21 +40,23 @@ DDS_REG_GW = 0x00000044
DDS_REG_DAC = 0x00000048 DDS_REG_DAC = 0x00000048
DDS_REG_TEST_COMM = 0x0000004c DDS_REG_TEST_COMM = 0x0000004c
DDS_REG_FPGACTRL = 0x00000050 DDS_REG_FPGACTRL = 0x00000050
DDS_REG_CLK0 = 0x00000054 DDS_REG_FPGAPLL_CLK2_CTRL = 0x00000054
DDS_REG_CLK1 = 0x00000058 DDS_REG_FPGAPLL_CLK2_STAT = 0x00000058
DDS_REG_CLK2 = 0x0000005c DDS_REG_CLK0 = 0x0000005c
DDS_REG_PDTEST = 0x00000060 DDS_REG_CLK1 = 0x00000060
DDS_REG_OSCDAC = 0x00000064 DDS_REG_CLK2 = 0x00000064
DDS_REG_ADCINTERFACE = 0x00000068 DDS_REG_PDTEST = 0x00000068
DDS_REG_DELAY = 0x0000006c DDS_REG_OSCDAC = 0x0000006c
DDS_REG_DELPHASE = 0x00000070 DDS_REG_ADCINTERFACE = 0x00000070
DDS_REG_TRIGGER = 0x00000074 DDS_REG_DELAY = 0x00000074
DDS_REG_PD_FIFO_R0 = 0x00000078 DDS_REG_DELPHASE = 0x00000078
DDS_REG_PD_FIFO_CSR = 0x0000007c DDS_REG_TRIGGER = 0x0000007c
DDS_REG_TUNE_FIFO_R0 = 0x00000080 DDS_REG_PD_FIFO_R0 = 0x00000080
DDS_REG_TUNE_FIFO_CSR = 0x00000084 DDS_REG_PD_FIFO_CSR = 0x00000084
DDS_REG_PI_R0 = 0x00000088 DDS_REG_TUNE_FIFO_R0 = 0x00000088
DDS_REG_PI_CSR = 0x0000008c DDS_REG_TUNE_FIFO_CSR = 0x0000008c
DDS_REG_PI_R0 = 0x00000090
DDS_REG_PI_CSR = 0x00000094
...@@ -120,6 +122,8 @@ def DDS_RSTR_PLL_RST(): ...@@ -120,6 +122,8 @@ def DDS_RSTR_PLL_RST():
return WBGEN2_GEN_MASK(0, 1) return WBGEN2_GEN_MASK(0, 1)
def DDS_RSTR_SW_RST(): def DDS_RSTR_SW_RST():
return WBGEN2_GEN_MASK(1, 1) return WBGEN2_GEN_MASK(1, 1)
def DDS_RSTR_FREQ_RES():
return WBGEN2_GEN_MASK(2, 1)
def DDS_I2CR_SCL_OUT(): def DDS_I2CR_SCL_OUT():
return WBGEN2_GEN_MASK(0, 1) return WBGEN2_GEN_MASK(0, 1)
def DDS_I2CR_SDA_OUT(): def DDS_I2CR_SDA_OUT():
...@@ -166,6 +170,10 @@ def DDS_TEST_COMM_LED_G(): ...@@ -166,6 +170,10 @@ def DDS_TEST_COMM_LED_G():
return WBGEN2_GEN_MASK(17, 1) return WBGEN2_GEN_MASK(17, 1)
def DDS_FPGACTRL_MAINPLL(): def DDS_FPGACTRL_MAINPLL():
return WBGEN2_GEN_MASK(0, 1) return WBGEN2_GEN_MASK(0, 1)
def DDS_FPGAPLL_CLK2_CTRL_RST():
return WBGEN2_GEN_MASK(0, 1)
def DDS_FPGAPLL_CLK2_STAT_LOCK():
return WBGEN2_GEN_MASK(0, 1)
def DDS_CLK0_FREQ_MASK(): def DDS_CLK0_FREQ_MASK():
return WBGEN2_GEN_MASK(0, 32) return WBGEN2_GEN_MASK(0, 32)
def DDS_CLK1_FREQ_MASK(): def DDS_CLK1_FREQ_MASK():
......
...@@ -192,10 +192,44 @@ def test_refclk_presense(dut): ...@@ -192,10 +192,44 @@ def test_refclk_presense(dut):
else: else:
print "AD9510: REFIN line verification succeeded" print "AD9510: REFIN line verification succeeded"
def verify_fpll_clk2( carrier ):
lock = carrier.readl(DDS_REG_FPGAPLL_CLK2_STAT)
print "CLK2 FPGA PLL lock status: " + str( carrier.readl(DDS_REG_FPGAPLL_CLK2_STAT) )
if lock != 0:
return 1
else:
# rise reset signal for pll
carrier.writel(DDS_REG_FPGAPLL_CLK2_CTRL, 1 )
# wait
time.sleep(0.5)
# remove reset signal for pll
carrier.writel(DDS_REG_FPGAPLL_CLK2_CTRL, 0 )
# wait for pll to lock
for i in range(0,30):
lock = carrier.readl(DDS_REG_FPGAPLL_CLK2_STAT)
if lock != 0:
print "PLL locked in %d try" % (i + 1)
return 1
time.sleep(0.5)
# failed to lock
return 0
def test_clk2(carrier, set_freq = 50e6, max_diff = 5e6 ): def test_clk2(carrier, set_freq = 50e6, max_diff = 5e6 ):
samples = 10; samples = 10;
# measurement might not be very accurate # measurement might not be very accurate
# its just to check if clock lines are valid # its just to check if clock lines are valid
# PLL tends to loose synchronization when clock source is changed
if verify_fpll_clk2( carrier ) == 0 :
raise PtsError("CLK2 FPGA PLL did not lock on reference clock");
time.sleep(3)
mean = 0 mean = 0
for i in range(samples): for i in range(samples):
...@@ -210,7 +244,28 @@ def test_clk2(carrier, set_freq = 50e6, max_diff = 5e6 ): ...@@ -210,7 +244,28 @@ def test_clk2(carrier, set_freq = 50e6, max_diff = 5e6 ):
return 1 return 1
else: else:
return 0 return 0
def test_clk0(carrier, set_freq = 50e6, max_diff = 5e6 ):
samples = 10;
# measurement might not be very accurate
# its just to check if clock lines are valid
mean = 0
for i in range(samples):
mean += carrier.readl(DDS_REG_CLK0)
time.sleep(0.5)
mean /= samples
print "Measured frequency:%d" % mean
if abs( set_freq-mean ) > max_diff :
return 1
else:
return 0
def test_rf_in(carrier, pll,dacinst, box): def test_rf_in(carrier, pll,dacinst, box):
...@@ -219,6 +274,8 @@ def test_rf_in(carrier, pll,dacinst, box): ...@@ -219,6 +274,8 @@ def test_rf_in(carrier, pll,dacinst, box):
# if that is the case then if i connect this DAC output to RF IN # if that is the case then if i connect this DAC output to RF IN
# i can pass this clock through PLL and measure frequency in FPGA # i can pass this clock through PLL and measure frequency in FPGA
test_freq = 15e6;
if not AUTOMATION: if not AUTOMATION:
print >> __stdout__, "Please connect DAC output to RF IN input in FMC DAC 600M 12b 1cha DDS and confirm with enter button" print >> __stdout__, "Please connect DAC output to RF IN input in FMC DAC 600M 12b 1cha DDS and confirm with enter button"
raw_input("") raw_input("")
...@@ -227,20 +284,27 @@ def test_rf_in(carrier, pll,dacinst, box): ...@@ -227,20 +284,27 @@ def test_rf_in(carrier, pll,dacinst, box):
box.select_output(calibration_box_connections.connections['raw_dac']) box.select_output(calibration_box_connections.connections['raw_dac'])
time.sleep(1); time.sleep(1);
print "Testing RF IN port with 10 MHz frequency clock" print "Testing RF IN port with %d MHz frequency clock" % (test_freq/1e6)
# Set DAC to output 10M Sine # Set DAC to output 10M Sine
dacinst.set_en( 1 ); dacinst.set_en( 1 );
dacinst.set_shape( dacinst.SHAPE_SINE ); dacinst.set_shape( dacinst.SHAPE_SINE );
dacinst.set_ampl( 1 ); dacinst.set_ampl( 1 );
dacinst.set_frequency( 10e6 ); dacinst.set_frequency( test_freq );
time.sleep(2);
# make sure that dac works correctly
if test_clk0( carrier, test_freq, 1e6) > 0:
raise PtsError("DAC does not generate set frequency");
else :
print "DAC output was verified on CLK0OUT"
# set pll to pass CLK1 to OUT6 without frequency division # set pll to pass CLK1 to OUT6 without frequency division
pll.write_reg( pll.write_reg(
0x0A, 0x0A,
( B_BYPASS(0) | PRESCALLER(0) | POWER_DOWN(1) ) ( B_BYPASS(0) | PRESCALLER(0) | POWER_DOWN(0) )
); );
pll.write_reg( 0x54, 0 ); pll.write_reg( 0x54, 0 );
...@@ -249,6 +313,7 @@ def test_rf_in(carrier, pll,dacinst, box): ...@@ -249,6 +313,7 @@ def test_rf_in(carrier, pll,dacinst, box):
pll.write_reg( pll.write_reg(
0x55, 0x55,
( BYPASS(1) | NO_SYNC(0) | FORCE(0) | START_HL(0) | PHASE_OFFSET(0) ) ( BYPASS(1) | NO_SYNC(0) | FORCE(0) | START_HL(0) | PHASE_OFFSET(0) )
# ( BYPASS(0) | NO_SYNC(0) | FORCE(0) | START_HL(0) | PHASE_OFFSET(0) )
); );
pll.write_reg( pll.write_reg(
...@@ -261,13 +326,14 @@ def test_rf_in(carrier, pll,dacinst, box): ...@@ -261,13 +326,14 @@ def test_rf_in(carrier, pll,dacinst, box):
pll.write_reg( pll.write_reg(
0x5A, 0x5A,
UPDATE_REGISTERS(1) UPDATE_REGISTERS(1)
); );
# wait for configuration to take effect # wait for configuration to take effect
time.sleep(5) time.sleep(3)
# measure frequency in fpga # measure frequency in fpga
if test_clk2(carrier, 10e6, 1e6) > 0: if test_clk2(carrier, test_freq, 1e6) > 0:
print "RF IN input might be corrupted"
raise PtsError("RF IN input might be corrupted") raise PtsError("RF IN input might be corrupted")
def test_ref_out(carrier, pll,dacinst, box): def test_ref_out(carrier, pll,dacinst, box):
...@@ -284,18 +350,28 @@ def test_ref_out(carrier, pll,dacinst, box): ...@@ -284,18 +350,28 @@ def test_ref_out(carrier, pll,dacinst, box):
box.select_output(calibration_box_connections.connections['ref_clk']) box.select_output(calibration_box_connections.connections['ref_clk'])
time.sleep(1); time.sleep(1);
test_freq = 20e6;
print "Testing REF CLK port with 10 MHz frequency clock" print "Testing REF CLK port with %d MHz frequency clock" % ( test_freq/1e6 )
# Set DAC to output 10M Sine # Set DAC to output 10M Sine
dacinst.set_en( 1 ); dacinst.set_en( 1 );
dacinst.set_shape( dacinst.SHAPE_SINE ); dacinst.set_shape( dacinst.SHAPE_SINE );
dacinst.set_ampl( 1 ); dacinst.set_ampl( 1 );
dacinst.set_frequency( 10e6 ); dacinst.set_frequency( test_freq );
time.sleep(3)
# make sure that dac works correctly
if test_clk0( carrier, test_freq, 1e6) > 0:
raise PtsError("DAC does not generate set frequency");
else:
print "DAC output was verified on CLK0OUT"
# set pll to pass CLK1 to OUT6 without frequency division # set pll to pass CLK1 to OUT6 without frequency division
pll.write_reg( pll.write_reg(
0x0A, 0x0A,
( B_BYPASS(0) | PRESCALLER(0) | POWER_DOWN(1) ) ( B_BYPASS(0) | PRESCALLER(0) | POWER_DOWN(0) )
); );
pll.write_reg( 0x54, 0 ); pll.write_reg( 0x54, 0 );
...@@ -304,6 +380,7 @@ def test_ref_out(carrier, pll,dacinst, box): ...@@ -304,6 +380,7 @@ def test_ref_out(carrier, pll,dacinst, box):
pll.write_reg( pll.write_reg(
0x55, 0x55,
( BYPASS(1) | NO_SYNC(0) | FORCE(0) | START_HL(0) | PHASE_OFFSET(0) ) ( BYPASS(1) | NO_SYNC(0) | FORCE(0) | START_HL(0) | PHASE_OFFSET(0) )
# ( BYPASS(0) | NO_SYNC(0) | FORCE(0) | START_HL(0) | PHASE_OFFSET(0) )
); );
pll.write_reg( pll.write_reg(
...@@ -322,8 +399,9 @@ def test_ref_out(carrier, pll,dacinst, box): ...@@ -322,8 +399,9 @@ def test_ref_out(carrier, pll,dacinst, box):
time.sleep(5) time.sleep(5)
# measure frequency in FPGA # measure frequency in FPGA
if test_clk2(carrier, 10e6, 1e6) > 0: if test_clk2(carrier, test_freq, 1e6) > 0:
raise PtsError("RF IN input might be corrupted") print "REF CLK output might be corrupted"
raise PtsError("REF CLK output might be corrupted")
def test_beam_out(carrier, pll,dacinst, box): def test_beam_out(carrier, pll,dacinst, box):
...@@ -337,9 +415,11 @@ def test_beam_out(carrier, pll,dacinst, box): ...@@ -337,9 +415,11 @@ def test_beam_out(carrier, pll,dacinst, box):
else: else:
box.select_output(calibration_box_connections.connections['beam_clk']) box.select_output(calibration_box_connections.connections['beam_clk'])
time.sleep(1); time.sleep(5);
print "Testing Beam CLK port with 50 MHz frequency clock" test_freq = 50e6
print "Testing Beam CLK port with %d MHz frequency clock" % ( test_freq/1e6)
# set pll to pass CLK1 to OUT6 with 10x frequency division # set pll to pass CLK1 to OUT6 with 10x frequency division
pll.write_reg( pll.write_reg(
0x0A, 0x0A,
...@@ -369,9 +449,10 @@ def test_beam_out(carrier, pll,dacinst, box): ...@@ -369,9 +449,10 @@ def test_beam_out(carrier, pll,dacinst, box):
time.sleep(5) time.sleep(5)
# measure frequency in FPGA # measure frequency in FPGA
# BEAM should be 500MHz # BEAM should be 500MHz divided by 10 in output divider
if test_clk2(carrier, 50e6, 10e6) > 0: if test_clk2(carrier, test_freq, 2e6) > 0:
raise PtsError("RF IN input might be corrupted") print "BEAM CLK output might be corrupted"
raise PtsError("BEAM CLK output might be corrupted")
...@@ -417,8 +498,7 @@ def main (card=None, default_directory='.',suite=None): ...@@ -417,8 +498,7 @@ def main (card=None, default_directory='.',suite=None):
# default configuration after reset # default configuration after reset
vcxo_pll = ad9510(carrier, 1); vcxo_pll = ad9510(carrier, 1);
# check status line # check status line
test_ld_line(vcxo_pll); test_ld_line(vcxo_pll);
...@@ -429,17 +509,20 @@ def main (card=None, default_directory='.',suite=None): ...@@ -429,17 +509,20 @@ def main (card=None, default_directory='.',suite=None):
test_refclk_presense(vcxo_pll); test_refclk_presense(vcxo_pll);
time.sleep(2) time.sleep(2)
print "Testing CLK2 line with 50 MHz frequency clock"
# validate CLK2 lines to FPGA # validate CLK2 lines to FPGA
print "Testing CLK2 line with 50 MHz frequency clock"
if test_clk2(carrier, 50e6, 5e6) > 0: if test_clk2(carrier, 50e6, 5e6) > 0:
raise PtsError("ad9510: CLK2 clock lines might be corrupted") raise PtsError("ad9510: CLK2 clock lines might be corrupted")
print "CLK2 line verification succeeded"
if TEST_RAW_DAC: if TEST_RAW_DAC:
# validate RF IN input connector # validate RF IN input connector
test_rf_in(carrier, vcxo_pll, dacinst, box) test_rf_in(carrier, vcxo_pll, dacinst, box)
# validate REF OUT output connector # validate REF OUT output connector
test_ref_out(carrier, vcxo_pll, dacinst, box) test_ref_out(carrier, vcxo_pll, dacinst, box)
vcxo_pll = ad9510(carrier, 1); vcxo_pll = ad9510(carrier, 1);
# validate BEAM OUT output connector # validate BEAM OUT output connector
......
/* /*
Register definitions for slave core: DDS RF distribution WB Slave Register definitions for slave core: DDS RF distribution WB Slave
* File : /home/gumas/pts/test/fmcdac600m12b1chadds//software/regs/dds_regs.h * File : /home/gumas/tmp/pts/test/fmcdac600m12b1chadds//software/regs/dds_regs.h
* Author : auto-generated by wbgen2 from /home/gumas/pts/test/fmcdac600m12b1chadds//gateware/rtl/dds_wb_slave.wb * Author : auto-generated by wbgen2 from /home/gumas/tmp/pts/test/fmcdac600m12b1chadds//gateware/rtl/dds_wb_slave.wb
* Created : Tue Aug 11 14:03:44 2015 * Created : Tue Feb 2 09:40:19 2016
* Standard : ANSI C * Standard : ANSI C
THIS FILE WAS GENERATED BY wbgen2 FROM SOURCE FILE /home/gumas/pts/test/fmcdac600m12b1chadds//gateware/rtl/dds_wb_slave.wb THIS FILE WAS GENERATED BY wbgen2 FROM SOURCE FILE /home/gumas/tmp/pts/test/fmcdac600m12b1chadds//gateware/rtl/dds_wb_slave.wb
DO NOT HAND-EDIT UNLESS IT'S ABSOLUTELY NECESSARY! DO NOT HAND-EDIT UNLESS IT'S ABSOLUTELY NECESSARY!
*/ */
#ifndef __WBGEN2_REGDEFS_/HOME/GUMAS/PTS/TEST/FMCDAC600M12B1CHADDS//GATEWARE/RTL/DDS_WB_SLAVE_WB #ifndef __WBGEN2_REGDEFS_/HOME/GUMAS/TMP/PTS/TEST/FMCDAC600M12B1CHADDS//GATEWARE/RTL/DDS_WB_SLAVE_WB
#define __WBGEN2_REGDEFS_/HOME/GUMAS/PTS/TEST/FMCDAC600M12B1CHADDS//GATEWARE/RTL/DDS_WB_SLAVE_WB #define __WBGEN2_REGDEFS_/HOME/GUMAS/TMP/PTS/TEST/FMCDAC600M12B1CHADDS//GATEWARE/RTL/DDS_WB_SLAVE_WB
#include <inttypes.h> #include <inttypes.h>
...@@ -139,6 +139,9 @@ ...@@ -139,6 +139,9 @@
/* definitions for field: FPGA DDS Logic software reset in reg: Reset Register */ /* definitions for field: FPGA DDS Logic software reset in reg: Reset Register */
#define DDS_RSTR_SW_RST WBGEN2_GEN_MASK(1, 1) #define DDS_RSTR_SW_RST WBGEN2_GEN_MASK(1, 1)
/* definitions for field: Freqency meters reset in reg: Reset Register */
#define DDS_RSTR_FREQ_RES WBGEN2_GEN_MASK(2, 1)
/* definitions for register: I2C bitbanged IO register */ /* definitions for register: I2C bitbanged IO register */
/* definitions for field: SCL Line out in reg: I2C bitbanged IO register */ /* definitions for field: SCL Line out in reg: I2C bitbanged IO register */
...@@ -280,6 +283,16 @@ ...@@ -280,6 +283,16 @@
/* definitions for field: MainPll in reg: FPGA control registers */ /* definitions for field: MainPll in reg: FPGA control registers */
#define DDS_FPGACTRL_MAINPLL WBGEN2_GEN_MASK(0, 1) #define DDS_FPGACTRL_MAINPLL WBGEN2_GEN_MASK(0, 1)
/* definitions for register: FPGA PLL CLK2 Control */
/* definitions for field: Reset in reg: FPGA PLL CLK2 Control */
#define DDS_FPGAPLL_CLK2_CTRL_RST WBGEN2_GEN_MASK(0, 1)
/* definitions for register: FPGA PLL CLK2 Status */
/* definitions for field: Lock detect in reg: FPGA PLL CLK2 Status */
#define DDS_FPGAPLL_CLK2_STAT_LOCK WBGEN2_GEN_MASK(0, 1)
/* definitions for register: FPGA Frequency measurement of frequecy from DAC */ /* definitions for register: FPGA Frequency measurement of frequecy from DAC */
/* definitions for field: Measured frequency in reg: FPGA Frequency measurement of frequecy from DAC */ /* definitions for field: Measured frequency in reg: FPGA Frequency measurement of frequecy from DAC */
...@@ -456,34 +469,38 @@ ...@@ -456,34 +469,38 @@
#define DDS_REG_TEST_COMM 0x0000004c #define DDS_REG_TEST_COMM 0x0000004c
/* [0x50]: REG FPGA control registers */ /* [0x50]: REG FPGA control registers */
#define DDS_REG_FPGACTRL 0x00000050 #define DDS_REG_FPGACTRL 0x00000050
/* [0x54]: REG FPGA Frequency measurement of frequecy from DAC */ /* [0x54]: REG FPGA PLL CLK2 Control */
#define DDS_REG_CLK0 0x00000054 #define DDS_REG_FPGAPLL_CLK2_CTRL 0x00000054
/* [0x58]: REG FPGA Frequency measurement of frequecy from AD9516 */ /* [0x58]: REG FPGA PLL CLK2 Status */
#define DDS_REG_CLK1 0x00000058 #define DDS_REG_FPGAPLL_CLK2_STAT 0x00000058
/* [0x5c]: REG FPGA Frequency measurement of frequecy from AD9510 */ /* [0x5c]: REG FPGA Frequency measurement of frequecy from DAC */
#define DDS_REG_CLK2 0x0000005c #define DDS_REG_CLK0 0x0000005c
/* [0x60]: REG Period of LD output */ /* [0x60]: REG FPGA Frequency measurement of frequecy from AD9516 */
#define DDS_REG_PDTEST 0x00000060 #define DDS_REG_CLK1 0x00000060
/* [0x64]: REG Oscillator DAC communication */ /* [0x64]: REG FPGA Frequency measurement of frequecy from AD9510 */
#define DDS_REG_OSCDAC 0x00000064 #define DDS_REG_CLK2 0x00000064
/* [0x68]: REG ADC interface control */ /* [0x68]: REG Period of LD output */
#define DDS_REG_ADCINTERFACE 0x00000068 #define DDS_REG_PDTEST 0x00000068
/* [0x6c]: REG Delay controls */ /* [0x6c]: REG Oscillator DAC communication */
#define DDS_REG_DELAY 0x0000006c #define DDS_REG_OSCDAC 0x0000006c
/* [0x70]: REG Delay phase comparator */ /* [0x70]: REG ADC interface control */
#define DDS_REG_DELPHASE 0x00000070 #define DDS_REG_ADCINTERFACE 0x00000070
/* [0x74]: REG Trigger input clock frequency */ /* [0x74]: REG Delay controls */
#define DDS_REG_TRIGGER 0x00000074 #define DDS_REG_DELAY 0x00000074
/* [0x78]: REG FIFO 'PD ADC Test FIFO (test mode)' data output register 0 */ /* [0x78]: REG Delay phase comparator */
#define DDS_REG_PD_FIFO_R0 0x00000078 #define DDS_REG_DELPHASE 0x00000078
/* [0x7c]: REG FIFO 'PD ADC Test FIFO (test mode)' control/status register */ /* [0x7c]: REG Trigger input clock frequency */
#define DDS_REG_PD_FIFO_CSR 0x0000007c #define DDS_REG_TRIGGER 0x0000007c
/* [0x80]: REG FIFO 'DDS Tuning FIFO (test mode)' data input register 0 */ /* [0x80]: REG FIFO 'PD ADC Test FIFO (test mode)' data output register 0 */
#define DDS_REG_TUNE_FIFO_R0 0x00000080 #define DDS_REG_PD_FIFO_R0 0x00000080
/* [0x84]: REG FIFO 'DDS Tuning FIFO (test mode)' control/status register */ /* [0x84]: REG FIFO 'PD ADC Test FIFO (test mode)' control/status register */
#define DDS_REG_TUNE_FIFO_CSR 0x00000084 #define DDS_REG_PD_FIFO_CSR 0x00000084
/* [0x88]: REG FIFO 'PI Controller' data output register 0 */ /* [0x88]: REG FIFO 'DDS Tuning FIFO (test mode)' data input register 0 */
#define DDS_REG_PI_R0 0x00000088 #define DDS_REG_TUNE_FIFO_R0 0x00000088
/* [0x8c]: REG FIFO 'PI Controller' control/status register */ /* [0x8c]: REG FIFO 'DDS Tuning FIFO (test mode)' control/status register */
#define DDS_REG_PI_CSR 0x0000008c #define DDS_REG_TUNE_FIFO_CSR 0x0000008c
/* [0x90]: REG FIFO 'PI Controller' data output register 0 */
#define DDS_REG_PI_R0 0x00000090
/* [0x94]: REG FIFO 'PI Controller' control/status register */
#define DDS_REG_PI_CSR 0x00000094
#endif #endif
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