docs: Add axi_ad9671 IP core

Signed-off-by: Jorge Marques <jorge.marques@analog.com>
Signed-off-by: Iulia Moldovan <Iulia.Moldovan@analog.com>
main
Jorge Marques 2024-05-07 10:31:08 -03:00 committed by Jorge Marques
parent 070ebf2aa0
commit 3e41f2afe1
3 changed files with 1688 additions and 0 deletions

View File

@ -0,0 +1,320 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="100%"
height="100%"
id="svg2"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="adc_jesd.svg"
inkscape:export-filename="D:\Git\ghdl\docs\block_diagrams\axi_ad9265\axi_ad9265.png"
inkscape:export-xdpi="400"
inkscape:export-ydpi="400"
viewBox="0 0 425 350"
preserveAspectRatio="xMidYMid slice">
<defs
id="defs4">
<inkscape:path-effect
effect="powerstroke"
id="path-effect5376"
is_visible="true"
offset_points="0,0.43724867"
sort_points="true"
interpolator_type="Linear"
interpolator_beta="0.2"
start_linecap_type="zerowidth"
linejoin_type="round"
miter_limit="4"
end_linecap_type="zerowidth"
cusp_linecap_type="round" />
<pattern
y="0"
x="0"
height="6"
width="6"
patternUnits="userSpaceOnUse"
id="EMFhbasepattern" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.8325"
inkscape:cx="57.656767"
inkscape:cy="228.73587"
inkscape:document-units="px"
inkscape:current-layer="g4357"
showgrid="false"
inkscape:snap-bbox="true"
inkscape:snap-to-guides="true"
showguides="true"
inkscape:guide-bbox="true"
inkscape:window-width="1920"
inkscape:window-height="1047"
inkscape:window-x="-11"
inkscape:window-y="-11"
inkscape:window-maximized="1"
inkscape:snap-grids="true"
units="px"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0">
<sodipodi:guide
position="-200.51528,787.37788"
orientation="1,0"
id="guide4261" />
<inkscape:grid
type="xygrid"
id="grid5420"
originx="-13.131982"
originy="-164.43837" />
</sodipodi:namedview>
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-13.131983,-537.92376)">
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="108.82646"
y="336.35623"
id="text4214"
sodipodi:linespacing="125%"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90"><tspan
sodipodi:role="line"
id="tspan4216"
x="108.82646"
y="336.35623"
style="font-size:20px" /></text>
<g
transform="matrix(1.103181,0,0,4.7917437,36.444715,-186.56086)"
style="fill:#afedbd;fill-opacity:0.07100591;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="g4180-1"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90">
<rect
y="159.53206"
x="71.884163"
height="57.37455"
width="199.5174"
id="rect3336-5"
style="fill:#afedbd;fill-opacity:0.07100591;fill-rule:evenodd;stroke:#000000;stroke-width:0.76066536;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
</g>
<path
style="opacity:0.98999999;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000096;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 89.521568,665.9365 0,-9.62039 -70.476631,0 -0.1366,-12.79628 0.13472,-12.79627 70.478511,0 0,-9.6204 24.067782,22.41667 z"
id="path34982"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccccc" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:10px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="35.742157"
y="647.38458"
id="text4196"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4198"
x="35.742157"
y="647.38458"
style="font-size:10px">AXI SLAVE</tspan></text>
<rect
style="opacity:1;fill:#d7d7d7;fill-opacity:0.35294118;fill-rule:nonzero;stroke:#000000;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect4204"
width="72.5"
height="122.5"
x="139.0587"
y="591.32355" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:10px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="174.79601"
y="650.0296"
id="text4206"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4208"
x="174.79601"
y="650.0296"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:center;text-anchor:middle">REGISTER</tspan><tspan
sodipodi:role="line"
x="174.79601"
y="662.5296"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:center;text-anchor:middle"
id="tspan4251">MAP</tspan></text>
<g
id="g4357"
transform="translate(-13.89132,-73.70117)">
<rect
y="797.44434"
x="152.72948"
height="122.5"
width="72.5"
id="rect4204-3"
style="opacity:1;fill:#d7d7d7;fill-opacity:0.35294118;fill-rule:nonzero;stroke:#000000;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<text
sodipodi:linespacing="125%"
id="text4206-2"
y="842.50775"
x="189.01248"
style="font-style:normal;font-weight:normal;font-size:10px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
id="tspan4251-9"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:center;text-anchor:middle"
y="842.50775"
x="190.72147"
sodipodi:role="line">JESD LINK </tspan><tspan
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:center;text-anchor:middle"
y="855.00775"
x="189.01248"
sodipodi:role="line"
id="tspan4171">TO DMA</tspan><tspan
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:center;text-anchor:middle"
y="867.50775"
x="190.72147"
sodipodi:role="line"
id="tspan4173">DATA </tspan><tspan
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:center;text-anchor:middle"
y="880.00775"
x="190.72147"
sodipodi:role="line"
id="tspan4175">ORDERING </tspan><tspan
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:center;text-anchor:middle"
y="892.50775"
x="189.01248"
sodipodi:role="line"
id="tspan4369" /></text>
</g>
<flowRoot
xml:space="preserve"
id="flowRoot4272"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"><flowRegion
id="flowRegion4274"><rect
id="rect4276"
width="183.35606"
height="283.76535"
x="-27.830832"
y="74.488403" /></flowRegion><flowPara
id="flowPara4278" /></flowRoot> <text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="274.52353"
y="600.3385"
id="text4295"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4297"
x="274.52353"
y="600.3385" /></text>
<g
id="g4362"
transform="translate(-72.906712,199.45373)">
<rect
y="445.14008"
x="300.43127"
height="122.2474"
width="88.072769"
id="rect4204-2"
style="opacity:1;fill:#d7d7d7;fill-opacity:0.35294118;fill-rule:nonzero;stroke:#000000;stroke-width:2.75260305;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<text
sodipodi:linespacing="125%"
id="text4206-0"
y="479.70892"
x="344.77353"
style="font-style:normal;font-weight:normal;font-size:10px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
id="tspan4251-95"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:center;text-anchor:middle"
y="479.70892"
x="346.48251"
sodipodi:role="line">ADC </tspan><tspan
id="tspan4322"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:center;text-anchor:middle"
y="492.20892"
x="344.77353"
sodipodi:role="line">DATA</tspan><tspan
id="tspan4324"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:center;text-anchor:middle"
y="504.70892"
x="344.77353"
sodipodi:role="line">PROCESSING</tspan><tspan
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:center;text-anchor:middle"
y="517.20892"
x="344.77353"
sodipodi:role="line"
id="tspan4177">&amp;</tspan><tspan
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:center;text-anchor:middle"
y="529.70892"
x="346.48251"
sodipodi:role="line"
id="tspan4179">PRBS </tspan><tspan
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:center;text-anchor:middle"
y="542.20892"
x="344.77353"
sodipodi:role="line"
id="tspan4181">MONITORING</tspan></text>
</g>
<path
style="opacity:0.98999999;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000096;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 89.412808,802.21745 0,-9.62039 -70.476631,0 -0.1366,-12.79628 0.13472,-12.79627 70.478511,0 0,-9.6204 24.067782,22.41667 z"
id="path34982-9"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccccc" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:10px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="42.579056"
y="784.05139"
id="text4196-2"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4198-0"
x="42.579056"
y="784.05139"
style="font-size:10px">JESD FIFO</tspan></text>
<path
style="opacity:0.98999999;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000096;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 407.61789,720.28356 0,-9.62039 -70.47663,0 -0.1366,-12.79628 0.13472,-12.79627 70.47851,0 0,-9.6204 24.06778,22.41667 z"
id="path34982-4"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccccc" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:10px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="353.8385"
y="701.73163"
id="text4196-0"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4198-8"
x="353.8385"
y="701.73163"
style="font-size:10px">DMA FIFO</tspan></text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 15 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 62 KiB

