基于Nios II与LabVIEW的任意波形发生器实现
扫描二维码
随时随地手机看文章
摘 要: 以Altera公司的EP1C12芯片为SOPC系统的载体,介绍了基于嵌入式软核处理器Nios II的DDS任意波形发生器的设计和实现。
关键词: 任意波形发生器 直接数字频率合成 可编程片上系统
目前,基于直接数字频率合成DDS(Direct Digital Frequency Synthesis) 技术的任意波形发生器在设计上多采用FPGA结合微处理器的形式。DDS部分功能由FPGA来实现,微处理器芯片用于完成控制功能,这种结构电路复杂,开发周期长,系统的软硬件升级也存在困难。SOPC技术基于FPGA芯片,将处理器、存储器、I/O等系统设计需要的模块集成到一起,软硬件可剪裁,并具备在系统可编程的功能。本文基于SOPC技术,把DDS 模块和微处理器控制部分集成到单片FPGA芯片内部,大大减化了系统电路,提高了集成度。
1 基于DDS的任意波形发生器组成原理
DDS技术建立在采样定理的基础上,其基本原理如图1所示,主要由相位累加器、波形ROM、DAC以及低通滤波器等组成。N位相位累加器在取样时钟的控制下与频率控制字K所决定的相位增量相加;相位累加器的高位输出作为波形ROM的地址,实现波形相位到幅值的转换;波形数据经DAC转换成模拟量,通过滤波器输出相对平滑的波形。输出频率fout与时钟频率fclk、相位累加器的位数N及频率控制字K的关系为fout=K×fclk/2N。
用DDS实现任意波形发生器的途径是把存放波形量化表的ROM换成可以改写的RAM,利用上位机生成所需波形的数据来改变存放在波形RAM中的数据,再由DDS系统将波形合成出来,就可以产生出所需的任意波形。
2 系统硬件电路的设计
本系统的功能要求是:接收从上位机传来的控制信息和数据(包括给定的波形、频率、初相位和幅值信息),然后经DDS 输出相应参数的波形。系统通过这种方式可输出规则波形及任意波。在输出波形的同时,可以从上位机对波形参数进行实时调整。频率调制的范围是0.1Hz~2.5MHz,调频步长为0.1Hz。输出幅度范围:-10V~+10V。
根据功能将系统分为控制部分、波形产生部分以及通信部分。控制部分功能主要由嵌入FPGA内部的软核处理器Nios II来完成,同时在FPGA剩余的逻辑单元上设计DDS主通道部分,实现波形生成。Nios II的UART IP实现与上位机的波形数据传输。
系统硬件电路结构框图如图2所示,选用了Altera公司Cyclone系列FPGA,型号为EP1C12,有高达20 060个逻辑单元和288Kbit的RAM。它提供了全功能的锁相环(PLL),Altera的Nios II嵌入式处理器的IP资源可以用于Cyclone系列FPGA的开发。Nios II系统通过串口与其他RS232设备相连,要遵循RS232C标准中定义的电平规范,不能直接使用FPGA I/O端口上的LVTTL(一般为3.3V)电平,需要有电平转换芯片来完成从LVTTL电平到RS232C电平的转换。电平转换芯片采用了SP3232ECA芯片。D/A转换部分电路如图3所示,由AD768芯片结合起缓冲作用的AD811来完成。为了达到最终±10V的输出电压,在AD811的输出端添加了功放芯片LM318D进行电压放大。
在PCB板的设计中,采用核心板加底板的设计方案,这种模块化的设计为以后板子的安装、调试与检修等提供了方便。
3 FPGA芯片中Nios II系统硬件部分的构建
FPGA芯片总体设计如图4所示。根据所设计的任意波形发生器的要求,在Quartus II的SOPC Builder中构建Nios II系统。该系统包括以下组件:
(1)Nios II标准型内核。不选用硬件乘法器,指令缓存为4KB,选用level 1的调试模式。这种内核约占1 200个LE(逻辑单元)。
(2)PIO接口。系统中为Nios II处理器共设计了三个PIO接口:PIO_fkey、PIO_pkey、PIO_sel。其中,PIO_fkey作为Nios II处理器从上位机获得的频率控制字到DDS的接口,设计为28位;PIO_pkey为相位控制字接口,设计为10位;3位的 PIO_sel接口作为多路选择器的控制信号用。
(3)显示与键盘。LCD控制器使用Nios II提供的IP Core;键盘接口使用基于Alvon总线的自定义接口。
另外,还需要添加SDRAM控制器、FLASH控制器、Avalon三态总线桥、JTAG UART core(提供给主机通过FPGA上的JTAG管脚访问芯片的功能)、UART接口控制器(使用时,在弹出的对话框中需设置好波特率、数据位等参数)、timer_0计时器、system ID和用户逻辑接口(实现Nios II与片上RAM的通信)。
在FPGA的剩余LE上,还需用Verilog语言编程实现DDS部分的电路。DDS模块在传统的DDS结构之上进行了改进,使用了双端口RAM以达到波形的过零切换,使得任意波形发生器可以使用在一些要求苛刻的场合。改进后的DDS模块包含相位累加器、波形存储RAM 和D/A等几个部分。DDS用Verilog HDL实现之后的仿真结果如图5所示。
整个SOPC系统的片上硬件构建完成后,在Quartus II中对顶层设计进行编译,编译的结果如图6所示,从使用情况可以看出选用的FPGA芯片是非常合理的,既满足了当前的需要,又有一定的冗余,为系统以后的升级提供了条件。
4 任意波形发生器系统软件的设计
整个DDS任意波形发生器的软件包括两个部分:下位机的运行于Nios II系统上基于功能实现的软件;上位机运行的基于仪器操作的人机界面的软件。
下位机的软件开发使用Altera公司的Nios II IDE集成开发环境。Nios II IDE是Nios II系列嵌入式处理器的主要软件开发工具。用户可以在Nios II IDE中完成所有的软件开发任务,如编辑、编译、下载、调试和闪存编程。
下位机程序流程如图7所示。上电以后,进行系统各部分的初始化,然后等待从上位机串口发来的信息,Nios II处理器在收到消息之后,产生串口中断,将收到的数据依次放入缓冲区,之后要对收到的数据根据通信协议进行数据的处理和解释工作,并根据发来的命令调用相应的功能子程序,最终将数据送往D/A进行转换。串口中断程序主要完成串口的中断响应,将串口接收寄存器的数据放入接收缓冲区,并修改缓冲区的指针,同时如果发送缓冲区中有待发送数据,而发送寄存器又为空的话,就发送缓冲区中数据。串口处理和解释程序主要根据协议内容对缓冲区中接收过来的数据进行判断,如果是起始码,则将其后的数据认为是命令码,命令码后的数据为命令参数,然后再根据命令码的具体形式,依据制定的协议执行相应的代码,完成来自上位机的命令。
上位机软件的开发环境采用NI(美国国家仪器公司)的LabVIEW 8.0。根据上位机所要完成的任务,采用LabVIEW 8.0设计了两种控制界面,一种用于以公式形式的波形输入,用户直接输入波形公式,系统采集相应的波形数据点,通过串口送入下位机,同时可以在控制面板上进行波形参数的调节。使用公式输出用户需要的波形,虽然波形非常精确,但却不能囊括现实世界中遇到的一些无法用公式来表达的波形,为弥补使用公式输出的缺憾,设计了另一种采用鼠标绘制波形的方式,用户移动鼠标可绘制出自己需要的任意波形,系统采集相应的波形数据点,通过串口送入下位机中。两种控制界面分别如图8、图9所示。
5 试验结果
图10(a)为正弦波的输出波形,频率为100Hz, 图10 (b)波形频率为1MHz。两个波形的输出幅度给定值均为-1V~+1V。试验表明,输出正弦波的幅度误差很小,基本上在±1.5%左右。图10(c)、图10(d)分别为利用公式输入面板和鼠标输入面板得到的波形。
试验结果表明,对于从上位机输入的公式形式的波形,系统可以进行精确的输出。利用鼠标输入面板得到的任意波形输出失真较小,波形质量较好。
本文采用SOPC技术将任意波形发生器的DDS模块与控制模块集成到单片FPGA芯片中。结果表明,设计的任意波形发生器实现了系统所要求的功能,技术指标也达到了要求。因此,在单片FPGA上实现任意波形发生器是可行的。与传统的采用控制器与FPGA结合的设计方法相比,它有效地简化了系统电路结构,提高了集成度。
参考文献
[1] 潘松,黄继业,曾毓.SOPC技术实用教程[M].北京:清华大学出版社,2005:1-328.
[2] 吴继华,王城. Altera FPGA/CPLD设计(基础篇)[M].北京:人民邮电出版社,2005:1-236.
[3] 张福贵,姚振东.基于DDS的高性能信号发生器的实现[J].成都信息工程学院学报,2006,21(1):12-17.
[4] 崔建鹏,赵敏,江帆.采用DDS 技术实现的虚拟任意波形发生器[J].计算机测量与控制,2003,11(7):533-555.