Commit Graph

918 Commits

Author SHA1 Message Date
Javier Valenzuela
1c0dfa23d8 fpga: b310: update LMK_SYNC constraint 2026-08-18 12:39:10 -05:00
Javier Valenzuela
ed156ae6cf fpga: b310: removing stale comment 2026-08-18 12:39:10 -05:00
Javier Valenzuela
8676b3e257 fpga: b310: remove vhook comments 2026-08-14 16:33:50 -05:00
Javier Valenzuela
a9aed26306 fpga: lib: move ctrlport_to_jtag to lib sirectory 2026-08-14 16:32:09 -05:00
Javier Valenzuela
c17c6a4c3a fpga: b310: update jtag prescalar 2026-08-14 16:31:15 -05:00
Javier Valenzuela
8745af720e fpga: b310: add CPLD jtag constraints 2026-08-14 16:31:15 -05:00
Niels Garibaldi
c20e60a594 fpga: duc: only include TS in first packet of burst
For the multisample version of the DUC block, in order
to align with the singlesample behavior this changes the packet
generation in axi_rate_change_ms to only include the timestamp in
the first packet of each burst.
2026-08-11 10:47:57 +02:00
Niels Garibaldi
d91c2293d1 fpga: rfnoc: add TS-on-first-only option to axi_rate_change_ms
Add a parameter to the axi_rate_change_ms module called
EN_TIME_ALL_PKTS.
Set to 1, the module will calculate timestamps
for all packets of the output burst.
Set to 0, the module will only insert a timestamp in the first
pkt of each generated output burst.
2026-08-11 10:47:57 +02:00
Javier Valenzuela
9849f85918 fpga: b310: removed unused revision reg 2026-08-10 17:06:59 -05:00
Javier Valenzuela
984bc86793 fpga: b300: update jesd signal naming 2026-08-10 17:06:01 -05:00
Wade Fife
4a9b264b86 fpga: lib: Fix double driver in clocking_watchdog_tb 2026-08-10 17:03:45 -05:00
mhallada
e90b0b4643 fpga: Ensure constant initial phase of dds phase accumulator
between bursts

Reload the phase accumulator (with registered phase increment)
in dds_ms at EoB to maintain constant initial phase between bursts
2026-08-10 23:12:25 +02:00
Wade Fife
1bafc03e08 fpga: tools: Add simulator install locations 2026-08-10 16:05:30 -05:00
Lars Amsel
dd7607fc17 ci: add 800 MHz X440 images to pipeline builds 2026-08-10 17:21:47 +02:00
Lars Amsel
30a4b7fc2b fpga: x440: add 800 MHz images 2026-08-10 17:21:47 +02:00
Lars Amsel
33a0dc16bd fpga: add clock watch circuit 2026-08-10 17:21:47 +02:00
mhallada
6883bb4d39 host: Fix NIPC calculation in ddc/duc
Computed NIPC values now resolve to 1 for
RF_BW < 200 MHz and the workaround in X410_X4_100
bitfile to ensure correct NIPC has been reverted.
2026-08-10 08:38:01 +02:00
Niels Garibaldi
a1f558f16a fpga: add wideband ddc and duc blocks to default fpga images
Adding the RFNoC DDC and DUC blocks to our shipping bitfiles.

The new wideband DxC implementation allow processing input/output
rates up to a maximum of 2000MSps.
This commit adds the DDC/DUC blocks to some of our shipping
bitfiles for all channels.

Co-authored-by: Niels Garibaldi <niels.steffen.garibaldi@emerson.com>
Co-authored-by: André Zoch <andre.zoch@emerson.com>
Co-authored-by: Meghana Halladamath <meghana.halladamath@emerson.com>
Co-authored-by: Wade Fife <wade.fife@ettus.com>
Co-authored-by: Max Köhler <max.koehler@emerson.com>
2026-08-05 08:43:42 +02:00
Niels Garibaldi
66769905bb fpga: x400 add faster ce_clk variant
Add a new faster ce clock called fast_ce to x4xx that runs at
333.33MHz.

