手把手课堂:在Zynq SoC上实现模拟混合信号

在zynq soc内部使用xadc可以极大提高系统集成度,而且实现起来非常简单直观。
赛灵思zynq®-7000 all programmable soc配套提供一个带有2个12位模数转换器(adc)的xadc模块。这两个adc的采样率可高达每秒百万次采样(1msps),具有理想的500khz有效输入信号带宽(辅助输入端信号带宽为250khz)。xadc多路复用17个输入信号并测量一系列内部电压与温度。如果您的设计无法为外部信号提供足够的模拟输入引脚,那么应对xadc加以配置,以驱动外部模拟多路复用器并按照要求的顺序对所有输入进行排序。
xadc能够实现单极或双极测量,因此器件的输入均为差分输入。17个差分输入被划分为一个专用对(称为vp/vn)和16个辅助输入(可以是模拟或数字i/o,被称为vauxp和vauxn)。有效输入信号带宽视所用的差分输入类型而定,如果使用专用对,则信号带宽为500khz,如果使用辅助输入,则信号带宽为250khz。
xadc的混合信号性能非常好,根据数据手册显示,其具有60db的最低信噪比(snr)和70db的总谐波失真(thd)。根据器件所处温度范围(-55ºc至125ºc或-40ºc至100ºc)的不同,xadc的分辨率可以是10位或12位。这样根据下面的等式计算得出的xadc有效位数是9.67。
enob = (snr–1.76/6.02)
xadc具有16、64和256个采样的平均计算法可供用户选择,用以降低输入端噪声。用户还可以为每个所测量的内部器件参数设置最大和最小告警等级。
xadcxadc适合哪些应用?
设计人员可将这种adc用于从简单的板载参数(电压、电流和温度)内务处理遥测,到对触摸传感器、马达控制或简单的无线通信协议的支持等一系列应用。此外,还可以将其用在军事或其他重要系统中,以检测设备篡改。
xadc的重要优势之一是用来监控一系列系统内部参数,验证设计方案的良好程度。此外,为了简化设计初期的验证工作,您可以在基于zynq-7000 all programmable soc的系统中使用xadc来测量由片上温度传感器记录的温度以及后续的其他参数。
硬件实现
要想使用xadc,首先需要打开包含zynq soc实现方案的planahead™项目(如果您不知道如何操作,请参考《赛灵思中国通讯》第47期的封面专题文章)。选择您所创建的处理器子系统,并双击打开xilinx platform studio (xps)。您可以在xps中修改处理系统。
xps打开后,选择项目窗口左侧的ip catalog标签,并选择模拟菜单下的axi xadc。这时会出现提示,问您是否要向设计中添加ip。点击是,显示ip配置窗口,如图1所示。这里没有太多需要配置的内容,除非您想对复杂的axi总线接口进行优化。
用户标签是主要的操控区域。您可以通过该标签为处理器添加中断,启用温度总线。您可以将启用后的温度总线连接至储存器接口生成器(memory interface generator),用以提供影响时序的温度信息。在isim中仿真xadc时使用的是仿真监视文件。
如果您对xadc的配置比较满意,就可以关闭ip配置窗口,同时xadc将被添加到处理系统中。如果您点击system assembly查看器的地址标签,就会看到分配给xadc的地址范围,然后通过勾选来锁定地址范围。
下一步是设置连接到xadc的外部端口数。在默认情况下,xadc可支持1个外部多路复用器、16个辅助模拟输入、8个告警输出和1个转换开始,如图2所示。
必要时您可以移除这些端口,只为adc保留专用的模拟输入vp和vn,以及连接监视器的内部信道。例如,zedboard只能在信道0和8上支持两个辅助模拟输入,同时提供四个xadc专用的gpio。您可以根据需要将这些gpio连接到告警输出或多路复用器输出。可在xps内选择下拉菜单中的“不连接外部端口”选项来断开外部i/o。
如果您希望使一些辅助输入仍处于连接状态(例如添加两个zedboard输入),可在系统内部保留vauxp和vauxn信道,同时在rtl设计的顶层只连接信道0和信道8。如果希望连接辅助输入但移除其他外部端口,需要右击特定的i/o,然后选择“无连接”选项,如图3所示。
外部连接设置好后,运行设计规则检查(drc)。如果drc未显示任何错误,即可退出xps并返回到planahead中,并在此生成比特流。如果您查看一下综合结果,就会发现资源列表中已含有xadc。
编写软件
硬件设计已经完成,此时您需要将硬件再次导入到软件开发套件(sdk)中,以便升级板支持包。在planahead中选择文件->导出->导出硬件到sdk选项。这时会出现提示,警告我们将覆盖已有的硬件定义。点击“是”并覆盖。
如果sdk打开,您会收到一个提示介绍硬件规范文件的变更情况。如果sdk没有打开,那么会在下次打开的时候收到此提示。
点击sdk提示中的“是”选项,硬件定义就会被更新,同时您的项目将被重建。假设设计没有错误,那么您将开始执行代码修改工作。
打开system.xml或xparameters.h文件,您不仅会看到设计中所有其他外设的地址范围,还能看到刚刚添加到xps内的xadc的地址范围。
打开system.mss文件会显示板支持包(bsp)的整体细节。这里我们真正感兴趣的是外设驱动程序,此处您可以看到xai_adc_0(或您在xps中对xadc的任意命名)。接下来,您会看到用于打开文档和实例的热链接。
为了缩短开发时间,赛灵思在报头文件中提供了一系列驱动程序,便于我们使用这些器件。您需要在代码中访问这些驱动程序。为此需要添加bsp更新过程中所生成的以下报头文件。
#include xadcps.h
该文件包含对于xadc寄存器、采样平均选项、信道顺序选项和省电模式等内容的定义。另外还包含一系列可在系统中使用的类型定义、宏命令和函数。
集中在一起
举一个简单的实例:我将读取系统的内部温度和电压参数,并通过rs232链路将它们输出。
在编写代码时首先要做的是查询将要进行初始化的xadc的配置,这里要用到xadcps_config类型的指针。利用xadcps_lookupconfig()函数调用以及从更新的xparameters.h文件中获得的器件id将配置信息(器件id和xadc的基地址)存储在指针内。初始化流程的下一步是使用此前获取并存储在配置指针中的信息,该步骤需要一个xadcps类型的指针。
status_adc = xadcps_cfginitialize (xadcinstptr,configptr,configptr->baseaddress)
我将配置指针命名为configptr,将实例化指针命名为xadcinstptr。xadc的初始化完成后,按照实例要求对其进行配置。以下是配置流程:
1. 采用xadcps_selftest()函数运行自测试,以确认器件没有问题。
2. 利用xadcps_setsequencermode()函数将定序器设置为单通道,从而停止定序器当前操作。
3. 利用xadcps_setalarmenables()函数禁用所有告警。
4. 利用xadcps_setseqinputmode()函数重启定序器并让其按我所要求的顺序排序。
5. 利用xadcps_setseqchenables()函数配置信道,使之能根据我的要求采样。
完成以上步骤后就可以使用adc并从xadc接收数据。只需调用xadcps_getadcdata()函数即可从xadc读取采样。对于内部温度和电压参数,然后我使用两个提供的宏命令(xadcps_原始totemperature()和xadcps_原始tovoltage())将原始的xadc数值转换为实际的温度或电压值。
实际值和原始数据随后都通过rs232链路输出。图4给出了仅器件温度进行采样的初始结果。
当我将采样范围扩大至内部电源轨和温度时,会返回如下结果:
• 原始温度40696, 实际温度39.805603
• 原始vccint 21677, 实际vccint 0.992294
• 原始vccaux 39431, 实际vccaux 1.805008
• 原始vccbram 21691, 实际vccbram 0.992935
• 原始vccpint 21649, 实际vccpint 0.991013
• 原始vccpaux 39402, 实际vccpaux 1.803680
• 原始vccddr 32014, 实际vccddr 1.465485
所有这些参数都在zynq soc运行可接受的限值内,但需要zynq soc在实验室条件下工作。
正如您所看到的,在zynq soc中实现和使用模拟混合信号非常简单直观。xadc可以提高all programmable系统的集成度和功能性。

定华雷达知识讲堂:教你如何安装雷达物位计
传世芯获得英特尔大单,为其代工Gaudi 2等AI芯片
2021年常州天宁区“重大项目攻坚突破年”集中开工活动
OI-APTS综合联试试验系统的特点和功能分析
微软增强版笔记本出手就是两万?和外星人比真是过时
手把手课堂:在Zynq SoC上实现模拟混合信号
曝ROG Phone 3将于今年第三季度正式发布 将首发搭载骁龙865 Plus处理器
欧洲遭遇滑铁卢!iPhone Q2出货量大幅落后三星
小米集团组织部发布组织架构调整邮件
物联网专业就业方向
如何在同一总线上安装1-Wire EPROM和5V 1-Wire器件
verilog实现简单分频器的方案
房地产公司入手新三板半导体企业
基于NXP微控制器的多功能电子血压计设计
联发科6nm旗舰天玑1200今日登场 主频最高为3.0GHz
被动涨价将对国内家电企业带来哪些变化?
势头强劲 苹果已成我国最大的西方软件卖家
四个半H桥驱动器集成电路MS8844参数
小米智能工厂的部分细节逐渐对外公布
与工业机器人相比,服务机器人具备哪些特点?