Commit Graph
528 Commits
Author SHA1 Message Date
Martin Braun 2c5a2f5974 x4xx: Add support for auto clock ID
- Update X410 and X440 BSP YAML files to properly index clocks
- Update image core files to declare clock indices
- Update get_clocks() in MPM to return the correct values

This does not include changes to the x400_radio_control block registry.
This change by itself will thus not change behaviour.


Original-commit: f215af2ccde6420b685b4ca493c8bd71d28781cb
2023-10-20 07:30:16 -05:00
Wade Fife dbabc04cd9 fpga: x400: Add X440 200 MHz variant
This adds support for the X440_X4_200 variant which supports up to
200 MHz bandwidth (250 Msps), has a DDC and DUC on each channel,
4 x 10 GbE interfaces, and no DRAM.


Original-commit: bdaba58750ce0c2ccc58769936c3c5c4a6b2d2cf
2023-10-18 22:41:55 -05:00
Wade Fife ea0b8f4012 fpga: x400: Add CE clock
Adds a 266.667 MHz compute engine clock and uses it instead of the
radio clock for the DDC and DUC. Using a faster clock than the radio
allows the DDC and DUC to drain after a stall in the data flow.


Original-commit: ab93cb0929b9536b6d6cbfdc4813e6ba169053ae
2023-10-18 22:23:55 -05:00
Wade Fife 2612487d43 fpga: n3xx: Add CE clock
Adds a 266.667 MHz compute engine clock and uses it instead of the
radio clock for the DDC and DUC. Using a faster clock than the radio
allows the DDC and DUC to drain after a stall in the data flow.


Original-commit: ff55d406a02cc934a5c238d22c836bea08ade3d1
2023-10-18 22:23:55 -05:00
Wade Fife e4d9a9a448 fpga: lib: Allow buffering in eth_ipv4_chdr_adapter
Enable USE_AS_BUFF on packet gate to allow many packets to be buffered.
This reduces latency when several small packets are sent out close
together.


Original-commit: 32d348efe482d40c7090d8203a3c1374dfcb4a68
2023-10-18 22:23:55 -05:00
Martin Braun 613444b39b fpga: rfnoc: radio: Add clock index parameters
This allows the BSP files that instantiate radio blocks to pass in clock
indices.


Original-commit: c669d16a0a500de6b10b0817c7ebbd175818f2cb
2023-10-17 10:24:15 -05:00
Martin Braun e016ef0343 fpga: rfnoc: Add clock info to backend ifc
- Adds 6 bits each for an identifier for timebase and control clock
- Update all mako templates accordingly


Original-commit: 58c0276ff1ceaf825d7cbffbab5016ddef9a5cd9
2023-10-17 10:24:15 -05:00
Javier Valenzuela ccfb94c062 fpga: x400: propagate pps_sync changes
Original-commit: ad17a3eba408db72803dde06fe0482b316c61e96
2023-10-17 10:18:17 -05:00
Javier Valenzuela 4d38451f2a fpga: x400: pps_sync cleanup
Original-commit: 4527a8f70d35d88f8cd75dd358fff07f29496f4f
2023-10-17 10:18:17 -05:00
Javier Valenzuela 4e26d6946f fpga: x440: remove extra synchronizer
Original-commit: a2f4fc49ac52b84593a8e529efa9c5ccbeacb325
2023-10-17 10:18:17 -05:00
Wade Fife c5a4ea2f0e fpga: x400: Update PL DRAM speed bin
Change DRAM speed grade from 075E to 075.


