当前位置:蚂蚁文档网 > 述职报告 > 基于SoPC的任意波形信号发生器设计

基于SoPC的任意波形信号发生器设计

时间:2022-05-28 17:15:04 浏览次数:

摘 要:为了解决信号发生器的一些具体问题,如需要它能产生多种信号、工作稳定、成本低等,因此采用GW48型SoPC开发系统,以Nios软核为控制核心,来实现参数可调的任意波形DDS信号源。重点阐述系统硬件方案、软件设计,并对整个系统进行了仿真,仿真结果符合设计要求,具有方案设计便捷、集成度高、扩展灵活和功能全面等特点。

关键词:SoPC; DDS; Nios; 任意波形信号发生器

中图分类号:TN911.72-34 文献标识码:A

文章编号:1004-373X(2011)17-0092-03

Design of Arbitrary Waveform Signal Generator Based on SoPC

LIN Wei, SHAO Yan, WANG Hai-guang

(School of Electronic and Control Engineering, Chang’an University, Xi’an 710064, China)

Abstract: In order to meet the specific requirements of signal generator, such as generation of various signals, stable operation and low cost, the GW48 type SoPC development system which takes Nios as a control core is adopted to design the arbitrary waveform DDS signal source whose parameters is adjustable. The paper elaborates the system hardware and software design. The whole system simulation results meet design requirements. The system has convenient design scheme, high integration, flexible expansion and perfect function.

Keywords: SoPC; DDS; Nios; arbitrary waveform signal generator

0 引 言

可编程片上系统(System on a Programmable Chip,SoPC)结合了SoC,PLD和FPGA的诸多优点,既拥有可编程逻辑技术将整个系统集成于一块硅片之上,由单个芯片实现主要逻辑功能的特点,又具备可裁减、可扩展、可升级、软硬件系统可编程的功能,是一种特殊的嵌入式系统。直接数字频率合成(DDS)是20世纪70年代初提出的一种全数字的频率合成技术,常用于产生相位可控的信号,具有转换快、分辨率高等特点[1-2]。而SoPC具有速度快、集成度高、存储容量大的优点,使之与DDS技术相结合,可以极大地提高信号发生器的性能,降低生产成本[1-4]。本文采用SoPC技术,把DDS模块和微处理控制部分集成到FPGA芯片,从而实现频率可调的正弦、锯齿、方波、三角等任意波形的信号发生器。

1 DDS原理

DDS的基本原理是以采样定理为基础,利用查表法产生数字量形式的波形信号,并通过DAC转换成模拟量形式的信号。其基本的原理电路如图1所示,直接数字频率合成(DDS)是由频率合成器、相位累加器、波形ROM、D/A转换器和低通滤波器LPF构成[5-8]。

连续信号按照相位取样、量化、编码后,形成一个波形函数表,存于ROM中。合成时,每输入一个时钟相位累加器把频率控制字累加一次,输出合成信号的相位,通过改变相位累加器的频率控制字可以改变相位增量。当相位增量改变时,一个周期内的采样点数也随之改变。在时钟频率即采样频率不变的情况下,通过相位增量的改变来实现频率的改变,计算公式为Δp=ωΔt=2πfΔt,其中Δp为相位变化,ω为角频率,Δt为时钟周期。经过转换的合成信号的频率为f=Δp/(2πΔt)=Δpfclk/(2π),fclk为时钟频率。通过改变Δp改变合成信号的频率f。由N位相位累加器对2π进行量化,对2π取2N个点,则f=(K/2N)fclk,其中K为频率控制字,取值范围[5-8]为0~2N-1。

2 信号发生器的设计

设计方案采用Altera公司的Quartus Ⅱ和Nios Ⅱ IDE软件作为开发工具[9-10],包括硬件和软件两部分。

2.1 硬件方案

该设计选用Altera公司CycloneⅡ系列EP2C35F484C8型FPGA芯片作为产生波形信号的核心组件,以搭载Nios软核和DDS模块,并由外部添加输入键盘,修改DDS发生器的参数,来选择不同的输出波形[3]。为了保证输出信号不失真,DAC芯片的转换速率必须高于100 MHz,所以D/A转换器选用了190 MHz的THS5651高速DAC芯片[11]。硬件系统结构如图2所示,系统顶层设计图如图3所示。

