Commit Graph
60 Commits
Author SHA1 Message Date
Andrew Moch d7acf31a38 fpga: lib: add pause support to ethernet xport
Original-commit: d099fc3b032250bcc70e4c24f78d5eb6508850e1
2021-06-03 11:26:54 -05:00
Wade Fife feb849051f fpga: lib: Add eth_ipv4_internal
This adds a generic version of eth_internal that allows you to specify
the CHDR width.


Original-commit: 30b522b268aed6e7b4bc1a556e88d2a4b2fe6f77
2021-06-03 11:26:54 -05:00
Wade Fife 40c76b8d9a fpga: rfnoc: Add ability to disable output flow control
Per the RFNoC specification, if we set the frequency of flow
control updates to 0 then the input stream will not send flow control
status updates to the output stream handler.

This change makes it so that when the frequency of flow control status
updates is configured to be zero in the FPGA output stream handler
(i.e., cfg_fc_freq_bytes and cfg_fc_freq_pkts are both 0 in
chdr_stream_output) then the output stream handler will not use flow
control. That is, chdr_stream_output will not expect stream status
updates and will not restrict output packets.


Original-commit: 184999c54f0f30a7952d4e8560b393730c00e353
2021-04-14 07:24:49 -05:00
Wade Fife bababc79eb fpga: lib: Add rx_front_end_gen3 testbench
Original-commit: 532f8d0949c1d534b1a64600f2d32aadf2c7e202
2021-04-09 17:26:59 -05:00
Wade Fife a300408721 fpga: lib: Fix simulation of axi_fir_filter
The always(*) block was never executing in some simulators because
there were no signals on the right-hand side in the block. Changing it
to an initial block ensures it always runs.


Original-commit: 0b965d579e2df962b91dac141eef6668f932e992
2021-04-09 17:26:59 -05:00
michael-west 4fa8a41e0b TwinRX: Remove frontend filter
Removing the FIR filter in the frontend to reclaim resources and remove
redundancy when using a DDC block.  The default image has a DDC block,
so only users making custom RFNoC images and using TwinRX will need to
take care to properly downconvert the full bandwidth coming from the
radio block.

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


Original-commit: ad533eb6416c76d2a986c97fff846785ee56567e
2021-04-08 08:48:18 -05:00
Martin Braun dabe25774f fpga: docs: Improve documentation of rx_frontend_gen3
Also fixes a typo in the calibration manual page.


Original-commit: 3b3d3b6f9efb0fe685d9fabc8bdaca813549d9e3
2021-04-07 11:02:53 -05:00
Wade Fife d6849765ec fpga: sim: chdr_stream_endpoint_tb improvements
- Adds test coverage for stream command and status packets
- Cleans up report output during simulation
- Stops clocks at the end of simulation, so chdr_stream_endpoint_tb can
  be run directly instead of just chdr_stream_endpoint_all_tb


Original-commit: 97cb396297828f57bba455a275966c58f1abce6e
2020-08-31 08:16:43 -05:00
Wade Fife cf524e9af5 fpga: rfnoc: Update CHDR stream INIT command
This changes the behavior of the stream command with the INIT OpCode
such that sending the command with 0 for the values causes no flow
control stream status packets to be sent in response to incoming data.


Original-commit: 7c849afec4dad605ff6f32f7319933f99a4cd1ce
2020-08-28 15:02:41 -05:00
Wade Fife 0c6f2627a5 fpga: lib: Fix lint warnings
Fixes various synthesis/simulation warnings that were being generated
due to incorrectly sized constants.


Original-commit: 00f683c91486647f1711eb4c0b0a917078d29652
2020-08-28 15:02:41 -05:00
Wade Fife 09461da1f5 fpga: rfnoc: Remove deprecated files
Original-commit: db0d2dddcc5d8e39e2b7843a326ad9392bbb4c3f
2020-08-23 13:52:26 -05:00
Wade Fife 845dfd4f87 fpga: lib: Add more CtrlPort constants
Add some missing CtrlPort signal widths to ctrlport.vh.


