《电子技术应用》
您所在的位置:首页 > 可编程逻辑 > 设计应用 > 基于SoPC/NIOS II的信号发生器设计与实现
基于SoPC/NIOS II的信号发生器设计与实现
来源:电子技术应用2011年第6期
胡继胜, 李 洪
(安徽职业技术学院 电气工程系, 安徽 合肥230051)
摘要: 运用基于NIOS II嵌入式处理器的SoPC技术,设计了一个任意信号发生器,不仅可以输出正弦波、方波、三角波和锯齿波等常见波形,且各波形的频率和幅度可调,可根据用户需要进行现场编程,具有控制灵活、输出频率稳定、准确、波形质量好和输出频率范围宽等优点。
中图分类号: TP216
文献标识码: A
文章编号: 0258-7998(2011)06-091-04
Arbitrary waveform generator design and realization based on SoPC/NIOS II
Hu Jisheng, Li Hong
Department of Electrical Engineering, Anhui Vocational and Technique College, Hefei 230051, China
Abstract: This designation uses the SoPC technology based on embedded processor of NIOS II, and designs an arbitrary waveform generator,which can not only output sine waveforms, square waveforms, triangle waveforms, sawtooth waveforms and other common waveforms, but also the frequency and amplitude of waveform is adjustable,and in system programming according to user's requirements,It has advantages of easy control, stable output frequency, high quality waveform and wide bandwidth.
Key words : SoPC; NIOS II; DDS; waveform generator


    信号发生器是各种测试和实验过程中不可缺少的仪器,在通信、测量、雷达、控制、教学、科研等领域应用十分广泛。随着我国经济和科技的发展,对相应的测试仪器和测试手段也提出了更高的要求。传统的信号发生器大多采用专用芯片或单片机或模拟电路,具有成本高、控制方式不灵活或波形种类较少等缺点。
 本文采用直接数字合成(DDS)技术[1],通过基于 NIOSⅡ的SoPC系统实现一个任意波形发生器。DDS技术是一种新颖的频率合成技术,具有易于程控、相位连续、输出频率稳定度高、频率转换速度快和分辨率高等优点。SoPC(System on a  Programmable Chip)[2-3]技术是美国Altrea公司于2000年最早提出的,并同时推出了相应的开发软件Quartus II及硬件平台FPGA(Field-Programmable Gate Array)芯片。SoPC是基于FPGA解决方案的SoC,SoPC的设计是以IP为基础、以硬件描述语言VHDL为主要设计手段、借助于以计算机为平台的EDA工具进行的,具有灵活的设计方式和软硬件在系统可编程的功能。本设计通过Altera公司的FPGA芯片和NIOSⅡ嵌入式系统实现SoPC。
1 系统总体方案设计
 本设计实现一个基于SoPC的任意波形发生器, 其输出频率范围为10 Hz~1 MHz,频率分辨率为1Hz,输出电压幅值范围为 0~5 V,步进间隔为0.1 V,输出信号的频率和电压值可通过键盘进行设置,可实时显示输出信号的类型、幅度、频率和频率步进值。
     片上系统在Altera CycloneⅡ系列的 EP2C8Q208C8 FPGA上实现,构建了一个基于NIOSⅡ的SoPC系统,完成系统控制和DDS信号发生,通过PS/2鼠标键盘设定波形的种类、任意频率和任意幅度的信号输出,最后通过外部电路将片上系统数字输出转换为模拟输出、放大、滤波和幅度控制,系统框图如图1所示。


2 片上系统设计
 片上系统为一个基于NIOSⅡ的SoPC系统,由四部分组成:NIOS Ⅱ模块、DDS模块、PLL模块和片上RAM 模块。
