diff --git a/boards/uniboard1/designs/unb1_test/hdllib.cfg b/boards/uniboard1/designs/unb1_test/hdllib.cfg index cf4a8b596957479fb517e7c48a221bc39ac2201c..de1d6e71be66dec8dec1a3e1af33b01bf60ffea7 100644 --- a/boards/uniboard1/designs/unb1_test/hdllib.cfg +++ b/boards/uniboard1/designs/unb1_test/hdllib.cfg @@ -10,6 +10,7 @@ synth_files = src/vhdl/unb1_test_pkg.vhd src/vhdl/mmm_unb1_test.vhd src/vhdl/udp_stream_test.vhd + src/vhdl/ddr_stream_test.vhd src/vhdl/unb1_test.vhd test_bench_files = diff --git a/boards/uniboard1/designs/unb1_test/quartus/qsys_unb1_test.qsys b/boards/uniboard1/designs/unb1_test/quartus/qsys_unb1_test.qsys index 164e1fba6255f5af1f082ecda753a29a91fe748c..0b0118a03eb0d4f5fe886c21928da165141dda9a 100644 --- a/boards/uniboard1/designs/unb1_test/quartus/qsys_unb1_test.qsys +++ b/boards/uniboard1/designs/unb1_test/quartus/qsys_unb1_test.qsys @@ -69,7 +69,15 @@ { datum baseAddress { - value = "12768"; + value = "12960"; + type = "long"; + } + } + element reg_bsn_monitor_ddr.mem + { + datum baseAddress + { + value = "12736"; type = "long"; } } @@ -93,7 +101,7 @@ { datum baseAddress { - value = "12816"; + value = "13040"; type = "long"; } } @@ -101,7 +109,7 @@ { datum baseAddress { - value = "12824"; + value = "13048"; type = "long"; } } @@ -109,7 +117,7 @@ { datum baseAddress { - value = "12856"; + value = "13080"; type = "long"; } } @@ -125,7 +133,15 @@ { datum baseAddress { - value = "12832"; + value = "13056"; + type = "long"; + } + } + element ram_diag_data_buffer_ddr.mem + { + datum baseAddress + { + value = "524288"; type = "long"; } } @@ -146,7 +162,15 @@ { datum baseAddress { - value = "12736"; + value = "12928"; + type = "long"; + } + } + element reg_diag_data_buffer_ddr.mem + { + datum baseAddress + { + value = "12544"; type = "long"; } } @@ -191,7 +215,7 @@ { datum baseAddress { - value = "12840"; + value = "13064"; type = "long"; } } @@ -207,7 +231,7 @@ { datum baseAddress { - value = "12544"; + value = "12672"; type = "long"; } } @@ -215,7 +239,15 @@ { datum baseAddress { - value = "12608"; + value = "12800"; + type = "long"; + } + } + element reg_diag_bg_ddr.mem + { + datum baseAddress + { + value = "12992"; type = "long"; } } @@ -223,7 +255,7 @@ { datum baseAddress { - value = "12848"; + value = "13072"; type = "long"; } } @@ -239,7 +271,15 @@ { datum baseAddress { - value = "12640"; + value = "12832"; + type = "long"; + } + } + element ram_diag_bg_ddr.mem + { + datum baseAddress + { + value = "49152"; type = "long"; } } @@ -268,7 +308,7 @@ { datum baseAddress { - value = "12672"; + value = "12864"; type = "long"; } } @@ -316,7 +356,7 @@ { datum baseAddress { - value = "12800"; + value = "13024"; type = "long"; } } @@ -324,7 +364,7 @@ { datum baseAddress { - value = "12704"; + value = "12896"; type = "long"; } } @@ -398,7 +438,7 @@ { datum _sortIndex { - value = "31"; + value = "33"; type = "int"; } } @@ -406,7 +446,15 @@ { datum _sortIndex { - value = "30"; + value = "32"; + type = "int"; + } + } + element ram_diag_bg_ddr + { + datum _sortIndex + { + value = "34"; type = "int"; } } @@ -414,7 +462,7 @@ { datum _sortIndex { - value = "35"; + value = "39"; type = "int"; } } @@ -422,7 +470,15 @@ { datum _sortIndex { - value = "34"; + value = "38"; + type = "int"; + } + } + element ram_diag_data_buffer_ddr + { + datum _sortIndex + { + value = "40"; type = "int"; } } @@ -430,7 +486,7 @@ { datum _sortIndex { - value = "36"; + value = "41"; type = "int"; } } @@ -450,11 +506,19 @@ type = "int"; } } + element reg_bsn_monitor_ddr + { + datum _sortIndex + { + value = "22"; + type = "int"; + } + } element reg_diag_bg_10GbE { datum _sortIndex { - value = "29"; + value = "30"; type = "int"; } } @@ -462,7 +526,15 @@ { datum _sortIndex { - value = "28"; + value = "29"; + type = "int"; + } + } + element reg_diag_bg_ddr + { + datum _sortIndex + { + value = "31"; type = "int"; } } @@ -470,7 +542,7 @@ { datum _sortIndex { - value = "33"; + value = "36"; type = "int"; } } @@ -478,7 +550,15 @@ { datum _sortIndex { - value = "32"; + value = "35"; + type = "int"; + } + } + element reg_diag_data_buffer_ddr + { + datum _sortIndex + { + value = "37"; type = "int"; } } @@ -486,7 +566,7 @@ { datum _sortIndex { - value = "27"; + value = "28"; type = "int"; } } @@ -494,7 +574,7 @@ { datum _sortIndex { - value = "26"; + value = "27"; type = "int"; } } @@ -502,7 +582,7 @@ { datum _sortIndex { - value = "23"; + value = "24"; type = "int"; } } @@ -510,7 +590,7 @@ { datum _sortIndex { - value = "25"; + value = "26"; type = "int"; } } @@ -518,7 +598,7 @@ { datum _sortIndex { - value = "22"; + value = "23"; type = "int"; } } @@ -526,7 +606,7 @@ { datum _sortIndex { - value = "24"; + value = "25"; type = "int"; } } @@ -558,7 +638,7 @@ { datum _sortIndex { - value = "37"; + value = "42"; type = "int"; } } @@ -2266,6 +2346,181 @@ internal="ram_diag_data_buffer_10GbE.readdata" type="conduit" dir="end" /> + <interface + name="reg_bsn_monitor_ddr_readdata" + internal="reg_bsn_monitor_ddr.readdata" + type="conduit" + dir="end" /> + <interface + name="reg_bsn_monitor_ddr_read" + internal="reg_bsn_monitor_ddr.read" + type="conduit" + dir="end" /> + <interface + name="reg_bsn_monitor_ddr_writedata" + internal="reg_bsn_monitor_ddr.writedata" + type="conduit" + dir="end" /> + <interface + name="reg_bsn_monitor_ddr_write" + internal="reg_bsn_monitor_ddr.write" + type="conduit" + dir="end" /> + <interface + name="reg_bsn_monitor_ddr_address" + internal="reg_bsn_monitor_ddr.address" + type="conduit" + dir="end" /> + <interface + name="reg_bsn_monitor_ddr_clk" + internal="reg_bsn_monitor_ddr.clk" + type="conduit" + dir="end" /> + <interface + name="reg_bsn_monitor_ddr_reset" + internal="reg_bsn_monitor_ddr.reset" + type="conduit" + dir="end" /> + <interface + name="reg_diag_bg_ddr_readdata" + internal="reg_diag_bg_ddr.readdata" + type="conduit" + dir="end" /> + <interface + name="reg_diag_bg_ddr_read" + internal="reg_diag_bg_ddr.read" + type="conduit" + dir="end" /> + <interface + name="reg_diag_bg_ddr_writedata" + internal="reg_diag_bg_ddr.writedata" + type="conduit" + dir="end" /> + <interface + name="reg_diag_bg_ddr_write" + internal="reg_diag_bg_ddr.write" + type="conduit" + dir="end" /> + <interface + name="reg_diag_bg_ddr_address" + internal="reg_diag_bg_ddr.address" + type="conduit" + dir="end" /> + <interface + name="reg_diag_bg_ddr_clk" + internal="reg_diag_bg_ddr.clk" + type="conduit" + dir="end" /> + <interface + name="reg_diag_bg_ddr_reset" + internal="reg_diag_bg_ddr.reset" + type="conduit" + dir="end" /> + <interface + name="ram_diag_bg_ddr_readdata" + internal="ram_diag_bg_ddr.readdata" + type="conduit" + dir="end" /> + <interface + name="ram_diag_bg_ddr_read" + internal="ram_diag_bg_ddr.read" + type="conduit" + dir="end" /> + <interface + name="ram_diag_bg_ddr_writedata" + internal="ram_diag_bg_ddr.writedata" + type="conduit" + dir="end" /> + <interface + name="ram_diag_bg_ddr_write" + internal="ram_diag_bg_ddr.write" + type="conduit" + dir="end" /> + <interface + name="ram_diag_bg_ddr_address" + internal="ram_diag_bg_ddr.address" + type="conduit" + dir="end" /> + <interface + name="ram_diag_bg_ddr_clk" + internal="ram_diag_bg_ddr.clk" + type="conduit" + dir="end" /> + <interface + name="ram_diag_bg_ddr_reset" + internal="ram_diag_bg_ddr.reset" + type="conduit" + dir="end" /> + <interface + name="reg_diag_data_buffer_ddr_readdata" + internal="reg_diag_data_buffer_ddr.readdata" + type="conduit" + dir="end" /> + <interface + name="reg_diag_data_buffer_ddr_read" + internal="reg_diag_data_buffer_ddr.read" + type="conduit" + dir="end" /> + <interface + name="reg_diag_data_buffer_ddr_writedata" + internal="reg_diag_data_buffer_ddr.writedata" + type="conduit" + dir="end" /> + <interface + name="reg_diag_data_buffer_ddr_write" + internal="reg_diag_data_buffer_ddr.write" + type="conduit" + dir="end" /> + <interface + name="reg_diag_data_buffer_ddr_address" + internal="reg_diag_data_buffer_ddr.address" + type="conduit" + dir="end" /> + <interface + name="reg_diag_data_buffer_ddr_clk" + internal="reg_diag_data_buffer_ddr.clk" + type="conduit" + dir="end" /> + <interface + name="reg_diag_data_buffer_ddr_reset" + internal="reg_diag_data_buffer_ddr.reset" + type="conduit" + dir="end" /> + <interface + name="ram_diag_data_buffer_ddr_readdata" + internal="ram_diag_data_buffer_ddr.readdata" + type="conduit" + dir="end" /> + <interface + name="ram_diag_data_buffer_ddr_read" + internal="ram_diag_data_buffer_ddr.read" + type="conduit" + dir="end" /> + <interface + name="ram_diag_data_buffer_ddr_writedata" + internal="ram_diag_data_buffer_ddr.writedata" + type="conduit" + dir="end" /> + <interface + name="ram_diag_data_buffer_ddr_write" + internal="ram_diag_data_buffer_ddr.write" + type="conduit" + dir="end" /> + <interface + name="ram_diag_data_buffer_ddr_address" + internal="ram_diag_data_buffer_ddr.address" + type="conduit" + dir="end" /> + <interface + name="ram_diag_data_buffer_ddr_clk" + internal="ram_diag_data_buffer_ddr.clk" + type="conduit" + dir="end" /> + <interface + name="ram_diag_data_buffer_ddr_reset" + internal="ram_diag_data_buffer_ddr.reset" + type="conduit" + dir="end" /> <module kind="clock_source" version="11.1" enabled="1" name="clk_0"> <parameter name="clockFrequency" value="125000000" /> <parameter name="clockFrequencyKnown" value="true" /> @@ -2496,7 +2751,7 @@ q]]></parameter> <parameter name="dcache_numTCDM" value="0" /> <parameter name="dcache_lineSize" value="32" /> <parameter name="instAddrWidth" value="18" /> - <parameter name="dataAddrWidth" value="19" /> + <parameter name="dataAddrWidth" value="20" /> <parameter name="tightlyCoupledDataMaster0AddrWidth" value="1" /> <parameter name="tightlyCoupledDataMaster1AddrWidth" value="1" /> <parameter name="tightlyCoupledDataMaster2AddrWidth" value="1" /> @@ -2506,7 +2761,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='0x3800' end='0x4000' /><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='reg_diag_data_buffer_1GbE.mem' start='0x80' end='0x100' /><slave name='reg_dp_offload_rx_1GbE_hdr_dat.mem' start='0x100' end='0x200' /><slave name='reg_dp_offload_tx_1GbE_hdr_dat.mem' start='0x200' end='0x300' /><slave name='reg_bsn_monitor_10GbE.mem' start='0x300' end='0x400' /><slave name='reg_dp_offload_tx_10GbE_hdr_dat.mem' start='0x400' end='0x800' /><slave name='rom_system_info.mem' start='0x1000' end='0x2000' /><slave name='avs_eth_0.mms_tse' start='0x2000' end='0x3000' /><slave name='reg_wdi.mem' start='0x3000' end='0x3008' /><slave name='jtag_uart_0.avalon_jtag_slave' start='0x3008' end='0x3010' /><slave name='pio_wdi.s1' start='0x3010' end='0x3020' /><slave name='timer_0.s1' start='0x3020' end='0x3040' /><slave name='avs_eth_0.mms_reg' start='0x3040' end='0x3080' /><slave name='reg_diag_data_buffer_10GbE.mem' start='0x3080' end='0x3100' /><slave name='reg_bsn_monitor_1GbE.mem' start='0x3100' end='0x3140' /><slave name='reg_unb_sens.mem' start='0x3140' end='0x3160' /><slave name='reg_remu.mem' start='0x3160' end='0x3180' /><slave name='reg_epcs.mem' start='0x3180' end='0x31A0' /><slave name='reg_diag_bg_1GbE.mem' start='0x31A0' end='0x31C0' /><slave name='reg_dp_offload_tx_10GbE.mem' start='0x31C0' end='0x31E0' /><slave name='reg_diag_bg_10GbE.mem' start='0x31E0' end='0x3200' /><slave name='reg_io_ddr.mem' start='0x3200' end='0x3210' /><slave name='reg_dpmm_ctrl.mem' start='0x3210' end='0x3218' /><slave name='reg_dpmm_data.mem' start='0x3218' end='0x3220' /><slave name='reg_mmdp_ctrl.mem' start='0x3220' end='0x3228' /><slave name='reg_mmdp_data.mem' start='0x3228' end='0x3230' /><slave name='pio_pps.mem' start='0x3230' end='0x3238' /><slave name='reg_dp_offload_tx_1GbE.mem' start='0x3238' end='0x3240' /><slave name='reg_dp_offload_rx_10GbE_hdr_dat.mem' start='0x3400' end='0x3800' /><slave name='cpu_0.jtag_debug_module' start='0x3800' end='0x4000' /><slave name='ram_diag_bg_10GbE.mem' start='0x4000' end='0x8000' /><slave name='reg_tr_xaui.mem' start='0x8000' end='0xA000' /><slave name='avs_eth_0.mms_ram' start='0xA000' end='0xB000' /><slave name='ram_diag_bg_1GbE.mem' start='0xB000' end='0xC000' /><slave name='ram_diag_data_buffer_1GbE.mem' start='0x10000' end='0x20000' /><slave name='onchip_memory2_0.s1' start='0x20000' end='0x40000' /><slave name='reg_tr_10GbE.mem' start='0x40000' end='0x60000' /><slave name='ram_ss_ss_wide.mem' start='0x60000' end='0x70000' /><slave name='ram_diag_data_buffer_10GbE.mem' start='0x70000' end='0x80000' /></address-map>]]></parameter> + <parameter name="dataSlaveMapParam"><![CDATA[<address-map><slave name='pio_system_info.mem' start='0x0' end='0x80' /><slave name='reg_diag_data_buffer_1GbE.mem' start='0x80' end='0x100' /><slave name='reg_dp_offload_rx_1GbE_hdr_dat.mem' start='0x100' end='0x200' /><slave name='reg_dp_offload_tx_1GbE_hdr_dat.mem' start='0x200' end='0x300' /><slave name='reg_bsn_monitor_10GbE.mem' start='0x300' end='0x400' /><slave name='reg_dp_offload_tx_10GbE_hdr_dat.mem' start='0x400' end='0x800' /><slave name='rom_system_info.mem' start='0x1000' end='0x2000' /><slave name='avs_eth_0.mms_tse' start='0x2000' end='0x3000' /><slave name='reg_wdi.mem' start='0x3000' end='0x3008' /><slave name='jtag_uart_0.avalon_jtag_slave' start='0x3008' end='0x3010' /><slave name='pio_wdi.s1' start='0x3010' end='0x3020' /><slave name='timer_0.s1' start='0x3020' end='0x3040' /><slave name='avs_eth_0.mms_reg' start='0x3040' end='0x3080' /><slave name='reg_diag_data_buffer_10GbE.mem' start='0x3080' end='0x3100' /><slave name='reg_diag_data_buffer_ddr.mem' start='0x3100' end='0x3180' /><slave name='reg_bsn_monitor_1GbE.mem' start='0x3180' end='0x31C0' /><slave name='reg_bsn_monitor_ddr.mem' start='0x31C0' end='0x3200' /><slave name='reg_unb_sens.mem' start='0x3200' end='0x3220' /><slave name='reg_remu.mem' start='0x3220' end='0x3240' /><slave name='reg_epcs.mem' start='0x3240' end='0x3260' /><slave name='reg_diag_bg_1GbE.mem' start='0x3260' end='0x3280' /><slave name='reg_dp_offload_tx_10GbE.mem' start='0x3280' end='0x32A0' /><slave name='reg_diag_bg_10GbE.mem' start='0x32A0' end='0x32C0' /><slave name='reg_diag_bg_ddr.mem' start='0x32C0' end='0x32E0' /><slave name='reg_io_ddr.mem' start='0x32E0' end='0x32F0' /><slave name='reg_dpmm_ctrl.mem' start='0x32F0' end='0x32F8' /><slave name='reg_dpmm_data.mem' start='0x32F8' end='0x3300' /><slave name='reg_mmdp_ctrl.mem' start='0x3300' end='0x3308' /><slave name='reg_mmdp_data.mem' start='0x3308' end='0x3310' /><slave name='pio_pps.mem' start='0x3310' end='0x3318' /><slave name='reg_dp_offload_tx_1GbE.mem' start='0x3318' end='0x3320' /><slave name='reg_dp_offload_rx_10GbE_hdr_dat.mem' start='0x3400' end='0x3800' /><slave name='cpu_0.jtag_debug_module' start='0x3800' end='0x4000' /><slave name='ram_diag_bg_10GbE.mem' start='0x4000' end='0x8000' /><slave name='reg_tr_xaui.mem' start='0x8000' end='0xA000' /><slave name='avs_eth_0.mms_ram' start='0xA000' end='0xB000' /><slave name='ram_diag_bg_1GbE.mem' start='0xB000' end='0xC000' /><slave name='ram_diag_bg_ddr.mem' start='0xC000' end='0xD000' /><slave name='ram_diag_data_buffer_1GbE.mem' start='0x10000' end='0x20000' /><slave name='onchip_memory2_0.s1' start='0x20000' end='0x40000' /><slave name='reg_tr_10GbE.mem' start='0x40000' end='0x60000' /><slave name='ram_ss_ss_wide.mem' start='0x60000' end='0x70000' /><slave name='ram_diag_data_buffer_10GbE.mem' start='0x70000' end='0x80000' /><slave name='ram_diag_data_buffer_ddr.mem' start='0x80000' end='0x90000' /></address-map>]]></parameter> <parameter name="clockFrequency" value="125000000" /> <parameter name="deviceFamilyName" value="Stratix IV" /> <parameter name="internalIrqMaskSystemInfo" value="7" /> @@ -2675,6 +2930,43 @@ q]]></parameter> <parameter name="g_dat_w" value="32" /> <parameter name="AUTO_SYSTEM_CLOCK_RATE" value="125000000" /> </module> + <module + kind="avs_common_mm" + version="1.0" + enabled="1" + name="reg_bsn_monitor_ddr"> + <parameter name="g_adr_w" value="4" /> + <parameter name="g_dat_w" value="32" /> + <parameter name="AUTO_SYSTEM_CLOCK_RATE" value="125000000" /> + </module> + <module kind="avs_common_mm" version="1.0" enabled="1" name="reg_diag_bg_ddr"> + <parameter name="g_adr_w" value="3" /> + <parameter name="g_dat_w" value="32" /> + <parameter name="AUTO_SYSTEM_CLOCK_RATE" value="125000000" /> + </module> + <module kind="avs_common_mm" version="1.0" enabled="1" name="ram_diag_bg_ddr"> + <parameter name="g_adr_w" value="10" /> + <parameter name="g_dat_w" value="32" /> + <parameter name="AUTO_SYSTEM_CLOCK_RATE" value="125000000" /> + </module> + <module + kind="avs_common_mm" + version="1.0" + enabled="1" + name="reg_diag_data_buffer_ddr"> + <parameter name="g_adr_w" value="5" /> + <parameter name="g_dat_w" value="32" /> + <parameter name="AUTO_SYSTEM_CLOCK_RATE" value="125000000" /> + </module> + <module + kind="avs_common_mm" + version="1.0" + enabled="1" + name="ram_diag_data_buffer_ddr"> + <parameter name="g_adr_w" value="14" /> + <parameter name="g_dat_w" value="32" /> + <parameter name="AUTO_SYSTEM_CLOCK_RATE" value="125000000" /> + </module> <connection kind="avalon" version="11.1" @@ -2747,7 +3039,7 @@ q]]></parameter> start="cpu_0.data_master" end="reg_unb_sens.mem"> <parameter name="arbitrationPriority" value="1" /> - <parameter name="baseAddress" value="0x3140" /> + <parameter name="baseAddress" value="0x3200" /> </connection> <connection kind="avalon" @@ -2779,7 +3071,7 @@ q]]></parameter> start="cpu_0.data_master" end="reg_remu.mem"> <parameter name="arbitrationPriority" value="1" /> - <parameter name="baseAddress" value="0x3160" /> + <parameter name="baseAddress" value="0x3220" /> </connection> <connection kind="avalon" @@ -2787,7 +3079,7 @@ q]]></parameter> start="cpu_0.data_master" end="reg_dpmm_ctrl.mem"> <parameter name="arbitrationPriority" value="1" /> - <parameter name="baseAddress" value="0x3210" /> + <parameter name="baseAddress" value="0x32f0" /> </connection> <connection kind="avalon" @@ -2795,7 +3087,7 @@ q]]></parameter> start="cpu_0.data_master" end="reg_dpmm_data.mem"> <parameter name="arbitrationPriority" value="1" /> - <parameter name="baseAddress" value="0x3218" /> + <parameter name="baseAddress" value="0x32f8" /> </connection> <connection kind="avalon" @@ -2803,7 +3095,7 @@ q]]></parameter> start="cpu_0.data_master" end="reg_mmdp_ctrl.mem"> <parameter name="arbitrationPriority" value="1" /> - <parameter name="baseAddress" value="0x3220" /> + <parameter name="baseAddress" value="0x3300" /> </connection> <connection kind="avalon" @@ -2811,7 +3103,7 @@ q]]></parameter> start="cpu_0.data_master" end="reg_mmdp_data.mem"> <parameter name="arbitrationPriority" value="1" /> - <parameter name="baseAddress" value="0x3228" /> + <parameter name="baseAddress" value="0x3308" /> </connection> <connection kind="avalon" @@ -2819,7 +3111,7 @@ q]]></parameter> start="cpu_0.data_master" end="reg_epcs.mem"> <parameter name="arbitrationPriority" value="1" /> - <parameter name="baseAddress" value="0x3180" /> + <parameter name="baseAddress" value="0x3240" /> </connection> <connection kind="avalon" @@ -2827,7 +3119,7 @@ q]]></parameter> start="cpu_0.data_master" end="pio_pps.mem"> <parameter name="arbitrationPriority" value="1" /> - <parameter name="baseAddress" value="0x3230" /> + <parameter name="baseAddress" value="0x3310" /> </connection> <connection kind="avalon" @@ -3077,7 +3369,7 @@ q]]></parameter> start="cpu_0.data_master" end="reg_bsn_monitor_1GbE.mem"> <parameter name="arbitrationPriority" value="1" /> - <parameter name="baseAddress" value="0x3100" /> + <parameter name="baseAddress" value="0x3180" /> </connection> <connection kind="reset" @@ -3128,7 +3420,7 @@ q]]></parameter> start="cpu_0.data_master" end="reg_dp_offload_tx_1GbE.mem"> <parameter name="arbitrationPriority" value="1" /> - <parameter name="baseAddress" value="0x3238" /> + <parameter name="baseAddress" value="0x3318" /> </connection> <connection kind="avalon" @@ -3180,7 +3472,7 @@ q]]></parameter> start="cpu_0.data_master" end="reg_diag_bg_1GbE.mem"> <parameter name="arbitrationPriority" value="1" /> - <parameter name="baseAddress" value="0x31a0" /> + <parameter name="baseAddress" value="0x3260" /> </connection> <connection kind="avalon" @@ -3349,7 +3641,7 @@ q]]></parameter> start="cpu_0.data_master" end="reg_io_ddr.mem"> <parameter name="arbitrationPriority" value="1" /> - <parameter name="baseAddress" value="0x3200" /> + <parameter name="baseAddress" value="0x32e0" /> </connection> <connection kind="reset" @@ -3455,7 +3747,7 @@ q]]></parameter> start="cpu_0.data_master" end="reg_dp_offload_tx_10GbE.mem"> <parameter name="arbitrationPriority" value="1" /> - <parameter name="baseAddress" value="0x31c0" /> + <parameter name="baseAddress" value="0x3280" /> </connection> <connection kind="clock" @@ -3494,7 +3786,7 @@ q]]></parameter> start="cpu_0.data_master" end="reg_diag_bg_10GbE.mem"> <parameter name="arbitrationPriority" value="1" /> - <parameter name="baseAddress" value="0x31e0" /> + <parameter name="baseAddress" value="0x32a0" /> </connection> <connection kind="clock" @@ -3535,4 +3827,119 @@ q]]></parameter> <parameter name="arbitrationPriority" value="1" /> <parameter name="baseAddress" value="0x00070000" /> </connection> + <connection + kind="reset" + version="11.1" + start="clk_0.clk_reset" + end="reg_bsn_monitor_ddr.system_reset" /> + <connection + kind="reset" + version="11.1" + start="cpu_0.jtag_debug_module_reset" + end="reg_bsn_monitor_ddr.system_reset" /> + <connection + kind="reset" + version="11.1" + start="clk_0.clk_reset" + end="reg_diag_bg_ddr.system_reset" /> + <connection + kind="reset" + version="11.1" + start="cpu_0.jtag_debug_module_reset" + end="reg_diag_bg_ddr.system_reset" /> + <connection + kind="reset" + version="11.1" + start="clk_0.clk_reset" + end="ram_diag_bg_ddr.system_reset" /> + <connection + kind="reset" + version="11.1" + start="cpu_0.jtag_debug_module_reset" + end="ram_diag_bg_ddr.system_reset" /> + <connection + kind="reset" + version="11.1" + start="clk_0.clk_reset" + end="reg_diag_data_buffer_ddr.system_reset" /> + <connection + kind="reset" + version="11.1" + start="cpu_0.jtag_debug_module_reset" + end="reg_diag_data_buffer_ddr.system_reset" /> + <connection + kind="reset" + version="11.1" + start="clk_0.clk_reset" + end="ram_diag_data_buffer_ddr.system_reset" /> + <connection + kind="reset" + version="11.1" + start="cpu_0.jtag_debug_module_reset" + end="ram_diag_data_buffer_ddr.system_reset" /> + <connection + kind="clock" + version="11.1" + start="clk_0.clk" + end="reg_bsn_monitor_ddr.system" /> + <connection + kind="avalon" + version="11.1" + start="cpu_0.data_master" + end="reg_bsn_monitor_ddr.mem"> + <parameter name="arbitrationPriority" value="1" /> + <parameter name="baseAddress" value="0x31c0" /> + </connection> + <connection + kind="clock" + version="11.1" + start="clk_0.clk" + end="reg_diag_bg_ddr.system" /> + <connection + kind="avalon" + version="11.1" + start="cpu_0.data_master" + end="reg_diag_bg_ddr.mem"> + <parameter name="arbitrationPriority" value="1" /> + <parameter name="baseAddress" value="0x32c0" /> + </connection> + <connection + kind="clock" + version="11.1" + start="clk_0.clk" + end="ram_diag_bg_ddr.system" /> + <connection + kind="avalon" + version="11.1" + start="cpu_0.data_master" + end="ram_diag_bg_ddr.mem"> + <parameter name="arbitrationPriority" value="1" /> + <parameter name="baseAddress" value="0xc000" /> + </connection> + <connection + kind="clock" + version="11.1" + start="clk_0.clk" + end="reg_diag_data_buffer_ddr.system" /> + <connection + kind="avalon" + version="11.1" + start="cpu_0.data_master" + end="reg_diag_data_buffer_ddr.mem"> + <parameter name="arbitrationPriority" value="1" /> + <parameter name="baseAddress" value="0x3100" /> + </connection> + <connection + kind="clock" + version="11.1" + start="clk_0.clk" + end="ram_diag_data_buffer_ddr.system" /> + <connection + kind="avalon" + version="11.1" + start="cpu_0.data_master" + end="ram_diag_data_buffer_ddr.mem"> + <parameter name="arbitrationPriority" value="1" /> + <parameter name="baseAddress" value="0x00080000" /> + </connection> </system> diff --git a/boards/uniboard1/designs/unb1_test/src/vhdl/ddr_stream_test.vhd b/boards/uniboard1/designs/unb1_test/src/vhdl/ddr_stream_test.vhd new file mode 100644 index 0000000000000000000000000000000000000000..45e61614e8c5fe629612f95c6fbfaed6573dba07 --- /dev/null +++ b/boards/uniboard1/designs/unb1_test/src/vhdl/ddr_stream_test.vhd @@ -0,0 +1,328 @@ +------------------------------------------------------------------------------- +-- +-- Copyright (C) 2015 +-- ASTRON (Netherlands Institute for Radio Astronomy) <http://www.astron.nl/> +-- JIVE (Joint Institute for VLBI in Europe) <http://www.jive.nl/> +-- P.O.Box 2, 7990 AA Dwingeloo, The Netherlands +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see <http://www.gnu.org/licenses/>. +-- +------------------------------------------------------------------------------- + +LIBRARY IEEE, common_lib, unb1_board_lib, dp_lib, technology_lib, tech_ddr_lib, diag_lib, io_ddr_lib, reorder_lib; +USE IEEE.STD_LOGIC_1164.ALL; +USE IEEE.NUMERIC_STD.ALL; +USE common_lib.common_pkg.ALL; +USE common_lib.common_mem_pkg.ALL; +USE common_lib.common_interface_layers_pkg.ALL; +USE common_lib.common_network_layers_pkg.ALL; +USE common_lib.common_field_pkg.ALL; +USE common_lib.common_mem_pkg.ALL; +USE unb1_board_lib.unb1_board_pkg.ALL; +USE technology_lib.technology_pkg.ALL; +USE technology_lib.technology_select_pkg.ALL; +USE tech_ddr_lib.tech_ddr_pkg.ALL; +USE dp_lib.dp_stream_pkg.ALL; +USE diag_lib.diag_pkg.ALL; +USE reorder_lib.reorder_pkg.ALL; +USE work.unb1_test_pkg.ALL; + +ENTITY ddr_stream_test IS + GENERIC ( + g_sim : BOOLEAN := FALSE; + g_technology : NATURAL := c_tech_stratixiv; + g_nof_streams : NATURAL; + g_data_w : NATURAL; + + g_bg_block_size : NATURAL := 900; + g_bg_gapsize : NATURAL := 100; + g_bg_blocks_per_sync : NATURAL := 200000; + + g_tech_ddr : t_c_tech_ddr := c_tech_ddr3_4g_800m_master; + g_ena_pre_transp : BOOLEAN := TRUE; + g_reorder_seq : t_reorder_seq := c_reorder_seq + ); + PORT ( + -- System + mm_rst : IN STD_LOGIC; + mm_clk : IN STD_LOGIC; + + dp_rst : IN STD_LOGIC; + dp_clk : IN STD_LOGIC; + + -- blockgen mm + reg_diag_bg_mosi : IN t_mem_mosi := c_mem_mosi_rst; -- BG control register (one for all streams) + reg_diag_bg_miso : OUT t_mem_miso; + ram_diag_bg_mosi : IN t_mem_mosi := c_mem_mosi_rst; -- BG buffer RAM (one per stream) + ram_diag_bg_miso : OUT t_mem_miso; + + -- bsn + reg_bsn_monitor_mosi : IN t_mem_mosi; + reg_bsn_monitor_miso : OUT t_mem_miso; + + -- databuffer + reg_diag_data_buf_mosi : IN t_mem_mosi := c_mem_mosi_rst; + reg_diag_data_buf_miso : OUT t_mem_miso; + ram_diag_data_buf_mosi : IN t_mem_mosi := c_mem_mosi_rst; + ram_diag_data_buf_miso : OUT t_mem_miso; + + -- IO DDR register map + reg_io_ddr_mosi : IN t_mem_mosi; + reg_io_ddr_miso : OUT t_mem_miso; + + -- Reorder transpose + ram_ss_ss_transp_mosi : IN t_mem_mosi; + ram_ss_ss_transp_miso : OUT t_mem_miso; + + -- SO-DIMM Memory Bank I + MB_I_IN : IN t_tech_ddr3_phy_in; + MB_I_IO : INOUT t_tech_ddr3_phy_io; + MB_I_OU : OUT t_tech_ddr3_phy_ou + ); +END ddr_stream_test; + + + +ARCHITECTURE str OF ddr_stream_test IS + + -- Block generator + CONSTANT c_bg_ctrl : t_diag_block_gen := ('0', -- enable (disabled by default) + '0', -- enable_sync + TO_UVEC( g_bg_block_size, c_diag_bg_samples_per_packet_w), + TO_UVEC(g_bg_blocks_per_sync, c_diag_bg_blocks_per_sync_w), + TO_UVEC( g_bg_gapsize, c_diag_bg_gapsize_w), + TO_UVEC( 0, c_diag_bg_mem_low_adrs_w), + TO_UVEC( g_bg_block_size-1, c_diag_bg_mem_high_adrs_w), + TO_UVEC( 0, c_diag_bg_bsn_init_w)); + + CONSTANT c_max_nof_words_per_block : NATURAL := g_bg_block_size; + CONSTANT c_min_nof_words_per_block : NATURAL := 1; + CONSTANT c_def_nof_blocks_per_packet : NATURAL := 1; + + + -- ddr + CONSTANT c_wr_fifo_depth : NATURAL := 128; -- >=16 , defined at DDR side of the FIFO. + CONSTANT c_rd_fifo_depth : NATURAL := 256; -- >=16 AND >g_tech_ddr.maxburstsize, defined at DDR side of the FIFO. + + + SIGNAL block_gen_src_out_arr : t_dp_sosi_arr(g_nof_streams-1 DOWNTO 0); + SIGNAL block_gen_src_in_arr : t_dp_siso_arr(g_nof_streams-1 DOWNTO 0) := (OTHERS=> c_dp_siso_rdy); + SIGNAL fifo_block_gen_src_out_arr : t_dp_sosi_arr(g_nof_streams-1 DOWNTO 0); + SIGNAL fifo_block_gen_src_in_arr : t_dp_siso_arr(g_nof_streams-1 DOWNTO 0) := (OTHERS=> c_dp_siso_rdy); + + SIGNAL diag_data_buf_snk_in_arr : t_dp_sosi_arr(g_nof_streams-1 DOWNTO 0); + SIGNAL diag_data_buf_snk_out_arr : t_dp_siso_arr(g_nof_streams-1 DOWNTO 0); + + -- Signals to interface with the DDR conroller and memory model. + SIGNAL ctlr_dvr_miso : t_mem_ctlr_miso; + SIGNAL ctlr_dvr_mosi : t_mem_ctlr_mosi; + + SIGNAL to_mem_siso : t_dp_siso := c_dp_siso_rdy; + SIGNAL to_mem_sosi : t_dp_sosi; + + SIGNAL from_mem_siso : t_dp_siso := c_dp_siso_rdy; + SIGNAL from_mem_sosi : t_dp_sosi; + + SIGNAL ddr_out_clk_i : STD_LOGIC; + SIGNAL ddr_out_rst_i : STD_LOGIC; + +BEGIN + + ----------------------------------------------------------------------------- + -- TX: Block generator and DP fifo + ----------------------------------------------------------------------------- + u_mms_diag_block_gen: ENTITY diag_lib.mms_diag_block_gen + GENERIC MAP ( + g_nof_streams => g_nof_streams, + g_buf_dat_w => g_data_w, + g_buf_addr_w => ceil_log2(TO_UINT(c_bg_ctrl.samples_per_packet)), + g_file_name_prefix => "../../counter_data_" & NATURAL'IMAGE(g_data_w), + g_diag_block_gen_rst => c_bg_ctrl + ) + PORT MAP ( + mm_rst => mm_rst, + mm_clk => mm_clk, + + dp_rst => dp_rst, + dp_clk => dp_clk, + en_sync => '1', + + out_sosi_arr => block_gen_src_out_arr,--block_gen_src_1GbE_out_arr, + out_siso_arr => block_gen_src_in_arr,--block_gen_src_1GbE_in_arr, + + reg_bg_ctrl_mosi => reg_diag_bg_mosi,--reg_diag_bg_1GbE_mosi, + reg_bg_ctrl_miso => reg_diag_bg_miso,--reg_diag_bg_1GbE_miso, + ram_bg_data_mosi => ram_diag_bg_mosi,--ram_diag_bg_1GbE_mosi, + ram_bg_data_miso => ram_diag_bg_miso --ram_diag_bg_1GbE_miso + ); + + + + u_dp_bsn_monitor : ENTITY dp_lib.mms_dp_bsn_monitor + GENERIC MAP ( + g_nof_streams => g_nof_streams, + g_cross_clock_domain => TRUE, + --g_sync_timeout => g_bg_blocks_per_sync*(g_bg_block_size+g_bg_gapsize), + g_cnt_sop_w => c_word_w,--ceil_log2(g_bg_blocks_per_sync+1), + g_cnt_valid_w => c_word_w,--ceil_log2(g_bg_blocks_per_sync*g_bg_block_size+1), + g_log_first_bsn => TRUE + ) + PORT MAP ( + mm_rst => mm_rst, + mm_clk => mm_clk, + reg_mosi => reg_bsn_monitor_mosi, + reg_miso => reg_bsn_monitor_miso, + + dp_rst => dp_rst, + dp_clk => dp_clk, + in_siso_arr => diag_data_buf_snk_out_arr, + in_sosi_arr => diag_data_buf_snk_in_arr + ); + + diag_data_buf_snk_out_arr <= (OTHERS=>c_dp_siso_rdy); + + u_diag_data_buffer : ENTITY diag_lib.mms_diag_data_buffer + GENERIC MAP ( + g_nof_streams => g_nof_streams, + g_data_w => 32, --g_data_w, --FIXME + g_buf_nof_data => 1024, + g_buf_use_sync => FALSE -- sync by reading last address of data buffer + ) + PORT MAP ( + mm_rst => mm_rst, + mm_clk => mm_clk, + dp_rst => dp_rst, + dp_clk => dp_clk, + + ram_data_buf_mosi => ram_diag_data_buf_mosi, + ram_data_buf_miso => ram_diag_data_buf_miso, + reg_data_buf_mosi => reg_diag_data_buf_mosi, + reg_data_buf_miso => reg_diag_data_buf_miso, + + --in_sync => diag_data_buf_snk_in_arr(0).sop, + in_sync => diag_data_buf_snk_in_arr(0).sync, + in_sosi_arr => diag_data_buf_snk_in_arr + ); + + + u_transpose: ENTITY reorder_lib.reorder_transpose + GENERIC MAP( + g_nof_streams => g_nof_streams, + g_in_dat_w => g_data_w, + g_frame_size_in => g_reorder_seq.wr_chunksize, + g_frame_size_out => g_reorder_seq.wr_chunksize, + g_use_complex => FALSE, + g_ena_pre_transp => g_ena_pre_transp, + g_reorder_seq => g_reorder_seq + ) + PORT MAP ( + mm_rst => mm_rst, + mm_clk => mm_clk, + + dp_rst => ddr_out_rst_i, + dp_clk => ddr_out_clk_i, + + -- ST sink + snk_out_arr => block_gen_src_in_arr, + snk_in_arr => block_gen_src_out_arr, + + -- ST source + src_in_arr => (OTHERS => c_dp_siso_rdy), + src_out_arr => diag_data_buf_snk_in_arr, + + ram_ss_ss_transp_mosi => ram_ss_ss_transp_mosi, + ram_ss_ss_transp_miso => ram_ss_ss_transp_miso, + + -- Control interface to the external memory + dvr_miso => ctlr_dvr_miso, + dvr_mosi => ctlr_dvr_mosi, + + -- Data interface to the external memory + to_mem_src_out => to_mem_sosi, + to_mem_src_in => to_mem_siso, + + from_mem_snk_in => from_mem_sosi, + from_mem_snk_out => from_mem_siso + + ); + + ------------------------------------------------------------------------------ + -- DDR3 MODULE 0, MB_I + ------------------------------------------------------------------------------ + u_ddr_mem_ctrl : ENTITY io_ddr_lib.io_ddr + GENERIC MAP( + g_technology => g_technology, + g_tech_ddr => g_tech_ddr, + g_cross_domain_dvr_ctlr => FALSE, + g_wr_data_w => g_data_w, + g_wr_fifo_depth => c_wr_fifo_depth, + g_rd_fifo_depth => c_rd_fifo_depth, + g_rd_data_w => g_data_w, + g_wr_flush_mode => "SYN", + g_wr_flush_use_channel => FALSE, + g_wr_flush_start_channel => 0, + g_wr_flush_nof_channels => 1 + ) + PORT MAP ( + mm_rst => mm_rst, + mm_clk => mm_clk, + + -- MM register map for DDR controller status info + reg_io_ddr_mosi => reg_io_ddr_mosi, + reg_io_ddr_miso => reg_io_ddr_miso, + + -- DDR reference clock + ctlr_ref_clk => dp_clk, + ctlr_ref_rst => dp_rst, + + -- DDR controller clock domain + ctlr_clk_out => ddr_out_clk_i, + ctlr_rst_out => ddr_out_rst_i, + + ctlr_clk_in => ddr_out_clk_i, + ctlr_rst_in => ddr_out_rst_i, + + + -- Driver clock domain + dvr_clk => ddr_out_clk_i, + dvr_rst => ddr_out_rst_i, + + dvr_miso => ctlr_dvr_miso, + dvr_mosi => ctlr_dvr_mosi, + + -- Write FIFO clock domain + wr_clk => ddr_out_clk_i, + wr_rst => ddr_out_rst_i, + + wr_fifo_usedw => OPEN, + wr_sosi => to_mem_sosi, + wr_siso => to_mem_siso, + + -- Read FIFO clock domain + rd_clk => ddr_out_clk_i, + rd_rst => ddr_out_rst_i, + + rd_fifo_usedw => OPEN, + rd_sosi => from_mem_sosi, + rd_siso => from_mem_siso, + + term_ctrl_out => OPEN, + term_ctrl_in => OPEN, + + phy3_in => MB_I_IN, + phy3_io => MB_I_IO, + phy3_ou => MB_I_OU + ); +END str; + diff --git a/boards/uniboard1/designs/unb1_test/src/vhdl/mmm_unb1_test.vhd b/boards/uniboard1/designs/unb1_test/src/vhdl/mmm_unb1_test.vhd index 8af77608bfc83973da24637f95217e7431f84c87..03bcfe0454bbd03468b8faa19084095db7e898b4 100644 --- a/boards/uniboard1/designs/unb1_test/src/vhdl/mmm_unb1_test.vhd +++ b/boards/uniboard1/designs/unb1_test/src/vhdl/mmm_unb1_test.vhd @@ -47,7 +47,7 @@ ENTITY mmm_unb1_test IS g_sim : BOOLEAN := FALSE; --FALSE: use QSYS; TRUE: use mm_file I/O g_sim_unb_nr : NATURAL := 0; g_sim_node_nr : NATURAL := 0; - g_nof_streams_1GbE : NATURAL; + g_nof_streams_1GbE : NATURAL; g_nof_streams_10GbE : NATURAL; g_nof_streams_ddr : NATURAL; g_bg_block_size : NATURAL @@ -117,6 +117,11 @@ ENTITY mmm_unb1_test IS reg_diag_bg_10GbE_mosi : OUT t_mem_mosi; reg_diag_bg_10GbE_miso : IN t_mem_miso; + ram_diag_bg_ddr_mosi : OUT t_mem_mosi; + ram_diag_bg_ddr_miso : IN t_mem_miso; + reg_diag_bg_ddr_mosi : OUT t_mem_mosi; + reg_diag_bg_ddr_miso : IN t_mem_miso; + -- dp_offload_tx reg_dp_offload_tx_1GbE_mosi : OUT t_mem_mosi; reg_dp_offload_tx_1GbE_miso : IN t_mem_miso; @@ -139,6 +144,8 @@ ENTITY mmm_unb1_test IS reg_bsn_monitor_1GbE_miso : IN t_mem_miso; reg_bsn_monitor_10GbE_mosi : OUT t_mem_mosi; reg_bsn_monitor_10GbE_miso : IN t_mem_miso; + reg_bsn_monitor_ddr_mosi : OUT t_mem_mosi; + reg_bsn_monitor_ddr_miso : IN t_mem_miso; -- databuffer ram_diag_data_buf_1GbE_mosi : OUT t_mem_mosi; @@ -151,6 +158,11 @@ ENTITY mmm_unb1_test IS reg_diag_data_buf_10GbE_mosi : OUT t_mem_mosi; reg_diag_data_buf_10GbE_miso : IN t_mem_miso; + ram_diag_data_buf_ddr_mosi : OUT t_mem_mosi; + ram_diag_data_buf_ddr_miso : IN t_mem_miso; + reg_diag_data_buf_ddr_mosi : OUT t_mem_mosi; + reg_diag_data_buf_ddr_miso : IN t_mem_miso; + -- tr_10GbE reg_tr_10GbE_mosi : OUT t_mem_mosi; reg_tr_10GbE_miso : IN t_mem_miso; @@ -170,6 +182,7 @@ ARCHITECTURE str OF mmm_unb1_test IS -- Block generator CONSTANT c_ram_diag_bg_1GbE_addr_w : NATURAL := ceil_log2(g_nof_streams_1GbE * pow2(ceil_log2(g_bg_block_size))); CONSTANT c_ram_diag_bg_10GbE_addr_w : NATURAL := ceil_log2(g_nof_streams_10GbE * pow2(ceil_log2(g_bg_block_size))); + CONSTANT c_ram_diag_bg_ddr_addr_w : NATURAL := ceil_log2(g_nof_streams_ddr * pow2(ceil_log2(g_bg_block_size))); -- dp_offload CONSTANT c_reg_dp_offload_tx_adr_w : NATURAL := 1; -- Dev note: add to c_unb1_board_peripherals_mm_reg_default @@ -207,6 +220,7 @@ ARCHITECTURE str OF mmm_unb1_test IS -- BSN monitors CONSTANT c_reg_rsp_bsn_monitor_1GbE_adr_w : NATURAL := ceil_log2(g_nof_streams_1GbE * pow2(c_unb1_board_peripherals_mm_reg_default.reg_bsn_monitor_adr_w)); CONSTANT c_reg_rsp_bsn_monitor_10GbE_adr_w : NATURAL := ceil_log2(g_nof_streams_10GbE * pow2(c_unb1_board_peripherals_mm_reg_default.reg_bsn_monitor_adr_w)); + CONSTANT c_reg_rsp_bsn_monitor_ddr_adr_w : NATURAL := ceil_log2(g_nof_streams_ddr * pow2(c_unb1_board_peripherals_mm_reg_default.reg_bsn_monitor_adr_w)); CONSTANT c_dp_reg_mm_nof_words : NATURAL := 1; @@ -223,10 +237,8 @@ ARCHITECTURE str OF mmm_unb1_test IS SIGNAL sim_eth_mm_bus_switch : STD_LOGIC; SIGNAL sim_eth_psc_access : STD_LOGIC; - SIGNAL i_eth1g_reg_mosi : t_mem_mosi; SIGNAL i_eth1g_reg_miso : t_mem_miso; - SIGNAL sim_eth1g_reg_mosi : t_mem_mosi; SIGNAL i_reset_n : STD_LOGIC; @@ -276,52 +288,51 @@ BEGIN u_mm_file_reg_diag_bg_1GbE : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "REG_DIAG_BG_1GBE") PORT MAP(mm_rst, mm_clk, reg_diag_bg_1GbE_mosi, reg_diag_bg_1GbE_miso); - u_mm_file_ram_diag_bg_1GbE : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "RAM_DIAG_BG_1GBE") PORT MAP(mm_rst, mm_clk, ram_diag_bg_1GbE_mosi, ram_diag_bg_1GbE_miso); - u_mm_file_reg_diag_bg_10GbE : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "REG_DIAG_BG_10GBE") PORT MAP(mm_rst, mm_clk, reg_diag_bg_10GbE_mosi, reg_diag_bg_10GbE_miso); - u_mm_file_ram_diag_bg_10GbE : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "RAM_DIAG_BG_10GBE") PORT MAP(mm_rst, mm_clk, ram_diag_bg_10GbE_mosi, ram_diag_bg_10GbE_miso); - + u_mm_file_reg_diag_bg_ddr : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "REG_DIAG_BG_DDR") + PORT MAP(mm_rst, mm_clk, reg_diag_bg_ddr_mosi, reg_diag_bg_ddr_miso); + u_mm_file_ram_diag_bg_ddr : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "RAM_DIAG_BG_DDR") + PORT MAP(mm_rst, mm_clk, ram_diag_bg_ddr_mosi, ram_diag_bg_ddr_miso); u_mm_file_reg_dp_offload_tx_1GbE : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "REG_DP_OFFLOAD_TX_1GBE") PORT MAP(mm_rst, mm_clk, reg_dp_offload_tx_1GbE_mosi, reg_dp_offload_tx_1GbE_miso); - u_mm_file_reg_dp_offload_tx_10GbE : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "REG_DP_OFFLOAD_TX_10GBE") PORT MAP(mm_rst, mm_clk, reg_dp_offload_tx_10GbE_mosi, reg_dp_offload_tx_10GbE_miso); - u_mm_file_reg_dp_offload_tx_1GbE_hdr_dat : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "REG_DP_OFFLOAD_TX_1GBE_HDR_DAT") PORT MAP(mm_rst, mm_clk, reg_dp_offload_tx_1GbE_hdr_dat_mosi, reg_dp_offload_tx_1GbE_hdr_dat_miso); - u_mm_file_reg_dp_offload_tx_10GbE_hdr_dat : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "REG_DP_OFFLOAD_TX_10GBE_HDR_DAT") PORT MAP(mm_rst, mm_clk, reg_dp_offload_tx_10GbE_hdr_dat_mosi, reg_dp_offload_tx_10GbE_hdr_dat_miso); - u_mm_file_reg_dp_offload_rx_1GbE_hdr_dat : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "REG_DP_OFFLOAD_RX_1GBE_HDR_DAT") PORT MAP(mm_rst, mm_clk, reg_dp_offload_rx_1GbE_hdr_dat_mosi, reg_dp_offload_rx_1GbE_hdr_dat_miso); - u_mm_file_reg_dp_offload_rx_10GbE_hdr_dat : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "REG_DP_OFFLOAD_RX_10GBE_HDR_DAT") PORT MAP(mm_rst, mm_clk, reg_dp_offload_rx_10GbE_hdr_dat_mosi, reg_dp_offload_rx_10GbE_hdr_dat_miso); u_mm_file_reg_bsn_monitor_1GbE : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "REG_BSN_MONITOR_1GBE") PORT MAP(mm_rst, mm_clk, reg_bsn_monitor_1GbE_mosi, reg_bsn_monitor_1GbE_miso); - u_mm_file_reg_bsn_monitor_10GbE : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "REG_BSN_MONITOR_10GBE") PORT MAP(mm_rst, mm_clk, reg_bsn_monitor_10GbE_mosi, reg_bsn_monitor_10GbE_miso); - - u_mm_file_ram_diag_data_buffer_1GbE : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "RAM_DIAG_DATA_BUFFER_1GBE") - PORT MAP(mm_rst, mm_clk, ram_diag_data_buf_1GbE_mosi, ram_diag_data_buf_1GbE_miso); - u_mm_file_ram_diag_data_buffer_10GbE : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "RAM_DIAG_DATA_BUFFER_10GBE") - PORT MAP(mm_rst, mm_clk, ram_diag_data_buf_10GbE_mosi, ram_diag_data_buf_10GbE_miso); + u_mm_file_reg_bsn_monitor_ddr : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "REG_BSN_MONITOR_DDR") + PORT MAP(mm_rst, mm_clk, reg_bsn_monitor_ddr_mosi, reg_bsn_monitor_ddr_miso); u_mm_file_reg_diag_data_buffer_1GbE : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "REG_DIAG_DATA_BUFFER_1GBE") PORT MAP(mm_rst, mm_clk, reg_diag_data_buf_1GbE_mosi, reg_diag_data_buf_1GbE_miso); + u_mm_file_ram_diag_data_buffer_1GbE : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "RAM_DIAG_DATA_BUFFER_1GBE") + PORT MAP(mm_rst, mm_clk, ram_diag_data_buf_1GbE_mosi, ram_diag_data_buf_1GbE_miso); u_mm_file_reg_diag_data_buffer_10GbE : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "REG_DIAG_DATA_BUFFER_10GBE") PORT MAP(mm_rst, mm_clk, reg_diag_data_buf_10GbE_mosi, reg_diag_data_buf_10GbE_miso); + u_mm_file_ram_diag_data_buffer_10GbE : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "RAM_DIAG_DATA_BUFFER_10GBE") + PORT MAP(mm_rst, mm_clk, ram_diag_data_buf_10GbE_mosi, ram_diag_data_buf_10GbE_miso); + u_mm_file_reg_diag_data_buffer_ddr : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "REG_DIAG_DATA_BUFFER_DDR") + PORT MAP(mm_rst, mm_clk, reg_diag_data_buf_ddr_mosi, reg_diag_data_buf_ddr_miso); + u_mm_file_ram_diag_data_buffer_ddr : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "RAM_DIAG_DATA_BUFFER_DDR") + PORT MAP(mm_rst, mm_clk, ram_diag_data_buf_ddr_mosi, ram_diag_data_buf_ddr_miso); u_mm_file_ram_ss_ss_transp : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "RAM_SS_SS_WIDE") PORT MAP(mm_rst, mm_clk, ram_ss_ss_transp_mosi, ram_ss_ss_transp_miso); @@ -567,6 +578,22 @@ BEGIN ram_diag_bg_10GbE_reset_export => OPEN, ram_diag_bg_10GbE_write_export => ram_diag_bg_10GbE_mosi.wr, ram_diag_bg_10GbE_writedata_export => ram_diag_bg_10GbE_mosi.wrdata(c_word_w-1 DOWNTO 0), + -- the_reg_diag_bg_ddr + reg_diag_bg_ddr_address_export => reg_diag_bg_ddr_mosi.address(c_unb1_board_peripherals_mm_reg_default.reg_diag_bg_adr_w-1 DOWNTO 0), + reg_diag_bg_ddr_clk_export => OPEN, + reg_diag_bg_ddr_read_export => reg_diag_bg_ddr_mosi.rd, + reg_diag_bg_ddr_readdata_export => reg_diag_bg_ddr_miso.rddata(c_word_w-1 DOWNTO 0), + reg_diag_bg_ddr_reset_export => OPEN, + reg_diag_bg_ddr_write_export => reg_diag_bg_ddr_mosi.wr, + reg_diag_bg_ddr_writedata_export => reg_diag_bg_ddr_mosi.wrdata(c_word_w-1 DOWNTO 0), + -- the_ram_diag_bg_ddr + ram_diag_bg_ddr_address_export => ram_diag_bg_ddr_mosi.address(c_ram_diag_bg_ddr_addr_w-1 DOWNTO 0), + ram_diag_bg_ddr_clk_export => OPEN, + ram_diag_bg_ddr_read_export => ram_diag_bg_ddr_mosi.rd, + ram_diag_bg_ddr_readdata_export => ram_diag_bg_ddr_miso.rddata(c_word_w-1 DOWNTO 0), + ram_diag_bg_ddr_reset_export => OPEN, + ram_diag_bg_ddr_write_export => ram_diag_bg_ddr_mosi.wr, + ram_diag_bg_ddr_writedata_export => ram_diag_bg_ddr_mosi.wrdata(c_word_w-1 DOWNTO 0), -- the_reg_dp_offload_tx_1GbE @@ -640,6 +667,14 @@ BEGIN reg_bsn_monitor_10GbE_reset_export => OPEN, reg_bsn_monitor_10GbE_write_export => reg_bsn_monitor_10GbE_mosi.wr, reg_bsn_monitor_10GbE_writedata_export => reg_bsn_monitor_10GbE_mosi.wrdata(c_word_w-1 DOWNTO 0), + -- the_reg_bsn_monitor_ddr + reg_bsn_monitor_ddr_address_export => reg_bsn_monitor_ddr_mosi.address(c_reg_rsp_bsn_monitor_ddr_adr_w-1 DOWNTO 0), + reg_bsn_monitor_ddr_clk_export => OPEN, + reg_bsn_monitor_ddr_read_export => reg_bsn_monitor_ddr_mosi.rd, + reg_bsn_monitor_ddr_readdata_export => reg_bsn_monitor_ddr_miso.rddata(c_word_w-1 DOWNTO 0), + reg_bsn_monitor_ddr_reset_export => OPEN, + reg_bsn_monitor_ddr_write_export => reg_bsn_monitor_ddr_mosi.wr, + reg_bsn_monitor_ddr_writedata_export => reg_bsn_monitor_ddr_mosi.wrdata(c_word_w-1 DOWNTO 0), -- the_ram_diag_data_buffer_1GbE @@ -658,6 +693,14 @@ BEGIN ram_diag_data_buffer_10GbE_reset_export => OPEN, ram_diag_data_buffer_10GbE_write_export => ram_diag_data_buf_10GbE_mosi.wr, ram_diag_data_buffer_10GbE_writedata_export => ram_diag_data_buf_10GbE_mosi.wrdata(c_word_w-1 DOWNTO 0), + -- the_ram_diag_data_buffer_ddr + ram_diag_data_buffer_ddr_address_export => ram_diag_data_buf_ddr_mosi.address(c_unb1_board_peripherals_mm_reg_default.ram_diag_db_adr_w-1 DOWNTO 0), + ram_diag_data_buffer_ddr_clk_export => OPEN, + ram_diag_data_buffer_ddr_read_export => ram_diag_data_buf_ddr_mosi.rd, + ram_diag_data_buffer_ddr_readdata_export => ram_diag_data_buf_ddr_miso.rddata(c_word_w-1 DOWNTO 0), + ram_diag_data_buffer_ddr_reset_export => OPEN, + ram_diag_data_buffer_ddr_write_export => ram_diag_data_buf_ddr_mosi.wr, + ram_diag_data_buffer_ddr_writedata_export => ram_diag_data_buf_ddr_mosi.wrdata(c_word_w-1 DOWNTO 0), -- the_reg_diag_data_buffer_1GbE @@ -676,6 +719,14 @@ BEGIN reg_diag_data_buffer_10GbE_reset_export => OPEN, reg_diag_data_buffer_10GbE_write_export => reg_diag_data_buf_10GbE_mosi.wr, reg_diag_data_buffer_10GbE_writedata_export => reg_diag_data_buf_10GbE_mosi.wrdata(c_word_w-1 DOWNTO 0), + -- the_reg_diag_data_buffer_ddr + reg_diag_data_buffer_ddr_address_export => reg_diag_data_buf_ddr_mosi.address(c_unb1_board_peripherals_mm_reg_default.reg_diag_db_adr_w-1 DOWNTO 0), + reg_diag_data_buffer_ddr_clk_export => OPEN, + reg_diag_data_buffer_ddr_read_export => reg_diag_data_buf_ddr_mosi.rd, + reg_diag_data_buffer_ddr_readdata_export => reg_diag_data_buf_ddr_miso.rddata(c_word_w-1 DOWNTO 0), + reg_diag_data_buffer_ddr_reset_export => OPEN, + reg_diag_data_buffer_ddr_write_export => reg_diag_data_buf_ddr_mosi.wr, + reg_diag_data_buffer_ddr_writedata_export => reg_diag_data_buf_ddr_mosi.wrdata(c_word_w-1 DOWNTO 0), -- ram_ss_ss_wide ram_ss_ss_wide_address_export => ram_ss_ss_transp_mosi.address(c_ram_ss_ss_transp_adr_w-1 DOWNTO 0), diff --git a/boards/uniboard1/designs/unb1_test/src/vhdl/qsys_unb1_test_pkg.vhd b/boards/uniboard1/designs/unb1_test/src/vhdl/qsys_unb1_test_pkg.vhd index 1d4b5f70765ccd29bbcd80102d6b651d45e91c5b..f78c1f804acb2116daa9ecc22d5357da1200c105 100644 --- a/boards/uniboard1/designs/unb1_test/src/vhdl/qsys_unb1_test_pkg.vhd +++ b/boards/uniboard1/designs/unb1_test/src/vhdl/qsys_unb1_test_pkg.vhd @@ -1,6 +1,6 @@ ------------------------------------------------------------------------------- -- --- Copyright (C) 2013 +-- Copyright (C) 2015 -- ASTRON (Netherlands Institute for Radio Astronomy) <http://www.astron.nl/> -- P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -- @@ -28,6 +28,7 @@ PACKAGE qsys_unb1_test_pkg IS -- this component declaration is copy-pasted from Quartus v11.1 QSYS builder ----------------------------------------------------------------------------- component qsys_unb1_test is + port ( coe_ram_write_export_from_the_avs_eth_0 : out std_logic; -- export coe_reg_read_export_from_the_avs_eth_0 : out std_logic; -- export @@ -269,8 +270,44 @@ PACKAGE qsys_unb1_test_pkg IS ram_diag_data_buffer_10gbe_write_export : out std_logic; -- export ram_diag_data_buffer_10gbe_writedata_export : out std_logic_vector(31 downto 0); -- export ram_diag_data_buffer_10gbe_read_export : out std_logic; -- export - ram_diag_data_buffer_10gbe_readdata_export : in std_logic_vector(31 downto 0) := (others => 'X') -- export + ram_diag_data_buffer_10gbe_readdata_export : in std_logic_vector(31 downto 0) := (others => 'X'); -- export + reg_bsn_monitor_ddr_readdata_export : in std_logic_vector(31 downto 0) := (others => 'X'); -- export + reg_bsn_monitor_ddr_read_export : out std_logic; -- export + reg_bsn_monitor_ddr_writedata_export : out std_logic_vector(31 downto 0); -- export + reg_bsn_monitor_ddr_write_export : out std_logic; -- export + reg_bsn_monitor_ddr_address_export : out std_logic_vector(3 downto 0); -- export + reg_bsn_monitor_ddr_clk_export : out std_logic; -- export + reg_bsn_monitor_ddr_reset_export : out std_logic; -- export + reg_diag_bg_ddr_readdata_export : in std_logic_vector(31 downto 0) := (others => 'X'); -- export + reg_diag_bg_ddr_read_export : out std_logic; -- export + reg_diag_bg_ddr_writedata_export : out std_logic_vector(31 downto 0); -- export + reg_diag_bg_ddr_write_export : out std_logic; -- export + reg_diag_bg_ddr_address_export : out std_logic_vector(2 downto 0); -- export + reg_diag_bg_ddr_clk_export : out std_logic; -- export + reg_diag_bg_ddr_reset_export : out std_logic; -- export + ram_diag_bg_ddr_readdata_export : in std_logic_vector(31 downto 0) := (others => 'X'); -- export + ram_diag_bg_ddr_read_export : out std_logic; -- export + ram_diag_bg_ddr_writedata_export : out std_logic_vector(31 downto 0); -- export + ram_diag_bg_ddr_write_export : out std_logic; -- export + ram_diag_bg_ddr_address_export : out std_logic_vector(9 downto 0); -- export + ram_diag_bg_ddr_clk_export : out std_logic; -- export + ram_diag_bg_ddr_reset_export : out std_logic; -- export + reg_diag_data_buffer_ddr_readdata_export : in std_logic_vector(31 downto 0) := (others => 'X'); -- export + reg_diag_data_buffer_ddr_read_export : out std_logic; -- export + reg_diag_data_buffer_ddr_writedata_export : out std_logic_vector(31 downto 0); -- export + reg_diag_data_buffer_ddr_write_export : out std_logic; -- export + reg_diag_data_buffer_ddr_address_export : out std_logic_vector(4 downto 0); -- export + reg_diag_data_buffer_ddr_clk_export : out std_logic; -- export + reg_diag_data_buffer_ddr_reset_export : out std_logic; -- export + ram_diag_data_buffer_ddr_readdata_export : in std_logic_vector(31 downto 0) := (others => 'X'); -- export + ram_diag_data_buffer_ddr_read_export : out std_logic; -- export + ram_diag_data_buffer_ddr_writedata_export : out std_logic_vector(31 downto 0); -- export + ram_diag_data_buffer_ddr_write_export : out std_logic; -- export + ram_diag_data_buffer_ddr_address_export : out std_logic_vector(13 downto 0); -- export + ram_diag_data_buffer_ddr_clk_export : out std_logic; -- export + ram_diag_data_buffer_ddr_reset_export : out std_logic -- export ); + end component qsys_unb1_test; END qsys_unb1_test_pkg; diff --git a/boards/uniboard1/designs/unb1_test/src/vhdl/unb1_test.vhd b/boards/uniboard1/designs/unb1_test/src/vhdl/unb1_test.vhd index 11eb46779437efc36f20e09544889d39a1453113..919dd5e424b1dbd4b531dcd391d08740f1138da6 100644 --- a/boards/uniboard1/designs/unb1_test/src/vhdl/unb1_test.vhd +++ b/boards/uniboard1/designs/unb1_test/src/vhdl/unb1_test.vhd @@ -50,7 +50,7 @@ ENTITY unb1_test IS g_stamp_time : NATURAL := 0; -- Time (HHMMSS) -- set by QSF g_stamp_svn : NATURAL := 0; -- SVN revision -- set by QSF g_nof_MB : NATURAL := c_unb1_board_nof_ddr3; -- Fixed control infrastructure for 2 modules per FPGA - g_use_MB_I : NATURAL := 0; -- 1: use MB_I 0: do not use + g_use_MB_I : NATURAL := 1; -- 1: use MB_I 0: do not use g_use_MB_II : NATURAL := 0 ); PORT ( @@ -148,7 +148,6 @@ ARCHITECTURE str OF unb1_test IS -- ddr CONSTANT c_ddr_master : t_c_tech_ddr := c_tech_ddr3_4g_800m_master; CONSTANT c_ddr_slave : t_c_tech_ddr := c_tech_ddr3_4g_800m_slave; - CONSTANT c_st_dat_w : NATURAL := 64; -- Any power of two 8..256 -- Block generator constants CONSTANT c_bg_block_size : NATURAL := 900; @@ -264,6 +263,11 @@ ARCHITECTURE str OF unb1_test IS SIGNAL ram_diag_bg_10GbE_mosi : t_mem_mosi; SIGNAL ram_diag_bg_10GbE_miso : t_mem_miso; + SIGNAL reg_diag_bg_ddr_mosi : t_mem_mosi; + SIGNAL reg_diag_bg_ddr_miso : t_mem_miso; + SIGNAL ram_diag_bg_ddr_mosi : t_mem_mosi; + SIGNAL ram_diag_bg_ddr_miso : t_mem_miso; + SIGNAL reg_dp_offload_tx_1GbE_mosi : t_mem_mosi; SIGNAL reg_dp_offload_tx_1GbE_miso : t_mem_miso; SIGNAL reg_dp_offload_tx_1GbE_hdr_dat_mosi : t_mem_mosi; @@ -283,6 +287,8 @@ ARCHITECTURE str OF unb1_test IS SIGNAL reg_bsn_monitor_1GbE_miso : t_mem_miso; SIGNAL reg_bsn_monitor_10GbE_mosi : t_mem_mosi; SIGNAL reg_bsn_monitor_10GbE_miso : t_mem_miso; + SIGNAL reg_bsn_monitor_ddr_mosi : t_mem_mosi; + SIGNAL reg_bsn_monitor_ddr_miso : t_mem_miso; SIGNAL ram_diag_data_buf_1GbE_mosi : t_mem_mosi; SIGNAL ram_diag_data_buf_1GbE_miso : t_mem_miso; @@ -294,6 +300,11 @@ ARCHITECTURE str OF unb1_test IS SIGNAL reg_diag_data_buf_10GbE_mosi : t_mem_mosi; SIGNAL reg_diag_data_buf_10GbE_miso : t_mem_miso; + SIGNAL ram_diag_data_buf_ddr_mosi : t_mem_mosi; + SIGNAL ram_diag_data_buf_ddr_miso : t_mem_miso; + SIGNAL reg_diag_data_buf_ddr_mosi : t_mem_mosi; + SIGNAL reg_diag_data_buf_ddr_miso : t_mem_miso; + SIGNAL block_gen_1GbE_src_out_arr : t_dp_sosi_arr(c_nof_streams_1GbE-1 DOWNTO 0); SIGNAL block_gen_10GbE_src_out_arr : t_dp_sosi_arr(c_nof_streams_10GbE-1 DOWNTO 0); @@ -307,36 +318,18 @@ ARCHITECTURE str OF unb1_test IS SIGNAL dp_offload_rx_10GbE_snk_in_arr : t_dp_sosi_arr(c_nof_streams_10GbE-1 DOWNTO 0); SIGNAL dp_offload_rx_10GbE_snk_out_arr : t_dp_siso_arr(c_nof_streams_10GbE-1 DOWNTO 0); + SIGNAL ram_ss_ss_transp_mosi : t_mem_mosi; + SIGNAL ram_ss_ss_transp_miso : t_mem_miso; + + SIGNAL reg_io_ddr_mosi : t_mem_mosi; + SIGNAL reg_io_ddr_miso : t_mem_miso; + -- Interface: 1GbE UDP streaming ports SIGNAL eth1g_udp_tx_sosi_arr : t_dp_sosi_arr(c_nof_streams_1GbE-1 DOWNTO 0); SIGNAL eth1g_udp_tx_siso_arr : t_dp_siso_arr(c_nof_streams_1GbE-1 DOWNTO 0); SIGNAL eth1g_udp_rx_sosi_arr : t_dp_sosi_arr(c_nof_streams_1GbE-1 DOWNTO 0); SIGNAL eth1g_udp_rx_siso_arr : t_dp_siso_arr(c_nof_streams_1GbE-1 DOWNTO 0); - -- DDR - SIGNAL ddr_ctlr_mosi_arr : t_mem_ctlr_mosi_arr(0 TO g_nof_MB-1); - SIGNAL ddr_ctlr_miso_arr : t_mem_ctlr_miso_arr(0 TO g_nof_MB-1); - - SIGNAL ddr_ctlr_clk : STD_LOGIC_VECTOR(0 TO g_nof_MB-1); - SIGNAL ddr_ctlr_rst : STD_LOGIC_VECTOR(0 TO g_nof_MB-1); - - SIGNAL ram_ss_ss_transp_mosi : t_mem_mosi; - SIGNAL ram_ss_ss_transp_miso : t_mem_miso; - SIGNAL ram_ss_ss_transp_mosi2 : t_mem_mosi; - SIGNAL ram_ss_ss_transp_miso2 : t_mem_miso := c_mem_miso_rst; - - SIGNAL to_mem_siso : t_dp_siso := c_dp_siso_rdy; - SIGNAL to_mem_sosi : t_dp_sosi; - SIGNAL from_mem_siso : t_dp_siso := c_dp_siso_rdy; - SIGNAL from_mem_sosi : t_dp_sosi; - - SIGNAL to_mem_siso2 : t_dp_siso := c_dp_siso_rdy; - SIGNAL to_mem_sosi2 : t_dp_sosi; - SIGNAL from_mem_siso2 : t_dp_siso := c_dp_siso_rdy; - SIGNAL from_mem_sosi2 : t_dp_sosi; - - SIGNAL reg_io_ddr_mosi : t_mem_mosi; - SIGNAL reg_io_ddr_miso : t_mem_miso; BEGIN ----------------------------------------------------------------------------- @@ -544,6 +537,11 @@ BEGIN reg_diag_bg_10GbE_mosi => reg_diag_bg_10GbE_mosi, reg_diag_bg_10GbE_miso => reg_diag_bg_10GbE_miso, + ram_diag_bg_ddr_mosi => ram_diag_bg_ddr_mosi, + ram_diag_bg_ddr_miso => ram_diag_bg_ddr_miso, + reg_diag_bg_ddr_mosi => reg_diag_bg_ddr_mosi, + reg_diag_bg_ddr_miso => reg_diag_bg_ddr_miso, + -- dp_offload_tx reg_dp_offload_tx_1GbE_mosi => reg_dp_offload_tx_1GbE_mosi, reg_dp_offload_tx_1GbE_miso => reg_dp_offload_tx_1GbE_miso, @@ -567,6 +565,8 @@ BEGIN reg_bsn_monitor_1GbE_miso => reg_bsn_monitor_1GbE_miso, reg_bsn_monitor_10GbE_mosi => reg_bsn_monitor_10GbE_mosi, reg_bsn_monitor_10GbE_miso => reg_bsn_monitor_10GbE_miso, + reg_bsn_monitor_ddr_mosi => reg_bsn_monitor_ddr_mosi, + reg_bsn_monitor_ddr_miso => reg_bsn_monitor_ddr_miso, -- databuffer ram_diag_data_buf_1GbE_mosi => ram_diag_data_buf_1GbE_mosi, @@ -579,6 +579,11 @@ BEGIN reg_diag_data_buf_10GbE_mosi => reg_diag_data_buf_10GbE_mosi, reg_diag_data_buf_10GbE_miso => reg_diag_data_buf_10GbE_miso, + ram_diag_data_buf_ddr_mosi => ram_diag_data_buf_ddr_mosi, + ram_diag_data_buf_ddr_miso => ram_diag_data_buf_ddr_miso, + reg_diag_data_buf_ddr_mosi => reg_diag_data_buf_ddr_mosi, + reg_diag_data_buf_ddr_miso => reg_diag_data_buf_ddr_miso, + -- tr_10GbE reg_tr_10GbE_mosi => reg_tr_10GbE_mosi, reg_tr_10GbE_miso => reg_tr_10GbE_miso, @@ -809,101 +814,55 @@ BEGIN END GENERATE; --- u_reorder: ENTITY reorder_lib.reorder_transpose --- GENERIC MAP ( --- g_nof_streams => c_nof_streams_ddr, --- g_in_dat_w => c_data_w_32, --- g_ena_pre_transp => FALSE, --- g_use_complex => FALSE, --- g_reorder_seq => c_reorder_seq_same --- ) --- PORT MAP ( --- mm_rst => mm_rst, --- mm_clk => mm_clk, --- dp_clk => dp_clk, --- dp_rst => dp_rst, --- -- ST sinks from BG --- snk_out_arr => block_gen_src_in_arr(c_nof_streams-1 downto c_nof_streams_eth), -- -2 --- snk_in_arr => block_gen_src_out_arr(c_nof_streams-1 downto c_nof_streams_eth), -- -2 --- -- ST source to DB --- src_in_arr => (OTHERS=> c_dp_siso_rdy), --- src_out_arr => diag_data_buf_snk_in_arr(c_nof_streams-1 downto c_nof_streams_eth), -- -2 --- -- Memory Mapped --- ram_ss_ss_transp_mosi => ram_ss_ss_transp_mosi, --- ram_ss_ss_transp_miso => ram_ss_ss_transp_miso, --- -- Control interface to the external memory --- dvr_mosi => ddr_ctlr_mosi_arr(0), --- dvr_miso => ddr_ctlr_miso_arr(0), --- -- Data interface to the external memory --- to_mem_src_out => to_mem_sosi, --- to_mem_src_in => to_mem_siso, --- from_mem_snk_in => from_mem_sosi, --- from_mem_snk_out => from_mem_siso --- ); --- --- ------------------------------------------------------------------------------ --- -- DDR3 MODULE 0,1 --- ------------------------------------------------------------------------------ --- no_MB_I : IF g_use_MB_I = 0 GENERATE --- --reg_ddr3_miso_arr(0) <= c_mem_miso_rst; --- --reg_diagnostics_miso_arr(0) <= c_mem_miso_rst; --- END GENERATE; --- --- gen_MB_I : IF g_use_MB_I = 1 GENERATE --- u_mms_ddr3_i: ENTITY io_ddr_lib.io_ddr --- GENERIC MAP ( --- g_technology => g_technology, --- g_tech_ddr => c_ddr_master, --- g_wr_data_w => c_st_dat_w, --- g_rd_data_w => c_st_dat_w --- ) --- PORT MAP ( --- mm_clk => mm_clk, --- mm_rst => mm_rst, --- --- reg_io_ddr_mosi => reg_io_ddr_mosi, --- reg_io_ddr_miso => reg_io_ddr_miso, --- --- ctlr_ref_clk => dp_clk, --- ctlr_ref_rst => dp_rst, --- --- ctlr_clk_out => ddr_ctlr_clk(0), --- ctlr_clk_in => ddr_ctlr_clk(0), --- --- ctlr_rst_out => ddr_ctlr_rst(0), --- ctlr_rst_in => ddr_ctlr_rst(0), --- --- dvr_clk => dp_clk, --- dvr_rst => dp_rst, --- --- dvr_mosi => ddr_ctlr_mosi_arr(0), --- dvr_miso => ddr_ctlr_miso_arr(0), --- --- wr_clk => dp_clk, --- wr_rst => dp_rst, --- --- wr_sosi => to_mem_sosi, --- wr_siso => to_mem_siso, --- --- rd_clk => dp_clk, --- rd_rst => dp_rst, --- --- rd_sosi => from_mem_sosi, --- rd_siso => from_mem_siso, --- --- term_ctrl_out => OPEN, --- term_ctrl_in => OPEN, --- --- phy3_in => MB_I_IN, --- phy3_io => MB_I_IO, --- phy3_ou => MB_I_OU --- ); --- END GENERATE; --- - ----------------------------------------------------------------------------- - -- Node function - ----------------------------------------------------------------------------- - -- Insert node_[design_name] here + u_ddr_stream_test : ENTITY work.ddr_stream_test + GENERIC MAP ( + g_sim => g_sim, + g_technology => g_technology, + g_nof_streams => c_nof_streams_ddr, + g_data_w => c_data_w_32, + g_bg_block_size => c_bg_block_size, + g_bg_gapsize => c_bg_gapsize, + g_bg_blocks_per_sync => c_bg_blocks_per_sync, + g_tech_ddr => c_ddr_master, + g_reorder_seq => c_reorder_seq_same, + g_ena_pre_transp => FALSE + ) + PORT MAP ( + mm_rst => mm_rst, + mm_clk => mm_clk, + + dp_rst => dp_rst, + dp_clk => dp_clk, + + -- blockgen mm + reg_diag_bg_mosi => reg_diag_bg_ddr_mosi, + reg_diag_bg_miso => reg_diag_bg_ddr_miso, + ram_diag_bg_mosi => ram_diag_bg_ddr_mosi, + ram_diag_bg_miso => ram_diag_bg_ddr_miso, + + -- bsn + reg_bsn_monitor_mosi => reg_bsn_monitor_ddr_mosi, + reg_bsn_monitor_miso => reg_bsn_monitor_ddr_miso, + + -- databuffer + reg_diag_data_buf_mosi => reg_diag_data_buf_ddr_mosi, + reg_diag_data_buf_miso => reg_diag_data_buf_ddr_miso, + ram_diag_data_buf_mosi => ram_diag_data_buf_ddr_mosi, + ram_diag_data_buf_miso => ram_diag_data_buf_ddr_miso, + + -- IO DDR register map + reg_io_ddr_mosi => reg_io_ddr_mosi, + reg_io_ddr_miso => reg_io_ddr_miso, + + -- Reorder transpose + ram_ss_ss_transp_mosi => ram_ss_ss_transp_mosi, + ram_ss_ss_transp_miso => ram_ss_ss_transp_miso, + + -- SO-DIMM Memory Bank I + MB_I_IN => MB_I_IN, + MB_I_IO => MB_I_IO, + MB_I_OU => MB_I_OU + ); END str; diff --git a/boards/uniboard1/designs/unb1_test/tb/vhdl/tb_unb1_test.vhd b/boards/uniboard1/designs/unb1_test/tb/vhdl/tb_unb1_test.vhd index 84766e57e37893502bfb7e655c4ff21dd39d2c47..4e85d15d7a7d259ac7d503c098b6579849845b9f 100644 --- a/boards/uniboard1/designs/unb1_test/tb/vhdl/tb_unb1_test.vhd +++ b/boards/uniboard1/designs/unb1_test/tb/vhdl/tb_unb1_test.vhd @@ -1,6 +1,6 @@ ------------------------------------------------------------------------------- -- --- Copyright (C) 2012 +-- Copyright (C) 2015 -- ASTRON (Netherlands Institute for Radio Astronomy) <http://www.astron.nl/> -- JIVE (Joint Institute for VLBI in Europe) <http://www.jive.nl/> -- P.O.Box 2, 7990 AA Dwingeloo, The Netherlands @@ -42,13 +42,16 @@ -- > python $UPE/peripherals/util_ppsh.py --unb 0 --bn 3 -n 1 -v 5 --sim -- -LIBRARY IEEE, common_lib, unb1_board_lib, i2c_lib, technology_lib, tech_ddr_lib; +LIBRARY ip_stratixiv_ddr3_mem_model_lib; + +LIBRARY IEEE, common_lib, unb1_board_lib, i2c_lib, io_ddr_lib, technology_lib, tech_ddr_lib; USE IEEE.std_logic_1164.ALL; USE IEEE.numeric_std.ALL; USE common_lib.common_pkg.ALL; USE unb1_board_lib.unb1_board_pkg.ALL; USE common_lib.tb_common_pkg.ALL; USE tech_ddr_lib.tech_ddr_pkg.ALL; +USE tech_ddr_lib.tech_ddr_mem_model_component_pkg.ALL; ENTITY tb_unb1_test IS GENERIC ( @@ -72,6 +75,8 @@ ARCHITECTURE tb OF tb_unb1_test IS CONSTANT c_sa_clk_period : TIME := 6.4 ns; CONSTANT c_pps_period : NATURAL := 1000; + CONSTANT c_ddr : t_c_tech_ddr := c_tech_ddr3_4g_800m_master; + -- DUT SIGNAL clk : STD_LOGIC := '0'; SIGNAL pps : STD_LOGIC := '0'; @@ -101,6 +106,11 @@ ARCHITECTURE tb OF tb_unb1_test IS SIGNAL si_fn_lpbk_2 : STD_LOGIC_VECTOR(c_unb1_board_ci.tr.bus_w-1 DOWNTO 0); SIGNAL si_fn_lpbk_3 : STD_LOGIC_VECTOR(c_unb1_board_ci.tr.bus_w-1 DOWNTO 0); + -- Signals to interface with the DDR3 memory model. + SIGNAL phy_in : t_tech_ddr3_phy_in; + SIGNAL phy_io : t_tech_ddr3_phy_io; + SIGNAL phy_ou : t_tech_ddr3_phy_ou; + -- Model I2C sensor slaves as on the UniBoard CONSTANT c_fpga_temp_address : STD_LOGIC_VECTOR(6 DOWNTO 0) := "0011000"; -- MAX1618 address LOW LOW CONSTANT c_fpga_temp : INTEGER := 60; @@ -189,13 +199,26 @@ BEGIN BN_BI_2_TX => OPEN, BN_BI_2_RX => (OTHERS=>'0'), BN_BI_3_TX => OPEN, - BN_BI_3_RX => (OTHERS=>'0') + BN_BI_3_RX => (OTHERS=>'0'), - --MB_I_IN(0) => c_tech_ddr_phy_in_rst, - --MB_I_IO(0) => c_tech_ddr_phy_io_rst - --MB_I_OU(0) => OPEN --c_tech_ddr_phy_ou_rst + MB_I_IN => phy_in, + MB_I_IO => phy_io, + MB_I_OU => phy_ou ); + ------------------------------------------------------------------------------ + -- DDR3 memory model + ------------------------------------------------------------------------------ + u_tech_ddr_memory_model : ENTITY tech_ddr_lib.tech_ddr_memory_model + GENERIC MAP ( + g_tech_ddr => c_ddr + ) + PORT MAP ( + mem3_in => phy_ou, + mem3_io => phy_io, + mem3_ou => phy_in + ); + ------------------------------------------------------------------------------ -- UniBoard sensors ------------------------------------------------------------------------------