Original-commit: aaa92a16738a6bc2a7c76a4aadb2f0af573d4a38
2023-09-14 13:00:03 -05:00
Javier Valenzuela 72c3a524c7 fpga: x440: cpld: led control cleanup
Original-commit: 1024b69d0c6b32176adf5f6f2269149ef0c34837
2023-09-14 12:58:47 -05:00
Mark Eid b4c2aa0a40 fpga: x400: Fix SPI trigger clock crossing
Original-commit: 5da42f3542ed555623c73c7ce487b9960849f209
2023-07-31 17:35:44 -05:00
Wade Fife 88dd427a98 fpga: Fix RFNoC OOT Makefile inclusion
Original-commit: 4d73b966de307a59fe4b1cf3ad2e584d28f81e63
2023-07-26 15:13:50 -05:00
Javier Valenzuela a1058ba2e7 fpga: x440: fbx: clean up I2C triggers
Original-commit: 7ce1ed520de85c89f8cb5f50b277b90b34e01de6
2023-07-20 11:49:19 -05:00
Mark Eid 1b9a79381a fpga: x400: Fix PRC divider register map
Original-commit: 367adaa35e1f707be52011d491025193e4436eb1
2023-07-10 10:45:09 -06:00
Wade Fife cde17c060f fpga: x400: Add X440 to default make targets
Original-commit: c0504afce61790762b35ad381e8d97d182f5920c
2023-06-26 10:45:10 -05:00
Javier Valenzuela 3e55a7f988 fpga: x400: Fix DB1 timekeeper strobe
Original-commit: d13d1fc0e6ead509ee7d19e7a56c7e97283ed1dc
2023-06-16 12:36:40 -05:00
5cadf901c7 fpga: Add X440/FBX support
Co-authored-by: Martin Braun <martin.braun@ettus.com>
Co-authored-by: Wade Fife <wade.fife@ni.com>
Co-authored-by: Ryan Marlow <ryan@lmarlow.com>


Original-commit: 596760a12e4834e47589c12f8a4fd083aa2f7c25
2023-06-12 10:27:29 -05:00
Wade Fife a405111ce7 fpga: x400: sim: Add 10 GbE with wide CHDR
Adds simulation coverage for 10 GbE with 512-bit CHDR bus.


Original-commit: 0e50a37b5ec6039ed4e8947421dd333047e24408
2023-06-11 12:58:25 -05:00
Wade Fife 564944ea93 fpga: lib: Fix IPv4 CHDR TUSER width
Fix the TUSER width for some buses in eth_ipv4_chdr_adapter. This
allows wider CHDR widths to be used with 10 GbE.


Original-commit: f0ed58f7518410fc174a6356c072dfb21e3de253
2023-06-11 12:58:25 -05:00
Wade Fife 9ed8bb22d6 fpga: lib: Fix Vivado warnings
Original-commit: ad3d614426e068a067692df411412ce3ed936c39
2023-06-09 09:01:04 -05:00
Ryan Marlow 0817f084a3 fpga: lib: Add ctrl_port_to_wb_i2c module
This module wraps i2c_master_top to provide a CtrlPort Interface.


Original-commit: adceebe070d5b15be434aa07961958dafedf5095
2023-05-25 07:08:07 -05:00
adf6f576c6 mpm/fpga: x4xx: Major updates in preparation for future devices
FPGA:
- Split up MB registers that control daughterboard specific settings so
  that daughterboards 0 and 1 could have different setings, in
  preparation for future devices that require different settings.
  This requires a compat number bump to 8.0.
- Add registers for additional RFDC information, including the
  block/tile mapping of the individual channels, and information about
  resampling capabilities
- Identify sections of code that would be specific to X410/ZBX and move
  them to their own headers, so it's trivial to add device-specific
  sections of code instead for other devices in the future.
  - This includes constraints for clocks and I/O pins.
- Remove ability to do timed ctrlport transactions to the MB CPLD, this
  was unused and possibly broken.
- Move daughterboard-specific code into its own code location
  (dboards/zbx)
- Move X410-specific register documentation to its own location
  (doc/X410)
- Refactor Makefiles to split out X410/ZBX specific components and allow
  switching between device types
- Add 512-bit AXI interconnects
- Make number of timekeepers configurable (X410 keeps the single
  timekeeper)

MPM:
- Required compat is bumped to 8.0
- Now supports new registers for detecting DSP capabilities and
  multi-rate settings for the daughterboards
- Adds MMCM controls (currently unused)

Co-authored-by: Wade Fife <wade.fife@ni.com>
Co-authored-by: Ryan Marlow <ryan@lmarlow.com>
Co-authored-by: Martin Braun <martin.braun@ettus.com>
Co-authored-by: Humberto Jimenez <humberto.jimenez@ni.com>