2.1 NIOS Ⅱ模块
    本模块提供主控CPU部分,NIOS II模块通过在SoPC Builder[2]中调用IP库组件实现,由Quartus软件定制,需加入SDRAM、LCD、RS232等控制器。利用SDRAM配合FPGA构成片上系统,建立NIOS控制系统,完成任务调度及人机交互控制。对DDS部分的控制由PIO口完成,均为输出口,包括频率控制字输出口、波形选择输出口、幅度控制输出口。本设计中,由于NIOSⅡ CPU主要负责UART串口的数据传输和简单的I/O接口控制,所以选用经济型NIOSⅡ/e 内核,以达到节省资源的目的,NIOS II CPU顶层原理图如图2所示。

 

 

2.2 DDS 模块
2.2.1直接数字频率合成器原理

 直接数字合成DDS(Direct Digital Synthesis)是一种从相位出发的新的频率合成技术和信号产生方法。DDS的原理框图如图3所示[4]。图中相位累加器可在每一个时钟周期来临时将频率控制字(FTW)所决定的相位增量M累加一次,如果记数大于N,则自动溢出,而只保留后面的N位数字于累加器中。正弦查询表ROM用于实现从相位累加器输出的相位值到正弦幅度值的转换,然后送到DAC中将正弦幅度值的数字量转换为模拟量,最后通过滤波器输出一个很纯净的正弦波信号。

2.2.2正弦波产生原理
  


  

上式中,M为相位累加器的位数,FTW为频率步进控制字,fclk为时钟频率,输出信号频率主要取决于频率控制字FTW。当FTW增大时,fout可以不断增加,综合考虑Nyquist  采样定理,最高输出频率应小于fout/2。根据实验所得,实际工作频率应小于fclk/ 3。由于本案例只要求设计出最高为1 MHz的信号,根据D/A及FPAG的速度,可以很容易地满足设计需要。本例中选用32 MHz的CLK时钟,在输出最高1 MHz的信号时,波形在一个周期内仍有32个点,能够完整描述出波形。
    
2.2.3 DDS模块的FPGA实现
 DDS模块采用DDS技术基于FPGA设计信号发生模块,由三个子模块组成,产生要求的信号序列。该模块通过 VHDL 语言直接编程,用于完成频率控制字的相位累加和截断输出,从而实现波形数据的输出和频率调制功能,是整个系统的核心模块。由于其采用VHDL语言编写,所以必须将其转换为图形符号,加入设计顶层图中,如图5所示。

    子模块“xianglei”为32位的相位累加器,它由一个32 bit字长的二进制加法器和一个固定时钟脉冲clk取样的32 bit相位寄存器组成,32 bit的din[31..0]输入为相位累加器频率控制字输入端,在时钟脉冲的控制下,改变频率控制字,即可改变输出频率;子模块“rom”是一个采用Quartus 软件定制的LPM_ROM正弦查询表,正弦数据由Matlab软件生成,并以mif 的文件格式存储后加载到ROM模块中,文件为sin10bit.mif,输入为10 bit地址,在时钟的作用下,输出存储的正弦数据;子模块“outs”为波形输出模块,10 bit地址输入端与相位累加器模块输出相连,10 bit数据输入端与正弦查询表的ROM输出相连,sel为波形选择端,当选择端为0、1、2、3时,在时钟的作用下,分别输出正弦波、方波、三角波和锯齿波,由于D/A转换模块采用的是8 bit D/A,因此输出端仅接qout的前8 bit。
2.3 PLL模块
 该模块通过调用QuartusⅡ内嵌的器件函数实现,QuartusⅡ内嵌了许多常用器件的函数,用户只需要进行设置即可直接调用,而不需要自己编程,大大提高了系统开发的效率。本设计需要两个PLL模块,一个用于产生NIOS及片外SDRAM所需的时钟,另一个用于DDS时钟,采用32 MHz,其中片外SDRAM 的时钟输入必须比系统的时钟滞后63°相位。
2.4 片上RAM模块
 该模块采用Quartus软件定制的LPM_ROM模块,用来存储一个周期的波形数据。DDS模块对RAM进行读操作,读取波形数据,产生幅度量化序列。片上RAM地址位为10 bit,数据位为10 bit,空间大小为10 KB,即存储了1 024个10 bit数据。
