pluto_hdl_adi/library/axi_dac_interpolate
AndreiGrozav 245f3f9704 axi_dac_interpolate: Fix channel sync mechanism
The previous channel sync mechanism was simply holding the transmission by
pulling down the dma_rd_en of the two DMAs for each channel(set reg 0x50). After a
period of time (that will take the two DMAs to have the data ready to move)
the dma_rd_en was set for both channels, resulting in a synchronized start.
  This mechanism is valid when the two channels are streaming the same
type of data (constant, waveform, buffer or math) at close frequencies.
Streaming 10MHz on a channel and 100KHz on the second one will result
in different interpolation factors being used for the two channels.
  The interpolation counter runs only when the dma_transfer_suspended(reg 0x50)
is cleared. Because of this, different delays are added by the interpolation
counter one DMA with continuous dma_rd_en will have data earlier than the
one with dma_rd_en controlled by the interpolation counter. Furthermore,
because the interpolation counter value is not reset at each
dma_transfer_suspended, the phase shift between the 2 channels will
differ at each start of transmission.

  To make the transfer start synced immune to the above irregularities a
sync_transfer_start register was added (bit 1 of the 0x50 reg).
When this bit is set and the bit 0(dma_transfer_suspended) is toggled,
the interpolation counters are reset. Each channel enables it's DMA until
valid data is received, then it waits for the adjacent channel to get valid data.
This mechanism will be simplified in a future update by using a streaming
interface between the axi_dac_interpolate and the DMAs that does not require
the probing of the DMA.
2019-08-22 18:07:45 +03:00
..
Makefile Move Altera IP core dependency tracking to library Makefiles 2018-04-11 15:09:54 +03:00
axi_dac_interpolate.v axi_dac_interpolate: Fix channel sync mechanism 2019-08-22 18:07:45 +03:00
axi_dac_interpolate_filter.v axi_dac_interpolate: Fix channel sync mechanism 2019-08-22 18:07:45 +03:00
axi_dac_interpolate_ip.tcl library/scripts: Rename adi_ip.tcl to adi_ip_xilinx.tcl 2019-06-29 06:53:51 +03:00
axi_dac_interpolate_reg.v axi_dac_interpolate: Fix channel sync mechanism 2019-08-22 18:07:45 +03:00
cic_interp.v axi_dac_interpolate: Initial commit 2017-01-31 16:22:49 +02:00
fir_interp.v axi_dac_interpolate: Initial commit 2017-01-31 16:22:49 +02:00
m2k_interp.m axi_dac_interpolate: Added matlab file for interpolation filters 2017-07-21 14:37:27 +03:00