可编程逻辑
信号源输出信号可作为标准信号和用户自定义信号而成为电气电子各领域,如自动控制、通信电子、电子对抗、航空航天等,以及科研测试中必不可少的电子测量和计量设备。随着科学技术的不断提高,对信号源的频率精度和稳定度、频率范围等要求也越来越高。
传统信号源通常利用石英晶体振荡电路、RC振荡电路或LC振荡电路实现,电路构造复杂、频率范围较窄、精度和稳定度较低、且调节不方便、电路易于损坏、维护困难。目前直接数字频率合成器DDS(Direct Digital Frequency Synthesizer)是一种主流的频率源合成技术。 DDS具有频率分辨率高、频率切换时间短、相位变换连续、可靠性高等优点。现有基于DDS技术的信号源实现方案可分为两大类:(1)以DDS专用芯片为核心,单片机为控制模块。(2)以FPGA为核心完成DDS功能,单片机作为控制部分。由于DDS专用芯片并不具备LFM功能,而且只能以固定的方式工作,因此第一种方案缺乏灵活性。第二种方案涉及两种编程语言一一汇编语言和硬件编程语言,显然增加了方案的难度和复杂度,同时硬件系统也较复杂,不利于扩展与维护。
文中根据DDS原理,以FPGA为核心,辅以简单的外围电路完成数控信号源的方案设计,各功能模块利用VHDL语言设计,在FPGA中实现。设计方案既简单方便、易于实现且灵活。
1.1 设计方案
设计方案如图1所示,包括DDS、DAC、LPF、放大、幅度控制、频率设置、波形选择和显示等模块。其中,DDS模块是核心部分,用于产生各种波形数据。DAC及LPF模块将DDS输出的波形数字值转换成模拟值,并通过低通滤波得到平滑的波形信号。幅度控制模块则控制输出波形的幅度。频率设置模块控制输出波形的频率,可采用数控方式调节。显示模块可显示输出波形频率和波形种类。
图1中的DDS模块、频率设置、波形选择、显示控制模块均在FPGA上实现,用VHDL语言完成设计,只有DAC、LPF、放大、显示器件和输入器件需要外接电路实现,因此硬件系统较为简洁。
1.2 工作原理
设计的基本原理是DDS技术。DDS是基于查找表思想,事先把波形数据存储于ROM表中,然后相位累加器输出作为地址信号,读出波形数据。但为避免因累加器溢出后下次累加舍掉余值而产生的频率误差,以及累加器高位不同步引起的竞争冒险问题,文中根据李晓芳等人提出的DDS算法优化思路来设计DDS结构。设计的DDS结构如图2所示。相位累加器在系统时钟fclk的作用下,以频率控制字Fword在为步长不断累积,其溢出信号pvo作为地址信号发生器的时钟。地址信号发生器实际是以pvo为触发脉冲的计数器,其输出信号作为ROM表的地址信号。图2中同步寄存器的作用是保证频率字改变时不会影响累加器的正常工作。
系统中循环相位累加器、ROM表和地址信号发生器是关键部分,它们直接决定系统性能。
2.1 相位累加器结构设计
为得到足够高的分辨率,文中循环相位累加器字长取32位。但是,若直接采用32位串行加法器作为累加器,则引入的延迟较大,从而大大降低系统的工作速度。为此,文中采用超前进位原理和流水线技术设计32位循环累加器,其原理框图如图3所示。每4位超前进位加法器作为一个基本单元,4个4位超前进位加法器组成16超前进位加法器,并且将入流水技术加入16位超前进位加法器中。最后再将两个16位加法器组成32位加法器,如图3所示。
2.2 ROM查找表设计
理论上,一个周期内样点数越多,输出的波形精度越高。但样点数越多,需要的存储空间也越多。为了得到一定精度的波形,又不希望大幅度地增加存储容量,人们提出如下方法:(1)利用CORDIC及其改进算法来设计DDS。(2)根据抽样定理,存储最少的样点数,每个周期采用固定的样点数。(3)利用波形的对称性来减少ROM,如正弦波只需存储前1/4周期的波形数据。
ROM查找表设计的标目是减少ROM的容量,同时不能过多增加系统的复杂度。根据采样定理,每个波形周期只需采样45°,135°,225°,315°相位点对应的4个样值,就可以无失真地重构模拟波形信号。为保证波形质量,文中每个周期固定采样32个点,则3种波形有96个样点,每个样点用8为二进制数表示,则共需要768 bit。因此,地址信号发生器可设计为32进制的计数器。
ROM查找表结构如图4所示,其中头N个样值为正弦波数据,最后N个样值为三角波数据,中间是方波数据。若要输出正弦波,则从第1个存储单元开始查找;要输出方波,则从第N+1个单元开始查找,依次类推,图中N取32。
传统DDS技术中随着波形频率的增加,采样点数明显减少,使得波形质量也大大降低。采用这种方法,不管输出波形多大,采样点数都是固定的,从而避免以上问题。
2.3 地址信号发生器的设计
考虑到ROM的结构和每周期采样点数相同的需要,设计的地址信号发生器需要在提供ROM寻址的同时完成波形选择的功能。当波形选择键“wave”按下时,完成波形种类选择功能。波形种类转换采样状态机来完成,其状态图如图5所示。图中共有4种状态S00,S0,S1,S2。当复位信号有效时为S00状态,此时输出正弦波,否则每当按下“wave”键就从当前状态转换到下一状态。状态S0输出正弦波,状态S1输出方波,状态S2输出三角波。当“wave”键没有按下,且相位累加器溢出时,地址信号发生器就是一个N进制的计数器,使ROM表顺序地读出当前波形数据。
2.4 外围电路的实现
外围电路包括幅度控制、显示以及输入模块等部分。
幅度控制通过调节比例放大电路来实现。显示模块由LED数码管和指示灯组成,其中8位数码显示频率,指示灯显示波形种类。用动态扫描方式依次点亮8位数码管。
输入模块用于输出波形选择和波形频率设置,均由4×4键盘完成。波形选择只用一个按键完成,按下后循环选择“正弦波→方波→三角波→正弦波”,同时输出相应波形种类指示灯信号。
根据系统中DDS结构,输出波形的频率为
式(1)中,fclk为系统时钟频率;Fword为频率控制字;Mode为相位累计器的模,N为每种波形数据的字长。由于fclk,Mode,N均为定值,所以输出频率与相位控制是比例关系,可用一个乘法器来实现。文中取fclk=50 MHz,Mode=5×107,N=32,则f0=Fword/32,输出波形频率精度为0.03 Hz。根据采样定理,输出频率f0最高为fclk的1/2,但是实际上f0低于fclk的40%时,输出波形的稳定性才比较好。
键盘电路如图6所示,由键盘、键盘控制和按键处理3部分组成。键盘控制完成键扫、按键去抖和按键标志产生功能。按键处理部分对数字键和功能键的处理。频率设置时,输入的数字作为波形的输出频率,并转换成对应的频率控制字送入DDS模块。设置频率的同时,输入的设置值送入显示模块显示。
按键说明:“←”键表示删除最后一位输入的数字,“esc”键表示放弃当前输入的数字,“#”键表示确定输入,“wave”键表示波形种类选择,“reset”键为复位键,“clear”键为清零键。输出频率设置操作为从键盘输入需要输出的频率值,最后按下确认键“#”即可。
在QuartusIl开发平台中,将在FPGA中实现的各个模块连接起来得到系统顶层模块,其仿真结果如图7所示。仿真时系统时钟频率设置为与硬件系统时钟一样fclk=50 MHz,则时钟周期为20 ns。图7是在Mode=5×107,N=32,Fword=(E883CO)H时的仿真结果,其中图7(a),图7(b)和图7(c)分别是正弦波、方波和三角波的仿真波形,从仿真图中观察它们的波形周期均为2.1μs,即换算成频率是476.190 kHz。从图7(b)和图7(c)看出,波形转换快速,只需6个时钟周期即约为12.3μs。
系统FPGA芯片采用EP2C8Q208,系统时钟50 MHz。D/A转换采用8位无符号DAC0832集成电路,低通滤波器采用LM324集成电路和RC网络组成的有源低通滤波器。
系统仿真正确后,将设计代码下载到FPGA芯片中,然后用示波器测试输出波形结果如图8所示。其中图8(a)是在频率控制字与仿真图一致时,示波器的测量结果。从图8中看出,系统能够正确输出正弦波、方波和三角波,而且输出频率为7 MHz时波形质量依然良好。
介绍了一种基于FPGA和DDS技术的数控信号源的设计和实现方法,并给出系统仿真和硬件测试结果。设计方案主要在FPGA芯片内实现,外围电路简单。设计的系统能够输出正弦波、方波和三角波,输出波形在整个频率范围内波形质量均好,精度达0.03Hz。
全部0条评论
快来发表一下你的评论吧 !