Commit Graph

5929 Commits (f8c82c611d9f200362f442fb49474dad3d6aec49)

Author SHA1 Message Date
Adrian Costina 65c765eb33 adrv9009: Increase DMA FIFO sizes 2018-06-12 23:53:56 +03:00
Istvan Csomortani 97800745db util_dacfifo_bypass: Update comments 2018-06-11 17:26:04 +03:00
Istvan Csomortani 5d3b2b1550 [axi|avl]_dacfifo: Fix the util_dacfifo_module
Fix the read side of the CDC data FIFO. The read address generation did not
function correctly.

Redesign the read side of the FIFO, and make sure that it becomes empty after
the DMA transfer ends; and never get stock in a cyclic mode.
2018-06-11 17:26:04 +03:00
Istvan Csomortani b338b30964 axi_dacfifo: Cosmetic changes in util_dacfifo_bypass 2018-06-11 17:26:04 +03:00
Istvan Csomortani 04ff8bbff4 util_dacfifo: Fix gray coder/decoder
Make the gray coder/decoder's data width parameterizable.
2018-06-11 17:26:04 +03:00
AndreiGrozav b6663c6e0d jesd204: Update Makefiles
Fix jesd204 library build.
2018-06-11 11:30:47 +03:00
AndreiGrozav 146f85c8fd Fixed typo 2018-06-11 11:30:47 +03:00
Lars-Peter Clausen 97abb9d6ab axi_dacfifo: Remove unused signals
The dac_last signal is not used anywhere in the module. Remove it and its
synchronization registers.

Fixes the following warnings:
  [Synth 8-6014] Unused sequential element dac_dlast_reg was removed.  ["axi_dacfifo_rd.v":372]
  [Synth 8-6014] Unused sequential element dac_dlast_m1_reg was removed.  ["axi_dacfifo_rd.v":373]
  [Synth 8-6014] Unused sequential element dac_dlast_m2_reg was removed.  ["axi_dacfifo_rd.v":374]

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
2018-06-11 09:55:07 +02:00
Lars-Peter Clausen 7f18fc5f1c axi_dacfifo: Add missing read-enable signal to ad_mem instance
Commit bfc8ec28c3 ("util_axis_fifo: instantiate block ram in async mode")
added the read-enable (reb) signal to the ad_mem block.

It didn't update the ad_mem instance in axi_dacfifo_address_buffer.v. This
results in the read-enable of the address_buffer being tied to 0.

Fix this by connecting the same signal that increments the read address.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
2018-06-11 09:55:07 +02:00
Lars-Peter Clausen ec8db3ee5b util_dacfifo: Reduce logic on high fan-out dma_wren_s signal
The DMAC implementation guarantees that the expression `dma_valid &
dma_xfer_req` is always identical to just dma_valid.

When generating the util_dacfifo dma_wren_s signal the optimizer doesn't know
of this though and hence will route both signals into the LUT that drives
the write enable for the BRAMs.

Simplify the expression by removing dma_xfer_req from it. Considering this
can be a fairly high fan-out net and is typically the bottleneck for the
util_dacfifo timing this helps to improve the timing.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
2018-06-11 09:50:43 +02:00
Adrian Costina ee60549dfc daq3: ZCU102: Fix AXI_ADXCVR IPs XCVR_TYPE parameter 2018-06-08 13:56:22 +03:00
Lars-Peter Clausen 965d3b4c79 util_cdc: Silence warnings about unused sequential logic
Some parts of the util_cdc library rely on dead logic elimination to remove
unused logic. Unfortunately with newer Vivado versions this results in
warnings about unused sequential elements being removed. Like:

	WARNING: [Synth 8-6014] Unused sequential element cdc_sync_stage1_reg was removed.