Original-commit: c9d55d870dbccbc07ca9a7afaf2e0ac64944111c
2020-08-19 12:28:22 -05:00
Wade Fife b0c8336087 fpga: rfnoc: Enable clean switch in Switchboard
This change prevents packets from being chopped midway if the
switchboard configuration is changed when a packet is in flight.


Original-commit: f2ec5c91a79cee4c05465349d7e0da865ad1bead
2020-08-13 15:23:26 -05:00
Max Köhler ec70691e84 fpga: lib: add handshake to replace FIFO for ctrlport CDC
The clock crossing of the ctrlport used FIFOs to transfer requests and responses
between clock domains. This commit adds a handshake based on the pulse
synchronizer to reduce the resource usage for ctrlport clock domain crossing.
Data is stored in a single register while the pulse synchronizer handles the
signaling of valid flags.


Original-commit: 2c2bb3a0b7269dcbd8b5933ce1c0c29ca17f599d
2020-08-13 07:46:14 -05:00
Wade Fife 8ed69c7cdb fpga: rfnoc: Fix clock crossing in axis_data_to_chdr
This fixes some incorrectly handled clock crossings from axis_data_clk
to axis_chdr_clk, which could have manifested as timing failures (on
E320) or incorrect behavior, depending on the product and noc_shell
configuration.

Also cleans up trailing white space.


Original-commit: f48af0a0876c99016eb8cd4558a31106bfc9baa1
2020-08-12 13:56:13 -05:00
Wade Fife b4ea61f129 fpga: rfnoc: Add tests to FFT block
This adds additional tests to the testbench to cover register reads and
basic IFFT functionaltiy.


Original-commit: 9157e11795f3ca86dae2ee930e60a79470d1447f
2020-08-10 09:58:02 -05:00
Max Köhler 06afe79a42 fpga: lib: add Intel MAX10 architecture for 2clk FIFO
This commit derives parameters for MAX10 devices if provided by the
DEVICE parameter.

MAX10 devices FIFO generator support up to 36 bit wide FIFOs using
embedded memory (M9K) in simple dual port mode, which is treated
equally to RAM in the parameters.

In combination with sorting the ctrlport signals by usage, the used
resources can be reduced on the MAX10 devices from 6 to 3 M9K blocks
for a ctrlport_clk_cross instance without time and portids.


Original-commit: 0df2f9932cc270b8f1a705ea2543df8792005878
2020-08-06 16:17:33 -05:00
Andrew Moch f28357679e fpga: lib: Update xport_sv
- Detect dropped words at the dispatch level. This prevents
   an overflow on CHDR from block CPU.
 - Dropped packets are recorded as CPU or CHDR drop count
 - Refactor to put chdr_xport_adapter.sv in different clock
   domain to improve timing
 - Unwrinkle tkeep/trailing transitions


Original-commit: 7f86724ec3387f75d39d683b2ac5f5152e714c74
2020-08-05 17:18:12 -05:00
Aaron Rossetto 466e61d3ef fpga: rfnoc: Add RFNoC Keep One in N block
Original-commit: b39021ac2e642c22349183b6bc697daae01da5e9
2020-08-05 07:47:22 -05:00
Wade Fife 104a73e623 fpga: rfnoc: Add RFNoC Replay block
Original-commit: 6d92a1828121ca4b57d496bbf522820f961244b9
2020-08-04 15:40:08 -05:00
Wade Fife b4fed123c8 fpga: rfnoc: Add 4 KiB boundary check to sim_axi_ram
Adding a check for bursts that cross the 4 KiB boundary to the AXI4
memory model. Crossing a 4 KiB boundary is not allowed by AXI4.


Original-commit: 24f8bb39fd2769ff93d11b21152a834500152de4
2020-08-04 15:40:08 -05:00
Wade Fife 59f5dcfc4f fpga: rfnoc: Add support for CHDR_W < ITEM_W*NIPC
This change fixes the case where CHDR_W < ITEM_W*NIPC.

It also adds a state machine to stall the input to the pyld_fifo to
ensure that the pkt_info_fifo will not overflow. Previously in some
cases it allowed the same word to be inserted into the pyld_fifo
multiple times.