Original-commit: c1d268917ea65dd9c5a42366014cb96d3c025223
2023-05-23 09:06:17 +02:00
Javier Valenzuela ffdcc016cc fpga: x4xx: Refactor MB CPLD code for future devices
Original-commit: e2a79712a7949ffec88135236c744dc5d8bde217
2023-05-23 09:05:27 +02:00
michael-west e9a6fe4e2e FPGA: Synchronize X300 RX frontends on time change
The frontend synchronization upon time change was removed, but is
required to synchronize the RX frontend modules when sharing LOs on
TwinRX.  This change restores the behavior.

Signed-off-by: michael-west <michael.west@ettus.com>


Original-commit: c70b479007ab9f578577dfb5c2de6660e877d9a3
2023-05-10 14:22:42 -05:00
michael-west d6bcab7c8c FPGA: Add time changed pulse to timekeeper
The time changed signal was removed and is needed to synchronized the
frontend.  This restores the signal.

Signed-off-by: michael-west <michael.west@ettus.com>


Original-commit: 27aad17956a063f72f192dde97cbff675b46fada
2023-05-10 14:22:42 -05:00
Martin Braun e49258d910 fpga: x4xx: Rename x410 -> x4xx for common DTS files
Original-commit: ce3fb34b4926a35abf2f109610dacb17c29577f9
2023-04-24 17:27:00 -05:00
michael-west 0971ae69cb Replay buffered TX streamer: Fix gaps in TX
Gaps in transmission were seen when using the replay buffered TX
streamer caused by the Replay block setting the end of burst flag at the
end of every send() call.  This fix adds a flag to the Replay block play
command register to avoid setting the end of burst flag and modifies the
replay buffered TX streamer to use the flag based on the metadata passed
in to the send() call.

Signed-off-by: michael-west <michael.west@ettus.com>


Original-commit: 2419f405775934efa517e025929356ef0a0d181e
2023-04-06 15:34:46 -05:00
Ryan Marlow a90444c784 fpga: lib: Add clock_div module
Module description:
Clock divider. Generates an output clock that is 1/N times the
frequency of the input clock.


Original-commit: 71bdcd22f07162687771d374178ad0372783bd45
2023-04-05 15:10:14 -05:00
Wade Fife cd3b980e25 fpga: x400: Set QSFP LEDs on startup
Original-commit: 977b842584a11f94bd635d1b4181e90494e0e8e1
2023-03-24 14:02:33 -05:00
Wade Fife 8cbcc508c5 fpga: rfnoc: Add throttle to stream endpoints
Original-commit: 60297eb436f3cb00032e70c205453fd4eca80fb5
2023-03-13 17:51:17 -04:00
Wade Fife 6ce656af87 fpga: lib: Add axis_pkt_throttle.sv
Original-commit: f8f93ced23cf3ce0a3ba4339e7fa4ab0c598654d
2023-03-13 17:51:17 -04:00
Wade Fife 880f7b139b fpga: x400: Add X4C_200 RFNoC image cores
Original-commit: 214b41f11976cd5620d628e910d6dfb19fc8054c
2023-02-26 14:50:06 -06:00
Wade Fife abe4a63973 fpga: x400: Add CG_200 RFNoC image cores
Original-commit: 29e4b040e38d0682284b05255fae1c9add137a65
2023-02-26 14:40:50 -06:00
Wade Fife a08d0c4bd5 fpga: tools: Add X410_UC_200 image to X410 package
Original-commit: fb16ec77dc36e6d24b6ada6d7f9ec0484499b0ce
2023-02-24 08:07:17 -06:00
Wade Fife aeaf219f77 fpga: Update all RFNoC image core files
Original-commit: 0fca5d5ffda1f5f4f7c966c3e5f5200222a5a575
2023-02-24 08:07:17 -06:00
Wade Fife fae19151c4 fpga: x400: Add support for X4C, C1, and UC variants
Moves X4C_100, X4C_200, C1_100, and C1_200 from experimental to
available targets and makes the needed changes to allow them to build
successfully.

Adds support for "UC" FPGA variant. U indicates that QSFP0 is unused
and C indicates that QSFP1 is 100 GbE.

Adds experimental CG_200 variant.


