Skip to content

Commit 7f2b74d

Browse files
committed
projects/ltc2378: Create HDL design
Signed-off-by: Pop Ioan Daniel <[email protected]>
1 parent b52339a commit 7f2b74d

File tree

9 files changed

+435
-0
lines changed

9 files changed

+435
-0
lines changed

projects/ltc2378_fmc/Makefile

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
####################################################################################
2+
## Copyright (c) 2025 Analog Devices, Inc.
3+
### SPDX short identifier: BSD-1-Clause
4+
## Auto-generated, do not modify!
5+
####################################################################################
6+
7+
include ../scripts/project-toplevel.mk

projects/ltc2378_fmc/README.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# LTC2378-FMC HDL Project
2+
3+
- Evaluation board product page: TO BE ADDED
4+
- System documentation: TO BE ADDED
5+
- HDL project documentation: https://analogdevicesinc.github.io/hdl/projects/ltc2378_fmc/index.html
6+
- Evaluation board VADJ: 2.5V
7+
8+
9+
## Supported parts
10+
11+
| Part name | Description |
12+
|-------------------------------------------------|---------------------------------------------------------------------------|
13+
| [LTC2378-20](https://www.analog.com/ltc2378-20) | 20-Bit, 1-Channel, low noise, low power, high speed (SAR) ADC |
14+
15+
## Building the project
16+
17+
Please enter the folder for the FPGA carrier you want to use and read the README.md.
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
###############################################################################
2+
## Copyright (C) 2025 Analog Devices, Inc. All rights reserved.
3+
### SPDX short identifier: ADIBSD
4+
###############################################################################
5+
6+
create_bd_intf_port -mode Master -vlnv analog.com:interface:spi_engine_rtl:1.0 ltc2378_spi
7+
8+
create_bd_port -dir O ltc2378_spi_cnv
9+
create_bd_port -dir I ltc2378_ext_clk
10+
11+
source $ad_hdl_dir/library/spi_engine/scripts/spi_engine.tcl
12+
13+
set data_width 32
14+
set async_spi_clk 1
15+
set num_cs 1
16+
set num_sdi 1
17+
set num_sdo 1
18+
set sdi_delay 0
19+
set echo_sclk 0
20+
21+
set hier_spi_engine spi_ltc2378
22+
23+
spi_engine_create $hier_spi_engine $data_width $async_spi_clk $num_cs $num_sdi $num_sdo $sdi_delay $echo_sclk
24+
25+
# activate internal SPI Engine Offload synchronizer
26+
ad_ip_parameter $hier_spi_engine/${hier_spi_engine}_offload CONFIG.ASYNC_TRIG 1
27+
28+
# clkgen - 140 MHz
29+
ad_ip_instance axi_clkgen spi_clkgen
30+
ad_ip_parameter spi_clkgen CONFIG.CLK0_DIV 5
31+
ad_ip_parameter spi_clkgen CONFIG.VCO_DIV 1
32+
ad_ip_parameter spi_clkgen CONFIG.VCO_MUL 7
33+
34+
ad_connect $sys_cpu_clk spi_clkgen/clk
35+
ad_connect spi_clk spi_clkgen/clk_0
36+
37+
# pwm generator
38+
ad_ip_instance axi_pwm_gen ltc2378_trigger_gen
39+
40+
ad_ip_parameter ltc2378_trigger_gen CONFIG.N_PWMS 2
41+
ad_ip_parameter ltc2378_trigger_gen CONFIG.PULSE_0_PERIOD 100
42+
ad_ip_parameter ltc2378_trigger_gen CONFIG.PULSE_0_WIDTH 2
43+
ad_ip_parameter ltc2378_trigger_gen CONFIG.PULSE_1_PERIOD 100
44+
ad_ip_parameter ltc2378_trigger_gen CONFIG.PULSE_1_WIDTH 2
45+
ad_ip_parameter ltc2378_trigger_gen CONFIG.PULSE_1_OFFSET 1
46+
47+
ad_connect $sys_cpu_clk ltc2378_trigger_gen/s_axi_aclk
48+
ad_connect sys_cpu_resetn ltc2378_trigger_gen/s_axi_aresetn
49+
ad_connect ltc2378_ext_clk ltc2378_trigger_gen/ext_clk
50+
51+
ad_connect ltc2378_spi_cnv ltc2378_trigger_gen/pwm_0
52+
ad_connect ltc2378_trigger_gen/pwm_1 $hier_spi_engine/${hier_spi_engine}_offload/trigger
53+
54+
# dma to receive data stream
55+
ad_ip_instance axi_dmac ltc2378_dma
56+
ad_ip_parameter ltc2378_dma CONFIG.DMA_TYPE_SRC 1
57+
ad_ip_parameter ltc2378_dma CONFIG.DMA_TYPE_DEST 0
58+
ad_ip_parameter ltc2378_dma CONFIG.CYCLIC 0
59+
ad_ip_parameter ltc2378_dma CONFIG.SYNC_TRANSFER_START 0
60+
ad_ip_parameter ltc2378_dma CONFIG.AXI_SLICE_SRC 0
61+
ad_ip_parameter ltc2378_dma CONFIG.AXI_SLICE_DEST 1
62+
ad_ip_parameter ltc2378_dma CONFIG.DMA_2D_TRANSFER 0
63+
ad_ip_parameter ltc2378_dma CONFIG.DMA_DATA_WIDTH_SRC $data_width
64+
ad_ip_parameter ltc2378_dma CONFIG.DMA_DATA_WIDTH_DEST 64
65+
66+
ad_connect $sys_cpu_clk $hier_spi_engine/clk
67+
ad_connect ltc2378_dma/s_axis $hier_spi_engine/M_AXIS_SAMPLE
68+
ad_connect $hier_spi_engine/m_spi ltc2378_spi
69+
ad_connect spi_clk $hier_spi_engine/spi_clk
70+
ad_connect sys_cpu_resetn $hier_spi_engine/resetn
71+
ad_connect spi_clk ltc2378_dma/s_axis_aclk
72+
ad_connect sys_cpu_resetn ltc2378_dma/m_dest_axi_aresetn
73+
74+
# AXI address definitions
75+
ad_cpu_interconnect 0x44a00000 $hier_spi_engine/${hier_spi_engine}_axi_regmap
76+
ad_cpu_interconnect 0x44a30000 ltc2378_dma
77+
ad_cpu_interconnect 0x44a70000 spi_clkgen
78+
ad_cpu_interconnect 0x44b00000 ltc2378_trigger_gen
79+
80+
ad_cpu_interrupt "ps-13" "mb-13" ltc2378_dma/irq
81+
ad_cpu_interrupt "ps-12" "mb-12" /$hier_spi_engine/irq
82+
83+
ad_mem_hp1_interconnect $sys_cpu_clk sys_ps7/S_AXI_HP1
84+
ad_mem_hp1_interconnect $sys_cpu_clk ltc2378_dma/m_dest_axi

projects/ltc2378_fmc/zed/Makefile

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
####################################################################################
2+
## Copyright (c) 2025 Analog Devices, Inc.
3+
### SPDX short identifier: BSD-1-Clause
4+
## Auto-generated, do not modify!
5+
####################################################################################
6+
7+
PROJECT_NAME := ltc2378_fmc_zed
8+
9+
M_DEPS += ../common/ltc2378_bd.tcl
10+
M_DEPS += ../../scripts/adi_pd.tcl
11+
M_DEPS += ../../common/zed/zed_system_constr.xdc
12+
M_DEPS += ../../common/zed/zed_system_bd.tcl
13+
M_DEPS += ../../../library/xilinx/common/ad_data_clk.v
14+
M_DEPS += ../../../library/util_cdc/sync_bits.v
15+
M_DEPS += ../../../library/spi_engine/scripts/spi_engine.tcl
16+
M_DEPS += ../../../library/common/ad_iobuf.v
17+
M_DEPS += ../../../library/common/ad_edge_detect.v
18+
19+
LIB_DEPS += axi_clkgen
20+
LIB_DEPS += axi_dmac
21+
LIB_DEPS += axi_hdmi_tx
22+
LIB_DEPS += axi_i2s_adi
23+
LIB_DEPS += axi_pwm_gen
24+
LIB_DEPS += axi_spdif_tx
25+
LIB_DEPS += axi_sysid
26+
LIB_DEPS += spi_engine/axi_spi_engine
27+
LIB_DEPS += spi_engine/spi_engine_execution
28+
LIB_DEPS += spi_engine/spi_engine_interconnect
29+
LIB_DEPS += spi_engine/spi_engine_offload
30+
LIB_DEPS += sysid_rom
31+
LIB_DEPS += util_i2c_mixer
32+
33+
include ../../scripts/project-xilinx.mk

projects/ltc2378_fmc/zed/README.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<!-- no_build_example, no_dts, no_no_os -->
2+
3+
# LTC2378-FMC/ZED HDL Project
4+
5+
- VADJ with which it was tested in hardware: 2.5V
6+
7+
## Building the project
8+
9+
```
10+
cd projects/ltc2378_fmc/zed
11+
make
12+
```
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
###############################################################################
2+
## Copyright (C) 2025 Analog Devices, Inc. All rights reserved.
3+
### SPDX short identifier: ADIBSD
4+
###############################################################################
5+
6+
source $ad_hdl_dir/projects/common/zed/zed_system_bd.tcl
7+
source $ad_hdl_dir/projects/scripts/adi_pd.tcl
8+
9+
adi_project_files ltc2378_fmc_zed [list \
10+
"../../../library/common/ad_edge_detect.v" \
11+
"../../../library/util_cdc/sync_bits.v" \
12+
]
13+
14+
# block design
15+
source ../common/ltc2378_bd.tcl
16+
17+
#system ID
18+
ad_ip_parameter axi_sysid_0 CONFIG.ROM_ADDR_BITS 9
19+
ad_ip_parameter rom_sys_0 CONFIG.PATH_TO_FILE "$mem_init_sys_file_path/mem_init_sys.txt"
20+
ad_ip_parameter rom_sys_0 CONFIG.ROM_ADDR_BITS 9
21+
22+
sysid_gen_sys_init_file
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
###############################################################################
2+
## Copyright (C) 2025 Analog Devices, Inc. All rights reserved.
3+
### SPDX short identifier: ADIBSD
4+
###############################################################################
5+
6+
# data interface
7+
8+
set_property -dict {PACKAGE_PIN M19 IOSTANDARD LVCMOS25 IOB TRUE} [get_ports ltc2378_spi_sclk]; ## G6 FMC_LA00_CC_P IO_L13P_T2_MRCC_34
9+
set_property -dict {PACKAGE_PIN P17 IOSTANDARD LVCMOS25 IOB TRUE} [get_ports ltc2378_spi_sdi]; ## H7 FMC_LA02_P IO_L20P_T3_34
10+
set_property -dict {PACKAGE_PIN L22 IOSTANDARD LVCMOS25 IOB TRUE} [get_ports ltc2378_spi_sdo]; ## C11 FMC_LA06_N IO_L10N_T1_34
11+
set_property -dict {PACKAGE_PIN N19 IOSTANDARD LVCMOS25 IOB TRUE} [get_ports ltc2378_spi_cnv]; ## D8 FMC_LA01_CC_P IO_L14P_T2_SRCC_34
12+
13+
set_property -dict {PACKAGE_PIN L18 IOSTANDARD LVCMOS25} [get_ports ltc2378_ext_clk]; ## H4 FMC_CLK0_M2C_P IO_L12P_T1_MRCC_34
14+
15+
#set_property -dict {PACKAGE_PIN D20 IOSTANDARD LVCMOS25} [get_ports ltc2378_spi_busy]; ## C11 FMC_LA18_CC_P IO_L14P_T2_AD4P_SRCC_35
16+
set_property -dict {PACKAGE_PIN M20 IOSTANDARD LVCMOS25} [get_ports ltc2378_chain]; ## G7 FMC_LA00_CC_N IO_L13N_T2_MRCC_34
17+
set_property -dict {PACKAGE_PIN N20 IOSTANDARD LVCMOS25} [get_ports ltc2378_dcgn]; ## D9 FMC_LA01_CC_N IO_L14N_T2_SRCC_34
18+
# set_property -dict {PACKAGE_PIN #N/A IOSTANDARD LVCMOS25} [get_ports enable]; ## D1 FMC_PG_C2M #N/A
19+
20+
# external clock, that drives the CNV generator, must have a maximum 100 MHz frequency
21+
create_clock -period 10.000 -name cnv_ext_clk [get_ports ltc2378_ext_clk]
22+
23+
# rename auto-generated clock for SPIEngine to spi_clk - 200MHz
24+
# NOTE: clk_fpga_0 is the first PL fabric clock, also called $sys_cpu_clk
25+
create_generated_clock -name spi_clk -source [get_pins -filter name=~*CLKIN1 -of [get_cells -hier -filter name=~*spi_clkgen*i_mmcm]] -master_clock clk_fpga_0 [get_pins -filter name=~*CLKOUT0 -of [get_cells -hier -filter name=~*spi_clkgen*i_mmcm]]
26+
27+
# relax the SDO path to help closing timing at high frequencies
28+
set_multicycle_path -setup 8 -to [get_cells -hierarchical -filter {NAME=~*/data_sdo_shift_reg[*]}] -from [get_clocks spi_clk]
29+
set_multicycle_path -hold 7 -to [get_cells -hierarchical -filter {NAME=~*/data_sdo_shift_reg[*]}] -from [get_clocks spi_clk]
30+
set_multicycle_path -setup 8 -to [get_cells -hierarchical -filter {NAME=~*/spi_ltc2378_execution/inst/left_aligned_reg*}] -from [get_clocks spi_clk]
31+
set_multicycle_path -hold 7 -to [get_cells -hierarchical -filter {NAME=~*/spi_ltc2378_execution/inst/left_aligned_reg*}] -from [get_clocks spi_clk]
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
###############################################################################
2+
## Copyright (C) 2025 Analog Devices, Inc. All rights reserved.
3+
### SPDX short identifier: ADIBSD
4+
###############################################################################
5+
6+
source ../../../scripts/adi_env.tcl
7+
source $ad_hdl_dir/projects/scripts/adi_project_xilinx.tcl
8+
source $ad_hdl_dir/projects/scripts/adi_board.tcl
9+
10+
adi_project ltc23378_fmc_zed
11+
12+
adi_project_files ltc2378_fmc_zed [list \
13+
"$ad_hdl_dir/library/common/ad_iobuf.v" \
14+
"$ad_hdl_dir/library/xilinx/common/ad_data_clk.v" \
15+
"system_top.v" \
16+
"system_constr.xdc" \
17+
"$ad_hdl_dir/projects/common/zed/zed_system_constr.xdc"]
18+
19+
adi_project_run ltc2378_fmc_zed

0 commit comments

Comments
 (0)