18 KiB
18 KiB
ALINX_Z19_AD9082
Block Diagram
Board's Picture
Address Map
QSFP Interface Registers Base Address: 0x8000_0000
| Address Offset |
Bit | Register Name | Bit(s) Name | Description | Read/Write |
|---|---|---|---|---|---|
| 0x00 | 31:0 | reg0 | fpga_revision_date | mmddyyyy (0x09212025 <= current version) | R |
| 0x04 | reg1 | R | |||
| 31:24 23:15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 |
minor_rev reserved qsfp4_intl qsfp4_modprsl qsfp4_playback_interface_ready reserved qsfp3_intl qsfp3_modprsl qsfp3_capture_interface_ready reserved qsfp2_intl qsfp2_modprsl qsfp2_capture_interface_ready reserved qsfp1_intl qsfp1_modprsl qsfp1_capture_interface_ready |
0x02 <= (current value) Reserved 0 = Active, 1 = Not Active 0 = Present, 1 = Not Present 0 = Not Ready, 1 = Ready Reserved 0 = Active, 1 = Not Active 0 = Present, 1 = Not Present 0 = Not Ready, 1 = Ready Reserved 0 = Active, 1 = Not Active 0 = Present, 1 = Not Present 0 = Not Ready, 1 = Ready Reserved 0 = Active, 1 = Not Active 0 = Present, 1 = Not Present 0 = Not Ready, 1 = Ready |
|||
| 0x08 | reg2 | R/W | |||
| 31:0 | Reserved | ||||
| 0x0c | reg3 | R/W | |||
| 31:0 | reserved | ||||
| 0x10 | reg4 | R/W | |||
| 31:0 | reserved | ||||
| 0x14 | reg5 | R/W | |||
| 31:13 12 11:9 8 7:5 4 3:1 0 |
reserved qsfp4_reset_n reserved qsfp3_reset_n reserved qsfp2_reset_n reserved qsfp1_reset_n |
0 = Reset, 1 = Normal 0 = Reset, 1 = Normal 0 = Reset, 1 = Normal 0 = Reset, 1 = Normal |
|||
| 0x18 | reg6 | R/W | |||
| 31:0 | reserved | ||||
| 0x1c | reg7 | R/W | |||
| 31:0 | reserved | ||||
| 0x20 | reg8 | R/W | |||
| 31 30:1 0 |
counters_rst reserved dig_iq_mode_50g_40g_n |
0 = Normal, 1 = Reset 0 = 40G mode, 1 = 50G mode |
|||
| 0x24 | reg9 | R/W | |||
| 31:0 | reserved | ||||
| 0x28 | reg10 | R/W | |||
| 31 30:13 12 11:10 9:8 7:0 |
rx_path_disable reserved tx_chan1to4_en reserved dac_src_data_sel reserved |
0 = enabled, 1 = disabled 0 = disabled, 1 = enabled 0 = QuadSendRecv, 1 = Fiber, 2 = ADC_LOOPBACK |
|||
| 0x2C | 31:0 | reg11 | clk_125_freq | (KHz) | R |
| 0x30 | 31:0 | reg12 | clk_125_cnt | R | |
| 0x34 | 31:0 | reg13 | clk_250_freq | (KHz) | R |
| 0x38 | 31:0 | reg14 | clk_250_cnt | R | |
| 0x3C | 31:0 | reg15 | rx_device_clk_freq | 375000 (in KHz) | R |
| 0x40 | 31:0 | reg16 | tx_device_clk_freq | 375000 (in KHz) | R |
| 0x44 | 31:0 | reg17 | qsfp1_s_axis_aclk_freq | 40G mode: 161132 (in KHz) 50G mode: 195312 (in KHz) |
R |
| 0x48 | 31:0 | reg18 | qsfp1_s_axis_aclk_cnt | R | |
| 0x4c | 31:0 | reg19 | qsfp2_s_axis_aclk_freq | 40G mode: 161132 (KHz) 50G mode: 195312 (KHz) |
R |
| 0x50 | 31:0 | reg20 | qsfp2_s_axis_aclk_cnt | R | |
| 0x54 | 31:0 | reg21 | qsfp3_s_axis_aclk_freq | 40G mode: 161132 (in KHz) 50G mode: 195312 (in KHz) |
R |
| 0x58 | 31:0 | reg22 | qsfp3_s_axis_aclk_cnt | R | |
| 0x5C | 31:0 | reg23 | qsfp4_s_axis_aclk_freq | 40G mode: 161132 (in KHz) 50G mode: 195312 (in KHz) |
R |
| 0x60 | 31:0 | reg24 | qsfp4_s_axis_aclk_cnt | R | |
| 0x64 | 31:0 | reg25 | qsfp1_rx_tvalid_240b_cnt | R/W | |
| 0x68 | 31:0 | reg26 | qsfp1_rx_overflow_240b_cnt | R/W | |
| 0x6C | 31:0 | reg27 | qsfp1_rx_fifo_aempty_512b_cnt | R/W | |
| 0x70 | 31:0 | reg28 | qsfp1_rx_data_ready_cnt | R/W | |
| 0x74 | 31:0 | reg29 | qsfp1_tx_tvalid_128b_cnt | R/W | |
| 0x78 | 31:0 | reg30 | qsfp1_tx_tvalid_240b_cnt | R/W | |
| 0x7C | 31:0 | reg31 | qsfp1_rx_overflow_128b_cnt | R/W | |
| 0x80 | 31:0 | reg32 | qsfp2_rx_tvalid_240b_cnt | R/W | |
| 0x84 | 31:0 | reg33 | qsfp2_rx_overflow_240b_cnt | R/W | |
| 0x88 | 31:0 | reg34 | qsfp2_rx_fifo_aempty_512b_cnt | R/W | |
| 0x8C | 31:0 | reg35 | qsfp2_rx_data_ready_cnt | R/W | |
| 0x90 | 31:0 | reg36 | qsfp2_tx_tvalid_128b_cnt | R/W | |
| 0x94 | 31:0 | reg37 | qsfp2_tx_tvalid_240b_cnt | R/W | |
| 0x98 | 31:0 | reg38 | qsfp2_rx_overflow_128b_cnt | R/W | |
| 0x9C | 31:0 | reg39 | qsfp3_rx_tvalid_240b_cnt | R/W | |
| 0xA0 | 31:0 | reg40 | qsfp3_rx_overflow_240b_cnt | R/W | |
| 0xA4 | 31:0 | reg41 | qsfp3_rx_fifo_aempty_512b_cnt | R/W | |
| 0xA8 | 31:0 | reg42 | qsfp3_rx_data_ready_cnt | R/W | |
| 0xAC | 31:0 | reg43 | qsfp3_tx_tvalid_128b_cnt | R/W | |
| 0xB0 | 31:0 | reg44 | qsfp3_tx_tvalid_240b_cnt | R/W | |
| 0xB4 | 31:0 | reg45 | qsfp3_rx_overflow_128b_cnt | R/W | |
| 0xB8 | 31:0 | reg46 | qsfp4_rx_tvalid_240b_cnt | R/W | |
| 0xBC | 31:0 | reg47 | qsfp4_rx_overflow_240b_cnt | R/W | |
| 0xC0 | 31:0 | reg48 | qsfp4_rx_fifo_aempty_512b_cnt | R/W | |
| 0xC4 | 31:0 | reg49 | qsfp4_rx_data_ready_cnt | R/W | |
| 0xC8 | 31:0 | reg50 | qsfp4_tx_tvalid_128b_cnt | R/W | |
| 0xCC | 31:0 | reg51 | qsfp4_tx_tvalid_240b_cnt | R/W | |
| 0xD0 | 31:0 | reg52 | qsfp4_rx_overflow_128b_cnt | R/W | |
| 0xD4 | 31:0 | reg53 | adc_rx_tvalid_256b_cnt | R/W | |
| 0xD8 | 31:0 | reg54 | reserved | R/W | |
| 0xDC | 31:0 | reg55 | reserved | R/W | |
| 0xE0 | 31:0 | reg56 | tx_tvalid_256b_cnt | R/W | |
| 0xE4 | 31:0 | reg57 | mem_xfer_tx_upload_tvalid_256b_cnt | R/W | |
| 0xE8 | 31:0 | reg58 | reserved | R/W | |
| 0xEC | 31:0 | reg59 | reserved | R/W | |
| 0xF0 | 31:0 | reg60 | dac_tx_tvalid_128b_cnt | R/W | |
| 0xF4 | 31:0 | reg61 | reserved | R/W | |
| 0xF8 | 31:0 | reg62 | reserved | R/W | |
| 0xFC | 31:0 | reg63 | reserved | R/W | |
CMAC_1 Ethernet Core Registers Base Address: 0x8101_0000
| Address Offset |
Bit | Register Name | Bit(s) Name | Description | Read/Write |
|---|---|---|---|---|---|
| 0x00 | 31:1 0 |
reg0 | gt_reset_reg | Reserved 1 = Reset, self-clearing |
R/W |
| 0x04 | 31:0 | reg1 | reset_reg | R/W | |
| 0x0C | 31:1 0 |
reg2 | configuration_tx_reg1 | Reserved1 0 = Disable, 1 = Enable |
R/W |
| 0x14 | 31:1 0 |
reg4 | configuration_rx_reg1 | Reserved1 0 = Disable, 1 = Enable |
R/W |
| 0x24 | 31:16 15:8 7:0 |
reg5 | core_version_reg | Reserved Major Version Minor Version |
R/W |
| 0x90 | 31:1 0 |
reg6 | gt_loopback | Reserved 0 = Normal, Near End PMA Loopback |
R/W |
CMAC_1 Ethernet Interface Registers Base Address: 0x8100_0000
| Address Offset |
Bit | Register Name | Bit(s) Name | Description | Read/Write |
|---|---|---|---|---|---|
| 0x00 | 31:0 | reg0 | dest_mac_addr_lo | Destination MAC address (lower 32-bit) | R/W |
| 0x04 | 31:0 | reg1 | dest_mac_addr_hi | Destination MAC address (upper 16-bit) | R/W |
| 0x08 | 31:0 | reg2 | src_mac_addr_lo | Source MAC address (lower 32-bit) | R/W |
| 0x0C | 31:0 | reg3 | src_mac_addr_hi | Source MAC address (upper 16-bit) | R/W |
| 0x10 | 31:16 30:0 |
reg4 | Reserved ether_type |
Ethernet Type |
R/W |
| 0x14 | 31:1 0 |
reg5 | Reserved prog_full_man |
Programable Full Manual Control, For Debug Only |
R/W |
| 0x18 | 31:0 | reg6 | prog_full_on | Programable Full On Threshold | R/W |
| 0x1C | 31:0 | reg7 | prog_full_off | Programable Full Off Threshold | R/W |
| R/W | |||||
| 0x40 | 31:0 | reg16 | tx_frame_cnt | ????? | R |
| 0x44 | 31:0 | reg17 | tx_frame_underrun_cnt | ????? | R |
| 0x48 | 31:0 | reg18 | tx_pause_cnt | ????? | R |
| 0x4C | 31:0 | reg19 | rx_frame_cnt | ????? | R |
| 0x50 | 31:0 | reg20 | rx_frame_err_cnt | ????? | R |
| 0x54 | 31:0 | reg21 | rx_pause_cnt | ????? | R |
| 0x58 | 31:0 | reg22 | rx_fifo_overflow_cnt | ????? | R |
CMAC_4 Ethernet Core Registers Base Address: 0x8201_0000
| Address Offset |
Bit | Register Name | Bit(s) Name | Description | Read/Write |
|---|---|---|---|---|---|
| 0x00 | 31:1 0 |
reg0 | gt_reset_reg | Reserved 1 = Reset, self-clearing |
R/W |
| 0x04 | 31:0 | reg1 | reset_reg | R/W | |
| 0x0C | 31:1 0 |
reg2 | configuration_tx_reg1 | Reserved1 0 = Disable, 1 = Enable |
R/W |
| 0x14 | 31:1 0 |
reg4 | configuration_rx_reg1 | Reserved1 0 = Disable, 1 = Enable |
R/W |
| 0x24 | 31:16 15:8 7:0 |
reg5 | core_version_reg | Reserved Major Version Minor Version |
R/W |
| 0x90 | 31:1 0 |
reg6 | gt_loopback | Reserved 0 = Normal, Near End PMA Loopback |
R/W |
CMAC_4 Ethernet Interface Registers Base Address: 0x8200_0000
| Address Offset |
Bit | Register Name | Bit(s) Name | Description | Read/Write |
|---|---|---|---|---|---|
| 0x00 | 31:0 | reg0 | dest_mac_addr_lo | Destination MAC address (lower 32-bit) | R/W |
| 0x04 | 31:0 | reg1 | dest_mac_addr_hi | Destination MAC address (upper 16-bit) | R/W |
| 0x08 | 31:0 | reg2 | src_mac_addr_lo | Source MAC address (lower 32-bit) | R/W |
| 0x0C | 31:0 | reg3 | src_mac_addr_hi | Source MAC address (upper 16-bit) | R/W |
| 0x10 | 31:16 30:0 |
reg4 | Reserved ether_type |
Ethernet Type |
R/W |
| 0x14 | 31:1 0 |
reg5 | Reserved prog_full_man |
Programable Full Manual Control, For Debug Only |
R/W |
| 0x18 | 31:0 | reg6 | prog_full_on | Programable Full On Threshold | R/W |
| 0x1C | 31:0 | reg7 | prog_full_off | Programable Full Off Threshold | R/W |
| R/W | |||||
| 0x40 | 31:0 | reg16 | tx_frame_cnt | ????? | R |
| 0x44 | 31:0 | reg17 | tx_frame_underrun_cnt | ????? | R |
| 0x48 | 31:0 | reg18 | tx_pause_cnt | ????? | R |
| 0x4C | 31:0 | reg19 | rx_frame_cnt | ????? | R |
| 0x50 | 31:0 | reg20 | rx_frame_err_cnt | ????? | R |
| 0x54 | 31:0 | reg21 | rx_pause_cnt | ????? | R |
| 0x58 | 31:0 | reg22 | rx_fifo_overflow_cnt | ????? | R |
How to re-create Project in Vivado
- Clone the hdl repository from https://github.com/analogdevicesinc/hdl
- Follow instructions to build all the libraries
- check out this project into a project folder, for example //projects/ALINX_Z19
- open Vivado and add the following user repository(s):
//adi/hdl/library - cd to //projects/ALINX_Z19/alinx_z19_ad9082
- type source ./create_proj.tcl
- After the project is re-created correctly, run "Create HDL Wrapper..." from the Sources tab for system.bd
- Click on "Generate Bitstream"
How to update project file after adding or removing project files
- remove system_wrapper.vhd from Design Sources since this file is auto-generated.
- remove system_top.dcp from Design Sources from Utility\utils_1\Design Checkpoint.
- in the Tcl console, cd to //projects/ALINX_Z19/alinx_z19_ad9082
- type write_project_tcl -force create_proj.tcl
- Make sure to commit create_proj.tcl and all modified and added files to git
How to read or write registers using devmem from Linux's command line
Usage: devmem ADDRESS [WIDTH [VALUE]]
Read/write from physical address
ADDRESS Address to act upon
WIDTH Width (8/16/...)
VALUE Data to be written
Memory Read Example
To read the FPGA Revision Register type:
devmem 0x80000000
0x10212024 <-- response
Memory Write Example
To write a32-bit register type:
devmem 0x80000028 32 0x12345678
How to Build Atomic Rules Yocto ARDSoC Project for Alinx_AD9082
- clone this repo https://github.com/AtomicRulesLLC/yocto-ardsoc#
- cd proj_ar/yocto-ardsoc
- git checkout scarthgap_mt
- sudo ./scripts/plnx-env-setup.sh
- cd sources
- git submodule update
- cd ..
- source setupsdk z19-9082 build_z19_9082
- bitbake ardsoc-image-core --> if all builds successfully see Output Artifacts below
Notes on how to re-generate BOOT.BIN
- replace the .xsa file with your latest at this location:
proj_ar/yocto-ardsoc/sources/meta-atomicrules/meta-atomicrules-ardsoc/meta-z19-9082/recipes-bsp/external-hdf/files/system.xsa --> for AD9082 - cd proj_ar/yocto-ardsoc/build_z19_ad9082
- rm -rf tmp/
- cd ..
- sudo ./scripts/plnx-env-setup.sh
- source setupsdk z19-9082 build_z19_9082
- bitbake ardsoc-image-core --> if all builds successfully see Output Artifacts below
Output Artifacts
- Once you have a new build with your xsa the artifacts can be found here:
a) proj_ar/yocto-ardsoc/build_z19_9082/tmp/deploy/images/ardsoc-z19-zynqmp/boot.bin
b) proj_ar/yocto-ardsoc/build_z19_9082/tmp/deploy/images/ardsoc-z19-zynqmp/ardsoc-image-core-ardsoc-z19-zynqmp.rootfs.wic.gz
to copy new boot.bin to board:
ex. scp boot.bin root@10.1.1.169:/boot
Misc Stuff
dtc -I dtb -O dts system.dtb -o system.dts
dtc -I dts -O dtb system.dts -o system.dtb