View File

@ -0,0 +1,165 @@
.. _axi_ad9671:
AXI AD9671
================================================================================
.. hdl-component-diagram::
The :git-hdl:`AXI AD9671 <library/axi_ad9671>` IP core
can be used to interface the :adi:`AD9671` Octal Ultrasound AFE with digital
demodulator.
An AXI Memory Map interface is used for configuration.
Data is received from Xilinx JESD IP.
More about the generic framework interfacing ADCs can be read in :ref:`axi_adc`.
Features
--------------------------------------------------------------------------------
* AXI based configuration
* PRBS monitoring (PN9 and PN23)
* Altera Quartus compatible
* Vivado compatible
Files
--------------------------------------------------------------------------------
.. list-table::
:header-rows: 1
* - Name
- Description
* - :git-hdl:`library/axi_ad9671/axi_ad9671.v`
- Verilog source for the AXI AD9671.
* - :git-hdl:`library/common/up_adc_common.v`
- Verilog source for the ADC Common regmap.
* - :git-hdl:`library/common/up_adc_channel.v`
- Verilog source for the ADC Channel regmap.
Block Diagram
--------------------------------------------------------------------------------
.. image:: block_diagram.svg
:width: 600
:alt: AXI AD9671 block diagram
Configuration Parameters
--------------------------------------------------------------------------------
.. hdl-parameters::
* - ID
- Core ID should be unique for each IP in the system
* - FPGA_TECHNOLOGY
- Used to select between devices, Altera devices are also supprted.
* - QUAD_OR_DUAL_N
- Selects if 4 lanes (1) or 2 lanes (0) are connected
Interface
--------------------------------------------------------------------------------
.. hdl-interfaces::
* - rx_clk
- JESD clock rate / 40
* - rx_data
- RX data from the JESD core. 128 bit wide for QUAD operation, and 64 bit
for DUAL operation
* - rx_valid
- Placeholder for interfaces. Assume data is always valid
* - rx_ready
- Always ready
* - adc_clk
- Loopback of the tx_clk. most of the modules of the core run on this
clock
* - adc_valid
- ADC valid, used to read new data from the DMA. Each bit applies to one
channel
* - adc_enable
- Set when the channel is enabled, activated by software. Each bit applies
to one channel
* - adc_data
- Data for all channels
* - adc_dovf
- Data overflow input
* - adc_sync_in
- Starts the synchronization procedure. Comes from the master IP
* - adc_sync_out
- Starts the synchronization procedure. Sent to the slave IPs
* - adc_raddr_in
- Read address. All IPs are sending data from the same memory location.
Comes from the master IP
* - adc_raddr_out
- Read address. All IPs are sending data from the same memory location.
Sent to the slave IPs
* - s_axi
- Standard AXI Slave Memory Map interface
Detailed Architecture
--------------------------------------------------------------------------------
.. image:: detailed_architecture.svg
:width: 800
:alt: AXI AD9671 detailed architecture
Detailed Description
--------------------------------------------------------------------------------
The top module, axi_ad9671, instantiates:
* the interface module
* the channel processing module
* the ADC common register map
* the AXI handling interface
The interface module, axi_ad9671_if, takes the data from the Xilinx JESD IP
and splits it into channels. In order to synchronize several AD9671 chips, a
FIFO is used and a comparison mechanism with a start code.
The data from the interface module is processed by the adc channel module.
The channel module implements:
* a PRBS monitor
* data format conversion
* the ADC CHANNEL register map
Register Map
--------------------------------------------------------------------------------
.. hdl-regmap::
:name: COMMON
:no-type-info:
.. hdl-regmap::
:name: ADC_COMMON
:no-type-info:
.. hdl-regmap::
:name: ADC_CHANNEL
:no-type-info:
Design Guidelines
--------------------------------------------------------------------------------
The control of the :adi:`AD9671` chip is done through a SPI interface,
which is needed at system level.
The design should use a DMA to move the data from the output of the IP to
memory.
If the data needs to be processed in HDL before moved to the memory, it can be
done at the output of the IP (at system level) or inside of the adc channel
module (at IP level).
References
-------------------------------------------------------------------------------
* :git-hdl:`library/axi_ad9671`
* :adi:`AD9671`
* :git-linux:`/`
* :ref:`jesd204`
* :adi:`Analog Device's JESD204B Survival Guide <media/en/technical-documentation/technical-articles/JESD204B-Survival-Guide.pdf>`
* :intel:`JESD204B Intel FPGA IP User Guide <content/dam/support/us/en/programmable/support-resources/bulk-container/pdfs/literature/ug/archives/ug-jesd204b-18-1.pdf>`
* :xilinx:`Xilinx Vivado JESD IP documentation <support/documentation/ip_documentation/jesd204/v6_0/pg066-jesd204.pdf>`
* :intel:`Arria 5 Transceivers <content/www/us/en/docs/programmable/683573/current/transceiver-architecture-in-arria-v-devices.html>`
* :xilinx:`7 Series Transceivers <support/documentation/user_guides/ug476_7Series_Transceivers.pdf>`