1
1
# ##############################################################################
2
- # # Copyright (C) 2019-2023 Analog Devices, Inc. All rights reserved.
2
+ # # Copyright (C) 2019-2025 Analog Devices, Inc. All rights reserved.
3
3
# ## SPDX short identifier: ADIBSD
4
4
# ##############################################################################
5
5
6
6
source $ad_hdl_dir /library/jesd204/scripts/jesd204.tcl
7
+ source $ad_hdl_dir /projects/common/xilinx/data_offload_bd.tcl
7
8
8
9
# JESD204 TX parameters
9
10
set TX_NUM_OF_LANES 8 ; # L
@@ -20,20 +21,16 @@ set RX_NUM_OF_CONVERTERS 1 ; # M
20
21
set RX_SAMPLES_PER_FRAME 4 ; # S
21
22
set RX_SAMPLE_WIDTH 16 ; # N/NP
22
23
23
- # Data path FIFO attributes
24
+ # Data path attributes
24
25
25
- set adc_fifo_name axi_ad9625_fifo
26
+ set adc_offload_name ad9625_data_offload
26
27
set adc_data_width 256
27
- set adc_dma_data_width 64
28
+ set adc_dma_data_width 256
28
29
29
- set dac_fifo_name axi_ad9162_fifo
30
+ set dac_offload_name ad9162_data_offload
30
31
set dac_data_width 256
31
32
set dac_dma_data_width 256
32
33
33
- # DAC FIFO bypass
34
-
35
- create_bd_port -dir I dac_fifo_bypass
36
-
37
34
# dac peripherals
38
35
39
36
ad_ip_instance axi_adxcvr axi_ad9162_xcvr [list \
@@ -68,7 +65,17 @@ ad_ip_instance axi_dmac axi_ad9162_dma [list \
68
65
DMA_DATA_WIDTH_DEST $dac_dma_data_width \
69
66
]
70
67
71
- ad_dacfifo_create $dac_fifo_name $dac_data_width $dac_dma_data_width $dac_fifo_address_width
68
+ ad_data_offload_create $dac_offload_name \
69
+ 1 \
70
+ $dac_offload_type \
71
+ $dac_offload_size \
72
+ $dac_dma_data_width \
73
+ $dac_data_width \
74
+ $plddr_offload_axi_data_width
75
+
76
+ ad_ip_parameter $dac_offload_name /i_data_offload CONFIG.HAS_BYPASS 0
77
+ ad_ip_parameter $dac_offload_name /i_data_offload CONFIG.SYNC_EXT_ADD_INTERNAL_CDC 0
78
+ ad_connect $dac_offload_name /sync_ext GND
72
79
73
80
# adc peripherals
74
81
@@ -99,7 +106,17 @@ ad_ip_instance axi_dmac axi_ad9625_dma [list \
99
106
DMA_DATA_WIDTH_DEST 64 \
100
107
]
101
108
102
- ad_adcfifo_create $adc_fifo_name $adc_data_width $adc_dma_data_width $adc_fifo_address_width
109
+ ad_data_offload_create $adc_offload_name \
110
+ 0 \
111
+ $adc_offload_type \
112
+ $adc_offload_size \
113
+ $adc_data_width \
114
+ $adc_dma_data_width \
115
+ $plddr_offload_axi_data_width
116
+
117
+ ad_ip_parameter $adc_offload_name /i_data_offload CONFIG.HAS_BYPASS 0
118
+ ad_ip_parameter $adc_offload_name /i_data_offload CONFIG.SYNC_EXT_ADD_INTERNAL_CDC 0
119
+ ad_connect $adc_offload_name /sync_ext GND
103
120
104
121
# shared transceiver core
105
122
@@ -141,22 +158,18 @@ for {set i 0} {$i < $TX_NUM_OF_CONVERTERS} {incr i} {
141
158
ad_connect axi_ad9162_core/dac_enable_$i util_ad9162_upack/enable_$i
142
159
}
143
160
144
- ad_connect util_fmcomms11_xcvr/tx_out_clk_0 axi_ad9162_fifo/dac_clk
145
- ad_connect axi_ad9162_jesd_rstgen/peripheral_reset axi_ad9162_fifo/dac_rst
146
- ad_connect $sys_cpu_clk axi_ad9162_fifo/dma_clk
147
- ad_connect $sys_cpu_reset axi_ad9162_fifo/dma_rst
161
+ ad_connect util_fmcomms11_xcvr/tx_out_clk_0 $dac_offload_name /m_axis_aclk
162
+ ad_connect axi_ad9162_jesd_rstgen/peripheral_aresetn $dac_offload_name /m_axis_aresetn
163
+ ad_connect $sys_cpu_clk $dac_offload_name /s_axis_aclk
164
+ ad_connect $sys_cpu_resetn $dac_offload_name /s_axis_aresetn
148
165
ad_connect $sys_cpu_clk axi_ad9162_dma/m_axis_aclk
149
166
ad_connect $sys_cpu_resetn axi_ad9162_dma/m_src_axi_aresetn
150
- ad_connect util_ad9162_upack/s_axis_valid VCC
151
- ad_connect util_ad9162_upack/s_axis_ready axi_ad9162_fifo/dac_valid
152
- ad_connect util_ad9162_upack/s_axis_data axi_ad9162_fifo/dac_data
153
- ad_connect axi_ad9162_core/dac_dunf axi_ad9162_fifo/dac_dunf
154
- ad_connect axi_ad9162_fifo/dma_xfer_req axi_ad9162_dma/m_axis_xfer_req
155
- ad_connect axi_ad9162_fifo/dma_ready axi_ad9162_dma/m_axis_ready
156
- ad_connect axi_ad9162_fifo/dma_data axi_ad9162_dma/m_axis_data
157
- ad_connect axi_ad9162_fifo/dma_valid axi_ad9162_dma/m_axis_valid
158
- ad_connect axi_ad9162_fifo/dma_xfer_last axi_ad9162_dma/m_axis_last
159
- ad_connect dac_fifo_bypass axi_ad9162_fifo/bypass
167
+
168
+ ad_connect util_ad9162_upack/s_axis $dac_offload_name /m_axis
169
+ ad_connect axi_ad9162_core/dac_dunf util_ad9162_upack/fifo_rd_underflow
170
+
171
+ ad_connect $dac_offload_name /s_axis axi_ad9162_dma/m_axis
172
+ ad_connect $dac_offload_name /init_req axi_ad9162_dma/m_axis_xfer_req
160
173
161
174
# connections (adc)
162
175
@@ -167,29 +180,36 @@ ad_connect axi_ad9625_jesd/rx_sof axi_ad9625_core/link_sof
167
180
ad_connect axi_ad9625_jesd/rx_data_tdata axi_ad9625_core/link_data
168
181
ad_connect axi_ad9625_jesd/rx_data_tvalid axi_ad9625_core/link_valid
169
182
170
- ad_connect util_fmcomms11_xcvr/rx_out_clk_0 axi_ad9625_fifo/adc_clk
171
- ad_connect axi_ad9625_jesd_rstgen/peripheral_reset axi_ad9625_fifo/adc_rst
172
- ad_connect axi_ad9625_core/adc_valid_0 axi_ad9625_fifo/adc_wr
173
- ad_connect axi_ad9625_core/adc_data_0 axi_ad9625_fifo/adc_wdata
174
- ad_connect $sys_cpu_clk axi_ad9625_fifo/dma_clk
183
+ ad_connect util_fmcomms11_xcvr/rx_out_clk_0 $adc_offload_name /s_axis_aclk
184
+ ad_connect axi_ad9625_jesd_rstgen/peripheral_aresetn $adc_offload_name /s_axis_aresetn
185
+
186
+ ad_connect axi_ad9625_core/adc_valid_0 $adc_offload_name /s_axis_tvalid
187
+ ad_connect axi_ad9625_core/adc_data_0 $adc_offload_name /s_axis_tdata
188
+ ad_connect axi_ad9625_core/adc_dovf GND
189
+
190
+ ad_connect $adc_offload_name /s_axis_tlast GND
191
+ ad_connect $adc_offload_name /s_axis_tkeep VCC
192
+
193
+ ad_connect $sys_cpu_clk $adc_offload_name /m_axis_aclk
175
194
ad_connect $sys_cpu_clk axi_ad9625_dma/s_axis_aclk
195
+ ad_connect $sys_cpu_resetn $adc_offload_name /m_axis_aresetn
176
196
ad_connect $sys_cpu_resetn axi_ad9625_dma/m_dest_axi_aresetn
177
- ad_connect axi_ad9625_fifo/dma_wr axi_ad9625_dma/s_axis_valid
178
- ad_connect axi_ad9625_fifo/dma_wdata axi_ad9625_dma/s_axis_data
179
- ad_connect axi_ad9625_fifo/dma_wready axi_ad9625_dma/s_axis_ready
180
- ad_connect axi_ad9625_fifo/dma_xfer_req axi_ad9625_dma/s_axis_xfer_req
181
- ad_connect axi_ad9625_core/adc_dovf axi_ad9625_fifo/adc_wovf
197
+
198
+ ad_connect $adc_offload_name /m_axis axi_ad9625_dma/s_axis
199
+ ad_connect $adc_offload_name /init_req axi_ad9625_dma/s_axis_xfer_req
182
200
183
201
# interconnect (cpu)
184
202
185
203
ad_cpu_interconnect 0x44A60000 axi_ad9162_xcvr
186
204
ad_cpu_interconnect 0x44A00000 axi_ad9162_core
187
205
ad_cpu_interconnect 0x44A90000 axi_ad9162_jesd
188
206
ad_cpu_interconnect 0x7c420000 axi_ad9162_dma
207
+ ad_cpu_interconnect 0x7c430000 $dac_offload_name
189
208
ad_cpu_interconnect 0x44A50000 axi_ad9625_xcvr
190
209
ad_cpu_interconnect 0x44A10000 axi_ad9625_core
191
210
ad_cpu_interconnect 0x44AA0000 axi_ad9625_jesd
192
211
ad_cpu_interconnect 0x7c400000 axi_ad9625_dma
212
+ ad_cpu_interconnect 0x7c410000 $adc_offload_name
193
213
194
214
# gt uses hp3, and 100MHz clock for both DRP and AXI4
195
215
0 commit comments