Commit Graph
63 Commits
Author SHA1 Message Date
Wade Fife 869861c8cf fpga: Set default part for sim in setupenv.sh
This sets the ARCH and PART_ID environment variables so that the
selected part family is used for simulations by default. This can be
overridden by changing them in the Makefile for the testbench if a
testbench requires a specific part family. Prior to this change, the
default was always ARCH=kintex7, PART_ID=xc7k410t/ffg900/-2, which
required support for that part to be installed.


Original-commit: c176046dff4941bcec27b0b72e5a68264c4808e5
2021-08-30 08:20:10 -05:00
Wade Fife 3b15237d6b x300: Fix sfpp_io_core tuser width
Original-commit: 34b51b40f59412ae42e99246a60dd70de53ee180
2021-08-27 08:24:07 -05:00
michael-west 8164e94fbd N3xx: Fix White Rabbit
Reconnect the signals from the White Rabbit module to the TDC in the
FPGA.

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


Original-commit: c0637bae1e4a0ddb996cf2b7eadfad22f782874b
2021-08-04 15:19:58 -05:00
Humberto Jimenez bb5bff88f6 fpga: x400: Remove stale information in register map
White Rabbit is not supported in X410, however the register map included an
incorrect reference to this unsupported feature.
This commit removes the WR reference from both the source and html files.


Original-commit: 7edd92dbcf2da1a1c0fabe02a97fdb6afdc89077
2021-07-28 10:08:47 -05:00
Wade Fife 95dfc4af53 fpga: x400: Fix x4xx_qsfp_wrapper testbench
Reorder dependencies so that sc_util_v1_0_vl_rfs.sv gets compiled
first when using ModelSim.


Original-commit: a9395823ed450aefa1c2d0c894dbcf976264365e
2021-06-22 16:24:54 -05:00
Wade Fife 77a66a4de4 x400: sim: Move testbenches to sim folder
Original-commit: c0f9496d59947f8c9411b28d63d0c8e6244102a0
2021-06-17 08:16:59 -05:00
Wade Fife fcfc6bf387 fpga: Update testbenches to work in ModelSim
Original-commit: 0076076467303247c4e62e5824e5bf8ce79cbe66
2021-06-17 08:16:59 -05:00
Wade Fife 162632e7c1 fpga: x400: Add makefiles for RF testbenches
Original-commit: 319d8c6411f62a2150b21b38bfe5fd55366ee700
2021-06-17 08:16:59 -05:00
a1d7c252c2 fpga: x400: zbx: Add support for ZBX CPLD
Co-authored-by: Cherwa Vang <cherwa.vang@ni.com>
Co-authored-by: Martin Braun <martin.braun@ettus.com>
Co-authored-by: Max Köhler <max.koehler@ni.com>
Co-authored-by: Paul Butler <paul.butler@ni.com>


Original-commit: 99b841c75aa91709090cbf4046bf51b7ffb4f612
2021-06-10 11:56:58 -05:00
7e59e9516d fpga: x400: cpld: Add support for X410 motherboard CPLD
Co-authored-by: Humberto Jimenez <humberto.jimenez@ni.com>
Co-authored-by: Javier Valenzuela <javier.valenzuela@ni.com>


Original-commit: 7015f5ed2d495f3908773b7c7d74864d0cc3871a
2021-06-10 11:56:58 -05:00
61782b02d7 fpga: x400: Add support for X410 motherboard FPGA
Co-authored-by: Andrew Moch <Andrew.Moch@ni.com>
Co-authored-by: Daniel Jepson <daniel.jepson@ni.com>
Co-authored-by: Javier Valenzuela <javier.valenzuela@ni.com>
Co-authored-by: Joerg Hofrichter <joerg.hofrichter@ni.com>
Co-authored-by: Kumaran Subramoniam <kumaran.subramoniam@ni.com>
Co-authored-by: Max Köhler <max.koehler@ni.com>
Co-authored-by: Michael Auchter <michael.auchter@ni.com>
Co-authored-by: Paul Butler <paul.butler@ni.com>
Co-authored-by: Wade Fife <wade.fife@ettus.com>
Co-authored-by: Hector Rubio <hrubio@ni.com>


Original-commit: 6d3765605262016a80f71e36357f749ea35cbe5a
2021-06-10 11:56:58 -05:00
Wade Fife 43e32abd11 fpga: Update rfnoc_image_core for all targets
Update rfnoc_image_core.v to take into account the new image_core_name
fields and version strings. Add new rfnoc_image_core.vh. Update YAML
where needed.


