文献标识码: A
DOI:10.16157/j.issn.0258-7998.175047
中文引用格式: 张步高,马希直. 基于AD9910的信号源实时显示系统设计[J].电子技术应用,2018,44(8):94-97,101.
英文引用格式: Zhang Bugao,Ma Xizhi. Design of signal source real-time display system based on AD9910[J]. Application of Electronic Technique,2018,44(8):94-97,101.
0 引言
随着电子技术的发展,要求信号的频率越来越高且准确稳定。MAX038芯片仅可以满足一些低频率的需求,晶体振荡器虽然具有高准确度和高稳定度,但其频率变化范围很小且频率值不高,这些都很难满足在通信、测控等电子系统的需求[1-3]。而AD9910是一款采用ADI公司的DDS(Direct Digital Synthesizer)专利技术的直接数字频率合成器芯片,它集成了14位数/模转换(DAC),可以形成数字可编程、高频模拟输出的频率合成器,能够产生频率为400 MHz的正弦波形。用户可以访问用于控制DDS的信号控制参数:频率、相位和幅度。这款DDS使用32位累加器,可提供快速跳频和频率调节分辨率。其采样率为1 GS/s,调节分辨率为0.23 Hz[4]。
1 系统方案设计
整个系统由STM32F103RCT6模块、AD9910模块、12864显示模块、按键模块等构成,如图1所示。
下面分别对各个模块功能进行说明:STM32F103RCT6模块,该模块主要接收按键模块输入,控制AD9910产生所需频率和12864实时显示频率;AD9910模块,产生准确稳定的正弦波;按键模块,通过按键输入实现频率调整;12864模块,实时显示AD9910产生的频率,方便用户查看。
2 硬件设计
该系统电路原理图和PCB图都通过Altium Designer14软件绘制,下面分别对各个模块的硬件设计进行说明。
2.1 STM32F103RCT6模块
STM32F103RCT6是意法半导体公司基于ARM CM3内核的STM32系列中的一个产品,目前性价比很高。基于STM32F103RCT6芯片的控制模块包括最小系统(电源电路、时钟电路、复位电路、启动电路和JTAG下载电路)、与其他模块的接口电路和调试显示电路等,这里主要给出该模块与其他模块的接口部分,如图2所示。
2.2 AD9910模块
AD9910支持4种工作模式:单频调制模式、RAM调制模式、数字斜坡调制模式、并行数据端口调制模式。对于本系统,采用单频调制模式即可达到要求。依据单频调制模式,AD9910芯片的主要外围电路为:电源分组、参考时钟、单频控制接口、外部环路滤波器、输出低通滤波器。除电源分组以及其他一些无连接引脚和电源引脚外,相关电路如图3所示[5-6]。
需要说明一点的是,图3去掉了后续电路,与IOUT为互补输出,若想要其输出,其后续电路与IOUT后续电路完全一样。
下面分别对各部分进行说明:
(1)电源分组:对于典型应用,具体可分为4类:3.3 V数字、3.3 V模拟、1.8 V数字和1.8 V模拟。本文选择了常用的AMS117系列两个1.8 V芯片和一个3.3 V芯片,都通过5 V进行转化得到所需电压。其中两个1.8 V芯片分别为1.8 V数字和1.8 V模拟,3.3 V芯片为3.3 V模拟,通过10 μH电感得到3.3 V数字。且数字地与电源地相连,模拟地通过10 μH电感与电源地相连。对于有较高性能要求的应用可能需要增加电源隔离元件。
(2)参考时钟:由DDS的原理可知,整个DDS系统在一个统一的时钟信号即采样时钟下工作,该时钟的质量决定了最终输出波形频率的精度、稳定度以及输出信号的相噪[7]。由于有源晶振比无源晶振信号质量好,更加稳定,故选择40 MHz的有源晶振。值得注意的是,有源晶振输出端要根据需要串联一个阻值合适的电阻,一是为了减少谐波,二是为了阻抗匹配。如在调试过程中发现无必要串联电阻,可用0 ?赘电阻代替。使用有源晶振输入对于AD9910来说属于单端信号源输入,由AD9910官方资料进一步得知,REF_CLK/两个输入引脚前端都要接一个0.1 μF电容,且还要接地。
(3)单频控制接口:实现单频控制需要的引脚很少,相关引脚如下所述:
①MASTER_RESET引脚:该引脚为主机复位引脚,高电平有效。即在编程时对AD9910初始化时要进行一段时间的复位。
②串行I/O引脚:其中SCLK为串行时钟,CS为片选信号,SDIO为串行数据输入/输出。主要实现配置AD9910寄存器的作用。
③I/O_UPDATE引脚:该引脚为输入/输出更新引脚。主要用于将I/O端口缓冲器中写入的数据传输到有效寄存器。
④PROFILE[2:0]引脚:Profile是一个包含DDS信号控制参数的独立寄存器,AD9910共有8个Profile寄存器,每个Profile都能单独访问。即利用3个外部引脚(PROFILE[2:0])可选择想要的profile。
(4)外部环路滤波器:该部分主要是确定图3的R10、C32和C33这3个参数,在AD9910官方资料中提供了相关计算公式,但计算公式是建立在已知反馈分配系数(N)、鉴相器增益(KD)以及VCO增益(KV)的基础上,再由目标开环带宽(fOL)和相位余量来得出滤波器元件值。这样会带来一个问题就是求得的元件值可能不是常用值,无法购得。可以利用ADI提供的PLL环路滤波器工具[8]来进行选择。
在该工具中,R37、C13和C15分别对应图3的R10、C32和C33。由于本文选择的是40 MHz的晶振,想要达到1 GHz的系统时钟,故倍频因子为25。相位余量与ICP编程值(该值等于鉴相器增益KD)根据需要进行下拉选取。在DESIGN中选择相关参数后,CUSTOM中对应位置自动显示DESIGN参数或由其参数计算出的其他参数。然后选择R37、C13和C15参数,该工具中内置了一些参数可以下拉选择。本文选择R37为1 kΩ,C13为680 pF,C15为22 pF。这些数值在图3中都有所体现。
(5)输出低通滤波器:为了过滤高频干扰信号,需要在AD9910输出端接一个低通滤波器,可以利用滤波器设计软件Filter Solution设计出400 MHz的低通滤波器,在实际调试中发现使用低通滤波器后,输出波形更加平滑稳定。
2.3 12864模块与按键模块
12864模块为晶联讯液晶模块,本文在PCB设计中将12864模块和按键模块与STM32F103RCT6模块集成在一起,AD9910模块单独为一块PCB,并且为了节省空间,将STM32F103RCT6芯片放在12864模块下面。12864模块与按键模块原理图分别如图4、图5所示。
3 软件设计
软件设计总体思路是先对各个模块初始化,输出显示初始频率,然后读取键值,由键值确定下一步输出频率,再控制12864实时显示。软件流程图如图6所示。
3.1 AD9910串行编程
由于本设计采用的是单频模式,本文仅对本系统涉及的AD9910寄存器进行说明,如下所述:
控制功能寄存器1(CFR1)-地址0x00:将反Sinc滤波器使能位置1。
控制功能寄存器3(CFR3)-地址0x02:根据需求配制7位REFCLK PLL反馈分步器的分频模数,即N[7:1];PLL使能位置1;3位选取REFCLK PLL的电荷泵电流值(详见表1),即ICP[21:19];3位选取REFCLK PLL VCO的频段,即VCO SEL[26:24]。
单频寄存器Profile 0-地址0x0E:该寄存器涉及AD9910输出正弦波振幅、相位偏移以及频率参数的配置。
AD9910的一个串行通信周期可分为两个阶段。第一个阶段是指令阶段,将指令字节写入AD9910。指令字节包含要访问的寄存器地址以及定义即将进行的数据传输是读操作还是写操作,对本系统来说,全部为写操作。第二个阶段写入周期指从串行端口控制器向串行端口缓冲器传输数据。传输的字节数取决于访问的寄存器。具体一个串行通信周期程序如下程序所示:
片选信号CS要在通信周期开始前拉低,结束后拉高。但要注意的是,写入周期结束后,编程数据驻留在串行端口缓冲器中,处于无效状态,需要输入/输出更新引脚I/O_UPDATE产生一个上升沿将端口缓冲器中写入的数据传输到有效寄存器,且脉冲宽度必须大于1个SYNC_CLK周期,其中SYNC_CLK由四分频电路对系统时钟分频后获得。从IO_UPDATE=0到IO_UPDATE=1,即实现上升沿效果。由于STM32F103RCT6最大时钟频率为72 MHz,故可以直接将I/O_UPDATE拉低。AD9910串行端口支持最高有效位(MSB)优先和最低有效位(LSB优先)两种数据格式,此功能由控制寄存器1(0x00)中的位0控制,默认格式是MSB优先,一般不做修改。由串行I/O时序得出其写入数据程序,如下程序所示:
其中SID代表SDIO。
基于发送函数和一个完整串行通信周期,便可对AD9910的寄存器进行配置,本文将控制寄存器1中的反Sinc滤波器使能位置1,以避免频谱失真。控制寄存器2中全部取缺省值。将控制寄存器3中的PLL使能位置1,启动AD9910内部锁相环。控制寄存器3中的VCO SEL[26:24]等于PLL环路滤波器工具中的VCO Band Seclection值,ICP[21:19]等于PLL环路滤波器工具的Icp值在表1中的对应值,N[7:1]等于PLL环路滤波器工具中的Frequency Multiplication Factor值。其中VCO SEL[26:24]使用PLL_Loop_Filter_Tool.xls工具会自动帮助选取合适频段,按给定值配置即可。在配置寄存器和查看寄存器内部值时可以使用ADI公司的AD9910 Evaluation Software软件来辅助设计。
在配置了控制寄存器后,需要将初始振幅比例因子、相位偏移字、频率调谐字写入Profile0,进行初始输出波形振幅、相位以及频率的设置。其中振幅比例因子越大,输出振幅越大。本系统中相位偏移字设置为0,即无相位偏移。频率调谐字由以下公式计算得到:
得到频率调谐字后转化为对应字节数据发送到寄存器Profile0即可输出所需要的频率。需要说明的是,AD9910支持多种模式,由于其他模式未进行配置,在AD9910数据源优先级的机制下自动选择有效的Profile寄存器。
3.2 按键与12864软件设计
按键处理的特别之处在于采用一种新型按键扫描程序[9],无死循环延时等待机制。经过对该算法的研究,发现该算法可以同时适用分散引脚以及上拉、下拉两种方式的按键,且支持长按模式。下面仅列出其核心算法:
12864LCD显示的中英文字符点阵取自字库芯片GT20L16S1Y,具体显示时根据AD9910实时频率以及编辑位置取相关字符点阵进行显示。
4 实物系统验证
基于上述硬件设计与软件设计,设计出该信号源系统,为了验证该信号源所产生的信号实际效果,通过示波器采集其输出波形数据,其中示波器最大采样率为1 GSa/s,带宽为100 MHz。如图7的50 MHz波形和图8的100 MHz波形,输出波形准确稳定,达到预期效果。
5 结论
本文通过对AD9910信号源实时显示系统硬件设计与软件设计的分析,设计出了准确稳定的信号源系统,并且方便调节和扩展,读者可根据需要配置相关寄存器即可实现调幅、调相以及其他模式的波形输出。本文在调试过程中进行过双频频移键控的扩展,得到的效果很好。该系统实现的可调高频信号源可以满足大部分的工程应用,具有较高的实用价值。
参考文献
[1] 曾兴雯,刘乃安,陈建,等.高频电子电路[M].北京:高等教育出版社,2009.
[2] 李俊,谭秋林,崔永俊,等.基于AD9910的高频多模式信号发生器的设计[J].电视技术,2012,36(9):51-54.
[3] 孙伟超,汪定国,吴忠德.基于AD9910的调频信号发生器设计[J].国外电子测量技术,2011,30(10):76-79.
[4] Analog Devices Inc.AD9910 datasheet[EB/OL].(2017-02-23)[2017-12-10].http://www.analog.com/media/en/tech-nical-do-cumentation/data-sheets/AD9910.pdf.
[5] 杨小勇,毛瑞娟,许林华.基于FPGA的AD9910控制设计[J].电子设计工程,2011,19(2):150-153.
[6] 黄智伟.锁相环与频率合成器电路设计[M].西安:西安电子科技大学出版社,2008.
[7] 时慧.基于AD9910的线性调频信号发生技术[J].科技信息,2010(17):423-426.
[8] Analog Devices Inc.AD9910[EB/OL].[2017-12-10].http://www.analog.com/cn/products/rf-microwave/direct-digital-synthesis/ad9910.html#product-overview.
[9] LoriQian.新型的按键扫描程序[EB/OL].(2012-06-30)[2017-12-10].http://www.doc88.com/p-9992776518685.html.
作者信息:
张步高,马希直
(南京航空航天大学 机电学院,江苏 南京210016)