2.5 软件设计
 片上系统的软件设计利用Altera的SoPC Builder系统开发工具和QuatrtusII 7.2设计软件,在集成开发软件NIOSⅡ IDE中通过C语言编程实现。主要是DDS控制、LCD显示控制接口和键盘扫描程序的的编写。如要产生某个1 kHz波形,由键盘设置相应数值、波形类别、波形幅值和步进幅度,通过PIO的控制口送给DDS模块,就可得到相应的波形。限于篇幅,软件设计流程图不再给出。
3 SoPC外围电路
 SoPC的外围电路是完成人机接口、信号处理及驱动负载等重要功能,主要由RS232 & PS2模块、D/A转换与幅度控制模块、LCD1602模块组成。其中RS232 & PS2模块由RS232电平转换电路和PS2键盘接口电路两部分组成,用于完成RS232串口通信和PS2接口通信,可实现与计算机串口通信、PS键盘扩展等功能,该模块通过8针接口连接到EDA-SoPC核心板;D/A转换与幅度控制模块,相当于两路D/A输出,一路使用D/A芯片完成,即在时钟的作用下,将8 bit的数据送到输出端,在D/A模拟输出相应模拟电压,另一路D/A使用电阻网络完成转换后作为输出信号的幅度调节,经过EDA-SoPC核心板的DDS技术可实现任意波形、一定频率、一定幅度范围的信号输出;LCD1602模块主要提供EDA-SoPC核心板与LCD1602液晶接口及液晶所需的负压调节及背光控制电路。由于篇幅所限,本文只给出D/A转换及驱动电路,如图6所示。

    信号D/A转换及驱动电路由DDS输入的8 bit数据通过DAC908转换为模拟信号,DAC908是一个8 bit高速、低功耗CMOS  DAC芯片,最高转换速率为125 Mb/s,采用单端模拟输出,再通过AD8058运放驱动后,作为信号输出。AD8058是一款低成本、高性能的电压反馈型放大器,可以在高增益的条件下保持带宽特性,噪声和失真性能符合高速放大要求,具有很高的稳定性。
4 测试结果
    在指标测试中,采用了60 MHz数字示波器固纬GDS1062,其面板上可直接显示信号的频率与幅值。
4.1 输出波形频率测试
 在10 Hz~1 MHz范围内以不同的步进分别进行了正弦波、三角波、方波的频率测试。在10 Hz~100Hz范围内步进间隔为1 Hz;在100 Hz~1 kHz范围内步进间隔为10 Hz;在1 kHz~1 MHz范围内步进间隔为1 kHz。测试结果表明,输出信号频率稳定度优于10-5,与频率设定值完全一致,波形稳定无失真。
4.2 正弦波带负载能力测试
    输入频率为f=1 kHz的正弦波,在空载和带负载(1 kΩ)情况下,幅值设定了0.1 V~5 V共10组数据,测得负载变化率最大值为0.22%,输出波形的幅度与设定幅度非常接近,系统带负载能力很强。
    本设计完成了任意波形发生器的软硬件设计和调试,而基于NIOS II的嵌入式处理SoPC技术,使系统性能得到了极大的提高,系统波形显示清晰、工作稳定。实验结果表明,系统指标方面远远超过了传统频率合成技术所能达到的水平。
参考文献
[1] 林丹,肖启俊,郑小燕.基于SoPC的任意波形发生器[D]. 深圳:深圳大学,2007.
[2] 李兰英.NiosⅡ嵌入式软核SoPC设计原理及应用[M].  北京:北京航空航天大学出版社,2006.
[3] 江国强.正版SoPC技术与应用[M].北京:机械工业出版社,2006.
[4] 帅倩,吴国辉,代冀阳.基于FPGA的DDS设计及实现[J]. 现代电子技术,2010,34(13):90-92.

此内容为AET网站原创,未经授权禁止转载。