Original-commit: b862eda69cf41c7044a1805324f2fcfef5b0ba3d
2020-08-04 15:40:08 -05:00
Andrew Moch 4313178af4 fpga: lib: Fix chdr_mgmt_pkt_handler when CHDR_W != 64
Original-commit: 3beb450e2ab29e6021f4091fd1a3cc6522f994c4
2020-07-30 15:28:35 -05:00
Wade Fife 2eb71626fb fpga: rfnoc: Add Signal Generator RFNoC block
Original-commit: 1e94f85b8bafc3f9acab7ef35d2675fa7e61f6f4
2020-07-30 12:51:41 -05:00
Jesse Zhang 0c67c21d6c fpga: Add Switchboard RFNoC block
Original-commit: 8db024d43bbb7cd05f5b18dd3d7cec09cac6ec4b
2020-07-30 12:50:30 -05:00
michael-west 4c7ee1eb8e TwinRX: Fix increased noise floor
- Fixed bus width from 25 to 24 bits

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


Original-commit: fdd576cda1bab000745af66e565f4eb8c6272942
2020-07-21 11:47:20 -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
Wade Fife d2febe93a8 fpga: rfnoc: Add RFNoC Moving Average block
Original-commit: b3c74a712a08c54e48713427bf46ea498b8e899b
2020-07-16 12:15:21 -05:00
Max Köhler c33435c1b9 fpga: lib: modify ctrlport decoder to Verilog 2001 compatible syntax
Original-commit: 4f2148e7cada5a66ce5eee92ca956cb22b31b98b
2020-07-10 15:12:55 -05:00
Andrew Moch 05eb1bc2f1 fpga: lib: Add width agnostic version of Ethernet Interface
The rnfoc/xport section is refactored in System Verilog to allow the
following improvements
(1) CPU_W - Sets the size of the c2e and e2c pipes.  This can be run
    at a different clock rate than the main ethernet pipe
(2) CHDR_W - Sets the size of the v2e and e2v pipes. This can be run
    at a different clock rate than the main ethernet pipe
(3) ENET_W - Sets the size of the eth_tx and eth_rx pipes.

eth_interface_tb runs traffic from e2c,e2v,v2e,c2e simultaneously
against the original xport_sv implementation, and against the new
implementation with widths of 64/128/512. A chdr_management node
info request queries the port info of the node0 in the eth_interface.

eth_ifc_synth_test.sv can be compiled with the make xsim target to test
out the size of various configurations.


Original-commit: eed4988cc266a63370a4332351d02fadedde3a3b
2020-06-30 10:29:35 -05:00
Wade Fife cbe5e99e17 fpga: rfnoc: Add Log-Power block
Original-commit: cf82b36388880237fe7b690c16dde46afc1a3da3
2020-06-29 14:03:17 -05:00
Wade Fife c3f45a92a0 fpga: rfnoc: Fix chdr_update_length function
Original-commit: 1cef9d62d698a7cc33f936ab3df32e6dcd933487
2020-06-29 14:03:17 -05:00
Wade Fife 9ee2157f52 fpga: rfnoc: Add RFNoC Window block
Original-commit: 38caced6946243f0390c541df54160c45e4959cc
2020-06-29 13:41:15 -05:00
Wade Fife 6940db90e3 fpga: rfnoc: Fix read suppression test in rfnoc_block_axi_ram_fifo_tb
Original-commit: 8661f46df66329511ccb3cf083830e19d65ea402
2020-06-25 14:44:04 -05:00
Andrew Moch b76ad2aef5 fpga: lib: Pipeline and add clken to ip_hdr_checksum
Adds LATENCY parameter to control the ammount of pieplineing. Adds a
clock enable to control the advance of the pipeline.

Used in xport when calculating new UDP headers for CHDR traffic.


Original-commit: dd9847c5c3c3fac17658b526a7d8894711af086e
2020-06-24 09:55:14 -05:00
Andrew Moch 55881469ac fpga: rfnoc: Add support for 512-bit CHDR widths
This fixes the rfnoc_null_src_sink, chdr_crossbar_nxn, and
chdr_stream_endpoint blocks so that wider CHDR widths are properly
supported. It also updates PkgChdrBfm to able to properly test these
blocks. The testbenches have been updated to test both 64 and 512-bit
widths.


