目录
摘要…1
Abstract…2
第一章绪论…3
1.1课题研究背景及意义…3
1.2设计内容…3
第二章 频率合成与DDS技术概述…5
2.1 频率合成技术概述…5
2.2 DDS基本原理和相位累加器…6
2.3 DDS优缺点及性能分析…8
第三章 芯片选型与使用方法…11
3.1 芯片选型综述…11
3.2 AD9850芯片的使用…11
3.2.1 AD9850的引脚定义…12
3.2.2 AD9850的控制字…13
3.2.3 AD9850的时序与工作…15
3.3 LCD12864的使用…17
第四章 电路构思及搭建…21
4.1 信号发生电路…21
4.2 LCD显示电路…23
4.3 按键控制电路…24
4.4 核心控制电路…25
4.5 电路搭建注意事项及小结…26
第五章 程序设计…27
第六章 设计结果及性能分析…31
6.1 频率特性
6.2 幅值特性
6.3 纹波抑制特性
参考文献
致谢
第一章绪论
1.1课题研究背景及意义
信号发生器是电子、电气实验的一件重要器材,它能够输出各种频率、幅值以及一些典型波形(如正弦波、方波、三角波)的信号,以满足被测试电路对于信号的各种要求。
随着电子科技的发展,对信号发生器的精度、频率特性和稳定性的要求越来越高,但同时工业上也希望同时能够以更低的成本完成更高的要求。目前,频率合成技术是信号发生器的主流设计方法[2], 即由一个或多个频率稳定度和精确度很高的参考信号源通过频率域的线性运算,产生众多与参考频率特性相近的新频率[3]。其中直接数字频率合成(DDS)是频率合成的一项新技术,于1971年由美国Joseph Tierney等3人首先提出[4],它响应快,频率分辨率高,理论上能够合成各种想要的波形,并且目前而言成本较低,非常适合用于信号发生器的设计。
美国ADI公司(Analog Devices, Inc)在制作DDS芯片处于行业领先地位,本设计将采用ADI公司的AD9850芯片,接入125MHz晶振时频率分辨率达到0.03Hz,可以输出正弦波,接入芯片内置比较器还可以输出方波,滤波后波形稳定不失真,可以满足平时实验中需求,并且与市场上的专业信号发生器相比,具有体积小,易于携带,只需电池供电,成本低等优点。
1.2设计内容
本设计的核心器件可以分成四部分:控制模块,信号发生模块,显示模块,按键控制模块。控制模块即单片机模块用于整个电路的控制,是整个设计的“大脑”,而信号发生模块则接受单片机的控制,受指令产生相应频率和波形的信号,显示模块则实现了人机交互功能,让我们得知整个信号发生器的运行状态,便于我们利用按键控制模块对于发生的信号进行调整。
整个设计各模块之间的关系如下图所示。
第二章频率合成与DDS技术概述
2.1频率合成技术概述
频率合成的定义为从一个或多个高稳定度、高精确度的参考频率产生众多新的频率。目前,这项技术广泛地应用于通信、雷达、仪器仪表等设备中[5]。
常见的频率合成方式主要有以下三种:
①直接模拟频率合成(DAFS);
这是最先出现的频率合成方式。这种合成方式是利用参考信号产生一系列谐波,然后从这些谐波之中取出一些频率,得到这些频率的和或差,然后再利用倍频器、分频器、混频器、滤波器这些器件直接进行各种运算,以得到所需的频率。
这种频率合成方式速度快,相位噪声低,但是由于使用了大量的倍频器、分频器、混频器,电路会比较复杂,并且由于上述器件的非线性特性,杂散抑制比较难,另外无论是体积、重量、耗电都会比较大,目前而言这种频率合成技术的应用范围已经比较窄。
②锁相频率合成(PLFS);
这种频率合成技术是由于锁相技术的发展而产生的,核心即是锁相环。锁相环是一种典型的反馈电路,输出信号的频率能够自动跟踪输入信号。它的原理是输出信号通过反馈回路接到鉴相器上,由鉴相器比较输入信号和压控振荡器输出信号之间的相位差,产生一个误差控制电压以控制压控振荡器的输出,使其输出信号频率于输入信号相等[6]。
锁相频率合成器的基本结构如图2-1所示:
频率为f0的晶体振荡器通过一个m倍分频器产生一个基准频率作为锁相环的输入信号[7],即输入信号的频率为f0/m,锁相环的反馈回路之中再串入一个n倍分频器,设输出频率为f,则反馈给鉴相器的频率为f/n ,由于反馈回路的作用,鉴相器的两个输入端频率应当相等,即得到等式:
对等式进行变形,得到锁相环压控振荡器的输出频率为:
理论上,只要改变m和n两个参数,便能够输出任意频率。
相对于直接模拟频率合成器来说,锁相频率合成器的结构比较简单,体积和重量也小了很多。由于锁相环回路中存在低通滤波器,因此对杂散的抑制比较好。但与此同时,锁相频率合成器的最大缺点是转换时间比较长,通常大于1毫秒,这是由于反馈环节的惯性所致。
③直接数字频率合成(DDS)
七十年代DDS的出现使频率合成进行了一场革命,它直接从相位概念出发,进行全数字的频率合成,具有低成本、高分辨率、转换时间快等优点[8],得到了广泛的运用。
详见2.2及2.3节。
2.2DDS基本原理和相位累加器
直接数字合成技术(DDS)的基本原理之一是时域Shannon采样定理(又称Nyquist采样定理),即最大频率为F的连续信号f(t),如果以2F的采样频率对其进行等间隔采样,则我们将采样到的离散信号可以无失真地完全恢复为原来的连续信号[9]。DDS就相当于一个将离散信号恢复为连续信号的过程,它实际上输出一系列离散的与相位对应的点,每隔一个周期更新一下与相位对应的电平,表现在实际输出便是阶梯信号,示意图见图2-2。这个阶梯信号再通过一个理想的低通滤波器便能够得到一个连续的我们想要的信号。
从上述叙述可知,关键是需要找到一个方法,使每一个相位的输出幅值能够正确对应。我们可以通过纯软件的方法来实现,即“查表法”,在0-360°的相位和幅
值之间建立一个映射,利用软件模拟所需频率的相位-时间函数,再通过D/A转换,输出端口在对应相位就能够输出正确的幅值,相位间隔取得越小,输出波形便能更接近理想状态。
DDS的原理与纯软件的“查表法”十分类似,它也拥有一个查询表,只要我们在查询表内输入每一个相位对应的幅值,便能够输出我们想要的波形,只不过不同于纯软件方法,DDS对于相位-时间函数的确定是通过相位累加器来实现的(不同频率拥有不同的相位-时间函数),这是DDS的核心部件。除去查询表和相位累加器两个部件,DDS还需要D/A转换器、低通滤波器、高稳定度晶体振荡器这三个部分。
相位累加器由N位加法器和N位寄存器组成,其中位数N决定了相位的精度,它与晶振频率共同决定了频率分辨率。具体来说,寄存器中的数据000…0到111…1代表了相位0°到360°(均匀分割),那么相位的精度可以表示为:
先给一个频率控制字K,每隔一个晶振周期,加法器将寄存器中的数据与频率控制字相加,再返回给寄存器,这经过一个晶振周期相位便增加:
重复上述过程,相位随着晶振重复累加φK,合成信号的相位由此确定,当累加器溢出时,合成信号的一个周期便宣告完成,寄存器舍去N+1位,并继续累加的过程。改变K的值,便能改变合成信号的频率,当控制字K的值越大,相位累加的速度越快,输出信号的频率便越高,反之亦然。
不过,虽然寄存器的数据和实际相位是一一对应的,但是寄存器中存储的数据并不直接等于相位,因此在查询表中,我们建立的映射其实是寄存器的数值与幅值数据的映射,或者可以这么说,寄存器的数据可以当作一个地址,对查询表进行寻址便能得到有效的幅值信息。
如果是合成正弦波,这个过程还可以简化为图2-3。将一个圆分成2N等份,则寄存器的数值便能和圆上的角一一对应,这个角便是输出信号的相位。当控制字为K时,角度即为φK,相位每隔一个晶振周期便增加φK。以圆心为原点,以0°射线为x轴,90°射线为y轴,每个相位的输出幅值便等于这个相位对应圆上点的y轴坐标。
输出的幅值信息通过D/A转换便能得到一个合成信号,每有一个输入晶振脉冲,输出信号便更新一次,这样就得到了和理想信号十分类似的阶梯波信号,再经过低通滤波器,使信号变得平滑,并滤除不需要的信号分量,便能够得到理想的信号。
2.3DDS优缺点及性能分析
DDS作为第三代频率合成技术,采用全数字合成,与其他频率合成方式相比有着无可比拟的优势。
DDS的优点如下:
①波形输出任意。理论上而言,只要在查询表内输入不同的幅值数据,就能够得到任意的波形;
②转换速率极快。相对于锁相环频率合成,DDS是一个开环的系统,没有任何反馈环节,这一点使DDS的转换速度快很多。另外,一般DDS的输入晶振都能达到MHz级别,甚至GHz级别,而转换速率又直接和晶振速率相关,这一点也使得DDS的速度得到加快;
③频率分辨率高。频率分辨率同时受相位累加器位数N和输入晶振频率fCLK影响,由式2-3可以推导出,DDS的频率分辨率为:
理论上,相位累加器位数N越大,输入晶振频率fCLK越高,DDS的频率分辨率便越高。目前,DDS的分辨率量级普遍能达到1mHz量级甚至更小,和其他类型频率合成器相比拥有无可比拟的优势;
④频带宽。由Shannon采样定理可得,理论上能够得到最高fCLK/2的合成频率,实际上由于输出杂散和滤波器等器件限制,大概最高能得到40%左右的合成频率。最小频率由式2-5可得,为fCLK/2N;
同时,DDS工作原理本身和目前的器件能力限制也会导致一些缺陷:
①杂散和噪声大。这是目前DDS的最大问题之一,当合成频率越高,这个问题越严重,主要由三个因素引起:
一是相位截断[10]。一般为了使频率分辨率足够小,相位累加器的位数N都会取的比较大,然而N取的越大,查询表所需的ROM大小就呈指数性增长,以一个相位对应2个字节的幅值数据,N=32为例,这样查询表所需ROM空间大小则为:
这样的大小在ROM里显然不可行,而且即使在DDS系统内能够放入这么大的ROM,表内查找的时间可能会非常漫长,根本无法跟上晶振的速度。因此,目前在DDS之中普遍采取了相位截断的方法,即当相位累加器中数据位数比较大的时候,只保留高位,舍去低位[11],这样损失了一定精度但是查询表所需ROM空间大大缩小。以一个14位的查询表为例,当相位数据在14位以下时,正常查表,当相位数据位数M高于14时,高14位的数据被保留,而低(M-14)位的数据则被截断,这样随着相位累加器位数增长,查询表所需空间不再是指数增长而是线性增长;
二是量化幅度误差。模拟量要完全精确表示需要无限长的数据,由于ROM容量是有限的,查询表中的幅值数据不是一个完全精确的值,只能是由有限位数的代码来近似表示,因此量化幅值数据时需要进行一定位数的舍弃;
三是D/A转换误差。DAC的分辨率是有限的。
②输出频率上限有限[12]。一个DDS输出的上限频率由晶振输入决定,之前已提及,约为输入晶振频率的40%,但是输入晶振频率并不能无限增大,因为ROM、DAC等器件的工作速度是有限制的,晶振频率必须要跟这些器件匹配。
第三章芯片选型与电路搭建
33.1芯片选型综述
在1.2节,已经阐明整个设计由控制模块,信号发生模块,显示模块,按键控制模块这四个部分组成,本节将具体阐述每个部分采用的芯片或元件及其理由。
①控制模块:
选用了意法半导体(STMircoelectronics)公司的STM32F103C8T6芯片。STM32系列芯片采用了目前最为先进的ARM内核,并且成本较低,性价比很高,资料丰富便于学习和调试,现在在嵌入式开发领域十分流行。这款芯片能满足此次设计的要求,引脚数量和内存容量够用并能留有一定裕量,并且一块核心板的成本只需要20元左右。
②信号发生模块:
选用了ADI公司(Analog Devices, Inc)的AD9850芯片。AD公司在DDS技术上投入了相当大的研究力量,目前已经生产出AD9833,AD9851,AD9956等一系列型号产品,能满足不同类型的需求,其中AD9850价格适中,性能优秀,输出频率分辨率能够达到0.0291Hz,符合此次设计的要求。
③显示模块:
选用了LCD12864。这款显示屏拥有中文字库,支持串行/并行输入,四行显示。
④按键控制模块:
选用了4个常见的常开按键开关,与STM32四个引脚相连,不操作时通过下拉电阻接地,摁下时接3.3V电源。
3.2AD9850芯片介绍
AD9850由美国ADI 公司1996年推出,该芯片采用SSOP-28封装,工作温度-40℃~85℃,是一款可完全数字编程的高集成度、高性能的直接数字频率合成器[13],当接上一个精准的时钟信号时,AD9850便能产生一个频谱纯净的正弦波,而且频率和相位皆可由程序控制。芯片最大输入时钟频率125MHz,当接入这个时钟时,可以输出的频率为0.0291Hz-40MHz,分辨率为0.0291Hz。芯片还内置有比较器,将输出的正弦波接到比较器上,便可以输出与正弦波频率、相位一致的方波。AD9850支持串行和8位并行两种输入方式,可以自由选择。
3.2.1AD9850的引脚定义
AD9850的引脚如图3-1所示我
引脚号 名称 功能
41/2528 D0~D7 用于控制字输入,D0~D7可以进行8位并行输入,其中D7口可以单独用于串口输入
5/24 DGND 数字地
6/23 DVDD 给数字电路供电
7 W_CLK 并行:载入D7~D0共8位至输入寄存器
串行:载入控制字中的D7至输入寄存器
上升沿有效
8 FQ_UD 频率更新。将40位控制字从输入寄存器载入至数据寄存器,并将地址指针初始化至开头
9 CLKIN 时钟输入
10/19 AGND 模拟地
11/18 AVDD 给模拟电路供电
引脚号 名称 功能
12 RSET DAC外接电阻,可以设定DAC输出电流大小(即IOUT口最大输出电流),IOUTM=32(1.248V/ RSET)。典型值3.9K,电阻另一端接地。
13 QOUTB 内部比较器的互补输出
14 QOUT 内部比较器的真实输出
15 VINN 内部比较器负输入
16 VINP 内部比较器正输入
17 DACBL DAC参考电压,通常悬空
20 IOUTB DAC的互补输出,即互补正弦波电流输出
21 IOUT DAC的实际输出,即实际正弦波电流输出
22 RESET 复位端,高电平有效,且不低于5个参考时钟周期。
3.2.2AD9850的控制字
AD9850的控制字共40位,其中32位用于频率控制,5位用于相位控制,2位用于选择工作模式,1位用于电源管理,具体见表3-2。
载入字
(载入先后顺序排列) D7 D6 D5 D4 D3 D2 D1 D0
W0 P4 P3 P2 P1 P0 电源 W1 W0
W1 F31 F30 F29 F28 F27 F26 F25 F24
W2 F23 F22 F21 F20 F19 F18 F17 F16
W3 F15 F14 F13 F12 F11 F10 F9 F8
W4 F7 F6 F5 F4 F3 F2 F1 F0
(说明:P代表相位控制字,F代表频率控制字,W代表工作方式控制字,后面的数字n代表该功能控制字的第n位)
下面将具体叙述控制字4个部分的使用:
①频率控制:
共32位,为控制字的b31~b0部分。设晶振输入频率为fCLK,由式2-4推导可得,当所需频率为f时,频率控制字应设为:
由此可以推导出AD9850的频率分辨率为:
②相位控制:
共5位,为控制字的b39~b35部分。设相移为φ,这5位控制字与相移应满足下式:
以相位控制字01110为例,此时φ=90°+45°+22.5°=157.5°
③电源管理:
共1位,为控制字的b34。当b34=1,DAC内部时钟失能,输出为0,当b34=0,DAC内部时钟使能,正常输出。
④工作方式控制:
共2位,为控制字的b33和b32。当这两位都为0时,输入为并行模式,D0~D7同时进行输入;当这两位都为1时,输入为串行模式,只有D7一个端口用作输入;另外两种组合方式01和10为工厂测试使用,实际使用芯片时最好不要 这两个工作方式,否则可能会带来难以预料的结果。
b33b32 功能
00 并行输入
11 串行输入
01 工厂保留
10 工厂保留
3.2.3AD9850的时序与工作
①并行方式:
每当W_CLK得到一个上升沿,D0~D7便一次性并行读入8位数据,存入输入寄存器,当W_CLK上升沿重复5次,则40位控制字都已经读入,此时W_CLK上升沿不再生效,直到得到复位信号或者FQ_UD得到一个上升沿。其中如果FQ_UD得到上升沿,则40位控制字从输入寄存器载入到数据寄存器,经过时间tCF后DAC输出频率和相位得到更新。
无论是复位还是FQ_UD生效,输入寄存器的指针均初始化,即均指向第一个输入寄存器,因此在上述两种信号生效后,都可以进行重新输入控制字的操作。
②串行方式:
串行工作方式并不是默认的,所以并不能一开始就通过D7口串行通讯,必须进行配置,具体方式见图3-3,首先利用并行方式载入一个控制字W0,这个控制字只有后三位有效,由表3-3可得,要设为串行工作方式这3位应设为011。一般来说,这一步骤通过将D2接地,D1、D0接高电平的方式来实现,如图3-4所示。
采用上述电路后,W_CLK给一个上升沿,之后FQ_UD也给一个上升沿,芯片便能进入串行模式。
串行模式配置完毕后,便可通过D7口进行控制字的输入,时序图见图3-5。
与并行模式相反,串行模式的输入是从低位开始的,即从b0开始直到b39。W_CLK每得到一个上升沿,芯片便从D7口接收一个数据,重复40次便得到了一个40位的控制字,之后给FQ_UD一个上升沿这个控制字便能载入到数据寄存器,芯片的输出频率和相位得到更新。
其中必须要注意一点,在串行模式使能时,b32和b33这两个工作方式控制位都应设为1,但是在串行输入时,这两位都应设为0。