Page History
...
Design example with Linux and MGT-CLK PLL frequency monitoring over VIO.
Refer to http://trenz.org/teb0911teb0912-info for the current online version of this manual and other available documentation.
...
Excerpt |
---|
|
...
Scroll Title | |||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Release Notes and Know Issues
...
hidden | true |
---|---|
id | Comments |
...
|
Release Notes and Know Issues
Page properties | ||||
---|---|---|---|---|
| ||||
Notes :
|
Scroll Title | ||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||||
|
Requirements
Software
Page properties | ||||
---|---|---|---|---|
| ||||
Notes :
|
Scroll Title | ||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||||||||
|
Hardware
Page properties | ||||
---|---|---|---|---|
| ||||
Notes :
|
Basic description of TE Board Part Files is available on TE Board Part Files.
Complete List is available on <design name>/board_files/*_board_files.csv
Design supports following modules:
Scroll Title | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||
| ||||||||||||||||||
Issues | Description | Workaround | To be fixed version | |||||||||||||||
No known issues | --- | --- | --- |
Requirements
Software
Page properties | ||||
---|---|---|---|---|
| ||||
Notes :
|
|
Additional HW Requirements:
Scroll Title | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||
Software
|
Content
Page properties | 2019.2 | needed, Vivado is included into Vitis installation |
---|---|---|
PetaLinux | 2019.2 | needed |
SI ClockBuilder Pro | --- | optional |
Hardware
Page properties | ||||
---|---|---|---|---|
| ||||
Notes :
|
Basic description of TE Board Part Files is available on TE Board Part Files.
Complete List is available on <design name>/board_files/*_board_files.csv
...
| ||||
Notes :
|
For general structure and of the reference design, see Project Delivery - Xilinx devices
Design Sources
Scroll Title | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||
| ||||||||||||||||||
Module Model | Board Part Short Name | PCB Revision Support | DDR | QSPI Flash | EMMC | Others | Notes | |||||||||||
REV02|REV01 | 4GB | 64MB | 4GB | SODIMM_KVR24S17S8/8 | Not longer supported by vivado | TEB0911-04-09EG1E | 9eg_1e_8gb | REV04|REV03|REV02 | 8GB | 64MB | 8GB | SODIMM_CT8G4SFS824A | TEB0911-04-15EG1E | 15eg_1e_8gb | REV04 | 8GB | 128MB | 8GB | SODIMM_CT8G4SFS824A | TEB0911-04-ZU9EG1A | 9eg_1e_8gb | REV04 | 8GB | 128MB | 8GB | SODIMM_CT8G4SFS824A | TEB0911-04-ZU15EGA | 15eg_1e_8gb | REV04 | 8GB | 128MB | 8GB | SODIMM_CT8G4SFS824A | TEB0911-04-9BEX1FA | 9eg_1e_8gb | REV04 | 8GB | 128MB | 8GB | SODIMM_CT8G4SFS824A | TEB0911-04-BBEX1FA | 15eg_1e_8gb | REV04 | 8GB | 128MB | 8GB | SODIMM_CT8G4SFS824A |
Additional HW Requirements:
|
Additional Sources
Scroll Title | |||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||||
|
Prebuilt
Page properties | ||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||||||||
Notes :
| AHW
| Additional Hardware
| ||||||||||||||||||||||||||||
Additional Hardware | Notes | |||||||||||||||||||||||||||||
DDR4 | example configured for CT8G4SFS824A |
Content
Page properties | ||||
---|---|---|---|---|
| ||||
Notes :
|
For general structure and of the reference design, see Project Delivery - Xilinx devices
Design Sources
...
anchor | Table_DS |
---|---|
title | Design sources |
...
|
Scroll Title | ||||
---|---|---|---|---|
|
Additional Sources
Scroll Title | ||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||||||||
|
Prebuilt
...
hidden | true |
---|---|
id | Comments |
Notes :
...
anchor | Table_PF |
---|---|
title | Prebuilt files |
...
File
...
File-Extension
...
Description
...
Debian SD-Image
...
*.img
...
Debian Image for SD-Card
...
MCS-File
...
*.mcs
...
Flash Configuration File with Boot-Image (MicroBlaze or FPGA part only)
...
MMI-File
...
*.mmi
...
File with BRAM-Location to generate MCS or BIT-File with *.elf content (MicroBlaze only)
...
SREC-File
...
*.srec
...
Converted Software Application for MicroBlaze Processor Systems
|
Download
Reference Design is only usable with the specified Vivado/SDK/PetaLinux/SDx version. Do never use different Versions of Xilinx Software for the same Project.
Page properties | ||||
---|---|---|---|---|
| ||||
|
Reference Design is available on:
Design Flow
Page properties | ||||
---|---|---|---|---|
| ||||
Notes :
|
Note |
---|
Reference Design is available with and without prebuilt files. It's recommended to use TE prebuilt files for first lunch. |
Trenz Electronic provides a tcl based built environment based on Xilinx Design Flow.
See also:
The Trenz Electronic FPGA Reference Designs are TCL-script based project. Command files for execution will be generated with "_create_win_setup.cmd" on Windows OS and "_create_linux_setup.sh" on Linux OS.
TE Scripts are only needed to generate the vivado project, all other additional steps are optional and can also executed by Xilinx Vivado/SDK GUI. For currently Scripts limitations on Win and Linux OS see: Project Delivery Currently limitations of functionality
- _create_win_setup.cmd/_create_linux_setup.sh and follow instructions on shell:
- Press 0 and enter to start "Module Selection Guide"
- (optional Win OS) Generate Virtual Drive or use short directory for the reference design (for example x:\<design name>)
- Create Project (follow instruction of the product selection guide), settings file will be configured automatically during this process
- (optional for manual changes) Select correct device and Xilinx install path on "design_basic_settings.cmd" and create Vivado project with "vivado_create_project_guimode.cmd"
Note: Select correct one, see alsoTE Board Part Files
- (optional for manual changes) Select correct device and Xilinx install path on "design_basic_settings.cmd" and create Vivado project with "vivado_create_project_guimode.cmd"
- Create HDF and export to prebuilt folder
- Run on Vivado TCL: TE::hw_build_design -export_prebuilt
Note: Script generate design and export files into \prebuilt\hardware\<short dir>. Use GUI is the same, except file export to prebuilt folder
- Run on Vivado TCL: TE::hw_build_design -export_prebuilt
- Create Linux (uboot.elf and image.ub) with exported XSA
- XSAis exported to "prebuilt\hardware\<short name>"
Note: HW Export from Vivado GUI create another path as default workspace. - Create Linux images on VM, see PetaLinux KICKstart
- Use TE Template from /os/petalinux
- XSAis exported to "prebuilt\hardware\<short name>"
- Add Linux files (uboot.elf and image.ub) to prebuilt folder
- "prebuilt\os\petalinux\<ddr size>" or "prebuilt\os\petalinux\<short name>"
- Generate Programming Files with Vitis
- Run on Vivado TCL: TE::sw_run_vitis -all
Note: Scripts generate applications and bootable files, which are defined in "sw_lib\apps_list.csv" - (alternative) Start SDK with Vivado GUI or start with TE Scripts on Vivado TCL: TE::sw_run_vitis
Note: TCL scripts generate also platform project, this must be done manuelly in case GUI is used. See Vitis
- Run on Vivado TCL: TE::sw_run_vitis -all
Launch
Page properties | ||||
---|---|---|---|---|
| ||||
Note:
|
Programming
Note |
---|
Check Module and Carrier TRMs for proper HW configuration before you try any design. |
Xilinx documentation for programming and debugging: Vivado/SDK/SDSoC-Xilinx Software Programming and Debugging
Get prebuilt boot binaries
- _create_win_setup.cmd/_create_linux_setup.sh and follow instructions on shell
- Press 0 and enter to start "Module Selection Guide"
- Select assembly version
- Validate selection
- Select Create and open delivery binary folder
Note: Folder (<project foler>/_binaries_<Artikel Name>) with subfolder (boot_<app name>) for different applications will be generated
QSPI
Optional for Boot.bin on QSPI Flash and image.ub on SD.
- Connect JTAG and power on carrier with module
- Open Vivado Project with "vivado_open_existing_project_guimode.cmd" or if not created, create with "vivado_create_project_guimode.cmd"
- Type on Vivado TCL Console: TE::pr_program_flash_binfile -swapp u-boot
Note: To program with SDK/Vivado GUI, use special FSBL (zynqmp_fsbl_flash) on setup
Optional "TE::pr_program_flash_binfile -swapp hello_teb0912" possible - Copy image.ub and optional misc/sd/init.sh on SD-Card
- use files from (<project foler>/_binaries_<Articel Name>)/boot_linux from generated binary folder,see: Get prebuilt boot binaries
- or use prebuilt file location, see <design_name>/prebuilt/readme_file_location.txt
- Insert SD-Card
SD
- Copy image.ub, Boot.bin and misc/sd/init.sh on SD-Card.
- use files from (<project foler>/_binaries_<Articel Name>)/boot_linux from generated binary folder,see: Get prebuilt boot binaries
- or use prebuilt file location, see <design_name>/prebuilt/readme_file_location.txt
- Set Boot Mode to SD-Boot.
- Depends on CPLD Firmware, see <todo>
- Insert SD-Card in SD-Slot.
JTAG
Not used on this Example.
Usage
- Prepare HW like described on section Programming
- Connect UART USB (same as FPGA JTAG)
- Select SD Card as Boot Mode (or QSPI - depending on step 1)
- (Optional) Insert PCIe Card (detection depends on Linux driver. Only some basic drivers are installed)
- (Optional) Connect DisplayPort Monitor (List of usable Monitors: https://www.xilinx.com/support/answers/68671.html)
- (Optional) Connect Network Cable
- Power On PCB
Note: 1. ZynqMP Boot ROM loads PMU Firmware and FSBL from SD into OCM, 2. FSBL loads ATF(bl31.elf) and U-boot from SD/QSPI into DDR, 3. U-boot load Linux from SD into DDR.
Linux
- Open Serial Console (e.g. putty)
- Speed: 115200
- COM Port: Win OS, see device manager, Linux OS see dmesg |grep tty (UART is *USB1)
- Linux Console:
Note: Wait until Linux boot finished For Linux Login use:- User Name: root
- Password: root
- You can use Linux shell now.
- I2C 0 Bus type: i2cdetect -y -r 0
- ETH0/1 works with udhcpc
- PCIe type "lspci"
...
anchor | Table_PF |
---|---|
title | Prebuilt files (only on ZIP with prebult content) |
...
File
...
File-Extension
...
Description
...
Download
Reference Design is only usable with the specified Vivado/SDK/PetaLinux/SDx version. Do never use different Versions of Xilinx Software for the same Project.
Page properties | ||||
---|---|---|---|---|
| ||||
|
Reference Design is available on:
Design Flow
Page properties | ||||
---|---|---|---|---|
| ||||
Notes :
|
Note |
---|
Reference Design is available with and without prebuilt files. It's recommended to use TE prebuilt files for first lunch. |
Trenz Electronic provides a tcl based built environment based on Xilinx Design Flow.
See also:
The Trenz Electronic FPGA Reference Designs are TCL-script based project. Command files for execution will be generated with "_create_win_setup.cmd" on Windows OS and "_create_linux_setup.sh" on Linux OS.
TE Scripts are only needed to generate the vivado project, all other additional steps are optional and can also executed by Xilinx Vivado/SDK GUI. For currently Scripts limitations on Win and Linux OS see: Project Delivery Currently limitations of functionality
- _create_win_setup.cmd/_create_linux_setup.sh and follow instructions on shell:
- Press 0 and enter to start "Module Selection Guide"
- (optional Win OS) Generate Virtual Drive or use short directory for the reference design (for example x:\<design name>)
- Create Project (follow instruction of the product selection guide), settings file will be configured automatically during this process
- (optional for manual changes) Select correct device and Xilinx install path on "design_basic_settings.cmd" and create Vivado project with "vivado_create_project_guimode.cmd"
Note: Select correct one, see alsoTE Board Part Files
- (optional for manual changes) Select correct device and Xilinx install path on "design_basic_settings.cmd" and create Vivado project with "vivado_create_project_guimode.cmd"
- Create HDF and export to prebuilt folder
- Run on Vivado TCL: TE::hw_build_design -export_prebuilt
Note: Script generate design and export files into \prebuilt\hardware\<short dir>. Use GUI is the same, except file export to prebuilt folder
- Run on Vivado TCL: TE::hw_build_design -export_prebuilt
- Create Linux (uboot.elf and image.ub) with exported XSA
- XSAis exported to "prebuilt\hardware\<short name>"
Note: HW Export from Vivado GUI create another path as default workspace. - Create Linux images on VM, see PetaLinux KICKstart
- Use TE Template from /os/petalinux
- XSAis exported to "prebuilt\hardware\<short name>"
- Add Linux files (uboot.elf and image.ub) to prebuilt folder
- "prebuilt\os\petalinux\<ddr size>" or "prebuilt\os\petalinux\<short name>"
- Generate Programming Files with Vitis
- Run on Vivado TCL: TE::sw_run_vitis -all
Note: Scripts generate applications and bootable files, which are defined in "sw_lib\apps_list.csv" - (alternative) Start SDK with Vivado GUI or start with TE Scripts on Vivado TCL: TE::sw_run_vitis
Note: TCL scripts generate also platform project, this must be done manuelly in case GUI is used. See Vitis
- Run on Vivado TCL: TE::sw_run_vitis -all
...
Vivado HW Manager
Page properties | ||||
---|---|---|---|---|
| ||||
Note:
|
Programming
Note |
---|
Check Module and Carrier TRMs for proper HW configuration before you try any design. |
Xilinx documentation for programming and debugging: Vivado/SDK/SDSoC-Xilinx Software Programming and Debugging
Get prebuilt boot binaries
- _create_win_setup.cmd/_create_linux_setup.sh and follow instructions on shell
- Press 0 and enter to start "Module Selection Guide"
- Select assembly version
- Validate selection
- Select Create and open delivery binary folder
Note: Folder (<project foler>/_binaries_<Artikel Name>) with subfolder (boot_<app name>) for different applications will be generated
QSPI
Optional for Boot.bin on QSPI Flash and image.ub on SD.
- Connect JTAG and power on carrier with module
- Open Vivado Project with "vivado_open_existing_project_guimode.cmd" or if not created, create with "vivado_create_project_guimode.cmd"
- Type on Vivado TCL Console: TE::pr_program_flash_binfile -swapp u-boot
Note: To program with SDK/Vivado GUI, use special FSBL (zynqmp_fsbl_flash) on setup
Optional "TE::pr_program_flash_binfile -swapp hello_teb0911" possible - Copy image.ub and optional misc/sd/init.sh on SD-Card
- use files from (<project foler>/_binaries_<Articel Name>)/boot_linux from generated binary folder,see: Get prebuilt boot binaries
- or use prebuilt file location, see <design_name>/prebuilt/readme_file_location.txt
- Insert SD-Card
SD
- Copy image.ub, Boot.bin and misc/sd/init.sh on SD-Card.
- use files from (<project foler>/_binaries_<Articel Name>)/boot_linux from generated binary folder,see: Get prebuilt boot binaries
- or use prebuilt file location, see <design_name>/prebuilt/readme_file_location.txt
- Set Boot Mode to SD-Boot.
- Depends on CPLD Firmware, see SC0911 CPLD#BootMode
- Insert SD-Card in SD-Slot.
JTAG
Not used on this Example.
Usage
- Prepare HW like described on section 70156312
- Connect UART USB (same as FPGA JTAG)
- Select SD Card as Boot Mode (or QSPI - depending on step 1)
- (Optional) Insert PCIe Card (detection depends on Linux driver. Only some basic drivers are installed)
- (Optional) Connect DisplayPort Monitor (List of usable Monitors: https://www.xilinx.com/support/answers/68671.html)
- (Optional) Connect Network Cable
- Power On PCB
Note: 1. ZynqMP Boot ROM loads PMU Firmware and FSBL from SD into OCM, 2. FSBL loads ATF(bl31.elf) and U-boot from SD/QSPI into DDR, 3. U-boot load Linux from SD into DDR.
Linux
- Open Serial Console (e.g. putty)
- Speed: 115200
- COM Port: Win OS, see device manager, Linux OS see dmesg |grep tty (UART is *USB1)
- Linux Console:
Note: Wait until Linux boot finished For Linux Login use:- User Name: root
- Password: root
- You can use Linux shell now.
- I2C 0 Bus type: i2cdetect -y -r 0
- ETH0 works with udhcpc
- USB type "lsusb" or connect USB device
- PCIe type "lspci"
Vivado HW Manager
Page properties | ||||
---|---|---|---|---|
| ||||
Note:
|
Control:
- User LED Control (D16, D15)
Monitoring:
- MGT CLK Measurement:
- Open Vivado HW-Manager and add VIO signal to dashboard (*.ltx located on prebuilt folder).Set radix from VIO signals to unsigned integer.Note: Frequency Counter is inaccurate and displayed unit is Hz
- Default B229_CLK1: 78,8MHz, B128_CLK1: 150MHz, B129_CLK1: 175MHz, B130_CLK1: 200MHz, B228_CLK1: 125MHz, B23ß_CLK1: 100MHz
Scroll Title | ||||
---|---|---|---|---|
| ||||
System Design - Vivado
Page properties | ||||
---|---|---|---|---|
| ||||
Note:
|
Block Design
Scroll Title | ||||
---|---|---|---|---|
| ||||
PS Interfaces
Page properties | ||||
---|---|---|---|---|
| ||||
Note:
|
Activated interfaces:
...
anchor | Table_PSI |
---|---|
title | PS Interfaces |
...
Constrains
Basic module constrains
Code Block | ||||
---|---|---|---|---|
| ||||
set_property BITSTREAM.GENERAL.COMPRESS TRUE [current_design]
set_property BITSTREAM.CONFIG.UNUSEDPIN PULLNONE [current_design] |
Design specific constrain
Code Block | ||||
---|---|---|---|---|
| ||||
# GT Clocks
#B128-1
set_property PACKAGE_PIN N27 [get_ports {PL_MGT_CLK_clk_p[0]}]
#B129-1
set_property PACKAGE_PIN J27 [get_ports {PL_MGT_CLK_clk_p[1]}]
#B228-1
set_property PACKAGE_PIN J8 [get_ports {PL_MGT_CLK_clk_p[2]}]
#B130-1
set_property PACKAGE_PIN E27 [get_ports {PL_MGT_CLK_clk_p[3]}]
#B229-1
set_property PACKAGE_PIN E8 [get_ports {PL_MGT_CLK_clk_p[4]}]
#B230-1
set_property PACKAGE_PIN B10 [get_ports {PL_MGT_CLK_clk_p[5]}]
## DP
set_property PACKAGE_PIN AB1 [get_ports dp_aux_data_in]
set_property PACKAGE_PIN V9 [get_ports dp_hot_plug_detect]
set_property PACKAGE_PIN AA8 [get_ports dp_aux_data_out]
set_property PACKAGE_PIN AA3 [get_ports dp_aux_data_oe_n]
set_property IOSTANDARD LVCMOS18 [get_ports dp_*]
## LED
set_property PACKAGE_PIN K14 [get_ports {LED[0]}]
set_property PACKAGE_PIN K10 [get_ports {LED[1]}]
set_property IOSTANDARD LVCMOS18 [get_ports {LED*}]
|
Software Design - Vitis
Page properties | ||||
---|---|---|---|---|
| ||||
Note:
|
For SDK project creation, follow instructions from:
Application
SDK template in ./sw_lib/sw_apps/ available.
...
hidden | true |
---|---|
id | Comments |
----------------------------------------------------------
FPGA Example
scu
MCS Firmware to configure SI5338 and Reset System.
srec_spi_bootloader
TE modified 2019.2 SREC
Bootloader to load app or second bootloader from flash into DDR
Descriptions:
- Modified Files: blconfig.h, bootloader.c
- Changes:
- Add some console outputs and changed bootloader read address.
- Add bugfix for 2018.2 qspi flash
xilisf_v5_11
TE modified 2019.2 xilisf_v5_11
- Changed default Flash type to 5.
----------------------------------------------------------
Zynq Example:
zynq_fsbl
TE modified 2019.2 FSBL
General:
- Modified Files:main.c, fsbl_hooks.h/.c (search for 'TE Mod' on source code)
Add Files: te_fsbl_hooks.h/.c(for hooks and board)\n\
- General Changes:
- Display FSBL Banner and Device ID
Module Specific:
- Add Files: all TE Files start with te_*
- READ MAC from EEPROM and make Address accessible by UBOOT (need copy defines on uboot platform-top.h)
- CPLD access
- Read CPLD Firmware and SoC Type
- Configure Marvell PHY
zynq_fsbl_flash
TE modified 2019.2 FSBL
General:
- Modified Files: main.c
- General Changes:
- Display FSBL Banner
- Set FSBL Boot Mode to JTAG
- Disable Memory initialisation
ZynqMP Example:
----------------------------------------------------------
zynqmp_fsbl
TE modified 2019.2 FSBL
General:
- Modified Files: xfsbl_main.c, xfsbl_hooks.h/.c, xfsbl_board.h/.c(search for 'TE Mod' on source code)
- Add Files: te_xfsbl_hooks.h/.c (for hooks and board)\n\
- General Changes:
- Display FSBL Banner and Device Name
Module Specific:
- Add Files: all TE Files start with te_*
- Si5338 Configuration
- ETH+OTG Reset over MIO
zynqmp_fsbl_flash
TE modified 2019.2 FSBL
General:
- Modified Files: xfsbl_initialisation.c, xfsbl_hw.h, xfsbl_handoff.c, xfsbl_main.c
- General Changes:
- Display FSBL Banner
- Set FSBL Boot Mode to JTAG
- Disable Memory initialisation
zynqmp_pmufw
Xilinx default PMU firmware.
----------------------------------------------------------
General Example:
hello_te0820
Hello TE0820 is a Xilinx Hello World example as endless loop instead of one console output.
u-boot
U-Boot.elf is generated with PetaLinux. Vitis is used to generate Boot.bin.
|
Control:
- User LED Control (D16, D15)
Monitoring:
- MGT CLK Measurement:
- Open Vivado HW-Manager and add VIO signal to dashboard (*.ltx located on prebuilt folder).Set radix from VIO signals to unsigned integer.Note: Frequency Counter is inaccurate and displayed unit is Hz
- Default B229_CLK1: 78,8MHz, B128_CLK1: 150MHz, B129_CLK1: 175MHz, B130_CLK1: 200MHz, B228_CLK1: 125MHz, B23ß_CLK1: 100MHz
Scroll Title | ||||
---|---|---|---|---|
| ||||
<todo> |
System Design - Vivado
Page properties | ||||
---|---|---|---|---|
| ||||
Note:
|
Block Design
Scroll Title | ||||
---|---|---|---|---|
| ||||
PS Interfaces
Page properties | ||||
---|---|---|---|---|
| ||||
Note:
|
Activated interfaces:
Scroll Title | ||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||||||||||||||||||||||||
|
Constrains
Basic module constrains
Code Block | ||||
---|---|---|---|---|
| ||||
set_property BITSTREAM.GENERAL.COMPRESS TRUE [current_design]
set_property BITSTREAM.CONFIG.UNUSEDPIN PULLNONE [current_design] |
Design specific constrain
Code Block | ||||
---|---|---|---|---|
| ||||
# AB34 MGT_128_CLK_P
# AB35 MGT_128_CLK_N
# W32 MGT_129_CLK_P
# W33 MGT_129_CLK_N
# R32 MGT_130_CLK_P
# R33 MGT_130_CLK_N
# L32 MGT_131_CLK_P
# L33 MGT_131_CLK_N
set_property PACKAGE_PIN AB34 [get_ports {CLK_IN_D_128_131_clk_p[0]}]
set_property PACKAGE_PIN W32 [get_ports {CLK_IN_D_128_131_clk_p[1]}]
set_property PACKAGE_PIN R32 [get_ports {CLK_IN_D_128_131_clk_p[2]}]
set_property PACKAGE_PIN L32 [get_ports {CLK_IN_D_128_131_clk_p[3]}]
# AB11 MGT_228_CLK_N
# AB12 MGT_228_CLK_P
# Y11 MGT_229_CLK_N
# Y12 MGT_229_CLK_P
# V11 MGT_230_CLK_N
# V12 MGT_230_CLK_P
# T11 MGT_231_CLK_N
# T12 MGT_231_CLK_P
set_property PACKAGE_PIN AB12 [get_ports {CLK_IN_D_228_231_clk_p[0]}]
set_property PACKAGE_PIN Y12 [get_ports {CLK_IN_D_228_231_clk_p[1]}]
set_property PACKAGE_PIN V12 [get_ports {CLK_IN_D_228_231_clk_p[2]}]
set_property PACKAGE_PIN T12 [get_ports {CLK_IN_D_228_231_clk_p[3]}]
# AK11 MGT_224_CLK_N
# AK12 MGT_224_CLK_P
# AH11 MGT_225_CLK_N
# AH12 MGT_225_CLK_P
# AF11 MGT_226_CLK_N
# AF12 MGT_226_CLK_P
# AD11 MGT_227_CLK_N
# AD12 MGT_227_CLK_P
set_property PACKAGE_PIN AK12 [get_ports {CLK_IN_D_224_227_clk_p[0]}]
set_property PACKAGE_PIN AH12 [get_ports {CLK_IN_D_224_227_clk_p[1]}]
set_property PACKAGE_PIN AF12 [get_ports {CLK_IN_D_224_227_clk_p[2]}]
set_property PACKAGE_PIN AD12 [get_ports {CLK_IN_D_224_227_clk_p[3]}]
# B65 CLK
set_property PACKAGE_PIN AR24 [get_ports {CLK_IN_D_B65_clk_p[0]}]
set_property IOSTANDARD LVDS [get_ports {CLK_IN_D_B65_clk_p[0]}]
#get_property -dict { IOSTANDARD LVCMOS33 PACKAGE_PIN D3 } [get_ports {+3.3V_ETH_PHY_EN}] #removed on REV02 --> use unused pullup for rev01
#set_property -dict { IOSTANDARD LVCMOS33 PACKAGE_PIN C1 } [get_ports {+3.3V_M2_KeyE_EN}] #removed on REV02 --> use unused pullup for rev01
#set_property -dict { IOSTANDARD LVCMOS33 PACKAGE_PIN G10 } [get_ports {ssd1_perstn[0]}]
set_property -dict { IOSTANDARD LVCMOS33 PACKAGE_PIN B6 } [get_ports {LED[0]}]
set_property -dict { IOSTANDARD LVCMOS33 PACKAGE_PIN B5 } [get_ports {LED[1]}]
set_property -dict { IOSTANDARD LVCMOS33 PACKAGE_PIN A5 } [get_ports {LED[2]}]
set_property -dict { IOSTANDARD LVCMOS33 PACKAGE_PIN A4 } [get_ports {LED[3]}]
#set_property -dict { IOSTANDARD LVCMOS33 PACKAGE_PIN G13 } [get_ports {M2M_SLEEP[0]}]
#set_property -dict { IOSTANDARD LVCMOS33 PACKAGE_PIN F13 PULLUP TRUE } [get_ports {ssd1_wake[0]}] #removed on REV02 --> use unused pullup for rev01
#
# B10 FF10_MPRS |
zynqmp_fsbl
TE modified 2019.2 FSBL
General:
- Modified Files: xfsbl_main.c, xfsbl_hooks.h/.c, xfsbl_board.h/.c(search for 'TE Mod' on source code)
- Add Files: te_xfsbl_hooks.h/.c (for hooks and board)\n\
- General Changes:
- Display FSBL Banner and Device Name
Module Specific:
- Add Files: all TE Files start with te_*
- Si5338 and SI5345 Configuration
- PCIe reset
zynqmp_fsbl_flash
TE modified 2019.2 FSBL
General:
- Modified Files: xfsbl_initialisation.c, xfsbl_hw.h, xfsbl_handoff.c, xfsbl_main.c
- General Changes:
- Display FSBL Banner
- Set FSBL Boot Mode to JTAG
- Disable Memory initialisation
zynqmp_pmufw
Xilinx default PMU firmware.
hello_teb0911
Hello TEB0911 is a Xilinx Hello World example as endless loop instead of one console output.
u-boot
U-Boot.elf is generated with PetaLinux. SDK/HSI is used to generate Boot.bin.
Software Design - PetaLinux
Page properties | ||||
---|---|---|---|---|
| ||||
Note:
|
For PetaLinux installation and project creation, follow instructions from:
Config
Start with petalinux-config or petalinux-config --get-hw-description
Changes:
- SUBSYSTEM_PRIMARY_SD_PSU_SD_1_SELECT
- CONFIG_SUBSYSTEM_ETHERNET_PSU_ETHERNET_3_MAC=""
U-Boot
Start with petalinux-config -c u-boot
Changes:
- CONFIG_ENV_IS_NOWHERE=y
- # CONFIG_ENV_IS_IN_SPI_FLASH is not set
- CONFIG_I2C_EEPROM=y
- CONFIG_ZYNQ_GEM_I2C_MAC_OFFSET=0xFA
- CONFIG_SYS_I2C_EEPROM_ADDR=0x54
- CONFIG_SYS_I2C_EEPROM_BUS=5
- CONFIG_SYS_EEPROM_SIZE=256
- CONFIG_SYS_EEPROM_PAGE_WRITE_BITS=0
- CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS=0
- CONFIG_SYS_I2C_EEPROM_ADDR_LEN=1
- CONFIG_SYS_I2C_EEPROM_ADDR_OVERFLOW=0
Change platform-top.h
...
language | js |
---|
Device Tree
Code Block | ||
---|---|---|
| ||
/include/ "system-conf.dtsi" / { chosen { xlnx,eeprom = &eeprom; }; }; /* USB */ &dwc3_0 { status = "okay"; dr_mode = "host"; snps,usb3_lpm_capable; snps,dis_u3_susphy_quirk; snps,dis_u2_susphy_quirk; phy-names = "usb2-phy","usb3-phy"; phys = <&lane1 4 0 1 100000000>; maximum-speed = "super-speed"; }; /* QSPI */ &qspi { #address-cells = <1>; #size-cells = <0>; status = "okay"; flash0: flash@0 { compatible = "jedec,spi-nor"; reg = <0x0>; #address-cells = <1>; #size-cells = <1>; }; }; /* ETH */ &gem3 { phy-handle = <&phy0>; phy0: phy0@1 { device_type = "ethernet-phy"; reg = <1>; }; }; /* SD1 */ &sdhci1 { // disable-wp; no-1-8-v; }; &i2c0 { i2cswitch@76 { // I2C Switch U13 compatible = "nxp,pca9548"; #address-cells = <1>; #size-cells = <0>; reg = <0x76>; i2c-mux-idle-disconnect; i2c@2 { // FMCD (/dev/i2c-3) #address-cells = <1>; #size-cells = <0>; # C10 FF01_MPRS reg = <2>; }; i2c@3 { // FMCE (/dev/i2c-4) #address-cells = <1>; # C11 FF00_MPRS #size-cells = <0>; reg = <3>; }; i2c@4 { // FMCB (/dev/i2c-5) #address-cells = <1>; #size-cells = <0>; reg = <4>; }; i2c@5 { // FMCC (/dev/i2c-6) #address-cells = <1>; #size-cells = <0>; reg = <5>; }; i2c@6 { // PLL (/dev/i2c-7) #address-cells = <1>; #size-cells = <0>; reg = <6>; si570_2: clock-generator3@5d { #clock-cells = <0>; compatible = "silabs,si570"; reg = <0x5d>; temperature-stability = <50>; factory-fout = <156250000>; clock-frequency = <78800000>; }; }; }; i2cswitch@77 { // I2C Switch U37 compatible = "nxp,pca9548"; #address-cells = <1>; #size-cells = <0>; reg = <0x77>; i2c-mux-idle-disconnect; i2c@0 { // SFP2 (/dev/i2c-9) #address-cells = <1>; #size-cells = <0>; reg = <0>; }; i2c@1 { // FMCA (/dev/i2c-10) # D11 FF31_MPRS # D12 FF30_MPRS # E10 FF20_MPRS # E11 FF11_MPRS # E12 FF21_MPRS # J12 FFA_SDA # J14 FFA_SCL # K10 FFD_MPRS # K11 FFD_MSEL # K12 FFC_MPRS # K14 FFA_INTL # L10 FFD_INTL # L12 FFC_MSEL # L13 FFA_MPRS # L14 FFA_MSEL # M10 FFD_SDA # M11 FFB_SDA # M13 FFB_SCL # N10 FFD_SCL # N11 FF_AB_RSTL # N12 FF_CD_RSTL # N13 FFB_MSEL # N14 FFB_INTL # P12 FFC_INTL # P13 FFC_SCL # P14 FFB_MPRS # R14 FFC_SDA # # E3 PEX_FATAL_ERRORn REV02 only # E4 PEX_GPIO3 REV02 only # E5 PEX_LANE_GOOD2n REV02 only # F4 PEX_LANE_GOOD1n REV02 only # F5 PEX_LANE_GOOD0n REV02 only # # F6 DSPLL1_RST_N # F7 DSPLL0_RST_N # # G11 W_DISABLE1n REV01 other name # G12 W_DISABLE2n REV01 other name # G13 M2M_SLEEP REV02 only # # F10 SSD1_CLKRQ REV01 only # F13 SSD1_WAKE REV01 only # G10 SSD1_PERSTn REV01 only # G13 M2M_SLEEP REV01 other nameSSD1_SLEEP # set_property -dict { IOSTANDARD LVCMOS18 PACKAGE_PIN AK23 } [get_ports {BUTTON[0]}] set_property -dict { IOSTANDARD LVCMOS18 PACKAGE_PIN AL23 } [get_ports {BUTTON[1]}] set_property -dict { IOSTANDARD LVCMOS18 PACKAGE_PIN AJ24 } [get_ports {BUTTON[2]}] set_property -dict { IOSTANDARD LVCMOS18 PACKAGE_PIN AK24 } [get_ports {BUTTON[3]}] set_property -dict { IOSTANDARD DIFF_SSTL12_DCI PACKAGE_PIN G26 } [get_ports {diff_clock_rtl_clk_p}] set_property -dict { IOSTANDARD SSTL12_DCI PACKAGE_PIN N24 } [get_ports {ddr4_act_n}] set_property -dict { IOSTANDARD SSTL12_DCI PACKAGE_PIN J27 } [get_ports {ddr4_adr[0]}] set_property -dict { IOSTANDARD SSTL12_DCI PACKAGE_PIN J24 } [get_ports {ddr4_adr[1]}] set_property -dict { IOSTANDARD SSTL12_DCI PACKAGE_PIN F27 } [get_ports {ddr4_adr[2]}] set_property -dict { IOSTANDARD SSTL12_DCI PACKAGE_PIN E26 } [get_ports {ddr4_adr[3]}] set_property -dict { IOSTANDARD SSTL12_DCI PACKAGE_PIN M25 } [get_ports {ddr4_adr[4]}] set_property -dict { IOSTANDARD SSTL12_DCI PACKAGE_PIN D26 } [get_ports {ddr4_adr[5]}] set_property -dict { IOSTANDARD SSTL12_DCI PACKAGE_PIN K27 } [get_ports {ddr4_adr[6]}] set_property -dict { IOSTANDARD SSTL12_DCI PACKAGE_PIN E27 } [get_ports {ddr4_adr[7]}] set_property -dict { IOSTANDARD SSTL12_DCI PACKAGE_PIN K26 } [get_ports {ddr4_adr[8]}] set_property -dict { IOSTANDARD SSTL12_DCI PACKAGE_PIN H26 } [get_ports {ddr4_adr[9]}] set_property -dict { IOSTANDARD SSTL12_DCI PACKAGE_PIN L24 } [get_ports {ddr4_adr[10]}] set_property -dict { IOSTANDARD SSTL12_DCI PACKAGE_PIN F28 } [get_ports {ddr4_adr[11]}] set_property -dict { IOSTANDARD SSTL12_DCI PACKAGE_PIN J23 } [get_ports {ddr4_adr[12]}] set_property -dict { IOSTANDARD SSTL12_DCI PACKAGE_PIN J26 } [get_ports {ddr4_adr[13]}] set_property -dict { IOSTANDARD SSTL12_DCI PACKAGE_PIN L23 } [get_ports {ddr4_adr[14]}] set_property -dict { IOSTANDARD SSTL12_DCI PACKAGE_PIN K24 } [get_ports {ddr4_adr[15]}] set_property -dict { IOSTANDARD SSTL12_DCI PACKAGE_PIN H23 } [get_ports {ddr4_adr[16]}] ## /* dummy for ddr4-ram */ set_property -dict { IOSTANDARD SSTL12_DCI PACKAGE_PIN G25 } [get_ports {ddr4_adr17[0]}] set_property -dict { IOSTANDARD SSTL12_DCI PACKAGE_PIN N26 } [get_ports {ddr4_ba[0]}] set_property -dict { IOSTANDARD SSTL12_DCI PACKAGE_PIN G23 } [get_ports {ddr4_ba[1]}] set_property -dict { IOSTANDARD SSTL12_DCI PACKAGE_PIN M23 } [get_ports {ddr4_bg[0]}] #set_property -dict { IOSTANDARD SSTL12_DCI PACKAGE_PIN P23 } [get_ports {ddr4_bg[1]}] ## /* dummy for ddr4-ram */ set_property -dict { IOSTANDARD SSTL12_DCI PACKAGE_PIN P23 } [get_ports {ddr4_bg1[0]}] set_property -dict { IOSTANDARD DIFF_SSTL12_DCI PACKAGE_PIN F25 } [get_ports {ddr4_ck_t[0]}] set_property -dict { IOSTANDARD DIFF_SSTL12_DCI PACKAGE_PIN E25 } [get_ports {ddr4_ck_c[0]}] set_property -dict { IOSTANDARD SSTL12_DCI PACKAGE_PIN L25 } [get_ports {ddr4_cke[0]}] set_property -dict { IOSTANDARD SSTL12_DCI PACKAGE_PIN N23 } [get_ports {ddr4_cs_n[0]}] set_property -dict { IOSTANDARD POD12_DCI PACKAGE_PIN P18 } [get_ports {ddr4_dm_n[0]}] set_property -dict { IOSTANDARD POD12_DCI PACKAGE_PIN K19 } [get_ports {ddr4_dm_n[1]}] set_property -dict { IOSTANDARD POD12_DCI PACKAGE_PIN D19 } [get_ports {ddr4_dm_n[2]}] set_property -dict { IOSTANDARD POD12_DCI PACKAGE_PIN G22 } [get_ports {ddr4_dm_n[3]}] set_property -dict { IOSTANDARD POD12_DCI PACKAGE_PIN K29 } [get_ports {ddr4_dm_n[4]}] set_property -dict { IOSTANDARD POD12_DCI PACKAGE_PIN E29 } [get_ports {ddr4_dm_n[5]}] set_property -dict { IOSTANDARD POD12_DCI PACKAGE_PIN C36 } [get_ports {ddr4_dm_n[6]}] set_property -dict { IOSTANDARD POD12_DCI PACKAGE_PIN E32 } [get_ports {ddr4_dm_n[7]}] set_property -dict { IOSTANDARD DIFF_POD12_DCI PACKAGE_PIN N19 } [get_ports {ddr4_dqs_c[0]}] set_property -dict { IOSTANDARD DIFF_POD12_DCI PACKAGE_PIN J22 } [get_ports {ddr4_dqs_c[1]}] set_property -dict { IOSTANDARD DIFF_POD12_DCI PACKAGE_PIN B21 } [get_ports {ddr4_dqs_c[2]}] set_property -dict { IOSTANDARD DIFF_POD12_DCI PACKAGE_PIN E20 } [get_ports {ddr4_dqs_c[3]}] set_property -dict { IOSTANDARD DIFF_POD12_DCI PACKAGE_PIN F30 } [get_ports {ddr4_dqs_c[4]}] set_property -dict { IOSTANDARD DIFF_POD12_DCI PACKAGE_PIN A32 } [get_ports {ddr4_dqs_c[5]}] set_property -dict { IOSTANDARD DIFF_POD12_DCI PACKAGE_PIN A40 } [get_ports {ddr4_dqs_c[6]}] set_property -dict { IOSTANDARD DIFF_POD12_DCI PACKAGE_PIN C34 } [get_ports {ddr4_dqs_c[7]}] set_property -dict { IOSTANDARD DIFF_POD12_DCI PACKAGE_PIN N20 } [get_ports {ddr4_dqs_t[0]}] set_property -dict { IOSTANDARD DIFF_POD12_DCI PACKAGE_PIN K22 } [get_ports {ddr4_dqs_t[1]}] set_property -dict { IOSTANDARD DIFF_POD12_DCI PACKAGE_PIN C21 } [get_ports {ddr4_dqs_t[2]}] set_property -dict { IOSTANDARD DIFF_POD12_DCI PACKAGE_PIN F20 } [get_ports {ddr4_dqs_t[3]}] set_property -dict { IOSTANDARD DIFF_POD12_DCI PACKAGE_PIN G30 } [get_ports {ddr4_dqs_t[4]}] set_property -dict { IOSTANDARD DIFF_POD12_DCI PACKAGE_PIN B31 } [get_ports {ddr4_dqs_t[5]}] set_property -dict { IOSTANDARD DIFF_POD12_DCI PACKAGE_PIN A39 } [get_ports {ddr4_dqs_t[6]}] set_property -dict { IOSTANDARD DIFF_POD12_DCI PACKAGE_PIN D34 } [get_ports {ddr4_dqs_t[7]}] set_property -dict { IOSTANDARD SSTL12_DCI PACKAGE_PIN H24 } [get_ports {ddr4_odt[0]}] set_property -dict { IOSTANDARD POD12_DCI PACKAGE_PIN N25 } [get_ports {ddr4_reset_n}] set_property -dict { IOSTANDARD POD12_DCI PACKAGE_PIN N21 } [get_ports {ddr4_dq[0]}] set_property -dict { IOSTANDARD POD12_DCI PACKAGE_PIN M18 } [get_ports {ddr4_dq[1]}] set_property -dict { IOSTANDARD POD12_DCI PACKAGE_PIN M21 } [get_ports {ddr4_dq[2]}] set_property -dict { IOSTANDARD POD12_DCI PACKAGE_PIN M20 } [get_ports {ddr4_dq[3]}] set_property -dict { IOSTANDARD POD12_DCI PACKAGE_PIN P21 } [get_ports {ddr4_dq[4]}] set_property -dict { IOSTANDARD POD12_DCI PACKAGE_PIN L18 } [get_ports {ddr4_dq[5]}] set_property -dict { IOSTANDARD POD12_DCI PACKAGE_PIN M22 } [get_ports {ddr4_dq[6]}] set_property -dict { IOSTANDARD POD12_DCI PACKAGE_PIN L19 } [get_ports {ddr4_dq[7]}] set_property -dict { IOSTANDARD POD12_DCI PACKAGE_PIN H19 } [get_ports {ddr4_dq[8]}] set_property -dict { IOSTANDARD POD12_DCI PACKAGE_PIN L20 } [get_ports {ddr4_dq[9]}] set_property -dict { IOSTANDARD POD12_DCI PACKAGE_PIN H20 } [get_ports {ddr4_dq[10]}] set_property -dict { IOSTANDARD POD12_DCI PACKAGE_PIN K21 } [get_ports {ddr4_dq[11]}] set_property -dict { IOSTANDARD POD12_DCI PACKAGE_PIN G20 } [get_ports {ddr4_dq[12]}] set_property -dict { IOSTANDARD POD12_DCI PACKAGE_PIN K20 } [get_ports {ddr4_dq[13]}] set_property -dict { IOSTANDARD POD12_DCI PACKAGE_PIN H21 } [get_ports {ddr4_dq[14]}] set_property -dict { IOSTANDARD POD12_DCI PACKAGE_PIN J21 } [get_ports {ddr4_dq[15]}] set_property -dict { IOSTANDARD POD12_DCI PACKAGE_PIN B22 } [get_ports {ddr4_dq[16]}] set_property -dict { IOSTANDARD POD12_DCI PACKAGE_PIN C20 } [get_ports {ddr4_dq[17]}] set_property -dict { IOSTANDARD POD12_DCI PACKAGE_PIN A22 } [get_ports {ddr4_dq[18]}] set_property -dict { IOSTANDARD POD12_DCI PACKAGE_PIN A19 } [get_ports {ddr4_dq[19]}] set_property -dict { IOSTANDARD POD12_DCI PACKAGE_PIN B23 } [get_ports {ddr4_dq[20]}] set_property -dict { IOSTANDARD POD12_DCI PACKAGE_PIN B20 } [get_ports {ddr4_dq[21]}] set_property -dict { IOSTANDARD POD12_DCI PACKAGE_PIN A23 } [get_ports {ddr4_dq[22]}] set_property -dict { IOSTANDARD POD12_DCI PACKAGE_PIN A20 } [get_ports {ddr4_dq[23]}] set_property -dict { IOSTANDARD POD12_DCI PACKAGE_PIN F22 } [get_ports {ddr4_dq[24]}] set_property -dict { IOSTANDARD POD12_DCI PACKAGE_PIN E19 } [get_ports {ddr4_dq[25]}] set_property -dict { IOSTANDARD POD12_DCI PACKAGE_PIN E22 } [get_ports {ddr4_dq[26]}] set_property -dict { IOSTANDARD POD12_DCI PACKAGE_PIN D21 } [get_ports {ddr4_dq[27]}] set_property -dict { IOSTANDARD POD12_DCI PACKAGE_PIN F23 } [get_ports {ddr4_dq[28]}] set_property -dict { IOSTANDARD POD12_DCI PACKAGE_PIN F19 } [get_ports {ddr4_dq[29]}] set_property -dict { IOSTANDARD POD12_DCI PACKAGE_PIN D22 } [get_ports {ddr4_dq[30]}] set_property -dict { IOSTANDARD POD12_DCI PACKAGE_PIN E21 } [get_ports {ddr4_dq[31]}] set_property -dict { IOSTANDARD POD12_DCI PACKAGE_PIN F31 } [get_ports {ddr4_dq[32]}] set_property -dict { IOSTANDARD POD12_DCI PACKAGE_PIN J28 } [get_ports {ddr4_dq[33]}] set_property -dict { IOSTANDARD POD12_DCI PACKAGE_PIN J30 } [get_ports {ddr4_dq[34]}] set_property -dict { IOSTANDARD POD12_DCI PACKAGE_PIN H28 } [get_ports {ddr4_dq[35]}] set_property -dict { IOSTANDARD POD12_DCI PACKAGE_PIN F32 } [get_ports {ddr4_dq[36]}] set_property -dict { IOSTANDARD POD12_DCI PACKAGE_PIN G28 } [get_ports {ddr4_dq[37]}] set_property -dict { IOSTANDARD POD12_DCI PACKAGE_PIN H30 } [get_ports {ddr4_dq[38]}] set_property -dict { IOSTANDARD POD12_DCI PACKAGE_PIN F29 } [get_ports {ddr4_dq[39]}] set_property -dict { IOSTANDARD POD12_DCI PACKAGE_PIN E31 } [get_ports {ddr4_dq[40]}] set_property -dict { IOSTANDARD POD12_DCI PACKAGE_PIN C30 } [get_ports {ddr4_dq[41]}] set_property -dict { IOSTANDARD POD12_DCI PACKAGE_PIN C31 } [get_ports {ddr4_dq[42]}] set_property -dict { IOSTANDARD POD12_DCI PACKAGE_PIN B30 } [get_ports {ddr4_dq[43]}] set_property -dict { IOSTANDARD POD12_DCI PACKAGE_PIN D31 } [get_ports {ddr4_dq[44]}] set_property -dict { IOSTANDARD POD12_DCI PACKAGE_PIN C29 } [get_ports {ddr4_dq[45]}] set_property -dict { IOSTANDARD POD12_DCI PACKAGE_PIN A30 } [get_ports {ddr4_dq[46]}] set_property -dict { IOSTANDARD POD12_DCI PACKAGE_PIN A29 } [get_ports {ddr4_dq[47]}] set_property -dict { IOSTANDARD POD12_DCI PACKAGE_PIN C42 } [get_ports {ddr4_dq[48]}] set_property -dict { IOSTANDARD POD12_DCI PACKAGE_PIN B36 } [get_ports {ddr4_dq[49]}] set_property -dict { IOSTANDARD POD12_DCI PACKAGE_PIN B40 } [get_ports {ddr4_dq[50]}] set_property -dict { IOSTANDARD POD12_DCI PACKAGE_PIN B37 } [get_ports {ddr4_dq[51]}] set_property -dict { IOSTANDARD POD12_DCI PACKAGE_PIN B42 } [get_ports {ddr4_dq[52]}] set_property -dict { IOSTANDARD POD12_DCI PACKAGE_PIN A37 } [get_ports {ddr4_dq[53]}] set_property -dict { IOSTANDARD POD12_DCI PACKAGE_PIN B41 } [get_ports {ddr4_dq[54]}] set_property -dict { IOSTANDARD POD12_DCI PACKAGE_PIN A38 } [get_ports {ddr4_dq[55]}] set_property -dict { IOSTANDARD POD12_DCI PACKAGE_PIN B35 } [get_ports {ddr4_dq[56]}] set_property -dict { IOSTANDARD POD12_DCI PACKAGE_PIN B32 } [get_ports {ddr4_dq[57]}] set_property -dict { IOSTANDARD POD12_DCI PACKAGE_PIN A33 } [get_ports {ddr4_dq[58]}] set_property -dict { IOSTANDARD POD12_DCI PACKAGE_PIN D33 } [get_ports {ddr4_dq[59]}] set_property -dict { IOSTANDARD POD12_DCI PACKAGE_PIN A35 } [get_ports {ddr4_dq[60]}] set_property -dict { IOSTANDARD POD12_DCI PACKAGE_PIN A34 } [get_ports {ddr4_dq[61]}] set_property -dict { IOSTANDARD POD12_DCI PACKAGE_PIN C33 } [get_ports {ddr4_dq[62]}] set_property -dict { IOSTANDARD POD12_DCI PACKAGE_PIN B33 } [get_ports {ddr4_dq[63]}] #create_clock -name c0_sys_clk -period 4.998 [get_ports diff_clock_rtl_clk_p] |
Software Design - Vitis
Page properties | ||||
---|---|---|---|---|
| ||||
Note:
|
For SDK project creation, follow instructions from:
Application
SDK template in ./sw_lib/sw_apps/ available.
Page properties | ||||
---|---|---|---|---|
| ||||
---------------------------------------------------------- FPGA Example scuMCS Firmware to configure SI5338 and Reset System. srec_spi_bootloaderTE modified 2019.2 SREC Bootloader to load app or second bootloader from flash into DDR Descriptions:
xilisf_v5_11TE modified 2019.2 xilisf_v5_11
---------------------------------------------------------- Zynq Example: zynq_fsblTE modified 2019.2 FSBL General:
Module Specific:
zynq_fsbl_flashTE modified 2019.2 FSBL General:
ZynqMP Example: ---------------------------------------------------------- zynqmp_fsblTE modified 2019.2 FSBL General:
Module Specific:
zynqmp_fsbl_flashTE modified 2019.2 FSBL General:
zynqmp_pmufwXilinx default PMU firmware. ---------------------------------------------------------- General Example: hello_te0820Hello TE0820 is a Xilinx Hello World example as endless loop instead of one console output. u-bootU-Boot.elf is generated with PetaLinux. Vitis is used to generate Boot.bin. |
zynqmp_fsbl
TE modified 2019.2 FSBL
General:
- Modified Files: xfsbl_main.c, xfsbl_hooks.h/.c, xfsbl_board.h/.c(search for 'TE Mod' on source code)
- Add Files: te_xfsbl_hooks.h/.c (for hooks and board)\n\
- General Changes:
- Display FSBL Banner and Device Name
Module Specific:
- Add Files: all TE Files start with te_*
- Si5396 Configuration
- PCIe and eth reset
zynqmp_fsbl_flash
TE modified 2019.2 FSBL
General:
- Modified Files: xfsbl_initialisation.c, xfsbl_hw.h, xfsbl_handoff.c, xfsbl_main.c
- General Changes:
- Display FSBL Banner
- Set FSBL Boot Mode to JTAG
- Disable Memory initialisation
zynqmp_pmufw
Xilinx default PMU firmware.
hello_teb0912
Hello TEB0912 is a Xilinx Hello World example as endless loop instead of one console output.
u-boot
U-Boot.elf is generated with PetaLinux. SDK/HSI is used to generate Boot.bin.
Software Design - PetaLinux
Page properties | ||||
---|---|---|---|---|
| ||||
Note:
|
For PetaLinux installation and project creation, follow instructions from:
Config
Start with petalinux-config or petalinux-config --get-hw-description
Changes:
U-Boot
Start with petalinux-config -c u-boot
Changes:
- CONFIG_ENV_IS_NOWHERE=y
- # CONFIG_ENV_IS_IN_SPI_FLASH is not set
Change platform-top.h
Code Block | ||
---|---|---|
| ||
Device Tree
Code Block | ||
---|---|---|
| ||
/include/ "system-conf.dtsi" / { }; &i2c1 { i2cswitch@75 { /* u35 */ compatible = "nxp,pca9544"; #address-cells = <1>; #size-cells = <0>; reg = <0x70>; i2c@0 { /* DSPLL0*/ #address-cells = <1>; #size-cells = <0>; reg = <0>; }; i2c@1 { /* DSPLL1*/ #address-cells = <1>; #size-cells = <0>; reg = <1>; }; i2c@2 { /* J34*/ #address-cells = <1>; #size-cells = <0>; reg = <2>; }; i2c@3 { /* J34*/ #address-cells = <1>; #size-cells = <0>; reg = <3>; }; }; }; /* QSPI */ &qspi { #address-cells = <1>; #size-cells = <0>; status = "okay"; flash0: flash@0 reg{ = <1>; compatible }= "jedec,spi-nor"; i2c@2reg { // FMCF (/dev/i2c-11) = <0x0>; #address-cells = <1>; #size-cells = <0><1>; reg = <2>; }; i2c@3 { // SFP0 (/dev/i2c-12) #address-cells = <1>; #size-cells = <0>; reg = <3>; }; i2c@4 { // SFP1 (/dev/i2c-13) #address-cells = <1>; #size-cells = <0>; reg = <4>; }; i2c@5 { // MEM (/dev/i2c-14) // Low frequency to work with CPLD clock-frequency = <100000>; }; }; /* SD1 with level shifter */ &sdhci1 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_sdhci1_default>; }; &pinctrl0 { status = "okay"; pinctrl_sdhci1_default: sdhci1-default { mux { groups = "sdio1_0_grp"; function = "sdio1"; }; conf { groups = "sdio1_0_grp"; slew-rate = <1>; io-standard = <1>; bias-disable; }; /* mux-cd { groups = "sdio1_cd_0_grp"; function = "sdio1_cd"; }; conf-cd { groups = "sdio1_cd_0_grp"; bias-high-impedance; bias-pull-up; slew-rate = <1>; io-standard = <1>; }; mux-wp { groups = "sdio1_wp_0_grp"; function = "sdio1_wp"; }; conf-wp { groups = "sdio1_wp_0_grp"; bias-high-impedance; bias-pull-up; slew-rate = <1>; io-standard = <1>; }; */ }; }; /* ETH PHY */ /* mdio { #address-cells = <0x1>; #size-cells = <0x0>; compatible = "cdns,macb-mdio"; reg = <0x0 0xff0e0000 0x0 0x1000>; ethernet_phy0: ethernet-phy@0 { reg = <0>; #address-cells = <0x1>; #size-cells = <0x1>; }; ethernet_phy1: ethernet-phy@1 { reg = <1>; #address-cells = <1><0x1>; #size-cells = <0>; reg = <5>; eeprom: eeprom@54 { <0x1>; }; }; */ /* gem1 on REV01 */ &gem2 { status = "okay"; phy-mode = "rgmii-id"; phy-handle = <ðernet_phy1>; ethernet_phy0: ethernet-phy@0 { compatible = "atmelmarvell,24c0888e1510"; reg = <0x54><0>; #address-cells = <0x1>; #size-cells }; }; i2c@6 { // DDR4 (/dev/i2c-15) = <0x1>; }; ethernet_phy1: ethernet-phy@1 { compatible = "marvell,88e1510"; reg = <1>; #address-cells = <1><0x1>; #size-cells = <0x1>; }; }; &gem3 { status = "okay"; phy-mode #size-cells= "rgmii-id"; phy-handle = <0>; <ðernet_phy0>; }; /* USB REV01 only */ /* &dwc3_0 { regstatus = <6>"okay"; dr_mode = }"host"; maximum-speed = "high-speed"; i2c@7 { // USBH (/dev/i2c-16)delete-property/phy-names; /delete-property/phys; #address-cells = <1>/delete-property/snps,usb3_lpm_capable; snps,dis_u2_susphy_quirk; snps,dis_u3_susphy_quirk; }; &usb0 { status #size-cells = <0>"okay"; /delete-property/ clocks; reg = <7>/delete-property/ clock-names; clocks = <0x3 }0x20>; clock-names = }"bus_clk"; }; */ |
Kernel
Start with petalinux-config -c kernel
- Changes:
- # CONFIG_CPU_IDLE is not set (only needed to fix JTAG Debug issue)set
- # CONFIG_CPU_FREQ is not set (only needed to fix JTAG Debug issue)set
- CONFIG_EDAC_CORTEX_ARM64=y (only needed to fix JTAG Debug issue)y
- CONFIG_NVME_CORE=y
- CONFIG_BLK_DEV_NVME=y
- # CONFIG_NVME_MULTIPATH is not set
- CONFIG_NVME_TARGET=y
- # CONFIG_NVME_TARGET_LOOP is not set
- # CONFIG_NVME_TARGET_FC is not set
- CONFIG_NVM=y
- CONFIG_NVM_PBLK=y
- CONFIG_NVM_PBLK_DEBUG=y
...
Start with petalinux-config -c rootfs
Changes:
- CONFIG_i2c-tools=y
- CONFIG_busybox-httpd=y (for web server app)
- CONFIG_packagegroup-petalinux-utils(util-linux,cpufrequtils,bridge-utils,mtd-utils,usbutils,pciutils,canutils,i2c-tools,smartmontools,e2fsprogs)
Applications
See: \os\petalinux\project-spec\meta-user\recipes-apps\
...
General documentation how you work with these project will be available on Si5338
...
SI5395
File location <design name>/misc/Si5345/Si5345-RevD-0911-Project.slabtimeproj
General documentation how you work with these project will be available on Si5345 Si5395
Appx. A: Change History and Legal Notices
...
Scroll Title | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
...