Commit Graph

15 Commits (dbadb9eb619fcd0426ed6a9d9af6e783f17955ff)

Author SHA1 Message Date
Laszlo Nagy c3ae609bc8 data_offload: Refactor core
Deprecate unused parameters.

Change to MEM_SIZE_LOG2, to support only power of 2 storage sizes for
now. However in the future we might want to add support for non pow2
sizes so register map is not changed.

Change transfer length to -1 value to spare logic.

Change FIFO interface to AXIS to have backpressure, this allows the
implementation of data movement logic in the storage unit and let the
FSM handle high level control an synchronization and control the storage
unit through a control interface.

Refactor FSM to have preparation states where slow storages can be
configured and started ahead of the data handling.

Make bypasss FIFO optional since in some cases causes timing failures
due the missing output register of the memory. This can be targeted in
a later commit.

Hook up underflow/overflow to regmap useful in case of external memory
where rate drops due misconfiguration can be detected.

Cleanup for verilator.

Scripting:
Add HBM and DDR external memory support using util_hbm IP
Replace asym_block_ram with util_do_ram IP
2022-04-28 14:31:32 +03:00
David Winter 6a5d2f76d5 data_offload: Fix oversized TX input transactions
Signed-off-by: David Winter <david.winter@analog.com>
2021-10-27 14:26:22 +03:00
David Winter cd6024b341 Revert "data_offload: Fix oversized inputs in TX mode"
This reverts commit 0e8f55b2d7.
2021-10-27 14:26:22 +03:00
David Winter 0e8f55b2d7 data_offload: Fix oversized inputs in TX mode
This commit fixes an issue in situations where we provide an oversized
transaction to the data offload in TX mode. Previously, the data offload
would stop accepting new data (wr_ready <= 0) after filling up the
internal storage, and get stuck waiting for the input transaction to
end, thus locking up the device.

This commit addresses that issue by allowing the data offload to consume
the full input transaction, even if the tail of the buffer will be
truncated in the output.

Signed-off-by: David Winter <david.winter@analog.com>
2021-09-29 18:33:11 +03:00
David Winter cdb9a0af2b data_offload: Add sync to cyclic mode
Signed-off-by: David Winter <david.winter@analog.com>
2021-09-21 09:06:03 +03:00
David Winter 7423ecae14 data_offload: Improve external synchronization
This commit adds a new synthesis option to the design, that controls
whether an internal clock domain crossing will be generated. Disabling
this option allows you to use a synchronization signal that is
synchronized to the write clock domain externally, and possibly shared
between multiple devices.

The default value retains the old behavior.

Signed-off-by: David Winter <david.winter@analog.com>
2021-09-08 11:58:01 +03:00
David Winter 235542cac9 data_offload: Fix support for > 4 GiB of storage
This commit changes the transfer length register to work in increments of
64 bytes and without offset. The true transfer length can now be
determined by multiplying the value of the transfer_length register with
64.
A value of zero is interpreted as a request for all available storage.

Additionally, this commit fixes an off by one issue that was discovered
during testing of the RX path.

Signed-off-by: David Winter <david.winter@analog.com>
2021-08-06 11:55:24 +03:00
David Winter 2b55c7453b data_offload: Fix duplicated output samples
Signed-off-by: David Winter <david.winter@analog.com>
2021-08-06 11:55:24 +03:00
David Winter 04f2d19d4b data_offload: Fix data_offload getting stuck on oscillating m_saxis_ready
Signed-off-by: David Winter <david.winter@analog.com>
2021-08-06 11:55:24 +03:00
David Winter 0af50d3f72 data_offload: Fix oneshot mode
Signed-off-by: David Winter <david.winter@analog.com>
2021-08-06 11:55:24 +03:00
David Winter 66748510ea data_offload: write_fsm: Always transition out of idle on high init_req
Signed-off-by: David Winter <david.winter@analog.com>
2021-08-06 11:55:24 +03:00
Istvan Csomortani 9b1108ea87 data_offload: Flush the DMA if the transaction size is bigger than the storage 2021-08-06 11:55:24 +03:00
Istvan Csomortani c82b0fb420 data_offload: Delete fifo_dst_rlast 2021-08-06 11:55:24 +03:00
Istvan Csomortani 0436a82f4e data_offload: Fix alignment of write last beat and write full 2021-08-06 11:55:24 +03:00
Istvan Csomortani 86b611c1f7 data_offload: Initial commit 2021-08-06 11:55:24 +03:00