105 lines
3.2 KiB
Markdown
105 lines
3.2 KiB
Markdown
# Digilent Genesys 2 target
|
|
|
|
This directory contains only the Genesys 2 adaptation of the MAX2771 recorder.
|
|
The protocol/capture/FIFO/MAC RTL comes from `../../rtl/common`; no portable
|
|
module is copied here.
|
|
|
|
## Target-specific files
|
|
|
|
| File | Function |
|
|
|---|---|
|
|
| `rtl/max2771_recorder_top.sv` | connects common blocks, status counters and LEDs |
|
|
| `rtl/ethernet_clock_gen_xilinx.sv` | 200 MHz differential input and primitive MMCM for 125 MHz/125 MHz +90° |
|
|
| `rtl/rgmii_tx_xilinx.sv` | Kintex-7 ODDR implementation for TXD/TXCTL/TXC |
|
|
| `rtl/phy_init_rtl8211e.sv` | polls Genesys RTL8211E PHY address 1 and gates 1000/full link |
|
|
| `constraints/genesys2_max2771_recorder.xdc` | verified clock, JA, Ethernet and LED pins |
|
|
| `scripts/build_vivado.tcl` | in-memory/non-project synthesis, P&R, reports and bitstream |
|
|
| `scripts/program_fpga.tcl` | volatile JTAG configuration |
|
|
|
|
## Wiring
|
|
|
|
| Signal | FPGA ball | JA pin | Standard |
|
|
|---|---:|---:|---|
|
|
| `rf_clk_pmod` | U27 | JA[0] | LVCMOS33 |
|
|
| `rf_data_pmod[0]` | U28 | JA[1] | LVCMOS33 |
|
|
| `rf_data_pmod[1]` | T26 | JA[2] | LVCMOS33 |
|
|
| `rf_data_pmod[2]` | T27 | JA[3] | LVCMOS33 |
|
|
| `rf_data_pmod[3]` | T22 | JA[4] | LVCMOS33 |
|
|
|
|
Connect a common ground and use only a 3.3-V-compatible digital source.
|
|
|
|
## Simulation
|
|
|
|
From the repository root:
|
|
|
|
```bash
|
|
make genesys2-sim
|
|
```
|
|
|
|
This runs the common FIFO/protocol/MAC regression. Xilinx primitives are
|
|
guarded by `SYNTHESIS`, so vendor simulation libraries are not required for the
|
|
common regression.
|
|
|
|
## Build
|
|
|
|
```bash
|
|
make genesys2-build
|
|
```
|
|
|
|
Equivalent direct command:
|
|
|
|
```bash
|
|
vivado -mode batch -source targets/genesys2/scripts/build_vivado.tcl
|
|
```
|
|
|
|
Output:
|
|
|
|
```text
|
|
build/genesys2/vivado/max2771_recorder.bit
|
|
build/genesys2/reports/
|
|
```
|
|
|
|
The build uses part `xc7k325tffg900-2`, top `max2771_recorder_top`, creates an
|
|
in-memory project, fails on negative setup/hold slack or unexpected major CDC
|
|
warnings and uses no block design or generated IP. A clean Vivado 2026.1 build
|
|
on 1 August 2026 completed synthesis, placement, routing, DRC and bitstream
|
|
generation with +0.212 ns worst setup slack and +0.090 ns worst hold slack.
|
|
|
|
## Programming
|
|
|
|
Connect the Digilent JTAG USB port and run:
|
|
|
|
```bash
|
|
make genesys2-program
|
|
```
|
|
|
|
This configures the FPGA volatile SRAM. It does not write configuration flash.
|
|
Power cycling removes the design.
|
|
|
|
## Clocking and RGMII
|
|
|
|
The 200 MHz differential oscillator drives an MMCM with a 1000 MHz VCO. It
|
|
generates 125 MHz at 0° for the MAC/data ODDRs and 125 MHz at +90° for the TXC
|
|
ODDR. The resulting nominal +2 ns clock shift is required because the board
|
|
straps RTL8211E transmit delay off.
|
|
|
|
PHY reset remains asserted for 10 ms, register access waits another 30 ms, and
|
|
transmit starts only after PHY-specific status reports resolved 1000 Mb/s/full
|
|
duplex link. Ethernet receive is not implemented.
|
|
|
|
## LEDs
|
|
|
|
| LED | Meaning |
|
|
|---:|---|
|
|
| 0 | MMCM locked/system ready |
|
|
| 1 | qualified 1000/full link |
|
|
| 2 | RF sample activity |
|
|
| 3 | FIFO non-empty |
|
|
| 4 | sample loss/overflow latched |
|
|
| 5 | frame activity |
|
|
| 6 | first PHY status read completed |
|
|
| 7 | Ethernet-domain heartbeat |
|
|
|
|
See [hardware assumptions](docs/hardware_assumptions.md) and
|
|
[timing constraints](docs/timing_constraints.md) before hardware sign-off.
|