系统顶层设计的核心是可裁剪的Nios软核和可存储多种波形信号的DDS模块,如图3所示[5]。Nios软核为DDS设置输出波形选择参数,DDS模块生成相应波形信号,再由PIO口将输出信号传输给DAC芯片。DDS模块是由1个相位累加器和4个LPM_ROM构成,主要完成保存设置参数,产生波形ROM地址,形成波形ROM等工作。LPM_ROM分别以matlab生成的MIF格式文件存储了正弦、锯齿、三角、方波四种常见的波形数据表,若要生成其他任意波形,只需将相应的连续信号转化为MIF文件,替换LPM_ROM中的波形文件即可实现任意波形信号的输出[5]。为了取得精细的频率分辨率,将相位累加器设为32位,同时为使LPM_ROM中数据量不至于过大,使用相位截断阀,让相位累加器输出的高10位用来查表,这样可以保证系统在高速稳定运行的前提下,最大限度地减少输出波形信号的误差。

2.2 软件设计

软件设计流程如下:

unsigned long int key_flag=1;

int init_set=1;

void set();

volatile int edge_capture;

void button_ISR(void* context,alt_u32 id) //按键中断处理

{volatile int* edge_capture_ptr=(volatile int*)context; //捕获按键中断

*edge_capture_ptr=IORD_ALTERA_AVALON_PIO_EDGE_CAP(KEY_PIO_BASE);

switch(*edge_capture_ptr)

{case 0x01: key_flag=0;

break;

case 0x02: key_flag=1;

……

case 0x10: init_set=0;

break;

default: key_flag=key_flag;

break;}

IOWR_ALTERA_AVALON_PIO_EDGE_CAP(KEY_PIO_BASE,0x0); //清除中断

}

void init_keyISR()

{

void *edge_capture_ptr=(void*) &edge_capture;

IOWR_ALTERA_AVALON_PIO_EDGE_CAP(KEY_PIO_BASE,0x0); //清除中断

IOWR_ALTERA_AVALON_PIO_IR Q_MASK(KEY_PIO_BASE,0x0f); //中断使能

alt_irq_register(KEY_PIO_IRQ,edge_capture_ptr,button_ISR); //中断函数注册}

int main()

{

init_keyISR();

DAOUT->DATA=0;

while(init_set)//设置输出波形参数

set();

while(1)

{switch(key_flag)//选择输出波形

{ case 0:DAOUT->DATA=SIN->DATA;

break;

……

case 3:DAOUT->DATA=SQUARE->DATA;

break;

default: DAOUT->DATA=0;

break; } }

return 0;

}

3 测试结果与分析

采用逻辑分析仪对DDS发生器的输出信号进行测试,输出信号如图4所示,设置初始频率字与实测值见表1,误差小于0.05,输出信号精度较高。

4 结 语

本文介绍了基于SoPC的DDS任意波形发生器的一种设计方案,详述了硬件结构及软件设计过程,并对整个系统进行了仿真与测试,输出信号频率的误差较小,可以满足不同系统对波形信号的要求,适用于工业控制、检测、通信等不同领域。

参 考 文 献

[1]侯建军,郭勇.SoPC技术基础教程[M].北京:清华大学出版社,2008.

[2]潘松,黄继业.SoPC技术使用教程[M].北京:清华大学出版社,2005.

[3]李洪伟,袁斯华.基于Quartus Ⅱ的CPLD/FPGA设计[M].北京:电子工业出版社,2008.

[4]王彦,黄智伟.基于FPGA的工程设计与应用[M].西安:西安电子科技大学出版社,2007.

[5]白居宪.直接数字频率合成[M].西安:西安交通大学出版社,2007.

[6]师丽彩,郭叔军,王玉花.基于Nios的DDS信号源实现[J].现代电子技术,2005,28(14):123-128.

[7]高琴,姜寿山,魏忠义.基于FPGA的DDS信号源设计与实现[J].西安工程科技学院学报,2006,20(2):14-17.

[8]丁纪峰.任意波形信号发生器的研制[D].哈尔滨:哈尔滨工业大学,2005.

[9]朱正伟.EDA技术及应用[M].北京:清华大学出版社,2005.

[10]潘松.VHDL使用教程[M].西安:西安电子科技大学出版社,2001.

[11]Altera Corporation. Nios Ⅱ processor reference handbook [R]. [S.l.]: Altera Corporation, 2006.

作者简介:

林 薇 女,1964年出生,陕西人,副教授。研究方向为电子技术应用。

邵 严 男,1985年出生,陕西人,在读研究生。研究方向为控制理论与控制工程。

汪海光 男,1985年出生,陕西人,在读研究生。研究方向为电子技术应用。

推荐访问:波形 任意 信号发生器 设计 SoPC

猜你喜欢