Original-commit: b0033158a4c520063540881451d8daac91e98714
2021-06-10 11:56:58 -05:00
Wade Fife 3b1d62928d fpga: Change RFNoC YAML version numbers to strings
Change version from a numeric to a string, in order to
differentiate between versions like "1.1" and "1.10".


Original-commit: ca21048bd2f832b20bb36763f76d46b861b697a5
2021-06-08 15:48:59 -05:00
Wade Fife ba66b26dc5 fpga: e320: Improve timing on LVDS interface
Original-commit: c6578eda2ba482b87583ebd989cdf5cbd5c3f672
2020-12-11 07:41:13 -06:00
Wade Fife e9a85d09ae fpga: e31x: Add OOT sources to Makefile.e31x.inc
Original-commit: e9454b48a19acc72870f61f1656cefd9e29c65ef
2020-11-13 14:01:13 -06:00
Wade Fife f1d3374e50 fpga: e31x: Change image file to e310_rfnoc_image_core
This renames e31x_rfnoc_image_core.* to e310_rfnoc_image_core.*. This
makes the naming consistent with the rest of the build process (which
uses "e310" for all variants of e31x) and fixes an issue in which the
wrong file name was used by rfnoc_image_builder.


Original-commit: bbd43b16e18ef0a0311ddf4635cbd29c4ac3c367
2020-09-09 10:18:34 -07:00
michael-west bb7e7023e6 E320: Revert addition of Replay block
The DMA FIFO is needed for DDR3 BIST, so it is being restored for now.

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


Original-commit: 413ebee61254fd0b9ab0cd11b475b8a849579cd8
2020-09-04 15:45:51 -07:00
mattprost 52172aaaf3 fpga: Add Replay Block to RFNoC Core Image
Add the Replay RFNoC block to the RFNoC core image for x300, x310, n300,
n310, n320/n321, and e320. The Replay block is contained within its own
static connection, so previous default behavior is still supported.

Signed-off-by: mattprost <matt.prost@ni.com>


Original-commit: 437381bd2cfe137c5e7e2a70aab8226bfb1c70cd
2020-09-03 15:26:33 -05:00
Wade Fife eab91d8ed0 fpga: Update DRAM IO signatures
This updates the IO signatures so that all devices and RFNoC blocks use
the same IO signature for the DRAM. This is needed because the IO
signatures must match between the RFNoC blocks and the devices. This
means that some devices have extra bits in the IO signature for the
address, but the extra bits will simply be ignored.


Original-commit: 8f09caaa06725d2364c63ac7cff02f3298895f4a
2020-09-03 15:26:33 -05:00
Wade Fife bd5d539bc2 fpga: n3xx: Update AXI interconnect address range
This change allows the entire 2 GiB address space to be accessed on
each memory port.


Original-commit: c6bb9924e56664ccb337694f8ef485ba8245edfd
2020-08-28 15:07:38 -05:00
Wade Fife 7e3f04d0ab fpga: e320: Update AXI interconnect address range
This change allows the entire 2 GiB address space to be accessed on
each memory port.


Original-commit: d352f5a9c3bd3791f0320be1e615146fe7459453
2020-08-28 15:07:38 -05:00
Wade Fife 28955fb9f4 fpga: e31x: Change RFNoC Ctrl clock to 40 MHz
Original-commit: 8622a8013a429674de59cbff522b2722c8afa449
2020-08-19 12:28:22 -05:00
Wade Fife fd113147be fpga: e320: Fix timeout for timekeeper registers
This implements the same change that was made for E31x. The same issue
wasn't reproduced on N3xx, however this change keeps the code
consistent and eliminates the potential for the same problem.


Original-commit: 9c4a23f0a2a2d38ace75e4ab29f6f62f64155d81
2020-08-19 12:28:22 -05:00
Wade Fife 2253f7dbb0 fpga: n3xx: Fix timeout for timekeeper registers
This implements the same change that was made for E31x. The same issue
wasn't reproduced on N3xx, however this change keeps the code
consistent and eliminates the potential for the same problem.


Original-commit: e94a209c5b2559348593a6732d694fd49ab59ad0
2020-08-19 12:28:22 -05:00
Wade Fife f1380e5f33 fpga: e31x: Fix timeout for timekeeper registers
Fixing an issue in which a very slow radio_clk (due to low sample clock
rate) could cause bus transactions to be issued to the timekeeper
faster than it could service them, resulting in a timeout. This change
replaces RegPort with CtrlPort so that proper flow control can be
maintained to the timekeeper.


