随着科学技术的发展,通信、测量等各个领域对信号源的要求越来越高,高速任意波形发生器成为市场的热点。高速DAC作为任意波形发生器的关键部分,其性能对高速信号有着极大的影响。AD9779A是目前国内能买到的性能较高的高速DAC芯片,内部集成PLL倍频电路、同步控制、增益控制等功能模块,通过SPI接口和外部通信,可以设置优化各种功能以达到最佳性能。
1 AD9779A简介
AD9779A是Analog Devices公司生产的双通道16位高速宽动态范围数DAC,采样率1Gsps,允许高至奈奎斯特频率的多载波生成。0.18μm CMOS工艺制作,工作电压1.8~3.3 V,采样率1 Gsps时功耗1 W,具有高速、低功耗的特点。AD9779A还包含低噪声高性能的PLL时钟倍频电路,可以减轻板级时钟输入的负担。AD9779A可以应用在无线基础设施(WCDMA/CDMA2000/TD/GSM)、数字频率合成、宽带通信等领域。
2 AD9779A的SPI通信方式
2.1 AD9779A的SPI接口简介
SPI总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信,以交换信息。通过AD9779A的SPI接口可以配置内部的寄存器,设置各种功能以达到设计要求。AD9779A的SPI接口支持单字节或多字节传输,包括高位优先和低位优先格式,由4根线组成,分别是:
①串行时钟(SCLK),作为数据输入输出的同步时钟,最大时钟速率40 MHz。输入数据在时钟的上升沿锁存,下降沿数据输出。
②片选信号(CSB),低电平开始通信周期并保持到通信周期结束,高电平时SDO和SDIO为高阻态。
③串行数据输入/输出口(SDIO),该引脚既可作为单向数据输入口,也可作为双向数据输入输出口,通过寄存器(0x00,bit7)控制,默认为单向数据输入。
④串行数据输出(SDO),作为数据输出口,SDIO配置为双向端口时,SDO为高阻态。
内部配置的任何改变会在最后一位写入后立刻生效,因此,当有多个字节写入到寄存器中时可以在一个通信周期中改变配置。同时,为了预防意外情况,改变寄存器配置时推荐使用单字节传输。
2.2 SPI接口操作
AD9779A的一个通信周期包括两个阶段。
第一阶段是指令周期(向设备写指令)与前8个SCLK的上升沿一致。指令字节规定串口控制器数据周期,也就是通信周期第二阶段的数据传输是读还是写,数据传输的字节数和第一个寄存器的地址。每个通信周期的前8个SCLK上升沿用来向设备写指令字节。
剩余的SCLK是通信周期的第二阶段。第二阶段是设备与MCU实际的数据传输阶段。每次可以传输1~4个字节,传输的字节数由指令周期决定。寄存器在每个字节的最后一位写入后立刻改变。
SPI指令如表1所列。
,决定是读操作还是写操作。逻辑1读操作。逻辑0写操作。
N1和N0决定数据传输周期中传输的字节数。N1、N0表示的字节数如表2所列。
A4~A0确定在数据传输时哪个寄存器可以被访问。在多字节传输时,这个地址是起始字节地址,其余寄存器地址由器件自动产生。最高位优先的寄存器配置时序如图1所示。
2.3 AD9779A的主要寄存器介绍
AD9779A内部有32个寄存器,每个寄存器8位,每位都有自己特定的功能。AD9779A的主要寄存器如表3所列。
3 AD9779A的寄存器配置
3.1 硬件设计
本文采用三星公司S3C2440作为为整个系统的控制芯片。S3C2440是ARM微处理器,它包含LCD控制器、SDRAM控制器、3通道UART、音频接口、USB控制器、2通道SPI等,其低成本、高性能的特点适用于各种嵌入式领域。S3C2440作为主设备对从设备AD9779A进行配置的硬件连接如图2所示。
S3C2440A的SPI接口可以和外部设备同时发送/接收8位数据,用一个时钟线来同步。当SPI是主机时,传输频率通过设定SPPREn寄存器的相应位来控制,最高速率应小于25 MHz。如果SPI是从属,其他的主机提供时钟。设置一个GPIO作为nSS,当程序写数据到SPTDATn寄存器时,如果ENSCK、SPCONn寄存器的MSTR被置位,SPI发送/接收操作会同时开始。在写字节数据到SPTDATn之前,nSS应该被激活。
SPI接口编程基本步骤如下:
①设置时钟波特率预分频寄存器(SPPREn);
②设置SPCONn配置SPI模块;
③设置一个GPIO引脚,其作为nSS,低电平片选使能;
④发送数据→检查数据传输准备标志(REDY=1)的状态,然后写数据到SPTDATn;
⑤接收数据→写数据0xFF到SPTDATn→确认REDY置1,然后读取缓存数据;
⑥nSS拉高,解除片选。
3.2 软件设计
软件设计主要实现S3C2440读写AD9779A寄存器的功能,为后面的PLL频带锁定做准备。在ARM Realview MDK环境下使用C语言编写软件。
4 PLL在环境温度下的频带优化锁定
AD9779A的PLL VCO(压控振荡器)有效运行范围1.0~2.0GHz,在这个范围内有63个频率重叠带,如图3所示。对于期望的VCO输出频率,有多个有效的PLL频带值供选择。但各个频带的锁定范围随温度的变化而变化。各个频带的中心频率随温度的升高而降低,随温度的降低而升高。每个器件在特定的温度下都有一个最优的PLL频带选择值,而且各个器件之间也有30~40 MHz的误差。因此,需要为每个器件选择合适的PLL频带值。
AD9779A具有PLL频带自动选择功能,当自动选择功能启用时,能得到一个PLL的锁定频带,通过SPI读取相应的寄存器得到该频带值,即当前温度下的优化频带。为了在整个温度范围内获得最佳的PLL性能,PLL必须用表4所列的设置。
4.1 使用温度传感器配置PLL频带
当器件在一个极端温度下启动,PLL自动模式下得到的频带值在另一个温度下可能无法保持锁定。AD9779A在-40~+85℃环境下的PLL频带配置方法如下:
①配置N1(Register 0x09,Bits[6:5])和N2(Register 0x09,Bits[4:3])。
②设置PLL频带值为63(Register 0x08,Bits[7:2]),开启PLL自动模式。
③等到PLL_LOCK引脚或PLL锁定指示器(Register 0x00,Bit1)变成高电平。这个过程大概5 ms。
④读回6位的PLL频带值(Register 0x08,Bits[7:2])。
⑤当PLL自动选择完成,根据温度,通过向(Register0x08,Bits[7:2])写入回读值来设置PLL频带。
这个过程要求在启动或复位时检测温度,以达到PLL频带值的最优化。如果最优频带在0~31范围内(低VCO频率),参考表5。
4.2 工厂校准模式设定PLL频带
如果没有温度传感器,可以在室温(约25℃±10℃)下进行工厂校准法。步骤如下:
①设置N1(Register 0x09,Bits[6:5])和N2(Register 0x09,Bits[4:3])。
②设置PLL频带值为63(Register 0x08,Bits[7:2]),开启PLL自动模式。
③等到PLL_LOCK引脚或PLL锁定指示器(Register 0x00,Bitl)变成高电平。这个过程大概5 ms。
④读回6位的PLL频带值(Register 0x08,Bits[7:2])。
⑤向非易失性存储器写入PLL频带值。系统上电或重启时,通过SPI载入PLL频带值到Register 0x08,Bits[7:2]。
4.3 PLL频带优化程序
结语
AD9779A在信号发生器中是数模转换的关键部分,实际使用中根据工程需要来配置AD9779A内部寄存器。经检验20℃当输入时钟为150 MHz,N1=2,N2=4时,PLL频带值稳定在010010(18),fvco范围为1 174~1 231MHz。输入时钟为100 MHz,N1=4,N2=4时,PLL频带值稳定在100111(39),fvco范围为1 564~1 639 MHz。SPI通信程序也可用于信号发生器的直流偏置和输出校准部分,从而简化系统的软件设计。