To avoid this encase the logic in generate blocks that makes sure they are
not generated when not needed.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
2018-06-06 09:38:19 +02:00
Istvan Csomortani deb366d169 daq2|3: Set up OPTIMIZATION_MODE to improve timing
There are random timing violations on the A10GX board using the
DAQ3 and DAQ2 projects.

Setting the synthesis/implementation strategy to "HIGH PERFORMANCE
EFFORT" increases the success rate of the timing closure significantly.
2018-06-06 08:33:20 +01:00
Lars-Peter Clausen 80e7ba56a8 axi_dmac: Revert EOT memory to FIFO structure
This reverts commit 4b1d9fc86b "axi_dmac: Modified in order to avoid
vivado crash".

Vivado no longer crashes and this structure is much more efficient when it
comes to resource usage and timing. The intention here is to create a 1-bit
memory that is N entries deep and not a N bit signal.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
2018-06-05 14:28:40 +02:00
Lars-Peter Clausen 8b8df70df1 axi_dmac: request_generator: Remove reset from data path
The burst_count signal and its derived signals are not used until the
burst_count has been explicitly initialized by loading a transfer. There is
no need to have a reset.

This reduces the fan-out of the reset signal.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
2018-06-05 14:28:40 +02:00
Lars-Peter Clausen 6bc1eae48d axi_dmac: 2d_transfer: Remove resets from data path
The data path register of the 2d_transfer module are qualified by the
corresponding valid signal. Their content is not used until they have been
explicitly initialized. There is no need to reset them explicitly.

This reduces the fan-out of the reset signal.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
2018-06-05 14:28:40 +02:00
Lars-Peter Clausen 6b7a46410c axi_dmac: address_generator: Remove resets from data path
There is no need to reset the data path in the address generator. The
values of the register on the data path are not used until they have been
explicitly initialized. Removing the reset simplifies the structure and
reduces the fan-out of the reset signal.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
2018-06-05 14:28:40 +02:00
Lars-Peter Clausen 67600f9831 axi_dmac: Use localparam instead of parameter
Xilinx tools don't allow to use $clog2() when computing the value of a
localparam, even though it is valid Verilog.

For this reason a parameter was used for BYTES_PER_BURST_WIDTH so far. But
that generates warnings from both Quartus and Vivado since the parameter is
not part of the parameter list.

Fix this by changing it to a localparam and computing the log2() manually.
The upper limit for the burst length is known to be 4k, so values larger
than that don't have to be supported.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
2018-06-05 14:28:40 +02:00
Lars-Peter Clausen cf5208122a axi_dmac: Increase default store-and-forward memory size to 8 bursts
A larger store-and-forward memory provides better protection against worst
case memory interface latencies by being able to store more data before
over-/underflowing.

Based on empirical testing it was found that using a size of 4 bursts can
still result in underflows/overflows under certain conditions. These do not
happen when using a size of 8 bursts.

This change does not significantly increase resource consumption. Both on
Intel and Xilinx the block RAM has a minimum depth of 512 entries. With a
default burst length of 16 beats that allows for up to 32 bursts without
requiring additional block RAM.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
2018-06-05 14:28:40 +02:00
Lars-Peter Clausen b18b16fd3a axi_dmac: Use a more descriptive label for the store-and-forward memory size
The label for the store-and-forward memory size configuration option at the
moment is just "FIFO Size" and while the store-and-forward memory uses a
FIFO that is just a implementation detail.

Change the label to "Store-and-Forward Memory Size". This is more
descriptive as it references the function not the implementation.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
2018-06-05 14:28:40 +02:00
Lars-Peter Clausen 15b0e38e23 axi_dmac: List valid store-and-forward memory sizes
For correct operation the store-and-forward memory size must be a
power-of-two in the range of 2 to 32.

This is simple enough so we can list all values and let the IP Integrator
and QSYS perform proper validation of the parameter.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
2018-06-05 14:28:40 +02:00
Lars-Peter Clausen 682895c7ae axi_dmac: dest_axi_stream: Remove outdated comment
This comment hasn't been true in a long long time. It does not have any
relation to the code around it anymore.

