CN0363 Phase Data Sync
The CN0363 Phase Data Sync FPGA Peripheral is part of the EVAL-CN0363-PMDZ HDL reference design and is responsible for preparing the ADC conversion result data and aligning it with the phase and feeding both to the processing pipeline.
Files
Name |
Description |
---|---|
/library/cn0363/cn0363_phase_data_sync/cn0363_phase_data_sync.v |
Verilog source for the peripheral. |
/library/cn0363/cn0363_phase_data_sync/cn0363_phase_data_sync_ip.tcl |
TCL script to generate the Vivado IP-integrator project for the peripheral. |
Interface
Physical Port |
Logical Port |
Direction |
Dependency |
---|---|---|---|
s_axis_sample_valid |
TVALID |
in |
|
s_axis_sample_ready |
TREADY |
out |
|
s_axis_sample_data |
TDATA |
in [7:0] |
Physical Port |
Logical Port |
Direction |
Dependency |
---|---|---|---|
m_axis_sample_valid |
TVALID |
out |
|
m_axis_sample_ready |
TREADY |
in |
|
m_axis_sample_data |
TDATA |
out [23:0] |
Physical Port |
Logical Port |
Direction |
Dependency |
---|---|---|---|
m_axis_phase_valid |
TVALID |
out |
|
m_axis_phase_ready |
TREADY |
in |
|
m_axis_phase_data |
TDATA |
out [31:0] |
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. Bus |
|
processing_resetn |
in |
Synchronous active low reset - Indicator that the processing pipeline is in reset. |
|
sample_has_stat |
in |
Input - Whether the incoming data on |
|
conv_done |
in |
Input - Conversion done signal from the ADC. |
|
phase |
in [31:0] |
Input - Current excitation signal phase. |
|
overflow |
out |
Input - The overflow signal is asserted if a new sample arrives before the previous one has been consumed. |
Detailed Description
The CN0363 Phase Data Sync FPGA Peripheral takes the raw ADC sample data read by a SPI controller from the ADC on the S_AXIS_SAMPLE stream. The data is assembled into 24-bit word and converted from offset binary to two’s complement signed.
When a rising edge is detected on the conv_done signal
the core takes a
snapshot of the phase input signal. This data will be assumed to the phase
that belongs to the next incoming data sample on the S_AXIS_SAMPLE. The data
is aligned with the corresponding phase data and both are send out on the
M_AXIS_SAMPLE
and M_AXIS_PHASE stream
.
If the sample_has_stat
signal is asserted the core will receive 32-bit
instead of 24-bit per sample on the S_AXIS_SAMPLE stream. The last 8-bit are
assumed to contain the STAT register of the ADC, which among other things
contains the information about which channel the ADC result belongs to. This
information can be used to detect and fix channel swaps. If
sample_has_stat
is not asserted the core assumes that no channel swaps
happen and the whole pipeline is always running fast enough to accept a
sample before the next one is ready.
If processing_resetn
is asserted the processing pipeline is assumed to be
in reset and incapable of accepting new samples and when a new sample arrives at
the S_AXIS_SAMPLE
port a overflow condition is generated. The signal also
resets the channel swap detection logic and makes sure that the next sample that
is inserted into the processing pipeline after the reset belongs to the first
channel.
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_phase_data_sync
HDL project at projects/cn0363
HDL project documentation at CN0363 HDL project