Top-Level RTL Entity
The top-level firmware target is SimpleZcu111Example (architecture
top_level). The full source lives in
firmware/targets/SimpleZcu111Example/hdl/SimpleZcu111Example.vhd.
Entity surface
The entity is the top FPGA target loaded by the Processing System at boot. It maps physical board I/O to internal AXI buses and three clock domains:
LMK/LMX I2C ports:
i2cSclandi2cSda(2-bit each) for the on-board clock synthesizer chips.RF data converter ports: ADC differential clock and data (
adcClkP/N4-bit,adcP/N8-bit); DAC differential clock and data (dacClkP/N2-bit,dacP/N8-bit); SYSREF and PL clock differential pairs (sysRefP/N,plClkP/N,plSysRefP/N).SYSMON ports:
vPIn,vNIn.
Build-time generics are TPD_G (propagation-delay convention from surf) and
BUILD_INFO_G (build metadata struct populated by ruckus).
Instantiated blocks
Block |
Source |
Role |
|---|---|---|
|
submodule (platform core) |
Platform core: DMA engine, AXI-Lite bridge to PS, SysMon. |
|
Wraps the Xilinx RFDC IP; generates |
|
|
Top-level application logic; second-level AXI-Lite crossbar. |
The top-level AXI-Lite crossbar splits the application address window across
the three blocks at indices HW_INDEX_C = 0, RFDC_INDEX_C = 1, and
APP_INDEX_C = 2 (see Application Register Map).
Clock domains
Clock |
Frequency |
Role |
|---|---|---|
|
100 MHz |
Register access (PS-facing AXI-Lite); also drives |
|
DSP rate |
DSP / DAC sample bus ( |
|
ADC sample rate |
RFDC ADC output clock. Generated from the second RFDC PLL output. |
All cross-domain crossings use surf Synchronizer or Ssr12ToSsr16Gearbox
primitives; the domains are declared as asynchronous groups in the XDC.
For the platform-level CDC philosophy, see
explanation/architecture.html#clock-domains.
Async clock groups (XDC)
The XDC declares the PLL outputs as asynchronous clock groups so the Vivado timing engine does not attempt to close timing across domains:
create_clock -name plClkP -period 1.953 [get_ports {plClkP}]
set_clock_groups -asynchronous \
-group [get_clocks -of_objects [get_pins U_Core/REAL_CPU.U_CPU/U_Pll/PllGen.U_Pll/CLKOUT0]] \
-group [get_clocks -of_objects [get_pins U_Core/REAL_CPU.U_CPU/U_Pll/PllGen.U_Pll/CLKOUT1]] \
-group [get_clocks -of_objects [get_pins U_RFDC/U_Pll/PllGen.U_Pll/CLKOUT0]] \
-group [get_clocks -of_objects [get_pins U_RFDC/U_Pll/PllGen.U_Pll/CLKOUT1]]
Sourced from firmware/targets/SimpleZcu111Example/hdl/SimpleZcu111Example.xdc.