1)实验平台:正点原子开拓者FPGA 开发板
2)摘自《开拓者FPGA开发指南》关注官方微信号公众号,获取更多资料:正点原子
3)全套实验源码+手册+视频下载地址:正点原子资料下载中心 - 正点原子资料下载中心 1.0.0 文档
![692f15344ca85d8f87ec14dc4d089a89.png](https://i-blog.csdnimg.cn/blog_migrate/50832fc354a86ef7e150db25f69b3854.png)
第五十章 高速AD/DA实验
我们在“AD/DA实验”中学习了如何使用PCF8591芯片实现模数-数模转换的功能。PCF8591
芯片采用IIC总线控制方式,其模数转换和数模转换的速度较低,只能应用于对转换速度要求
较低的场合,而对于转换速度要求较高的场合(如高速数据采集卡、DDS信号发生器等),只
能使用高速AD与DA转换芯片。本章我们将使用高速DA芯片实现数模转换,产生正弦波模拟电压
信号,并通过高速AD芯片将模拟信号转换成数字信号。
本章包括以下几个部分:
50.1 高速AD-DA简介
50.2 实验任务
50.3 硬件设计
50.4 程序设计
50.5 下载验证
高速AD/DA简介
本章我们使用的AD-DA模块是ALIENTEK推出的一款高速模数-数模转换模块(ATK-HS-ADDA),
高速AD转换芯片和高速DA转换芯片都是由ADI公司生产的,分别是AD9280和AD9708。
ATK-HS-ADDA模块的硬件结构图如下图所示
![730623944f9966b31476c476a70adbdf.png](https://i-blog.csdnimg.cn/blog_migrate/364295341930423432a6c2a8273b966f.png)
图 50.1.1 ATK-HS-ADDA模块硬件结构图
由图 50.1.1可知,AD9708芯片输出的是一对差分电流信号,为了防止受到噪声干扰,电
路中接入了低通滤波器,然后通过高性能和高带宽的运放电路,实现差分变单端以及幅度调节
等功能,使整个电路性能得到了最大限度的提升,最终输出的模拟电压范围是-5V~+5V。
AD9280芯片的输入模拟电压转换范围是0V~2V,所以电压输入端需要先经过电压衰减电路,
使输入的-5V~+5V之间的电压衰减到0V~2V之间,然后经过AD9280芯片将模拟电压信号转换成数
字信号。
下面我们分别介绍下这两款芯片。
AD9708芯片
AD9708是ADI公司(Analog Devices,Inc.,亚德诺半导体技术有限公司)生产的TxDAC系
列数模转换器,具有高性能、低功耗的特点。AD9708的数模转换位数为8位,最大转换速度为
125MSPS(每秒采样百万次Million Samples per Second)。
AD9708的内部功能框图如图 50.1.2所示:
![278f502747bc8369c69fb0430bafddcb.png](https://i-blog.csdnimg.cn/blog_migrate/70ae69e3a027ae2a7a76a361a59ba3c6.png)
图 50.1.2 AD9708内部功能框图
AD9708在时钟(CLOCK)的驱动下工作,内部集成了+1.2V参考电压(+1.20V REF)、运算放
大器、电流源(CURRENT SOURCE ARRAY)和锁存器(LATCHES)。两个电流输出端IOUTA和IOUTB
为一对差分电流,当输入数据为0(DB7~DB0=8’h00)时,IOUTA的输出电流为0,而IOUTB的输
出电流达到最大,最大值的大小跟参考电压有关;当输入数据全为高点平(DB7~DB0=8’hff)
时,IOUTA的输出电流达到最大,最大值的大小跟参考电压有关,而IOUTB的输出电流为0。
AD9708必须在时钟的驱动下才能把数据写入片内的锁存器中,其触发方式为上升沿触发,
AD9708的时序图如下图所示:
![9cbd1cd499e99bb884bf7f9463ff7417.png](https://i-blog.csdnimg.cn/blog_migrate/517cf062e57a44ce7df2b054300a4d79.png)
图 50.1.3 AD9708时序图
上图中的DBO-DB7和CLOCK是AD9708的8位输入数据和为输入时钟,IOUTA和IOUTB为AD9708
输出的电流信号。由上图可知,数据在时钟的上升沿锁存,因此我们可以在时钟的下降沿发送
数据。需要注意的是,CLOCK的时钟频率越快,AD9708的数模转换速度越快,AD9708的时钟频
率最快为125Mhz。
IOUTA和IOUTB为AD9708输出的一对差分电流信号,通过外部电路低通滤波器与运放电路输
出模拟电压信号,电压范围是-5V至+5V之间。当输入数据等于0时,AD9708输出的电压值为5V;
当输入数据等于255(8’hff)时,AD9708输出的电压值为-5V。
AD9708是一款数字信号转模拟信号的器件, 内部没有集成DDS(Direct Digital
Synthesizer,直接数字式频率合成器)的功能,但是可以通过控制AD9708的输入数据,使其
模拟DDS的功能。例如,我们使用AD9708输出一个正弦波模拟电压信号,那么我们只需要将
AD9708的输入数据按照正弦波的波形变化即可,下图为AD9708的输入数据和输出电压值按照正
弦波变化的波形图。
![b88d54ab25c7d023ed467be52c162d7a.png](https://i-blog.csdnimg.cn/blog_migrate/25a4edd6f18de2f63603811035b8655b.png)
图 50.1.4 AD9708正弦波数据(左)、电压值(右)
由上图可知,数据在0至255之间按照正弦波的波形变化,最终得到的电压也会按照正弦波
波形变化,当输入数据重复按照正弦波的波形数据变化时,那么AD9708就可以持续不断的输出
正弦波的模拟电压波形。需要注意的是,最终得到的AD9708的输出电压变化范围由其外部电路
决定的,当输入数据为0时,AD9708输出+5V的电压;当输入数据为255时,AD9708输出-5V的电
压。
由此可以看出,只要输入的数据控制的得当,AD9708可以输出任意波形的模拟电压信号,
包括正弦波、方波、锯齿波、三角波等波形。
在了解完高速DA转换芯片后,接下来我们介绍下高速AD转换芯片AD9280。
AD9280芯片
AD9280是ADI公司生产的一款单芯片、8位、32MSPS(Million Samples Per Second,每秒