So just remove it.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
2018-06-05 14:28:40 +02:00
Laszlo Nagy bcba21da71 zcu102: updated IOSTANDARD of Bank 44 IOs to match VCCO 3.3V 2018-06-05 08:52:50 +01:00
Istvan Csomortani 5a257ce3c5 fmcomms5: Delete unused GPIO lines from system top
In the system top of the FMCOMMS5 projects, there are several GPIO lines, which
can not find in the constraint file, respectively gpio_open_15_15,
gpio_open_44_44 and gpio_45_45.

These are floating GPIO pins, as their names suggest. Delete all these wires and
update IOBUF instances.
2018-05-30 09:55:04 +03:00
Laszlo Nagy 1bd65da29f fmcjesdadc1: increase DMAC FIFO size
The DMAC FIFO ocasionally overflow, increased it's size to give more time
the MM interface to move out the data.
2018-05-23 13:10:12 +01:00
Adrian Costina 4999a52f87 adrv9009: Removed ZC706 based project 2018-05-14 11:36:31 +03:00
Adrian Costina e445fbe04f adrv9009: Improved data throughput and DAC FIFO size
Moved XCVR related connections to HP0, where the HP shares the MUX with the Video DMA
HP1 and HP2 are used for RX OS and RX DMAs, sharing the MUX. Usually they shouldn't run at the same time.
HP3 is used for TX DMA, sharing the MUX with the FPD DMA controller
All HPx and DMA buswidths have been increased to 128 bits
The HPx-DMA clock has been increased to 300 MHz
DAC FIFO address size has been increased to 17
2018-05-14 11:33:04 +03:00
Adrian Costina 00973f9a11 jesd204: Fix constraints for axi_jesd_tx
The constraints need to be updated because in commit 0b20dbc2c9 generate was removed
2018-05-10 18:17:32 +03:00
Adrian Costina 2aa3b77a9c jesd204: Add constraints for the rx statistics clock crossing 2018-05-10 16:32:50 +03:00
Adrian Costina 3b9f733408
jesd204: Add RX error statistics (#98)
* jesd204: Add RX error statistics

Added 32 bit error counter per lane, register 0x308 + lane*0x20

On the control part added register 0x244 for performing counter reset and counter mask
Bit 0 resets the counter when set to 1
Bit 8 masks the disparity errors, when set to 1
Bit 9 masks the not in table errors when set to 1
Bit 10 masks the unexpected k errors, when set to 1

Unexpected K errors are counted when a character other than k28 is detected. The counter doesn't add errors when in CGS phase

Incremented version number
2018-05-07 15:33:00 +03:00
Lars-Peter Clausen 7a804c1d76 axi_dmac: Fix debug ID order
Commit e6aacd2f56 ("axi_dmac: Better support debug IDs when ID_WIDTH !=
3") managed to get the order of the IDs in the debug register wrong.
Restore the original order.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
2018-05-04 12:40:15 +02:00
Istvan Csomortani 00faa5a660 jesd204:version: Increase version number fot TX
Since the multi-link support is new feature, increase the minor version
number.
2018-05-03 19:37:35 +03:00
Istvan Csomortani e432e77f1e jesd204:up_common: Add a synthesis register for NUM_LINKS 2018-05-03 19:37:35 +03:00
Istvan Csomortani d18eb85e41 jesd204:tx_ctrl: Update the sync_request logic
The cfg_links_disable register will mask the SYNC lines, disabled links
will always have a de-asserted SYNC (logic state HIGH).
The FSM will stay in CGS as long as there is one active link with an
asserted SYNC (logic state LOW).

Update the test bench to generate the SYNC signals in different clock
edges, so it can test all the possible scenarios.
2018-05-03 19:37:35 +03:00
Istvan Csomortani c12ce216e9 jesd204:tx_ctrl: status_sync register contains the raw SYNC status 2018-05-03 19:37:35 +03:00
Istvan Csomortani b632debc35 jesd204:tx_ctrl: Fix sync_bits instance 2018-05-03 19:37:35 +03:00
Istvan Csomortani 0b20dbc2c9 jesd204:up_common: Move cfg_links_disable to 0x086 address space 2018-05-03 19:37:35 +03:00
Istvan Csomortani 05dbe8f42f jesd204:tb: Update test bench to support dynamic multi-link on TX side 2018-05-03 19:37:35 +03:00
Istvan Csomortani da03572b32 jesd204_tx: Add dynamic multi-link support
A multi-link is a link where multiple converter devices are connected to a
single logic device (FPGA). All links involved in a multi-link are synchronous
and established at the same time. For a TX link this means that the FPGA receives
multiple SYNC signals, one for each link. The state machine of the TX link
peripheral must combine those SYNC signals into a single SYNC signal that is
asserted when either of the external SYNC signals is asserted.

Dynamic multi-link support must allow to select to which converter devices on
the multi-link the SYNC signal is propagated too. This is useful when depending
on the use case profile some converter devices are supposed to be disabled.

Add the cfg_links_disable[0x081] register for multi-link control and
propagate its value to the TX FSM.
2018-05-03 19:37:35 +03:00
Istvan Csomortani 1b42312157 jesd204:rx_ctrl: Fix the cfg_links_disable mask 2018-05-03 18:48:54 +03:00
Istvan Csomortani 5176eca155 jesd204:version: Increase version number for RX
Since the multi-link support is new feature, increase the minor version
number.
2018-05-03 18:48:54 +03:00
Istvan Csomortani 974131cfc5 jesd204:up_common: Add a synthesis register for NUM_LINKS 2018-05-03 18:48:54 +03:00
Istvan Csomortani e71f9e384e jesd204:up_common: Move cfg_links_disable to 0x086 address space 2018-05-03 18:48:54 +03:00
Istvan Csomortani 36a3335093 jesd204_tb: Update testbench to support dynamic multi-link on RX side 2018-05-03 18:48:54 +03:00
Istvan Csomortani 0e099b6f08 jesd204_rx: Add dynamic multi-link support
A multi-link is a link where multiple converter devices are connected to a
single logic device (FPGA). All links involved in a multi-link are synchronous
and established at the same time. For a RX link this means that the SYNC signal
needs to be propagated from the FPGA to each converter.

Dynamic multi-link support must allow to select to which converter devices on
the multi-link the SYNC signal is propagated too. This is useful when depending
on the usecase profile some converter devices are supposed to be disabled.

Add the cfg_links_disable[0x081] register for multi-link control and
propagate its value to the RX FSM.
2018-05-03 18:48:54 +03:00
Laszlo Nagy 3f94fec620 axi_dmac/dma_write_tb: added data integrity check
Added passing condition checking.
Added variable request sizes
2018-05-03 14:49:06 +02:00
Laszlo Nagy 5c2e10eca5 axi_dmac: added ModelSim support to run_tb.sh
Modified run_tb.sh to work with Modelsim if the SIMULATOR variable is set to
"modelsim"
2018-05-03 14:49:06 +02:00
Laszlo Nagy ee4932ecee axi_dmac: made vlog pass
Did minor changes to the code to make ModelSim vlog pass.
2018-05-03 14:49:06 +02:00
Lars-Peter Clausen 24d17e8bcc axi_dmac: Add transfer testbenches
Add simple transfer testbenches that test the read and write to AXI memory
paths of the DMAC.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
2018-05-03 14:49:06 +02:00
Lars-Peter Clausen b3f027fc89 axi_dmac: Add simple register map testbench
Add a testbench that exercises the basic functionality of the axi_dmac
register map module.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
2018-05-03 14:49:06 +02:00