Using the XADC in the Zynq

Using the XADC in the Zynq

Most embedded systems contain at  least one simple ADC which is used to monitor the health of the system itself, providing some basic telemetry. Normally this telemetry will monitor areas like 

  • Power Rails -  Are the regulated voltages in specification 
  • Current - Are the power rails in the unit taking the correct current 
  • Junction Temperature - Are the junction temperatures of the devices within the de rated range. Normally it is just the processing element - FPGA, ASIC, DSP or Processor which we monitor.
  • Board Temperature - The operating temperature of the system 

Knowing these parameters can help with both prognostics and failure analysis i.e. we learn how the unit ages and can determine when one is about to fail or investigation after the fact if one has failed. 

Of course this is very helpful in determining the root cause of the failure and when used for prognostics allows us to plan in replacements and minimise downtime. 

Off course implementing the ADC and sampling requires board space for the ADC and associated multiplexors and components.

The Seven Series devices (Kintex, Artix, Virtex and Zynq) from Xilinx have a inbuilt 1 MSPS 12 bit ADC called the XADC. This is an interesting macro as it can multiplex internally between 16 inputs and read the device junction temperature and supply rails. If necessary it can even drive an external multiplexor if your design is pin limited and will issue alarms when set parameters are exceeded. 

For over 2 years I have been writing a tutorial on how to use the Zynq, some of the most popular blogs have been on how to use this XADC macro. I thought it might be a great idea to pull the links on the XADC together here for you all to have a look at and use as you see fit so here are the links. 

Creating the XADC in Vivado 

Driving the XADC using SW and the PS interface 

Setting Alarms with XADC 

XADC and different interfaces on the Zynq 

XADC in the real world 

XADC, Interrupts and Real Signals 

Of course you do not have to limit the XADC to just telemetry, it can be used for more complicated applications after all it is an ADC, which is what the MicroZed Chronicles will be looking at next. 

Mohammad Daneshgar

Co-Owner/Founder at PATVAZ

6 年

Thanks a million for your tutorials. I reside in Iran and have never seen you, but I'm really indebted to you for what I've learnt from you.?

Jayasankar Vn

Associate Professor at The National Institute of Engineering, Mysuru

7 年

How do you access the 16 auxiliary channels of XADC ? Can I use the existing I/O pins as auxiliary inputs ? I couldn't find any options to change the sites of auxiliary channels. Should I use an FMC breakout board to access all analog channels of XADC ? or can I use existing pmod I/Os to read differential analog inputs ? This kills my brain for last two weeks.

回复
Maroof Choudhury

Electrical Engineer with a multi-disciplinary background.

8 年

Thanks for the tutorial. Looking at the ZynQ7000 data sheet, the XADC section states a dual 12 bit, 1MSPS ADC with 250KHz auxiliary channel 'Full Resolution Bandwidth'. Does that mean that the ADC inputs are band limited to well below nyquist limit? What is the actual 'Full Power Bandwidth' of the dedicated analog input pair? Has anyone figured out if the XADC Can be used for bandpass sampling and if so, what is the limit?

回复
Reza Allahyarzadeh

Senior SoC Verification Engineer at Nokia

8 年

It would be marvelous if you had this kind of explanation about DDS and external DAC to generate desired signals with Zynq.

回复
Mark Raviola

Digital Transformation | Opportunity | Strategy | Partnership Engagement | Product Management | Project Management

8 年

it is good to see how all these cool features of Zynq are being utilised

回复

要查看或添加评论,请登录

社区洞察

其他会员也浏览了