Original-commit: cb9609c886b156e22ae9d879fffad8d060f2ca2d
2023-02-24 08:07:17 -06:00
Wade Fife 0e65ae3c86 fpga: x400: Add 1x64, 2x64, and 1x128 DRAM interconnect
Original-commit: daf1ed2ad2fbb72f16a9909fa75a0ba9e2879583
2023-02-24 08:07:17 -06:00
Wade Fife dd2b935f4b fpga: x400: Use x410_200 image core for x410_100 images
Original-commit: 23c856d4d9152153e34699e7507c4363c99b6124
2023-02-24 08:07:17 -06:00
Wade Fife 7fa7ce1f81 fpga: x400: Remove CPU_W parameter
Removes the CPU_W parameter from x4xx.v and the qsfp_wrapper files. The
value of this parameter depends on the axi_eth_dma IP and therefore
should not be changed.


Original-commit: 84c49f40adc980e2968a6a844b4bdbb2d2d38c9c
2023-02-24 08:07:17 -06:00
Wade Fife a97634a2b3 fpga: x400: Add ifdef to remove QSFP wrappers when unused
Original-commit: 4c085c2b5849913231a4d1403a4dff1d570b8d5d
2023-02-24 08:07:17 -06:00
Wade Fife 1fcf1ce3b3 fpga: x400: Make transport adapter width configurable
Original-commit: 8e08cfe1da494f8be185470810ee19fcc8ed98d7
2023-02-24 08:07:17 -06:00
Wade Fife a203dbb9c2 fpga: lib: rfnoc: Add resize capability to chdr_stream_endpoint
This means that the stream endpoint's crossbar connection can be wider
and therefore support a higher bandwidth than the RFNoC block to which
the endpoint is connected. This improves host streaming performance.


Original-commit: 6e15e8bdb668163d51ff9e4099f587fde404ec63
2023-02-24 08:07:17 -06:00
Wade Fife ff3ea516cb fpga: lib: rfnoc: Remove redundant packet gate
Both the chdr_stream_output and chdr_xb_ingress_buff have a packet
gate, making one of them somewhat redundant. Removing one of them
reduces latency and frees up FPGA resources.


Original-commit: 9533bd025d74787d25b135d3092bffa1b51f6731
2023-02-24 08:07:17 -06:00
Wade Fife d671f408c0 fpga: lib: rfnoc: Make RFNoC packet gates removable
This adds a parameter to chdr_xb_ingress_buff and to chdr_stream_output
to make their packet gates optional. They are included by default.

Having the packet gate in chdr_xb_ingress_buff can reduce contention in
the crossbar. Having the packet gate in chdr_stream_output can reduce
the latency for non-data packets (e.g., stream status updates).


Original-commit: 67e0a5a340c14cb0c6ee170fb17be2c09737d723
2023-02-24 08:07:17 -06:00
Wade Fife fd87d4cf30 fpga: lib: rfnoc: Support multiple port widths on crossbar
This adds support for different widths on each port and adds the
ability to disable routes within the crossbar. Both of these features
allow for FPGA resource savings.

These features are controlled by the new parameters PORT_WIDTHS and
ENABLED_PATHS. Unused routes will have the associated logic removed.

A new testbench adds support for testing different port widths and
disabled routes. It also adds more rigrous testing of the crossbar.


Original-commit: 18bf81d91055b68765c44ca86a2cbcfa9704c749
2023-02-24 08:07:17 -06:00
Wade Fife aa9f88602d fpga: Update RFNoC YAML copyright
Original-commit: 69b0989397353560ad804a8d5a5171e481c84c7f
2023-02-22 21:55:02 -06:00
Wade Fife dd683cdee3 fpga: rfnoc: Add DEVICE_FAMILY to stream endpoint
Original-commit: 914a2b08f77a1725bf74a2cccf09b49f7506f53d
2023-02-13 10:50:45 -06:00
Wade Fife b26e5ed3a3 fpga: rfnoc: Add ULTRASCALE to chdr_ingress_fifo
Original-commit: a27d9e4fb92a895c0fe43b791e1d60838c8ad4c6
2023-02-13 10:50:45 -06:00