CN0363 DMA Sequencer
The CN0363 Sequencer FPGA Peripheral is part of the CN0363 HDL project and is responsible to sequence the various data channels to the DMA.
Files
| Name | Description | 
|---|---|
| Verilog source for the peripheral. | |
| library/cn0363/cn0363_dma_sequencer/cn0363_dma_sequencer_ip.tcl | TCL script to generate the Vivado IP-integrator project for the peripheral. | 
Interface
| Physical Port | Logical Port | Direction | Dependency | 
|---|---|---|---|
| phase_valid | TVALID | in | |
| phase_ready | TREADY | out | |
| phase | TDATA | in [31:0] | 
| Physical Port | Logical Port | Direction | Dependency | 
|---|---|---|---|
| data_valid | TVALID | in | |
| data_ready | TREADY | out | |
| data | TDATA | in [23:0] | 
| Physical Port | Logical Port | Direction | Dependency | 
|---|---|---|---|
| data_filtered_valid | TVALID | in | |
| data_filtered_ready | TREADY | out | |
| data_filtered | TDATA | in [31:0] | 
| Physical Port | Logical Port | Direction | Dependency | 
|---|---|---|---|
| i_q_valid | TVALID | in | |
| i_q_ready | TREADY | out | |
| i_q | TDATA | in [31:0] | 
| Physical Port | Logical Port | Direction | Dependency | 
|---|---|---|---|
| i_q_filtered_valid | TVALID | in | |
| i_q_filtered_ready | TREADY | out | |
| i_q_filtered | TDATA | in [31:0] | 
| Physical Port | Logical Port | Direction | Dependency | 
|---|---|---|---|
| dma_wr_en | EN | out | |
| dma_wr_data | DATA | out [31:0] | |
| dma_wr_overflow | OVERFLOW | in | |
| dma_wr_xfer_req | XFER_REQ | in | 
| Physical Port | Direction | Dependency | Description | 
|---|---|---|---|
| clk | in | Clock - All other signals are synchronous to this clock. Bus  | |
| resetn | in | Synchronous active low reset - Resets the internal state machine of the core. | |
| overflow | out | Output - The overflow signal is asserted if a overflow on the DMA interface is detected. | |
| dma_wr_sync | out | ||
| channel_enable | in [13:0] | Input - Data channel enable sequencer output enable. | |
| processing_resetn | out | Output - Reset signal for the processing pipeline Bus  | 
Detailed Description
The CN0363 DMA sequencer core acts as a link between the CN0363
processing pipeline and the connected DMA controller. On one side it accepts data
from the processing pipeline and on the other side it sends the data to the DMA
controller. The core is only active when the DMA controller signals that it is
waiting for data, when it is inactive it also asserts the processing_resetn
signal to keep the processing pipeline in reset. Since the DMA is running at a
much faster clock than the output data rate from the processing pipeline the
different channels are time-division-multiplexed and send one by one to the DMA
controller over the dma_wr interface.
When active, the core cycles through the input channels in the following order:
- phase (Reference channel) 
- data (Reference channel) 
- data_filtered (Reference channel) 
- i_q, I component (Reference channel) 
- i_q, Q component (Reference channel) 
- i_q_filtered, I component (Reference channel) 
- i_q_filtered, Q component (Reference channel) 
- phase (Sample channel) 
- data (Sample channel) 
- data_filtered (Sample channel) 
- i_q, I component (Sample channel) 
- i_q, Q component (Sample channel) 
- i_q_filtered, I component (Sample channel) 
- i_q_filtered, Q component (Sample channel) 
Each of these has a corresponding bit in the channel_enable and only if the
bit is set, the channel is sent to the dma_wr interface, otherwise it is
discarded. This allows an application to select which data channels it wants to
capture.
Software Support
- Linux device driver at drivers/iio/adc/ad7173.c 
- Linux device driver documentation at Linux Device Drivers 
- No-OS device driver at drivers/adc/ad717x 
- No-OS device driver documentation at AD717X No-OS Software Drivers 
References
- HDL IP Core at library/cn0363/cn0363_dma_sequencer 
- HDL project at projects/cn0363 
- HDL project documentation at CN0363 HDL project