Skip to content

Commit 2cacad8

Browse files
authored
docs: page for AD3552R IP (#1323)
Signed-off-by: Jorge Marques <jorge.marques@analog.com> Signed-off-by: PopPaul2021 <paul.pop@analog.com>
1 parent 6f4235a commit 2cacad8

File tree

4 files changed

+357
-0
lines changed

4 files changed

+357
-0
lines changed
Lines changed: 4 additions & 0 deletions
Loading

docs/library/axi_ad3552r/detailed_architecture.svg

Lines changed: 4 additions & 0 deletions
Loading

docs/library/axi_ad3552r/index.rst

Lines changed: 194 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,194 @@
1+
.. _axi_ad3552r:
2+
3+
AXI AD3552R
4+
================================================================================
5+
6+
.. hdl-component-diagram::
7+
8+
The :git-hdl:`AXI AD3552R <library/axi_ad3552r>` IP core
9+
can be used to interface the :adi:`AD3552R`, a low drift, ultra-fast, 16-bit
10+
accuracy, current output digital-to-analog converter (DAC) that can be
11+
configured in multiple voltage span ranges.
12+
13+
Features
14+
--------------------------------------------------------------------------------
15+
16+
* AXI-based configuration
17+
* Vivado compatible
18+
* 8b register read/write SDR/DDR
19+
* 16b register read/write SDR/DDR
20+
* data stream SDR/DDR ( clk_in/8 or clk_in/4 update rate)
21+
* selectable input source: DMA/ADC/TEST_RAMP
22+
* data out clock(SCLK) has clk_in/8 frequency when the converter is configured and
23+
clk_in/2 when the converter is in stream mode
24+
* the IP reference clock (clk_in) can have a maximum frequency of 132MHz
25+
* the IP has multiple device synchronization capability when the DMA is set
26+
as an input data source
27+
28+
Files
29+
--------------------------------------------------------------------------------
30+
31+
.. list-table::
32+
:header-rows: 1
33+
34+
* - Name
35+
- Description
36+
* - :git-hdl:`library/axi_ad3552r/axi_ad3552r.v`
37+
- Verilog source for the AXI AD3552R.
38+
* - :git-hdl:`library/axi_ad3552r/axi_ad3552r_channel.v`
39+
- Verilog source for the AXI AD3552R channel.
40+
* - :git-hdl:`library/axi_ad3552r/axi_ad3552r_core.v`
41+
- Verilog source for the AXI AD3552R core.
42+
* - :git-hdl:`library/axi_ad3552r/axi_ad3552r_if.v`
43+
- Verilog source for the AD3552R interface module.
44+
* - :git-hdl:`library/axi_ad3552r/axi_ad3552r_if_tb.v`
45+
- Verilog source for the AD3552R interface module testbench.
46+
* - :git-hdl:`library/axi_ad3552r/axi_ad3552r_if_tb`
47+
- Setup script for the AD3552R interface module testbench.
48+
* - :git-hdl:`library/axi_ad3552r/axi_ad3552r_ip.tcl`
49+
- TCL script to generate the Vivado IP-integrator project.
50+
51+
Block Diagram
52+
--------------------------------------------------------------------------------
53+
54+
.. image:: block_diagram.svg
55+
:alt: AXI AD3552R block diagram
56+
57+
Configuration Parameters
58+
--------------------------------------------------------------------------------
59+
60+
.. hdl-parameters::
61+
62+
* - ID
63+
- Core ID should be unique for each IP in the system
64+
- 0
65+
* - FPGA_TECHNOLOGY
66+
- Encoded value describing the technology/generation of the FPGA device
67+
(Arria 10/7series)
68+
* - FPGA_FAMILY
69+
- Encoded value describing the family variant of the FPGA device(e.g., SX,
70+
GX, GT)
71+
* - SPEED_GRADE
72+
- Encoded value describing the FPGA's speed-grade
73+
* - DEV_PACKAGE
74+
- Encoded value describing the device package. The package might affect
75+
high-speed interfaces
76+
77+
Interface
78+
--------------------------------------------------------------------------------
79+
80+
.. hdl-interfaces::
81+
82+
* - dac_clk
83+
- Reference clock
84+
* - dma_data
85+
- Data from the DMAC when input source is set to DMA_DATA.
86+
* - valid_in_dma
87+
- Valid from the DMAC.
88+
* - dac_data_ready
89+
- Data ready signal for the DMAC.
90+
* - data_in_a
91+
- Data for channel 1 when input source is set to ADC_DATA.
92+
* - data_in_b
93+
- Data for channel 2 when input source is set to ADC_DATA.
94+
* - valid_in_a
95+
- Valid for channel 1.
96+
* - valid_in_b
97+
- Valid for channel 2.
98+
* - valid_in_dma_sec
99+
- Valid from a secondary DMAC if synchronization is needed.
100+
* - external_sync
101+
- External synchronization flag from another axi_ad3552r IP.
102+
* - sync_ext_device
103+
- Start_sync external device to another axi_ad3552r IP.
104+
* - dac_sclk
105+
- Serial clock.
106+
* - dac_csn
107+
- Serial chip select.
108+
* - sdio_o
109+
- Serial data out to the DAC.
110+
* - sdio_i
111+
- Serial data in from the DAC.
112+
* - sdio_t
113+
- I/O buffer control signal.
114+
* - s_axi
115+
- Standard AXI Slave Memory Map interface.
116+
117+
Detailed Architecture
118+
--------------------------------------------------------------------------------
119+
120+
.. image:: detailed_architecture.svg
121+
:alt: AXI AD3552R detailed architecture
122+
123+
Detailed Description
124+
--------------------------------------------------------------------------------
125+
126+
The top module instantiates:
127+
128+
* The axi_ad3552r interface module
129+
* The axi_ad3552r core module
130+
* The AXI handling interface
131+
132+
The axi_ad3552r_if has the state machine that controls the quad SPI interface.
133+
The axi_ad3552r_core module instantiates 2 axi_ad3552r channel modules.
134+
135+
Register Map
136+
--------------------------------------------------------------------------------
137+
138+
For the AXI_AD3552R control used registers from DAC Common are:
139+
140+
.. hdl-regmap::
141+
:name: AXI_AD3552R_DAC_COMMON
142+
143+
144+
For the AXI_AD3552R control used registers from DAC Channel are:
145+
146+
.. hdl-regmap::
147+
:name: AXI_AD3552R_DAC_CHANNEL
148+
149+
For reference, all the register map templates are:
150+
151+
.. hdl-regmap::
152+
:name: COMMON
153+
:no-type-info:
154+
155+
.. hdl-regmap::
156+
:name: DAC_COMMON
157+
:no-type-info:
158+
159+
.. hdl-regmap::
160+
:name: DAC_CHANNEL
161+
:no-type-info:
162+
163+
Design Guidelines
164+
--------------------------------------------------------------------------------
165+
166+
The control of the chip is done through the AXI_AD3552R IP.
167+
168+
The *DAC interface* must be connected to an IO buffer.
169+
170+
The example design uses a DMA to move the data from the memory to the CHIP quad
171+
SPI interface.
172+
173+
If the data needs to be processed in HDL before moving to DAC's output, it can be
174+
done at the input of the IP (at the system level) or inside the axi_ad3552r_if
175+
interface module (at the IP level).
176+
177+
The example design uses a processor to program all the registers. If no
178+
processor is available in your system, you can create your IP starting from the
179+
interface module.
180+
181+
Software Guidelines
182+
--------------------------------------------------------------------------------
183+
184+
Linux is supported using
185+
:dokuwiki:`AD3552R Dual Channel, 16-Bit, 33 MUPS, Multispan, Multi-IO SPI DAC Linux device driver <resources/tools-software/linux-drivers/iio-dac/axi-ad3552r>`.
186+
187+
References
188+
--------------------------------------------------------------------------------
189+
* :adi:`AD3552R`
190+
* :git-hdl:`projects/ad3552r_evb`
191+
* :git-hdl:`library/axi_ad3552r`
192+
* :git-linux:`/`
193+
* :xilinx:`Zynq-7000 SoC Overview <support/documentation/data_sheets/ds190-Zynq-7000-Overview.pdf>`
194+
* :xilinx:`Zynq-7000 SoC Packaging and Pinout <support/documentation/user_guides/ug865-Zynq-7000-Pkg-Pinout.pdf>`
Lines changed: 155 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,155 @@
1+
TITLE
2+
USING DAC_COMMON
3+
AXI AD3552R DAC Common (axi_ad3552r_dac_common)
4+
AXI_AD3552R_DAC_COMMON
5+
ENDTITLE
6+
7+
############################################################################################
8+
############################################################################################
9+
10+
REG
11+
CNTRL_1
12+
ENDREG
13+
14+
FIELD
15+
EXT_SYNC_ARM
16+
ENDFIELD
17+
18+
############################################################################################
19+
############################################################################################
20+
21+
REG
22+
CNTRL_2
23+
ENDREG
24+
25+
FIELD
26+
SDR_DDR_N
27+
SYMB_8_16B
28+
ENDFIELD
29+
30+
############################################################################################
31+
############################################################################################
32+
33+
REG
34+
DAC_CUSTOM_WR
35+
ENDREG
36+
37+
FIELD
38+
[23:0] 0x00000000
39+
DATA_WRITE
40+
RW
41+
Configuration data for the AD3552R device registers. 8/16 LSB are used depending on the
42+
8b/16b configuration.
43+
ENDFIELD
44+
45+
############################################################################################
46+
############################################################################################
47+
48+
REG
49+
UI_STATUS
50+
ENDREG
51+
52+
FIELD
53+
IF_BUSY
54+
ENDFIELD
55+
56+
############################################################################################
57+
############################################################################################
58+
59+
REG
60+
DAC_CUSTOM_CTRL
61+
ENDREG
62+
63+
FIELD
64+
[31:24] 0x00000000
65+
ADDRESS
66+
RW
67+
Register address when the AD3552R is configured or stream start address when the
68+
FSM is in stream state.
69+
ENDFIELD
70+
71+
FIELD
72+
[1] 0x00000000
73+
STREAM
74+
RW
75+
Setting this bit will trigger a stream transfer based on the SDR/DDR
76+
configuration and address.
77+
ENDFIELD
78+
79+
FIELD
80+
[0] 0x00000000
81+
TRANSFER_DATA
82+
RW
83+
Setting this bit will trigger a single transfer based on the SDR/DDR,
84+
8b/16b configuration, address, and data_write.
85+
ENDFIELD
86+
87+
############################################################################################
88+
############################################################################################
89+
90+
TITLE
91+
USING DAC_CHANNEL
92+
AXI AD3552R DAC Channel (axi_ad3552r_dac_channel)
93+
AXI_AD3552R_DAC_CHANNEL
94+
ENDTITLE
95+
96+
############################################################################################
97+
############################################################################################
98+
99+
REG
100+
0x0100
101+
CHAN_CNTRL0_7
102+
DAC Channel Control & Status (channel - 0)
103+
ENDREG
104+
105+
FIELD
106+
[3:0] 0x00000000
107+
DAC_DDS_SEL
108+
RW
109+
Select internal data sources (available only if the DAC supports it).
110+
111+
* 0x00: internal tone (DDS)
112+
* 0x01: pattern (SED)
113+
* 0x02: input data (DMA)
114+
* 0x03: 0x00
115+
* 0x04: inverted pn7
116+
* 0x05: inverted pn15
117+
* 0x06: pn7 (standard O.150)
118+
* 0x07: pn15 (standard O.150)
119+
* 0x08: loopback data (ADC)
120+
* 0x09: pnX (Device specific e.g. ad9361)
121+
* 0x0A: Nibble ramp (Device specific e.g. adrv9001)
122+
* 0x0B: 16 bit ramp (Device specific e.g. adrv9001)
123+
ENDFIELD
124+
125+
############################################################################################
126+
############################################################################################
127+
128+
REG
129+
0x0116
130+
CHAN_CNTRL1_7
131+
DAC Channel Control & Status (channel - 1)
132+
ENDREG
133+
134+
FIELD
135+
[3:0] 0x00000000
136+
DAC_DDS_SEL
137+
RW
138+
Select internal data sources (available only if the DAC supports it).
139+
140+
* 0x00: internal tone (DDS)
141+
* 0x01: pattern (SED)
142+
* 0x02: input data (DMA)
143+
* 0x03: 0x00
144+
* 0x04: inverted pn7
145+
* 0x05: inverted pn15
146+
* 0x06: pn7 (standard O.150)
147+
* 0x07: pn15 (standard O.150)
148+
* 0x08: loopback data (ADC)
149+
* 0x09: pnX (Device specific e.g. ad9361)
150+
* 0x0A: Nibble ramp (Device specific e.g. adrv9001)
151+
* 0x0B: 16 bit ramp (Device specific e.g. adrv9001)
152+
ENDFIELD
153+
154+
############################################################################################
155+
############################################################################################

0 commit comments

Comments
 (0)