# 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
1. Clone the hdl repository from https://github.com/analogdevicesinc/hdl
2. Follow instructions to build all the libraries
3. check out this project into a project folder, for example //projects/ALINX_Z19
4. open Vivado and add the following user repository(s):
//adi/hdl/library
5. cd to //projects/ALINX_Z19/alinx_z19_ad9082
6. type source ./create_proj.tcl
7. After the project is re-created correctly, run "Create HDL Wrapper..." from the Sources tab for system.bd
8. Click on "Generate Bitstream"
# How to update project file after adding or removing project files
1. remove system_wrapper.vhd from Design Sources since this file is auto-generated.
2. remove system_top.dcp from Design Sources from Utility\utils_1\Design Checkpoint.
3. in the Tcl console, cd to //projects/ALINX_Z19/alinx_z19_ad9082
4. type write_project_tcl -force create_proj.tcl
5. 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
1) clone this repo https://github.com/AtomicRulesLLC/yocto-ardsoc#
2) cd proj_ar/yocto-ardsoc
3) git checkout scarthgap_mt
4) sudo ./scripts/plnx-env-setup.sh
5) cd sources
6) git submodule update
7) cd ..
8) source setupsdk z19-9082 build_z19_9082
9) bitbake ardsoc-image-core --> if all builds successfully see Output Artifacts below
### Notes on how to re-generate BOOT.BIN
1) 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
2) cd proj_ar/yocto-ardsoc/build_z19_ad9082
3) rm -rf tmp/
4) cd ..
5) sudo ./scripts/plnx-env-setup.sh
6) source setupsdk z19-9082 build_z19_9082
7) bitbake ardsoc-image-core --> if all builds successfully see Output Artifacts below
### Output Artifacts
1) 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