Commit Graph
128 Commits
Author SHA1 Message Date
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
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
Martin Braun e49258d910 fpga: x4xx: Rename x410 -> x4xx for common DTS files
Original-commit: ce3fb34b4926a35abf2f109610dacb17c29577f9
2023-04-24 17:27:00 -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 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 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 aa9f88602d fpga: Update RFNoC YAML copyright
Original-commit: 69b0989397353560ad804a8d5a5171e481c84c7f
2023-02-22 21:55:02 -06:00
michael-west 4b6d01bf54 fpga: Reformat javascript in doc
The long lines were causing Debian lintian failures, so they have been
reformatted.  No functional changes.

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


Original-commit: 1b6c6d12fff4a6152595418a2ad54396ad8ae1f9
2023-02-10 11:48:12 -08:00
Wade Fife eec959f814 fpga: Add BUILD_BASE_DIR option to makefiles
Adds a BUILD_BASE_DIR makefile variable that allows you to specify the
base directory for FPGA build outputs. This allows you to put the
output from each run of make into a unique directory, or to run
multiple instances of make in parallel with each build's output being
put in a different directory. For example:

make X310_XG BUILD_BASE_DIR=/path/to/builds


Original-commit: bc6db8409ba756bbad0d0c158ffb00c614b58fd9
2023-02-09 07:38:49 -06:00
Wade Fife ab63d78a6c fpga: Add BUILD_SEED variable
Adds a BUILD_SEED make variable that can be set to a 32-bit integer,
and adds an FPGA read-only register initialized by this variable.
Changing this variable will randomly affect the FPGA build results.
This can be useful when your build fails timing by a small amount,
allowing you to build again and get different results with the same
code.

For example, you could run the following to produce an FPGA build with
different timing results from the default build:

make X310_XG BUILD_SEED=123


Original-commit: 3a3a03486f9221c2e59fa6d0826c23d17730956d
2023-02-07 23:04:12 -06:00
Wade Fife 257e5b4db9 fpga: x400: Bump FPGA compat to 7.9
Original-commit: 910dd82599ff192523e04061582cbafb4394e207
2022-08-29 17:01:45 -05:00
Wade Fife 16587514ba fpga: x400: Fix transport adapter PROTOVER
Original-commit: 7b93c4a37abc91b6607a3401e39605bc23cae69f
2022-08-29 17:01:45 -05:00
Wade Fife 5af17e0984 fpga: x400: Fix NODE_INST for transport adapters
Set the NODE_INST parameter for each transport adapter on X4xx so that
each adapter has a unique node instance number.


Original-commit: 8e87a4d24aeeb77a9528ff67a36d8a0ae12e7137
2022-08-29 17:01:45 -05:00
Wade Fife f010ce051e fpga: Fix target dependencies in Makefile.xxx.inc
Original-commit: e0147fd19347e4e2b2ec1cae193d4c295b9c427b
2022-08-29 07:53:32 -05:00
Humberto Jimenez b6d9977685 fpga: Use AR76780 patch for fir_compiler
Original-commit: 719cccea7fd6a8a27d6cb96242984240c583a2ee
2022-08-25 13:55:30 -05:00
Wade Fife 31c638f98c fpga: x400: Fix link status detection of 10 GbE IP
This fixes some issues with the 2021.1 version of the 10 GbE IP. In the
new version, link status is sporadically detected by the Xilinx IP when
nothing is connected to the port. Also, when the SFP is inserted, the
link status goes up and down multiple times. This change fixes this by
adding a counter and only considering it "linked" when the link has
been stable for some amount of time.


Original-commit: 846c7be2e42f1db6d7c7cc0b1128e014f83e3bae
2022-08-25 13:55:30 -05:00
Sam O'Brien 1b952d33df fpga: x400: Upgrade to Vivado 2021.1
Commit includes:
- Upgrade x400-specific IP
- Removal of xge_pcs_pma IP patch


Original-commit: e94deac2efb8c3167eb2d70a385a8fa0ad657b55
2022-08-25 13:55:30 -05:00
Wade Fife 81bb2ae28f fpga: Update makefiles to allow parallel FPGA builds
This adds the ability to do IP generation and FPGA builds using the
--jobs (-j) option with Make. For example, rather than generating each
IP one after another, you can generate up to N at a time using N Vivado
instances. This greatly reduces the IP generation time. Similarly,
parallel jobs can be used to easily build different FPGA variants
simultaneously.

Because FPGA builds can consume a lot of memory, care must be taken to
ensure that the number of jobs is not too high for the amount of memory
available.

New IP make targets were added for each USRP so that IP can be built
separately from the FPGA. The IP targets are now a dependency on each
FPGA target.

For example, you can generate the IP for X310 using 4 parallel jobs
using the following command:

  make -j4 X310_IP

Or, build two X310 bitstreams simultaneously:

  make -j2 X310_XG X310_HG


Original-commit: 4b03e237a96ee277eefff257d65b08708c38662c
2022-08-16 10:16:22 -05:00
Javier Valenzuela 50bf9c3ae5 fpga: x400: zbx: Revision Bump
Original-commit: 8d022b3f01e9e60fe1ff1733b667e290a1d9f258
2022-08-03 14:28:21 -05:00
Javier Valenzuela 9513397e17 fpga: tools: Lattice build flow clean-up
Original-commit: fd2dd921a2af4bff1a26c43385b3942bc143f934
2022-08-03 14:28:21 -05:00
Humberto Jimenez 694475ce7a fpga: zbx: Update HTML regmap
Original-commit: 50bfa12cadd96bf114ee3bbae4a27208fec5515b
2022-07-19 13:04:20 -05:00
Javier Valenzuela a6fc53b4e6 fpga: x400: zbx: Add support for XO3 CPLD variant.
The main changes included are:
- Variant-dependent pin-out instantiation.
- Update clocking scheme in top level file
  to include XO3 PLL