Original-commit: 3af8dcaacfa4bf36dcae3bdbf0b353385b7063c6
2020-06-18 09:09:34 -05:00
Wade Fife 3cb320fae0 fpga: rfnoc: Add defaults for rate changing
Add DEFAULT_M and DEFAULT_N parameters for rate changing cores.
This allows the host to not need to configure fixed rate change
cores.


Original-commit: 983fad664436301c31c3bc8c81b538a41537598b
2020-05-28 15:12:20 -05:00
Wade Fife a46e351a65 fpga: rfnoc: Add RFNoC Add/Sub block
Original-commit: 5134b6caea58da825c4da1888a4d26888acc126a
2020-05-28 15:04:05 -05:00
Wade Fife 6a5a23a7a2 rfnoc: Add Split Stream RFNoC block
Original-commit: c27c8db011ea6ad1d0682ee06eede75989622b95
2020-05-28 14:49:32 -05:00
Wade Fife af2aeccdc8 fpga: rfnoc: Add Vector IIR RFNoC block
Original-commit: a40f2a4a5d04aad3ef3e222033fbacc521233782
2020-05-19 14:22:55 -05:00
Wade Fife 5188f1a6d5 fpga: rfnoc: Clean up ctrlport_splitter usage
Original-commit: 246cb52188498484851361355230b29eb3ac018b
2020-05-12 13:46:28 -05:00
Wade Fife c2ca39a727 fpga: utils: Optimize ctrlport_splitter for NUM_SLAVES = 1
Original-commit: dc738a7bdb200757d58b59de5c055e2cca467cf8
2020-05-12 13:46:28 -05:00
Michael West 8556184025 TwinRX: Remove decimation from frontend
The decimation in the rx_frontend_gen3 was added to reduce the bandwidth
between the Radio and the DDC due to the limitation in bandwidth over
the crossbar for dynamically connected blocks.  The default FPGA image
for the X300 now has a static connection between the Radio and DDC, so
this is no longer necessary.

This change allows the TwinRX receive channels to be time aligned with
channels from other daughterboards so they can be used in the same
streamer.

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


Original-commit: d0c162bc7a4ac82f6104506b17d7be05e1780336
2020-05-12 12:03:31 -05:00
Michael West dc86b52fd7 DUC/DDC: Add variable time increment
Sets time increment based on tick rate and sample rate instead of
assuming one tick per sample.  Defaults to legacy behavior.

Minor compat number bumped on DUC and DDC blocks.

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


Original-commit: 12dfb97c8efce40494efb35bdd81d06b6f8b9b62
2020-05-12 12:03:31 -05:00
Wade Fife c33b3779f9 fpga: Change default MTU to 10
Original-commit: 7b7fa68880ca423ea3a47fc3dc97ba533921c9a5
2020-05-11 09:06:03 -05:00
Wade Fife 8220e57a17 rfnoc: Add RFNoC fosphor block
Original-commit: d386c750074f6da4ab86038e2c30a3fe6e0f9d47
2020-04-14 16:37:43 -05:00
Wade Fife 34d68cf4ca fpga: rfnoc: Add option to sample sideband info at start of packet
The axis_data_to_chdr block previously only sampled the sideband
information at the end of the packet. This adds a parameter that
controls if the sideband information should be sampled at the beginning
of the packet or the end of the packet. In the former case, large
internal packet buffers are not required.


Original-commit: a8c4f021277cf3b0a0897fa9da0252541512f3a6
2020-04-14 16:37:43 -05:00
Wade Fife c9c9543719 fpga: core: Add chdr_update_length function
Original-commit: 8c6eabcd86f8e5d1e25cfed441e1acf1a0b6759a
2020-04-14 16:37:43 -05:00
Max Köhler 8bc01517ae fpga: rfnoc: Add gate to dynamically enable control-port interfaces
Original-commit: f534e9449e851a59ba8d09b0e86d189f907a8532
2020-04-01 11:02:16 -05:00