Co-authored-by: Max Köhler <max.koehler@emerson.com>
2026-08-05 08:43:42 +02:00
Niels Garibaldi
b4aeb78438 fpga: dsp: add wideband ddc and duc rfnoc blocks
Added variants for the DDC/DUC blocks that can process multiple
samples per cycle and can be used for bandwidths higher than
200Mhz.
This new feature is integrated into the existing RFNoC DDC/DUC
blocks. Depending on the Radio bandwidth specified for the USRP
variant, the DxC blocks will instantiate the existing singlesample
implementation(for FPGA image variants <= 200MHz) or instantiate
the multisample implementation(for FPGA image variants > 200MHz).

Co-authored-by: Niels Garibaldi <niels.steffen.garibaldi@emerson.com>
Co-authored-by: André Zoch <andre.zoch@emerson.com>
Co-authored-by: Meghana Halladamath <meghana.halladamath@emerson.com>
Co-authored-by: Wade Fife <wade.fife@ettus.com>
Co-authored-by: Max Köhler <max.koehler@emerson.com>
2026-08-05 08:43:42 +02:00
Javier Valenzuela
b6286bab13 fpga: Add support for USRP B310
Co-authored-by: Wade Fife <wade.fife@ettus.com>
Co-authored-by: Tony Liecthy <tony.liechty@ni.com>
Co-authored-by: Grant Meyerhoff <grant.meyerhoff@emerson.com>
Co-authored-by: Christopher Oeltjen <christopher.oeltjen@emerson.com>
2026-08-04 10:40:54 +02:00
Javier Valenzuela
2cde73ab6f fpga: lib: add scalability to pcie host datapath components 2026-08-04 10:40:40 +02:00
Javier Valenzuela
d4b827abea fpga: lib: add SV wrapper for ctrlport_timer 2026-08-04 10:40:34 +02:00
Javier Valenzuela
dd708a46f4 fpga: lib: add ctrlport endpoints for I2C, UART and high-throughput SPI
Co-authored-by: Wade Fife <wade.fife@ettus.com>
Co-authored-by: Tony Liecthy <tony.liechty@ni.com>
2026-08-04 10:40:31 +02:00
Max Köhler
6d52cf9155 fpga: lib: disconnect reset from axi_fifo_flop ready path 2026-07-28 14:27:27 +02:00
Wade Fife
90b242eae9 fpga: rfnoc: Reclaim byte in SEP input buffer 2026-07-28 14:25:28 +02:00
Wade Fife
0aaca07efd fpga: rfnoc: Fix null src sink TB description 2026-07-28 14:25:28 +02:00
Wade Fife
19bf6207bd fpga: rfnoc: Support non-power-of-two SEP buffer sizes
Previously it would round up the requested size to the nearest power of
two. Now it will attempt to match the size of the buffer to the
requested size, allowing more control over how many FPGA RAM resources
get consumed.
2026-07-28 14:25:28 +02:00
Wade Fife
8c2a20de50 fpga: rfnoc: Increase Ctrl SeqNum to 8 bits
Increase the control SeqNum field width from 6 bits to 8 bits. See the
changes to rfnoc_fpga.md for details.
2026-07-28 14:24:19 +02:00
Max Köhler
3ed843791b fpga: lib: add Xilinx parameterized macro version of axi_fifo_2clk
The axi_fifo_2clk module uses a generic FIFO macro from Xilinx. This allows
custom widths and depths to be specified. It removes the need for combinatorial
logic to connect multiple smaller IP blocks to form a wider data path FIFO.
2026-07-28 09:13:27 +02:00
Max Köhler
5b9c55c5df fpga: x420: lower FPGA max input delay on GPIO interface 2026-07-24 15:13:25 +02:00
Wade Fife
c9324ce0d4 fpga: lib: Fix coherency issues in ctrlport_reg
Fix an issue in which the most-significant word could be overwritten
with cached data when ctrlport_reg_rw is used in coherent mode. Also
fix per-word byte-enable handling for wide registers.

Fix the coherent-read cache width in ctrlport_reg_ro to match the
padded register width.