- Add ability to shift outgoing data for
  the GPIO communication interface with
  the X410 FPGA.
- Include project files required to build
  the XO3 variant of the ZBX CPLD.
- Add build flow for Lattice Diamond designs.
- Add ability to build XO3 variant of ZBX CPLD.


Original-commit: 2c7813acb21383f302353a1b6cf57f0946fa0b6b
2022-06-28 16:33:05 -05:00
Wade Fife 287659ddeb fpga: Fix first arg in calls to $fatal()
This fixes warnings regarding the first argument to $fatal(), which is
supposed to be a number indicating what diagnostics to display. 1
corresponds to "Prints simulation time and location".


Original-commit: 58763bdfdaa276155ec6b79a3e5420de17172c7a
2022-06-28 10:34:18 -05:00
Wade Fife 03abebec26 fpga: x400: Fix AXI/LBUS testbench names
Original-commit: 9962898c08d6fdfb54699b7da3e726525b6cdff2
2022-06-28 10:34:18 -05:00
Wade Fife b8ded164e5 fpga: rfnoc: Remove rfnoc_version from target YAML
This causes the latest RFNoC protocol version to be used by default
and avoids the need to update YAML files every time the RFNoC
protocol version gets bumped.


Original-commit: 92016a585a5223a9a7678134e318e412875b64c2
2022-05-11 12:29:35 -07:00
Wade Fife e89647e545 fpga: x400: Increase replay SEP buffer sizes
Original-commit: 41aadb29b952d563bf78c38b7bfd408d2f1d2519
2022-04-06 14:49:49 -07:00
Javier Valenzuela 57e460af22 fpga: x400: Add timed commands support for all radio ctrlport endpoints
Extends timed command support to all endpoints
addressable by the radio ctrlport interface.

  Previously supported endpoints:
    - Daughterboard GPIO interface
    - RFDC timing control
  Newly supported endpoints:
    - DIO ATR control
    - DIO SPI control
    - DIO Source control


Original-commit: e51f18925a566f152c4e8622aac6376efe46c6eb
2022-04-04 15:17:07 -05:00
Wade Fife 16c1235b30 fpga: Update all RFNoC images
Original-commit: 002ff9698e09b94c396736613e493f79e9c56442
2022-03-31 13:51:23 -07:00
Wade Fife b81ab96b12 rfnoc: Update device port names in image core YAML
Update USRP RFNoC iamge core YAML files to use the more consistent
device port names. Clean up the formatting and make the files more
consistent.


Original-commit: 6318eaeff548f760056af7c8172937a296409d25
2022-03-31 13:51:23 -07:00
Wade Fife 37e0f51d67 fpga: x400: Add x410_400_128_rfnoc_image_core
Original-commit: 13c03d4c2f366b41f5dd526326775a499a21514c
2022-03-14 21:34:23 -05:00
Wade Fife c10f9a960e fpga: x400: Cleanup FPGA Makefile
Original-commit: dd6442c7b6d70857e5bfe0b3b94072a6cf3d12e0
2022-03-04 18:46:12 -06:00
Wade Fife 32d1959e49 fpga: x400: Add support for DRAM with 400 MHz BW
Original-commit: bbda5411548a06a3c3ada7b02df8fa7fb44aaad5
2022-03-04 18:46:12 -06:00
Wade Fife f88b56d9cb fpga: x400: Change AXI XB for DRAM to 512-bit
Change the width of the crossbar in the AXI Interconnect IP from
256-bit to 512-bit to match the DRAM memory controller width and to
give better performance.


Original-commit: 822cd03c8cd686f8b0554774adcbdd3803128bc2
2022-03-04 18:46:12 -06:00
Javier Valenzuela 11ca44bbb3 fpga: x400: Add SPI Controller Info register
Include a register that contains SPI controller information.
Currently, it only provides the number of slaves addressable
by the SPI engine.


Original-commit: 1d7d1226e7576bfad484109afd3aad4e78af111b
2022-03-04 09:41:24 -06:00
Javier Valenzuela 56b8f83341 fpga: x400: Adjust SPI engine strobes alignment
Modify behavior of clock crossing between radio_clk and radio_clk_2x.
This ensures strobe signals are always asserted for a single
radio_clk_2x cycle and when radio_clk is low.


Original-commit: adb352a2ad81d7c6d70ec5880a787b6bab7d19ba
2022-03-04 09:41:24 -06:00
Wade Fife 8630f2616c fpga: x400: Set replay SEP buffers to twice MTU
Original-commit: a297c9765a0309ff194bf36074871f5bb1b6c34d
2022-02-24 20:25:48 -06:00
Javier Valenzuela 01f7f75ca3 fpga: x400: Add DRAM enable macro
Original-commit: cdcd39aeb508298e28e8a2a89db5ab9fefd70435
2022-02-10 13:18:58 -07:00
Javier Valenzuela 381c7d4d9c fpga: x400: zbx: cpld: Bump ZBX regmap copyright
Original-commit: 6bb7dffa4f0e16d5c51c69fb56af152dabf71236
2022-02-10 09:57:56 -07:00