Original-commit: 2e910c5307702c3f3efb6dc8cb60f4f71ce11e67
2020-08-19 12:28:22 -05:00
Martin Braun 324f9d3c9a fpga: e320: Fix default YAML target to E320_1G
It was set to E320_HG, which is not a valid target, causing build errors
unless -t E320_1G was provided to rfnoc_image_builder.


Original-commit: 9ed42affcaa88e026cb4f82807e69b546ed30c8c
2020-08-17 07:56:30 -05:00
Wade Fife 20b814f62c fpga: e310: Fix device in image core YAML
Device was set to e31x, but this is not a valid device type. All e31x
devices use the e310 device type.


Original-commit: 60b76ebb31f9d1672c1b18367346b3fb522e13e9
2020-08-14 15:11:08 -05:00
mattprost c91315d857 n320: Double radio ingress buffer size
This increases the size of the ingress buffers for the N320 radio to
support 250MHz TX streaming rates.

Signed-off-by: mattprost <matt.prost@ni.com>


Original-commit: e8db6fa4301ce471bf41ef14d5d38e5727199007
2020-08-12 15:17:48 -05:00
steviez 3bbc81bb44 fpga: n320: Add BIST (AA) image files
This adds new image files which come with a DRAM FIFO. The addition of
an N320 image with a DRAM FIFO allows DDR3 BIST to be run on an
assembled (motherboard + daughterboard) N320.

This image is intentionally very similar to the N300_AA and N310_AA
targets which serve the same purpose of providing an image with a DRAM
FIFO for their respective devices.


Original-commit: ae2b9bf7aeea6f8f98f6dacffdfc018d87107927
2020-07-31 14:32:54 -05:00
RobertWalstab 84a9230183 fpga, mpm: Bump FPGA compat number
Original-commit: 54d698e3707cf1be5d38537db783ebadd850e729
2020-07-24 15:24:14 -05:00
RobertWalstab 6dfa273771 fpga: remove liberio
Original-commit: 83a4756c957dd7698baeb56e13260d8edaa7bc2e
2020-07-20 16:01:03 -05:00
Wade Fife dce6ce8063 fpga: rfnoc: Fix testbenches to run under ModelSim
This updates the makefiles for the testbenches so they can be run using
"make modelsim" without any additional hacks. The "xsim" and "vsim"
simulation targets also still work.


Original-commit: e962cc4a5e51e2326eb656ee2a779ea26774687b
2020-07-20 15:33:22 -05:00
Martin Braun 2f517134cd fpga: e31x: Add gitignore file
Original-commit: dc32aa5cd4fb174ee3c616f854f499a53137aa75
2020-07-18 13:33:42 -05:00
Martin Braun b923e1bb2c e31x: Minor cleanup on top-level e31x.v module
- Fixed some incorrect comments
- Fixed some missing wire declarations for internal NIC
- Fix wire declarations for GPIO (they were declared too late)


Original-commit: b18eaa75de2d1dcba2a1be0ee0b862a57e976cca
2020-07-18 13:33:42 -05:00
RobertWalstab 8ad22c51e3 e31x: Swap out liberio for internal ethernet in the idle image
Original-commit: 74d157c8f67a413239c01fdfc78088623880f28f
2020-07-18 11:52:58 -05:00
RobertWalstab 51841521f8 e31x: fpga: connect device_id
Original-commit: 4d9c4749c1591bf416aacd429eea2a9d5a9bc5e6
2020-07-18 11:52:58 -05:00
RobertWalstab 0ab98653b2 n32x: Swap out liberio for internal Ethernet
Original-commit: cdb4a357284a0dd29d1120e2b6f7594f5f934f88
2020-07-16 10:00:12 -05:00
RobertWalstab b196be8d42 n3xx: Swap out liberio for internal Ethernet
Original-commit: 3555ab052e231905df2a47ee107dfdfc9cd8e4e9
2020-07-16 10:00:12 -05:00
RobertWalstab 0361a8fa3b e31x: Swap out liberio for internal Ethernet
Original-commit: 3f823004600472c7f4b173a0da83a3bd53968c40
2020-07-16 10:00:12 -05:00
Alex Williams 08c24691a9 e320: Swap out liberio for internal Ethernet
Original-commit: d01e091c4c7ccc323d305580a27754918b02974b
2020-07-16 10:00:12 -05:00
Wade Fife 9ce170e4d5 fpga: n3xx: Fix White Rabbit images
Unused CHDR port was not being drained of discovery packets.