Thanks to GitHub user NobleBrutus for pointing out the coherency bug
and suggesting a fix.
2026-07-21 19:55:07 -06:00
Wade Fife
c60a872c21 fpga: tools: Use VHDL 2008 in Vivado 2026-07-21 19:29:47 -06:00
Martin Braun
b1bee353a3 fpga/usrp3: Remove various unused IP
The following IP blocks are removed:

- lib/ip/complex_multiplier: This was only used in rfnoc-gain (but not
  anymore).
- lib/ip/dds: This had been designed out a while ago.
- x300/ip/input_sample_fifo: This was also unused.

Unused IP is a drag on builds and Vivado upgrades.
2026-07-20 09:15:44 +02:00
Jones Chakkalakkal
56aed061ab fpga: sim: Add reset behaviour for AXIS BFM master
Added two different behaviours for AXIS BFM when reset is asserted:
- TRUNCATE_PACKET: ignores the TREADY from the DUT and progresses
		   through the rest of the data in the current packet.
		   This was and still is the default behaviour.
- DISCARD_PACKET : discards the rest of the packet in-flight and
		   moves to the next one. This prevents partial
		   packets from the master persisting after a reset.
2026-07-16 08:14:00 +02:00
Max Köhler
f343f06673 fpga: rfnoc: remove critical path from destination cache 2026-07-11 11:12:17 +02:00
Max Köhler
d2ec97b171 fpga: rfnoc: optimize CHDR crossbar for area 2026-07-09 01:10:29 -05:00
Wade Fife
e7a480c4c7 fpga: lib: rfnoc: Don't clear cache until safe 2026-07-09 01:09:53 -05:00
Max Köhler
9808a7e12b fpga: x400: autogenerate rfdc_timing_regmap 2026-07-02 13:13:34 +02:00
Max Köhler
547acfb776 ci: add X420_XX_400 bitfiles to pipeline 2026-07-01 10:01:05 +02:00
Max Köhler
ac74766a7b fpga: x420: add 400 MHz variant 2026-07-01 10:01:05 +02:00
Max Köhler
6209751dfa fpga: x420: add fabric resamplers by 3 to 200 MHz variant 2026-07-01 10:01:05 +02:00
Max Köhler
93e1b7c78d fpga: remove synth target
Replacing the synth target of the FPGA Makefiles with the normal "bin" flow
which ends after synthesis if desired. This aligns the build flows in case ILAs
want to be added.
2026-06-30 10:33:29 +02:00
Wade Fife
831f2940d5 fpga: rfnoc: Fix chdr_traffic_source in Questa 2026-06-29 08:08:59 +02:00
Wade Fife
9a437b0650 fpga: sim: Add to DESIGN_SRCS rather than replace
Some testbenches were overwriting DESIGN_SRCS, but this gets
initialized in viv_sim_preamble.mak and overwriting it causes some
necessary files to be removed from the file list.
2026-06-29 08:08:59 +02:00
Wade Fife
3d0afa2c8d fpga: rfnoc: Update block testbenches to use block/burst ctrl 2026-06-29 08:08:59 +02:00
Wade Fife
79ac8c1b8a fpga: sim: Add block and burst support to CtrlBfm 2026-06-29 08:08:59 +02:00
Wade Fife
2574cd52b9 fpga: rfnoc: Support remaining AXIS-Ctrl opcodes
This adds support for block write, block read, and poll operations in
the AXIS-Ctrl endpoint.

A burst mode is also now supported, in which the READ or WRITE opcode
with NumData > 1 allows repeated reads or writes to the same address,
unlike block write/read, which auto-increments the address.

This change also removes the requirement for dummy data words to be
present in read request packets as well as write and sleep response
packets. This improves efficiency of the control interface, especially
for block and burst operations.
2026-06-29 08:08:59 +02:00
Niels Garibaldi
fa7c91a285 fpga: radio: add TX fixed resampler disable X440_200 rf core 2026-06-12 14:30:31 +02:00
Max Köhler
16c3a3acc2 fpga: x4xx: add placement constraints 2026-06-12 14:06:13 +02:00