Skip to content

Commit f8e85fb

Browse files
committed
ad_quadmxfe1_ebz: Switch to data_offload
Signed-off-by: Ionut Podgoreanu <[email protected]>
1 parent 997abcd commit f8e85fb

File tree

4 files changed

+80
-55
lines changed

4 files changed

+80
-55
lines changed

projects/ad_quadmxfe1_ebz/common/ad_quadmxfe1_ebz_bd.tcl

+63-39
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
###############################################################################
2-
## Copyright (C) 2019-2023 Analog Devices, Inc. All rights reserved.
2+
## Copyright (C) 2019-2025 Analog Devices, Inc. All rights reserved.
33
### SPDX short identifier: ADIBSD
44
###############################################################################
55

6+
source $ad_hdl_dir/projects/common/xilinx/data_offload_bd.tcl
67
source $ad_hdl_dir/library/jesd204/scripts/jesd204.tcl
78

89
# Common parameter for TX and RX
@@ -72,15 +73,13 @@ set TX_DATAPATH_WIDTH [adi_jesd204_calc_tpl_width $DATAPATH_WIDTH $TX_JESD_L $TX
7273

7374
set TX_SAMPLES_PER_CHANNEL [expr $TX_NUM_OF_LANES * 8*$TX_DATAPATH_WIDTH / ($TX_NUM_OF_CONVERTERS * $TX_SAMPLE_WIDTH)]
7475

75-
set adc_fifo_name mxfe_adc_fifo
76+
set adc_offload_name mxfe_rx_data_offload
7677
set adc_data_width [expr $RX_DMA_SAMPLE_WIDTH*$RX_NUM_OF_CONVERTERS*$RX_SAMPLES_PER_CHANNEL]
7778
set adc_dma_data_width $adc_data_width
78-
set adc_fifo_address_width [expr int(ceil(log(($adc_fifo_samples_per_converter*$RX_NUM_OF_CONVERTERS) / ($adc_data_width/$RX_DMA_SAMPLE_WIDTH))/log(2)))]
7979

80-
set dac_fifo_name mxfe_dac_fifo
80+
set dac_offload_name mxfe_tx_data_offload
8181
set dac_data_width [expr $TX_SAMPLE_WIDTH*$TX_NUM_OF_CONVERTERS*$TX_SAMPLES_PER_CHANNEL]
8282
set dac_dma_data_width [expr $TX_DMA_SAMPLE_WIDTH*$TX_NUM_OF_CONVERTERS*$TX_SAMPLES_PER_CHANNEL]
83-
set dac_fifo_address_width [expr int(ceil(log(($dac_fifo_samples_per_converter*$TX_NUM_OF_CONVERTERS) / ($dac_data_width/$TX_SAMPLE_WIDTH))/log(2)))]
8483

8584
create_bd_port -dir I rx_device_clk
8685
create_bd_port -dir I tx_device_clk
@@ -209,7 +208,23 @@ ad_ip_instance util_cpack2 util_mxfe_cpack [list \
209208
SAMPLE_DATA_WIDTH $RX_DMA_SAMPLE_WIDTH \
210209
]
211210

212-
ad_adcfifo_create $adc_fifo_name $adc_data_width $adc_dma_data_width $adc_fifo_address_width
211+
ad_data_offload_create $adc_offload_name \
212+
0 \
213+
$adc_offload_type \
214+
$adc_offload_size \
215+
$adc_data_width \
216+
$adc_data_width
217+
218+
ad_ip_parameter $adc_offload_name/i_data_offload CONFIG.SYNC_EXT_ADD_INTERNAL_CDC 0
219+
ad_connect $adc_offload_name/sync_ext GND
220+
221+
ad_ip_instance util_vector_logic rx_do_rstout_logic
222+
ad_ip_parameter rx_do_rstout_logic config.c_operation {not}
223+
ad_ip_parameter rx_do_rstout_logic config.c_size {1}
224+
225+
ad_ip_instance util_vector_logic cpack_reset_logic
226+
ad_ip_parameter cpack_reset_logic config.c_operation {or}
227+
ad_ip_parameter cpack_reset_logic config.c_size {1}
213228

214229
ad_ip_instance axi_dmac axi_mxfe_rx_dma [list \
215230
DMA_TYPE_SRC 1 \
@@ -251,7 +266,15 @@ ad_ip_instance util_upack2 util_mxfe_upack [list \
251266
SAMPLE_DATA_WIDTH $TX_SAMPLE_WIDTH \
252267
]
253268

254-
ad_dacfifo_create $dac_fifo_name $dac_data_width $dac_data_width $dac_fifo_address_width
269+
ad_data_offload_create $dac_offload_name \
270+
1 \
271+
$dac_offload_type \
272+
$dac_offload_size \
273+
$dac_data_width \
274+
$dac_data_width
275+
276+
ad_ip_parameter $dac_offload_name/i_data_offload CONFIG.SYNC_EXT_ADD_INTERNAL_CDC 0
277+
ad_connect $dac_offload_name/sync_ext GND
255278

256279
ad_ip_instance util_pad tx_util_pad [list \
257280
NUM_OF_SAMPLES [expr $TX_NUM_OF_CONVERTERS*$TX_SAMPLES_PER_CHANNEL] \
@@ -406,25 +429,26 @@ ad_connect rx_device_clk axi_mxfe_rx_jesd/device_clk
406429
# device clock domain
407430
ad_connect rx_device_clk rx_mxfe_tpl_core/link_clk
408431
ad_connect rx_device_clk util_mxfe_cpack/clk
409-
ad_connect rx_device_clk mxfe_adc_fifo/adc_clk
432+
ad_connect rx_device_clk $adc_offload_name/s_axis_aclk
410433

411434
ad_connect tx_device_clk tx_mxfe_tpl_core/link_clk
412435
ad_connect tx_device_clk util_mxfe_upack/clk
413-
ad_connect tx_device_clk mxfe_dac_fifo/dac_clk
436+
ad_connect tx_device_clk $dac_offload_name/m_axis_aclk
414437

415438
# dma clock domain
416-
ad_connect $sys_cpu_clk mxfe_adc_fifo/dma_clk
417-
ad_connect $sys_dma_clk mxfe_dac_fifo/dma_clk
439+
ad_connect $sys_cpu_clk $adc_offload_name/m_axis_aclk
440+
ad_connect $sys_dma_clk $dac_offload_name/s_axis_aclk
418441
ad_connect $sys_cpu_clk axi_mxfe_rx_dma/s_axis_aclk
419442
ad_connect $sys_dma_clk axi_mxfe_tx_dma/m_axis_aclk
420443

421444
# connect resets
422-
ad_connect rx_device_clk_rstgen/peripheral_reset mxfe_adc_fifo/adc_rst
423-
ad_connect tx_device_clk_rstgen/peripheral_reset mxfe_dac_fifo/dac_rst
445+
ad_connect rx_device_clk_rstgen/peripheral_aresetn $adc_offload_name/s_axis_aresetn
446+
ad_connect $sys_cpu_resetn $adc_offload_name/m_axis_aresetn
447+
ad_connect $sys_dma_resetn $dac_offload_name/s_axis_aresetn
448+
ad_connect tx_device_clk_rstgen/peripheral_aresetn $dac_offload_name/m_axis_aresetn
424449
ad_connect tx_device_clk_rstgen/peripheral_reset util_mxfe_upack/reset
425450
ad_connect $sys_cpu_resetn axi_mxfe_rx_dma/m_dest_axi_aresetn
426451
ad_connect $sys_dma_resetn axi_mxfe_tx_dma/m_src_axi_aresetn
427-
ad_connect $sys_dma_reset mxfe_dac_fifo/dma_rst
428452

429453
if {$ADI_PHY_SEL == 0} {
430454
ad_connect jesd204_phy_121_122/tx_sys_reset GND
@@ -535,7 +559,9 @@ ad_connect axi_mxfe_rx_jesd/rx_data_tdata rx_mxfe_tpl_core/link_data
535559
ad_connect axi_mxfe_rx_jesd/rx_data_tvalid rx_mxfe_tpl_core/link_valid
536560

537561
ad_connect ext_sync rx_mxfe_tpl_core/adc_tpl_core/adc_sync_in
538-
ad_connect rx_mxfe_tpl_core/adc_tpl_core/adc_rst util_mxfe_cpack/reset
562+
ad_connect rx_mxfe_tpl_core/adc_tpl_core/adc_rst cpack_reset_logic/op1
563+
ad_connect rx_do_rstout_logic/res cpack_reset_logic/op2
564+
ad_connect cpack_reset_logic/res util_mxfe_cpack/reset
539565

540566
#
541567
# rx tpl to cpack
@@ -548,17 +574,19 @@ for {set i 0} {$i < $RX_NUM_OF_CONVERTERS} {incr i} {
548574
ad_connect rx_mxfe_tpl_core/adc_dovf util_mxfe_cpack/fifo_wr_overflow
549575

550576
#
551-
# cpack to adc_fifo
577+
# cpack to data offload
552578
#
553-
ad_connect util_mxfe_cpack/packed_fifo_wr_data mxfe_adc_fifo/adc_wdata
554-
ad_connect util_mxfe_cpack/packed_fifo_wr_en mxfe_adc_fifo/adc_wr
579+
ad_connect util_mxfe_cpack/packed_fifo_wr_data $adc_offload_name/s_axis_tdata
580+
ad_connect util_mxfe_cpack/packed_fifo_wr_en $adc_offload_name/s_axis_tvalid
581+
ad_connect $adc_offload_name/s_axis_tlast GND
582+
ad_connect $adc_offload_name/s_axis_tkeep VCC
583+
ad_connect $adc_offload_name/s_axis_tready rx_do_rstout_logic/op1
584+
555585
#
556-
# adc_fifo to dma
586+
# data offload to dma
557587
#
558-
ad_connect mxfe_adc_fifo/dma_wr axi_mxfe_rx_dma/s_axis_valid
559-
ad_connect mxfe_adc_fifo/dma_wdata axi_mxfe_rx_dma/s_axis_data
560-
ad_connect mxfe_adc_fifo/dma_wready axi_mxfe_rx_dma/s_axis_ready
561-
ad_connect mxfe_adc_fifo/dma_xfer_req axi_mxfe_rx_dma/s_axis_xfer_req
588+
ad_connect $adc_offload_name/m_axis axi_mxfe_rx_dma/s_axis
589+
ad_connect $adc_offload_name/init_req axi_mxfe_rx_dma/s_axis_xfer_req
562590

563591
#
564592
#connect dac dataflow
@@ -642,27 +670,21 @@ for {set i 0} {$i < $TX_NUM_OF_CONVERTERS} {incr i} {
642670
ad_connect ext_sync tx_mxfe_tpl_core/dac_tpl_core/dac_sync_in
643671

644672
#
645-
# dac fifo to upack
673+
# data offload to upack
646674
#
647-
648-
# TODO: Add streaming AXI interface for DAC FIFO
649-
ad_connect util_mxfe_upack/s_axis_valid VCC
650-
ad_connect util_mxfe_upack/s_axis_ready mxfe_dac_fifo/dac_valid
651-
ad_connect util_mxfe_upack/s_axis_data mxfe_dac_fifo/dac_data
675+
ad_connect util_mxfe_upack/s_axis $dac_offload_name/m_axis
652676

653677
#
654-
# dma to dac fifo
678+
# dma to data offload
655679
#
656-
ad_connect mxfe_dac_fifo/dma_valid axi_mxfe_tx_dma/m_axis_valid
657-
ad_connect tx_util_pad/data_out mxfe_dac_fifo/dma_data
680+
ad_connect $dac_offload_name/s_axis_tvalid axi_mxfe_tx_dma/m_axis_valid
681+
ad_connect tx_util_pad/data_out $dac_offload_name/s_axis_tdata
658682
ad_connect axi_mxfe_tx_dma/m_axis_data tx_util_pad/data_in
659-
ad_connect mxfe_dac_fifo/dma_ready axi_mxfe_tx_dma/m_axis_ready
660-
ad_connect mxfe_dac_fifo/dma_xfer_req axi_mxfe_tx_dma/m_axis_xfer_req
661-
ad_connect mxfe_dac_fifo/dma_xfer_last axi_mxfe_tx_dma/m_axis_last
662-
ad_connect mxfe_dac_fifo/dac_dunf tx_mxfe_tpl_core/dac_dunf
663-
664-
create_bd_port -dir I dac_fifo_bypass
665-
ad_connect mxfe_dac_fifo/bypass dac_fifo_bypass
683+
ad_connect $dac_offload_name/s_axis_tready axi_mxfe_tx_dma/m_axis_ready
684+
ad_connect $dac_offload_name/s_axis_tlast axi_mxfe_tx_dma/m_axis_last
685+
ad_connect $dac_offload_name/s_axis_tkeep axi_mxfe_tx_dma/m_axis_keep
686+
ad_connect $dac_offload_name/init_req axi_mxfe_tx_dma/m_axis_xfer_req
687+
ad_connect tx_mxfe_tpl_core/dac_dunf util_mxfe_upack/fifo_rd_underflow
666688

667689
# extra GPIOs
668690
ad_connect gpio2_i axi_gpio_2/gpio_io_i
@@ -687,6 +709,8 @@ ad_cpu_interconnect 0x44b90000 axi_mxfe_tx_jesd
687709
ad_cpu_interconnect 0x7c420000 axi_mxfe_rx_dma
688710
ad_cpu_interconnect 0x7c430000 axi_mxfe_tx_dma
689711
ad_cpu_interconnect 0x7c440000 axi_gpio_2
712+
ad_cpu_interconnect 0x7c450000 $adc_offload_name
713+
ad_cpu_interconnect 0x7c460000 $dac_offload_name
690714

691715
# interconnect (gt/adc)
692716
#

projects/ad_quadmxfe1_ebz/vcu118/Makefile

+6-5
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
####################################################################################
2-
## Copyright (c) 2018 - 2023 Analog Devices, Inc.
2+
## Copyright (c) 2018 - 2025 Analog Devices, Inc.
33
### SPDX short identifier: BSD-1-Clause
44
## Auto-generated, do not modify!
55
####################################################################################
@@ -10,25 +10,26 @@ M_DEPS += timing_constr.xdc
1010
M_DEPS += ../common/quad_mxfe_gpio_mux.v
1111
M_DEPS += ../common/ad_quadmxfe1_ebz_bd.tcl
1212
M_DEPS += ../../scripts/adi_pd.tcl
13-
M_DEPS += ../../common/xilinx/dacfifo_bd.tcl
14-
M_DEPS += ../../common/xilinx/adcfifo_bd.tcl
1513
M_DEPS += ../../common/vcu118/vcu118_system_constr.xdc
1614
M_DEPS += ../../common/vcu118/vcu118_system_bd.tcl
15+
M_DEPS += ../../common/xilinx/data_offload_bd.tcl
16+
M_DEPS += ../../../library/util_hbm/scripts/adi_util_hbm.tcl
1717
M_DEPS += ../../../library/jesd204/scripts/jesd204.tcl
1818
M_DEPS += ../../../library/common/ad_iobuf.v
1919
M_DEPS += ../../../library/common/ad_3w_spi.v
2020

2121
LIB_DEPS += axi_dmac
2222
LIB_DEPS += axi_sysid
23+
LIB_DEPS += data_offload
2324
LIB_DEPS += jesd204/ad_ip_jesd204_tpl_adc
2425
LIB_DEPS += jesd204/ad_ip_jesd204_tpl_dac
2526
LIB_DEPS += jesd204/axi_jesd204_rx
2627
LIB_DEPS += jesd204/axi_jesd204_tx
2728
LIB_DEPS += jesd204/jesd204_rx
2829
LIB_DEPS += jesd204/jesd204_tx
2930
LIB_DEPS += sysid_rom
30-
LIB_DEPS += util_adcfifo
31-
LIB_DEPS += util_dacfifo
31+
LIB_DEPS += util_do_ram
32+
LIB_DEPS += util_hbm
3233
LIB_DEPS += util_pack/util_cpack2
3334
LIB_DEPS += util_pack/util_upack2
3435
LIB_DEPS += util_pad

projects/ad_quadmxfe1_ebz/vcu118/system_bd.tcl

+10-7
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,22 @@
11
###############################################################################
2-
## Copyright (C) 2019-2023 Analog Devices, Inc. All rights reserved.
2+
## Copyright (C) 2019-2025 Analog Devices, Inc. All rights reserved.
33
### SPDX short identifier: ADIBSD
44
###############################################################################
55

6-
## ADC FIFO depth in samples per converter
7-
set adc_fifo_samples_per_converter [expr $ad_project_params(RX_KS_PER_CHANNEL)*1024]
8-
## DAC FIFO depth in samples per converter
9-
set dac_fifo_samples_per_converter [expr $ad_project_params(TX_KS_PER_CHANNEL)*1024]
6+
## Offload attributes
7+
set adc_offload_type 0 ; ## BRAM
8+
set adc_offload_size [expr 2*1024*1024] ; ## 2 MB
9+
10+
set dac_offload_type 0 ; ## BRAM
11+
set dac_offload_size [expr 2*1024*1024] ; ## 2 MB
1012

1113
source $ad_hdl_dir/projects/common/vcu118/vcu118_system_bd.tcl
12-
source $ad_hdl_dir/projects/common/xilinx/adcfifo_bd.tcl
13-
source $ad_hdl_dir/projects/common/xilinx/dacfifo_bd.tcl
1414
source ../common/ad_quadmxfe1_ebz_bd.tcl
1515
source $ad_hdl_dir/projects/scripts/adi_pd.tcl
1616

17+
ad_ip_parameter $dac_offload_name/storage_unit CONFIG.RD_DATA_REGISTERED 1
18+
ad_ip_parameter $dac_offload_name/storage_unit CONFIG.RD_FIFO_ADDRESS_WIDTH 3
19+
1720
# Set SPI clock to 100/16 = 6.25 MHz
1821
ad_ip_parameter axi_spi CONFIG.C_SCK_RATIO 16
1922

projects/ad_quadmxfe1_ebz/vcu118/system_top.v

+1-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// ***************************************************************************
22
// ***************************************************************************
3-
// Copyright (C) 2021-2023 Analog Devices, Inc. All rights reserved.
3+
// Copyright (C) 2021-2025 Analog Devices, Inc. All rights reserved.
44
//
55
// In this HDL repository, there are many different and unique modules, consisting
66
// of various HDL (Verilog or VHDL) components. The individual modules are
@@ -327,8 +327,6 @@ module system_top (
327327
assign mxfe_tx_en0 = gpio_o[56:53];
328328
assign mxfe_tx_en1 = gpio_o[60:57];
329329

330-
assign dac_fifo_bypass = gpio_o[61];
331-
332330
ad_iobuf #(
333331
.DATA_WIDTH(17)
334332
) i_iobuf_bd (
@@ -551,7 +549,6 @@ module system_top (
551549
.tx_sync_0 (link0_tx_syncin),
552550
.rx_sysref_0 (sysref),
553551
.tx_sysref_0 (sysref),
554-
.dac_fifo_bypass (dac_fifo_bypass),
555552
.gpio2_i (gpio_i[95:64]),
556553
.gpio2_o (gpio_o[95:64]),
557554
.gpio2_t (gpio_t[95:64]),

0 commit comments

Comments
 (0)