Original-commit: 8d57586d61356c42a80408b6bd71e8f74a8d40e2
2020-07-01 15:49:13 -05:00
Wade Fife d16d1e121c fpga: Update RFNOC_EDGE_TBL_FILE for Cygwin
Original-commit: 7f5f771796de590c4ed4bba7b09cda3a906535c6
2020-06-12 15:50:16 -05:00
Wade Fife cb04b641a3 x300: Expand DRAM address space to 1G
The address ranges configured for the AXI interconnect IP limited the
amount of accessible DRAM to two 32 MB regions. This change makes the
full 1G available to all DRAM ports.


Original-commit: bba0cddfadcb744e8a6fae27d57ba8d3995eaf64
2020-05-18 17:50:38 -05:00
Wade Fife 72d8f4c8d4 fpga: e31x: Replace symbolic link for Cygwin
Original-commit: ad55f219a4edc694c7adf46a755583dc01184c3c
2020-05-12 13:47:20 -05:00
Michael West 45d274746f X300: Make VITA time monotonic
Make timekeeper tick on every cycle of the radio clock.

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


Original-commit: 7886b71f13e9f6e5786c95286ef98f49ab716119
2020-05-12 12:03:31 -05:00
Wade Fife 2487e7bdf8 fpga: e31x: Update constraints to avoid timing issues
Xilinx changed the way [all_registers -edge_triggered] is treated such
that set_max_delay constraints that use it can cause segmentation and
cause clocks to not be propagated to all endpoints. Changing to
[all_ffs] avoids this potential issue.


Original-commit: 55e422535292c29de00b80f15b0a49ca3fb94f26
2020-04-08 17:24:15 -05:00
Wade Fife 3810f5a4d9 rfnoc: Add management filter to generic xport
Original-commit: bdcb95c56bdd213af534d312a1abd8ab69dcc214
2020-02-19 13:27:16 -06:00
eklaiandBrent Stapleton f51c7aa780 x300: add front-panel GPIO source control
Adds a ZPU register to control the FP GPIO source. These are 2bits
per GPIO pin, totalling 24 bits. 0 corresponds to RF-A, 1 corresponds
to RF-B. The following Python code will control the upper 6 bits of the
front-panel GPIO from the B-side radio on an X300:

>>> import uhd
>>> U = uhd.usrp.MultiUSRP("type=x300")
>>> U.get_gpio_src_banks()
['FP0']
>>> U.get_gpio_src("FP0")
['RFA', 'RFA', 'RFA', 'RFA', 'RFA', 'RFA', 'RFA', 'RFA', 'RFA', 'RFA',
'RFA', 'RFA']
>>> U.set_gpio_src("FP0", ['RFA', 'RFA', 'RFA', 'RFA', 'RFA', 'RFA',
                           'RFB', 'RFB', 'RFB', 'RFB', 'RFB', 'RFB'])
>>> U.get_gpio_src("FP0")
['RFA', 'RFA', 'RFA', 'RFA', 'RFA', 'RFA', 'RFB', 'RFB', 'RFB', 'RFB',
'RFB', 'RFB']
>>> # Make all GPIOs outputs:
>>> U.set_gpio_attr("FP0A", "DDR", 0xFFF)
>>> U.set_gpio_attr("FP0B", "DDR", 0xFFF)
>>> # Control all GPIOs from software (not ATR):
>>> U.set_gpio_attr("FP0A", "CTRL", 0x000)
>>> U.set_gpio_attr("FP0B", "CTRL", 0x000)
>>> # Bottom 3 pins go high from radio A
>>> U.set_gpio_attr("FP0A", "OUT", 0x007)
>>> # Top 3 pins go high from radio B
>>> U.set_gpio_attr("FP0B", "OUT", 0xE00)

Amends the gpio.cpp example to allow switching the source.

Co-authored-by: Brent Stapleton <brent.stapleton@ettus.com>


