赵丽娜,郭宝增,刘少鹏,马 韬
(河北大学 电子信息工程学院,河北 保定 071002)
DDS(Direct Digital Frequency Synthesis)即直接数字式频率合成,是从相位概念出发直接合成所需波形的一种频率合成技术[1]。与传统信号源所采用的用模拟方式生成信号不同,它是将先进的数字信号处理理论与方法引入信号合成领域。DDS技术在精确度、灵活度等方面都超过模拟信号发生器。并且DDS可实现相位连续变化,且具有良好频谱的信号,这是传统方法无法实现的。
FPGA的迅速发展为DDS提供了更加优良的技术手段,它具有处理速度快、可靠性高等特点。SOPC(System On Programmable Chip,片上可编程系统)是一种灵活、高效的SOC解决方案[2]。它以IP Core为基础,将处理器、存储器、IO口等系统设计需要的功能模块集成到一个FPGA器件上,构建成一个可编程的片上系统,具有灵活的设计方式。本设计综合以上软硬件可编程协同设计技术,使得DDS电路在灵活性,可行性,精确性等方面得到很大提高。
DDS信号发生器是由:频率控制字、相位累加器、ROM表、D/A转换器以及模拟低通滤波器LPF组成.原理框图如图1所示。
图1 DDS原理图Fig.1 DDS schematic
首先对波形的一个周期进行连续采样,通过计算得到每一点对应的幅度值,然后以二进制格式存放在数据文件中。在时钟脉冲fclk驱动下,每个时钟周期内频率控制字与相位累加器累加一次,产生ROM查找表的地址值,随后通过查表变换,地址值被转化为信号波形的数字幅度序列,即可得到幅度上离散的波形,再由数模变换器(D/A)将表示波形幅度的数字序列转化为模拟量。最后经由LPF将D/A输出的阶梯状波形平滑为所需的连续波形。理论上,采样点数越多,生成波形精确度越高[3]。
本设计在Altera的EP2C35F672C8芯片的基础上,在SOPC Builder和QuartusⅡ开发环境下,利用SOPC技术,在FPGA中集成Altera的嵌入式软核处理器NiosⅡ和其他外设,将硬件系统与软件集成在单一可编程芯片中,从而实现片上的系统级设计。系统框图如图2所示[4],由DDS基本单元(由频率控制字,相位累加器,ROM,DAC,LPF 构成),FPGA 外部硬件资源(拨扭开关 SWITCH、键盘 KEY、LCD12864)和 NiosⅡ处理器系统等构成了基本电路。四位拨扭开关选择输出波形,键盘控制输出波形信号频率,LCD12864显示波形信号参数,各硬件模块之间的协调工作通过NiosⅡ微处理器在图形化开发环境NiosⅡIDE下用C语言来编程实现控制。
图2 系统结构示意图Fig.2 System structure schematic
通过对DDS基本原理的分析得知只需更换波形存储器中的波形采样数据,就可以得到所需波形的信号。波形数据存储方式包括顺序存储方式和间隔存储方式[5],本设计采用顺序存储方式将方波,三角波,正弦波,锯齿波4种波形采样数据全部依次存储在一个查找表里,数据分布情况如表1所示。通过改变寻址首地址,并在该波形数据存储地址范围内循环寻址,从而实现对所需信号波形的输出。具体实现方法在累加控制模块中有介绍。
表1 查找表数据分布图Tab.1 Look-up table data distribution
DDS模块中的波形数据存储器是用QuartusⅡ中的MegaWizard Plug_In Manager工具添加的LPM_ROM IP核,此存储器ROM是用波形存储文件.mif进行初始化,波形数据可以用matlab等工具生成,用matlab生成4种波形的波表数据程序如下:
由以上代码生成的.mif文件即可在E盘目录下找到,将.mif文件加载到ROM中,实现对ROM的初始化。
累加控制模块如图3所示,为了实现波形选择性输出,本设计在累加控制部分增加了选择器,即图3的sel模块,作为系统寻址地址的高两位,实现对波形查找表的范围选择功能。累加器Altaccumulate0的输出做为累加控制模块的低32位的输出,实现在指定范围内对查找表进行寻址。此设计方法相当于做了一个多路数据选择器 。四位拨扭开关作为sel模块的输入控制,将寻址地址转换成所需波形首地址,即可实现对波形选择的控制。Adder模块将sel和Altaccumulate0模块输出进行位拼接运算。其部分代码如下:
设计中为了节省ROM的容量而采用相位截断的方法,取累加器输出的高十位作为ROM的寻址地址来进行查表。
对于Altera SOPC Builder未提供的一些外设接口模块,用户可以通过自定义逻辑方法在 SOPC设计中添加自己开发的IP核,通过Avalon的读写时序对各个设备进行操作。本设计通过构建 IP核来直接控制NiosⅡ和LCD12864的接口,按照指定的时序将波形参数显示在LCD上[6]。在SOPC Builder中自己定义component,并把液晶显示模块看成外部存储器,直接做成Avalon总线Slave设备,IP核设计包含软件部分和硬件部分,需要写HDL模块,定义控制状态、数据寄存器和控制位,描述组件与Avalon总线的接口以及组件与液晶屏的接口。系统编辑器从文件中读取I/O信号和参数信息。其次对LCD模块进行初始化,由于SOPC Builder中的LCDl2864控制模块已经考虑了LCD的读写时序,所以使用NIOSⅡIDE进行LCD驱动和控制时只需对LCD进行初始化[7]。
NiosⅡ是Altera针对其FPGA设计的嵌入式软核处理器,它与其他IP核可构成SOPC系统的主要部分。它具有灵活的自定义指令集和自定义硬件加速单元,以及图形化开发环境NiosⅡIDE[2]。经由SOPC Builder生成NiosⅡ嵌入式处理器系统,其CPU模块框图如图4所示。
图3 累加控制模块Fig.3 Accumulate control module
图4 CPU模块框图Fig.4 CPU module diagram
利用NIOSⅡIDE开发工具完成所有软件开发任务,系统接收拨扭开关扫描模块发来的4位扫描码,根据扫描码数值的不同进入不同的子程序,然后再通过FPGA的键盘扫描模块向NIOSⅡ处理器发送键盘扫描码,软核处理器根据接收到的扫描码产生相应的信号数据以及控制信号,并通过 PIO传送给FPGA中的 DDS模块 ,实现频率控制字的变化,即输出频率可调,并将信号数据显示在LCD上。同时DAC器件将DDS产生的8位信号数据进行数模转换,从而产生频率可调的方波、三角波、正弦波、锯齿波[8]。
该信号源能够很好地满足对不同波形、不同频率的信号的需求,具有很强的实用性,并且可以方便地通过液晶显示器直观地观察到波形信号的参数信息。由FPGA实现的DDS信号发生器不仅可实现频率可调波形变换且具有频率切换快,信号的质量和精度高于模拟方式的特点。
[1]张金波,湛向,刘二伟,等.基于DDS/SOPC的多路可调谐波信号发生器[J].电力自动化设备,2008(11):74-78.ZHANG Jin-bo,ZHAN Xiang,LIU Er-wei,et al.The wide adjustable harmonic signal generator based on DDS/SOPC[J].Electric Power Automation Equipment,2008(11):74-78.
[2]方媛,李勇,李智君,等.基于NIOSⅡ软核处理器的通信信号源SOPC设计[J].科学技术与工程,2007,7(12):2959-2963.FANG Yuan,LI Yong,LI Zhi-jun,et al.The SOPC design of communication signal source based on NIOSⅡsoft processors[J].Science Technology and Engineering,2007,7(12):2959-2963.
[3]黄小翰.基于FPGA的多功能波形发生器的设计[J].价值工程,2010(9):232-233.HUANG Xiao-han.The design of multifunctional waveform generator based on FPGA[J].Value Engineering,2010(9):232-233.
[4]李全利,王峰.基于Nios II的信号发生器[J].自动化技术与应用,2007,26(1):96-98,110.LI Quan-li,WANG Feng.The signal generator based on Nios II[J].Techniques of Automation and Applications,2007,26(1):96-98,110.
[5]李志鹏,郭勇,沈军.基于DDS技术实现信号发生器[J].微计算机信息,2007,23(7-1):175-177.LI Zhi-peng,GUO Yong,SHEN Jun.The signal generator based on DDS technology[J].Microcomputer Information,2007,23(7-1):175-177.
[6]马品宏.基于SOPC的任意波形发生器的研究与开发[D].大连:大连理工大学,2006.
[7]葛远香,胡开明.基于NIOSⅡ的LCD控制器和矩阵键盘的IP核的设 计方法 [EB/OL]. (2010-08-16).http://www.elecfans.com/emb/arm/20100816221785.htm1.
[8]倪亮,吴丽敏,赵鹏飞.基于SOPC基本信号产生器的设计与实现[J].电子科技,2011,24(1):89-92.NILiang,WULi-min,ZHAOPeng-fei.The designandimplementation of basic signal generator based on SOPC[J].Electronic Science and Technology,2011,24(1):89-92.