diff --git a/applications/apertif/designs/apertif_unb1_correlator/quartus/qsys_apertif_unb1_correlator.qsys b/applications/apertif/designs/apertif_unb1_correlator/quartus/qsys_apertif_unb1_correlator.qsys index 8f876ecb6ac7b72efbf311f4291671910dfeb08f..8aa7eb58924bb3ead0debf015767c0b6b9abd201 100644 --- a/applications/apertif/designs/apertif_unb1_correlator/quartus/qsys_apertif_unb1_correlator.qsys +++ b/applications/apertif/designs/apertif_unb1_correlator/quartus/qsys_apertif_unb1_correlator.qsys @@ -37,7 +37,7 @@ { datum baseAddress { - value = "1184"; + value = "416"; type = "long"; } } @@ -177,11 +177,11 @@ type = "long"; } } - element reg_diag_data_buf.mem + element reg_mdio_2.mem { datum baseAddress { - value = "1192"; + value = "256"; type = "long"; } } @@ -193,20 +193,15 @@ type = "long"; } } - element pio_system_info.mem + element ram_fil_coefs.mem { - datum _lockedAddress - { - value = "1"; - type = "boolean"; - } datum baseAddress { - value = "0"; + value = "14336"; type = "long"; } } - element reg_mdio_2.mem + element reg_bsn_monitor.mem { datum baseAddress { @@ -218,55 +213,60 @@ { datum baseAddress { - value = "1056"; + value = "288"; type = "long"; } } - element reg_dp_offload_rx_hdr_dat.mem + element reg_diag_data_buf.mem { datum baseAddress { - value = "512"; + value = "424"; type = "long"; } } - element reg_bsn_monitor.mem + element ram_diag_data_buf.mem { datum baseAddress { - value = "256"; + value = "8192"; type = "long"; } } - element ram_fil_coefs.mem + element reg_dp_offload_rx_hdr_dat.mem { datum baseAddress { - value = "14336"; + value = "512"; type = "long"; } } - element reg_tr_xaui.mem + element reg_unb_sens.mem { datum baseAddress { - value = "16384"; + value = "320"; type = "long"; } } - element pio_pps.mem + element pio_system_info.mem { + datum _lockedAddress + { + value = "1"; + type = "boolean"; + } datum baseAddress { - value = "1200"; + value = "0"; type = "long"; } } - element ram_diag_data_buf.mem + element pio_pps.mem { datum baseAddress { - value = "8192"; + value = "432"; type = "long"; } } @@ -296,11 +296,11 @@ type = "long"; } } - element reg_unb_sens.mem + element reg_tr_xaui.mem { datum baseAddress { - value = "1088"; + value = "16384"; type = "long"; } } @@ -403,19 +403,19 @@ type = "boolean"; } } - element altpll_1.pll_slave + element altpll_0.pll_slave { datum baseAddress { - value = "1152"; + value = "400"; type = "long"; } } - element altpll_0.pll_slave + element altpll_1.pll_slave { datum baseAddress { - value = "1168"; + value = "384"; type = "long"; } } @@ -589,6 +589,14 @@ type = "boolean"; } } + element pio_debug_wave.s1 + { + datum baseAddress + { + value = "352"; + type = "long"; + } + } element onchip_memory2_0.s1 { datum _lockedAddress @@ -602,11 +610,11 @@ type = "long"; } } - element pio_debug_wave.s1 + element pio_wdi.s1 { datum baseAddress { - value = "1120"; + value = "368"; type = "long"; } } @@ -618,14 +626,6 @@ type = "long"; } } - element pio_wdi.s1 - { - datum baseAddress - { - value = "1136"; - type = "long"; - } - } element reg_wdi.system_reset { datum _tags @@ -678,7 +678,7 @@ <parameter name="projectName">apertif_unb1_correlator.qpf</parameter> <parameter name="sopcBorderPoints" value="false" /> <parameter name="systemHash" value="1" /> - <parameter name="timeStamp" value="1426249750168" /> + <parameter name="timeStamp" value="1426526738814" /> <parameter name="useTestBenchNamingPattern" value="false" /> <instanceScript></instanceScript> <interface name="c0_out_clk" internal="c0.out_clk" type="clock" dir="start"> @@ -1366,7 +1366,7 @@ enabled="1" name="onchip_memory2_0"> <parameter name="allowInSystemMemoryContentEditor" value="false" /> - <parameter name="autoInitializationFileName">$${FILENAME}_onchip_memory2_0</parameter> + <parameter name="autoInitializationFileName">qsys_apertif_unb1_correlator_onchip_memory2_0</parameter> <parameter name="blockType" value="M144K" /> <parameter name="dataWidth" value="32" /> <parameter name="deviceFamily" value="Stratix IV" /> @@ -1536,7 +1536,7 @@ q]]></parameter> <parameter name="tightlyCoupledInstructionMaster2AddrWidth" value="1" /> <parameter name="tightlyCoupledInstructionMaster3AddrWidth" value="1" /> <parameter name="instSlaveMapParam"><![CDATA[<address-map><slave name='cpu_0.jtag_debug_module' start='0x8000' end='0x8800' /><slave name='onchip_memory2_0.s1' start='0x20000' end='0x40000' /></address-map>]]></parameter> - <parameter name="dataSlaveMapParam"><![CDATA[<address-map><slave name='pio_system_info.mem' start='0x0' end='0x80' /><slave name='avs_eth_0.mms_reg' start='0x80' end='0xC0' /><slave name='timer_0.s1' start='0xC0' end='0xE0' /><slave name='reg_mdio_1.mem' start='0xE0' end='0x100' /><slave name='reg_bsn_monitor.mem' start='0x100' end='0x200' /><slave name='reg_dp_offload_rx_hdr_dat.mem' start='0x200' end='0x400' /><slave name='reg_mdio_2.mem' start='0x400' end='0x420' /><slave name='reg_mdio_0.mem' start='0x420' end='0x440' /><slave name='reg_unb_sens.mem' start='0x440' end='0x460' /><slave name='pio_debug_wave.s1' start='0x460' end='0x470' /><slave name='pio_wdi.s1' start='0x470' end='0x480' /><slave name='altpll_1.pll_slave' start='0x480' end='0x490' /><slave name='altpll_0.pll_slave' start='0x490' end='0x4A0' /><slave name='jtag_uart_0.avalon_jtag_slave' start='0x4A0' end='0x4A8' /><slave name='reg_diag_data_buf.mem' start='0x4A8' end='0x4B0' /><slave name='pio_pps.mem' start='0x4B0' end='0x4B8' /><slave name='rom_system_info.mem' start='0x1000' end='0x2000' /><slave name='ram_diag_data_buf.mem' start='0x2000' end='0x3000' /><slave name='reg_wdi.mem' start='0x3000' end='0x3008' /><slave name='ram_fil_coefs.mem' start='0x3800' end='0x4000' /><slave name='reg_tr_xaui.mem' start='0x4000' end='0x6000' /><slave name='avs_eth_0.mms_tse' start='0x6000' end='0x7000' /><slave name='avs_eth_0.mms_ram' start='0x7000' end='0x8000' /><slave name='cpu_0.jtag_debug_module' start='0x8000' end='0x8800' /><slave name='onchip_memory2_0.s1' start='0x20000' end='0x40000' /><slave name='reg_tr_10GbE.mem' start='0x40000' end='0x60000' /></address-map>]]></parameter> + <parameter name="dataSlaveMapParam"><![CDATA[<address-map><slave name='pio_system_info.mem' start='0x0' end='0x80' /><slave name='avs_eth_0.mms_reg' start='0x80' end='0xC0' /><slave name='timer_0.s1' start='0xC0' end='0xE0' /><slave name='reg_mdio_1.mem' start='0xE0' end='0x100' /><slave name='reg_mdio_2.mem' start='0x100' end='0x120' /><slave name='reg_mdio_0.mem' start='0x120' end='0x140' /><slave name='reg_unb_sens.mem' start='0x140' end='0x160' /><slave name='pio_debug_wave.s1' start='0x160' end='0x170' /><slave name='pio_wdi.s1' start='0x170' end='0x180' /><slave name='altpll_1.pll_slave' start='0x180' end='0x190' /><slave name='altpll_0.pll_slave' start='0x190' end='0x1A0' /><slave name='jtag_uart_0.avalon_jtag_slave' start='0x1A0' end='0x1A8' /><slave name='reg_diag_data_buf.mem' start='0x1A8' end='0x1B0' /><slave name='pio_pps.mem' start='0x1B0' end='0x1B8' /><slave name='reg_dp_offload_rx_hdr_dat.mem' start='0x200' end='0x400' /><slave name='reg_bsn_monitor.mem' start='0x400' end='0x600' /><slave name='rom_system_info.mem' start='0x1000' end='0x2000' /><slave name='ram_diag_data_buf.mem' start='0x2000' end='0x3000' /><slave name='reg_wdi.mem' start='0x3000' end='0x3008' /><slave name='ram_fil_coefs.mem' start='0x3800' end='0x4000' /><slave name='reg_tr_xaui.mem' start='0x4000' end='0x6000' /><slave name='avs_eth_0.mms_tse' start='0x6000' end='0x7000' /><slave name='avs_eth_0.mms_ram' start='0x7000' end='0x8000' /><slave name='cpu_0.jtag_debug_module' start='0x8000' end='0x8800' /><slave name='onchip_memory2_0.s1' start='0x20000' end='0x40000' /><slave name='reg_tr_10GbE.mem' start='0x40000' end='0x60000' /></address-map>]]></parameter> <parameter name="clockFrequency" value="50000000" /> <parameter name="deviceFamilyName" value="Stratix IV" /> <parameter name="internalIrqMaskSystemInfo" value="7" /> @@ -1990,7 +1990,7 @@ q]]></parameter> <parameter name="AUTO_SYSTEM_CLOCK_RATE" value="50000000" /> </module> <module kind="avs_common_mm" version="1.0" enabled="1" name="reg_bsn_monitor"> - <parameter name="g_adr_w" value="6" /> + <parameter name="g_adr_w" value="7" /> <parameter name="g_dat_w" value="32" /> <parameter name="AUTO_SYSTEM_CLOCK_RATE" value="50000000" /> </module> @@ -2032,7 +2032,7 @@ q]]></parameter> start="cpu_0.data_master" end="jtag_uart_0.avalon_jtag_slave"> <parameter name="arbitrationPriority" value="1" /> - <parameter name="baseAddress" value="0x04a0" /> + <parameter name="baseAddress" value="0x01a0" /> </connection> <connection kind="interrupt" @@ -2047,7 +2047,7 @@ q]]></parameter> start="cpu_0.data_master" end="pio_debug_wave.s1"> <parameter name="arbitrationPriority" value="1" /> - <parameter name="baseAddress" value="0x0460" /> + <parameter name="baseAddress" value="0x0160" /> </connection> <connection kind="avalon" @@ -2055,7 +2055,7 @@ q]]></parameter> start="cpu_0.data_master" end="pio_wdi.s1"> <parameter name="arbitrationPriority" value="1" /> - <parameter name="baseAddress" value="0x0470" /> + <parameter name="baseAddress" value="0x0170" /> </connection> <connection kind="avalon" @@ -2152,7 +2152,7 @@ q]]></parameter> start="cpu_0.data_master" end="reg_diag_data_buf.mem"> <parameter name="arbitrationPriority" value="1" /> - <parameter name="baseAddress" value="0x04a8" /> + <parameter name="baseAddress" value="0x01a8" /> </connection> <connection kind="reset" @@ -2165,7 +2165,7 @@ q]]></parameter> start="cpu_0.data_master" end="altpll_1.pll_slave"> <parameter name="arbitrationPriority" value="1" /> - <parameter name="baseAddress" value="0x0480" /> + <parameter name="baseAddress" value="0x0180" /> </connection> <connection kind="clock" @@ -2214,7 +2214,7 @@ q]]></parameter> start="cpu_0.data_master" end="reg_mdio_2.mem"> <parameter name="arbitrationPriority" value="1" /> - <parameter name="baseAddress" value="0x0400" /> + <parameter name="baseAddress" value="0x0100" /> </connection> <connection kind="reset" @@ -2235,7 +2235,7 @@ q]]></parameter> start="cpu_0.data_master" end="reg_mdio_0.mem"> <parameter name="arbitrationPriority" value="1" /> - <parameter name="baseAddress" value="0x0420" /> + <parameter name="baseAddress" value="0x0120" /> </connection> <connection kind="reset" @@ -2282,7 +2282,7 @@ q]]></parameter> start="cpu_0.data_master" end="reg_unb_sens.mem"> <parameter name="arbitrationPriority" value="1" /> - <parameter name="baseAddress" value="0x0440" /> + <parameter name="baseAddress" value="0x0140" /> </connection> <connection kind="reset" @@ -2318,7 +2318,7 @@ q]]></parameter> start="cpu_0.data_master" end="pio_pps.mem"> <parameter name="arbitrationPriority" value="1" /> - <parameter name="baseAddress" value="0x04b0" /> + <parameter name="baseAddress" value="0x01b0" /> </connection> <connection kind="reset" @@ -2369,7 +2369,7 @@ q]]></parameter> start="cpu_0.data_master" end="altpll_0.pll_slave"> <parameter name="arbitrationPriority" value="1" /> - <parameter name="baseAddress" value="0x0490" /> + <parameter name="baseAddress" value="0x0190" /> </connection> <connection kind="reset" @@ -2516,6 +2516,6 @@ q]]></parameter> start="cpu_0.data_master" end="reg_bsn_monitor.mem"> <parameter name="arbitrationPriority" value="1" /> - <parameter name="baseAddress" value="0x0100" /> + <parameter name="baseAddress" value="0x0400" /> </connection> </system> diff --git a/applications/apertif/designs/apertif_unb1_correlator/src/vhdl/apertif_unb1_correlator.vhd b/applications/apertif/designs/apertif_unb1_correlator/src/vhdl/apertif_unb1_correlator.vhd index e1b2212bb500cee5b092f228e7f1180cd1c3951e..8119794611eac467d23548871afaabae8e202867 100644 --- a/applications/apertif/designs/apertif_unb1_correlator/src/vhdl/apertif_unb1_correlator.vhd +++ b/applications/apertif/designs/apertif_unb1_correlator/src/vhdl/apertif_unb1_correlator.vhd @@ -163,8 +163,8 @@ ARCHITECTURE str OF apertif_unb1_correlator IS CONSTANT c_wpfb_coefs_file_prefix : STRING := "mif/coefs_wide1_p64_t8"; -- Block generator - CONSTANT c_bg_block_size : NATURAL := c_nof_channels*pow2(c_nof_input_folds); - CONSTANT c_bg_gapsize : NATURAL := 0; + CONSTANT c_bg_block_size : NATURAL := 88; --c_nof_channels*pow2(c_nof_input_folds); --TIJDELIJKE TEST. EERST 128, nu 88. Matcht 256->176 zoals huidige beamformeroutput. + CONSTANT c_bg_gapsize : NATURAL := 40; --0; --TIJDELIJKE TEST. 128-88=gap van 40. -- Indicate the integration period with the sync. In the correlator, the -- integration period is forced to a minimum of c_nof_visibilities to @@ -192,7 +192,7 @@ ARCHITECTURE str OF apertif_unb1_correlator IS CONSTANT c_hdr_field_arr : t_common_field_arr(c_nof_hdr_fields-1 DOWNTO 0) := ( ( field_name_pad("eth_word_align" ), " ", 16, field_default(0) ), ( field_name_pad("eth_dst_mac" ), " ", 48, field_default(x"0030482D82A1") ), -- dop17 ( field_name_pad("eth_src_mac" ), " ", 48, field_default(0) ), - ( field_name_pad("eth_type" ), " ", 16, field_default(x"0800") ), + ( field_name_pad("eth_type" ), " ", 16, field_default(0) ), --FIXME TEMP op 0!!!!!!!!!!!!!!!!!!!!!!!1 ( field_name_pad("ip_version" ), " ", 4, field_default(4) ), ( field_name_pad("ip_header_length" ), " ", 4, field_default(5) ), ( field_name_pad("ip_services" ), " ", 8, field_default(0) ), @@ -316,8 +316,8 @@ ARCHITECTURE str OF apertif_unb1_correlator IS SIGNAL dp_bsn_align_src_out_arr : t_dp_sosi_arr(c_nof_10GbE_streams-1 DOWNTO 0); -- BSN monitors - SIGNAL dp_bsn_monitor_in_siso_arr : t_dp_siso_arr(c_nof_10GbE_streams+1-1 DOWNTO 0); - SIGNAL dp_bsn_monitor_in_sosi_arr : t_dp_sosi_arr(c_nof_10GbE_streams+1-1 DOWNTO 0); + SIGNAL dp_bsn_monitor_in_siso_arr : t_dp_siso_arr(c_nof_10GbE_streams+1+1-1 DOWNTO 0); + SIGNAL dp_bsn_monitor_in_sosi_arr : t_dp_sosi_arr(c_nof_10GbE_streams+1+1-1 DOWNTO 0); -- De and Reinterleaver SIGNAL interleaved_arr : t_dp_sosi_arr(c_nof_10GbE_streams*c_nof_bf_modules-1 DOWNTO 0); @@ -568,16 +568,20 @@ BEGIN ----------------------------------------------------------------------------- -- RX: 3 BSN monitors for the 3 incoming streams -- +1 BSN monitor for post-BSN aligner stream(0) + -- +1 BSN monitor for correlator output ----------------------------------------------------------------------------- dp_bsn_monitor_in_siso_arr(c_nof_10GbE_streams-1 DOWNTO 0) <= dp_offload_rx_src_in_arr; dp_bsn_monitor_in_sosi_arr(c_nof_10GbE_streams-1 DOWNTO 0) <= dp_offload_rx_restored_src_out_arr; - -- Use the last BSN monitor instance to monitor post-BSN aligner stream(0) + -- Use the 4th BSN monitor instance to monitor post-BSN aligner stream(0) dp_bsn_monitor_in_sosi_arr(c_nof_10GbE_streams) <= dp_bsn_align_src_out_arr(0); dp_bsn_monitor_in_siso_arr(c_nof_10GbE_streams) <= dp_bsn_align_src_in_arr(0); + -- Use the 5th BSN monitor instance to monitor the correlator output + dp_bsn_monitor_in_sosi_arr(c_nof_10GbE_streams+1) <= correlator_src_out_arr(0); + dp_bsn_monitor_in_siso_arr(c_nof_10GbE_streams+1) <= c_dp_siso_rdy; u_dp_bsn_monitor : ENTITY dp_lib.mms_dp_bsn_monitor GENERIC MAP ( - g_nof_streams => c_nof_10GbE_streams+1, + g_nof_streams => c_nof_10GbE_streams+1+1, g_log_first_bsn => TRUE ) PORT MAP ( diff --git a/applications/apertif/designs/apertif_unb1_correlator/src/vhdl/mmm_apertif_unb1_correlator.vhd b/applications/apertif/designs/apertif_unb1_correlator/src/vhdl/mmm_apertif_unb1_correlator.vhd index b3227629f107e420c92765d77d72faa9c0b20652..e0431579abe31ecc5eb5a5030ca36449a543af8c 100644 --- a/applications/apertif/designs/apertif_unb1_correlator/src/vhdl/mmm_apertif_unb1_correlator.vhd +++ b/applications/apertif/designs/apertif_unb1_correlator/src/vhdl/mmm_apertif_unb1_correlator.vhd @@ -140,7 +140,7 @@ ARCHITECTURE str OF mmm_apertif_unb1_correlator IS CONSTANT c_reg_tr_10GbE_multi_adr_w : NATURAL := ceil_log2(c_nof_inputs* pow2(c_reg_tr_10GbE_adr_w)); -- BSN monitors - CONSTANT c_reg_rsp_bsn_monitor_adr_w : NATURAL := ceil_log2((c_nof_inputs+1)* pow2(c_unb1_board_peripherals_mm_reg_default.reg_bsn_monitor_adr_w)); + CONSTANT c_reg_rsp_bsn_monitor_adr_w : NATURAL := ceil_log2((c_nof_inputs+1+1)* pow2(c_unb1_board_peripherals_mm_reg_default.reg_bsn_monitor_adr_w)); -- ( 64 * 8 / 1 ) CONSTANT c_ram_fil_coefs_addr_w : natural := ceil_log2(g_wpfb.nof_points * g_wpfb.nof_taps / g_wpfb.wb_factor); @@ -324,7 +324,7 @@ ARCHITECTURE str OF mmm_apertif_unb1_correlator IS reg_bsn_monitor_reset_export : out std_logic; -- export reg_bsn_monitor_clk_export : out std_logic; -- export - reg_bsn_monitor_address_export : out std_logic_vector(5 downto 0); -- export + reg_bsn_monitor_address_export : out std_logic_vector(6 downto 0); -- export reg_bsn_monitor_write_export : out std_logic; -- export reg_bsn_monitor_writedata_export : out std_logic_vector(31 downto 0); -- export reg_bsn_monitor_read_export : out std_logic; -- export