Original-commit: d7304cc724de43b0d61d5b9d61a528d58898f004
2020-02-18 07:21:24 -06:00
+18 6b67702ad7 Merge FPGA repository back into UHD repository
The FPGA codebase was removed from the UHD repository in 2014 to reduce
the size of the repository. However, over the last half-decade, the
split between the repositories has proven more burdensome than it has
been helpful. By merging the FPGA code back, it will be possible to
create atomic commits that touch both FPGA and UHD codebases. Continuous
integration testing is also simplified by merging the repositories,
because it was previously difficult to automatically derive the correct
UHD branch when testing a feature branch on the FPGA repository.

This commit also updates the license files and paths therein.

We are therefore merging the repositories again. Future development for
FPGA code will happen in the same repository as the UHD host code and
MPM code.

== Original Codebase and Rebasing ==

The original FPGA repository will be hosted for the foreseeable future
at its original local location: https://github.com/EttusResearch/fpga/

It can be used for bisecting, reference, and a more detailed history.

The final commit from said repository to be merged here is
05003794e2da61cabf64dd278c45685a7abad7ec. This commit is tagged as
v4.0.0.0-pre-uhd-merge.

If you have changes in the FPGA repository that you want to rebase onto
the UHD repository, simply run the following commands:

- Create a directory to store patches (this should be an empty
  directory):

    mkdir ~/patches

- Now make sure that your FPGA codebase is based on the same state as
  the code that was merged:

    cd src/fpga # Or wherever your FPGA code is stored
    git rebase v4.0.0.0-pre-uhd-merge

  Note: The rebase command may look slightly different depending on what
  exactly you're trying to rebase.

- Create a patch set for your changes versus v4.0.0.0-pre-uhd-merge:

    git format-patch v4.0.0.0-pre-uhd-merge -o ~/patches

  Note: Make sure that only patches are stored in your output directory.
  It should otherwise be empty. Make sure that you picked the correct
  range of commits, and only commits you wanted to rebase were exported
  as patch files.

- Go to the UHD repository and apply the patches:

    cd src/uhd # Or wherever your UHD repository is stored
    git am --directory fpga ~/patches/*
    rm -rf ~/patches # This is for cleanup

== Contributors ==

The following people have contributed mainly to these files (this list
is not complete):

Co-authored-by: Alex Williams <alex.williams@ni.com>
Co-authored-by: Andrej Rode <andrej.rode@ettus.com>
Co-authored-by: Ashish Chaudhari <ashish@ettus.com>
Co-authored-by: Ben Hilburn <ben.hilburn@ettus.com>
Co-authored-by: Ciro Nishiguchi <ciro.nishiguchi@ni.com>
Co-authored-by: Daniel Jepson <daniel.jepson@ni.com>
Co-authored-by: Derek Kozel <derek.kozel@ettus.com>
Co-authored-by: EJ Kreinar <ej@he360.com>
Co-authored-by: Humberto Jimenez <humberto.jimenez@ni.com>
Co-authored-by: Ian Buckley <ian.buckley@gmail.com>
Co-authored-by: Jörg Hofrichter <joerg.hofrichter@ni.com>
Co-authored-by: Jon Kiser <jon.kiser@ni.com>
Co-authored-by: Josh Blum <josh@joshknows.com>
Co-authored-by: Jonathon Pendlum <jonathan.pendlum@ettus.com>
Co-authored-by: Martin Braun <martin.braun@ettus.com>
Co-authored-by: Matt Ettus <matt@ettus.com>
Co-authored-by: Michael West <michael.west@ettus.com>
Co-authored-by: Moritz Fischer <moritz.fischer@ettus.com>
Co-authored-by: Nick Foster <nick@ettus.com>
Co-authored-by: Nicolas Cuervo <nicolas.cuervo@ettus.com>
Co-authored-by: Paul Butler <paul.butler@ni.com>
Co-authored-by: Paul David <paul.david@ettus.com>
Co-authored-by: Ryan Marlow <ryan.marlow@ettus.com>
Co-authored-by: Sugandha Gupta <sugandha.gupta@ettus.com>
Co-authored-by: Sylvain Munaut <tnt@246tNt.com>
Co-authored-by: Trung Tran <trung.tran@ettus.com>
Co-authored-by: Vidush Vishwanath <vidush.vishwanath@ettus.com>
Co-authored-by: Wade Fife <wade.fife@ettus.com>


Original-commit: bafa9d95453387814ef25e6b6256ba8db2df612f
2020-01-28 09:35:36 -08:00
Martin Braun 74893643ca Removed copy of FPGA source files.
Original-commit: fd3e84941de463fa1a7ebab0a69515b4bf2614cd
2014-10-07 11:25:20 +02:00