基于FPGA的正弦信号发生器.docx

上传人:b****2 文档编号:24399747 上传时间:2023-05-27 格式:DOCX 页数:15 大小:1.31MB
下载 相关 举报
基于FPGA的正弦信号发生器.docx_第1页
第1页 / 共15页
基于FPGA的正弦信号发生器.docx_第2页
第2页 / 共15页
基于FPGA的正弦信号发生器.docx_第3页
第3页 / 共15页
基于FPGA的正弦信号发生器.docx_第4页
第4页 / 共15页
基于FPGA的正弦信号发生器.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

基于FPGA的正弦信号发生器.docx

《基于FPGA的正弦信号发生器.docx》由会员分享,可在线阅读,更多相关《基于FPGA的正弦信号发生器.docx(15页珍藏版)》请在冰豆网上搜索。

基于FPGA的正弦信号发生器.docx

基于FPGA的正弦信号发生器

摘要

系统设计以ALTERA公司CycloneIIIFPGA开发板为硬件平台,以DDS技术为设计核心,运用SOPC和NIOS软核技术而总体设计实现。

系统DDS模块实现1KHZ-10MHZ正弦信号输出,频率步进包含10HZ-1MHZ的10为数量级的所有步进,可以实现任一频率调节,1KHZ频率误差优于10-4;完成了调幅、调频、二进制ASK和二进制PSK调制的输出功能,并很好地满足了相应模块的指标,拥有很高的精确度和稳定度;实现了键盘、数码管、LED和串口的控制和显示,人机界面友好且易于操作,具有很好的使用价值。

关键词:

DDS信号调制DACFPGANIOS

 

目录

摘要1

目录2

1.实验任务及要求3

1.1实验任务3

1.2实验要求3

1.2.1基本要求3

1.2.2发挥部分3

2.设计方案选择4

2.1方案比较4

2.2系统设计方案4

3.分模块设计与实现5

3.1硬件部分实现5

3.2DDS的设计实现6

3.3AM的设计实现7

3.4FM的设计实现7

3.52ASK的设计实现8

3.62PSK的设计实现9

3.7Quartus硬件设计10

3.8NIOS软核控制11

3.9人机界面设计11

4.调试效果图12

5.问题及解决方案14

6.组员分工14

7.总结与感想14

参考文献15

附录16

 

1.实验任务及要求

1.1实验任务

设计一个可输出正弦波,频率可调的简易信号发生器。

1.2实验要求

1.2.1基本要求

1、正弦波输出频率范围:

1KHz~10MHz;

2、具有频率设置功能,频率步进为100Hz;

3、输出信号稳定度:

优于10-4;

4、输出电压幅度:

在负载电阻50Ω上的电压峰-峰值Vopp≥1V;

5、失真度:

用示波器观察时无明显失真;

6、独立焊接、调试DAC904电路

1.2.2发挥部分

在完成基本要求任务的基础上,增加如下功能:

1、增加输出电压幅度:

在频率范围内负载电阻上正弦信号输出电压的峰-峰值Vopp=6V±1V;

2、产生模拟幅度调制(AM)信号:

在1MHz—10MHz范围内调制度ma可在10%~100%之间程控调节,步进量10%,正弦调制信号频率为1kHz,调制信号自行产生;

3、产生模拟频率调制(FM)信号:

在100kHz—10MHz频率范围内产生10kHz最大频偏,且最大频偏可分为5kHz/10kHz二级程控调节,正弦调制信号频率为1kHz,调制信号自行产生;

4、产生二进制PSK、ASK信号:

在100kHz固定频率载波进行二进制键控,二进制基带序列码速率固定为10kbps,二进制基带序列信号自行产生;

5、良好人机界面:

具有键盘控制频率(步进可调)和波形输出、LCD/串口/数码管显示频率和输出波形类型功能。

2.设计方案选择

2.1方案比较

系统分为软件设计和硬件设计两部分,软件部分主要是基于MATLAB、FPGAH和NIOS的程序设计,硬件部分包括D/A转换和增益放大电路。

对于本次系统的设计,有以下三种设计方案:

●方案一:

微处理器+压控振荡器(VCO)+LC正弦谐振电路;

●方案二:

专用的DDS芯片(如AD9851)+主控电路;

●方案三:

FPGA+DAC904高速DA;

方案一采用数控电压控制的压控振荡器(VCO),运用电感和变容二极管构成LC正弦谐振电路,通过微处理器改变变容二极管的控制电压,达到电容值改变,从而实现正弦信号输出频率的数字控制。

方案一电路复杂,受变容二极管的变容比限制,数控VCO的频率变化范围不宽,很难达到1KHz~10MHz范围要求。

方案二采用专用的DDS芯片。

芯片外围电路简单,功耗低,性价比高。

而且相位也可以通过写入控制字进行控制,可以方便地实现PSK功能,但是专用DDS芯片价格昂贵,而且系统电路较为复杂,集成度不高。

方案三是在FPGA内部实现高速的多位数相位累加器,输出地址信号,控制读出波形存储器中存放的正弦波幅度数字信号,通过改变相位累加器的相位增量M,即地址间隔的改变,控制读出波形存储器一个周期正弦波幅值的数目,达到输出频率的控制。

该方案对D/A速率要求高,电路集成度高。

2.2系统设计方案

本系统是以方案三为主导思想,以DDS原理为设计核心,首先采用MATLAB中DSP库的相应组件设计不同的模块,然后导出模块VHDL代码,在Quartus编程环境下生成并添加相应模块,最后通过NIOS软核编程控制。

基本设计框架如图2-1。

图2-1

3.分模块设计与实现

3.1硬件部分实现

硬件主要包括FPGA开发板、D/A转换、增益放大。

位于波形输出ROM后的D/A单元,是将数字量形式的波形幅值转换成所要求的合成频率的模拟量形式信号。

由于储存波形的ROM具有14bit的输出,所以采用工作时钟为100M的14位高速DAC芯片DAC904将FPGA输出的数字信号转换成模拟信号。

DAC904是TI德州仪器推出的一款高速D/A数模转换芯片,拥有特性:

1、14位并行电流型DA;

2、最高刷新率最高数据刷新率165MSPS;

3、供电:

模拟+5V,数字+3.3V;

4、低功耗:

5V下功耗为170mw;

DAC904连接如图3-1所示。

图3-1

3.2DDS的设计实现

1971年,美国学者提出了以全数字技术,从相位概念出发直接合成所需波形的一种新的频率合成原理,称之为直接数字频率合成器(DDS)。

直接数字频率合成的理论依据是采样定理,即先对一个完整周期的正弦波进行N点采样,然后把采样点存储在ROM中构成一个查找表,频率合成时,相位累加器在参考时钟的作用下控制ROM中数据的输出。

ROM的输出经过D/A转换,将一个阶梯化的信号(即采样信号)通过一个理想的低通滤波器,就得到符合要求的模拟信号。

只要对正弦信号相位的量化值进行简单的累加运算,就可以得到正弦信号的当前相位值,而用于累加的相位增量量化值决定了信号的输出频率fout,并呈现简单的线性关系。

直接数字合成器DDS就是根据上述原理而设计的数字控制频率合成器。

图3-2所示是一个基本的DDS结构,主要由相位累加器、相位调制器、正弦ROM查找表和D/A构成。

图中的相位累加器、相位调制器、正弦ROM查找表是DDS结构中的数字部分,由于具有数控频率合成的功能,又合称为NCO(NumericallyControlledOscillators)。

图3-2

相位累加器由N位加法器与N位累加寄存器级联构成。

每来一个时钟脉冲fs,加法器将频率控制字k与累加寄存器输出的累加相位数据相加,把相加后的结果送至累加寄存器的数据输入端。

累加寄存器将加法器在上一个时钟脉冲作用后所产生的新相位数据反馈到加法器的输入端,以使加法器在下一个时钟脉冲的作用下继续与频率控制字k相加。

这样,相位累加器在时钟作用下,不断对频率控制字进行线性相位累加。

由此可以看出,相位累加器在每一个时钟脉冲输入时,把频率控制字累加一次,相位累加器输出的数据就是合成信号的相位,相位累加器的溢出频率就是DDS输出的信号频率。

DDS在MATLAB的设计电路如图3-3。

图3-3

3.3AM的设计实现

振幅调制就是用低频调制信号去控制高频载波信号的振幅,使载波的振幅随调制信号成正比地变化。

普通调幅信号可以表示为:

ma称为调幅系数或调幅度,表示载波振幅受调制信号控制的程度,ma<1,若ma>1幅波产生失真,这种情况称为过调幅。

根据AM原理,在已完成的DDS模块的基础上,将生成的1KHZ调制信号,先乘以一个多路选择器控制大小的系数ma,然后对正弦波添加直流分量,最后与DDS信号相乘,输出即为AM信号,MATLAB仿真效果如图3-4。

图3-4

3.4FM的设计实现

FM同样也是利用低频调制信号去控制高频载波信号,不同的是FM调制是使载波的频率随调制信号的变化而变化,而振幅保持不变。

在FM调制中,调制信号的幅度决定载波的偏移量,而调制信号的频率则决定载波的偏移变化率。

FM输出波表达式如下:

Mf为调频波的最大相移,又称调频指数,频率偏移为Mf乘以调制信号频率。

根据FM原理,在MATLAB里,在已完成的DDS的基础上,将生成的1KHZ调制信号乘以Mf,加到DDS的相位上,也即正弦索引表之前,此时输出即为FM信号,调节Mf可调节频偏大小,MATLAB仿真效果如图3-5所示。

图3-5

3.52ASK的设计实现

振幅键控是正弦载波的幅度随数字基带信号而变化的数字调制。

当数字基带信号为二进制时,则为二进制振幅键控。

二进制振幅键控信号可以表示成具有一定波形形状的二进制序列(二进制数字基带信号)与正弦型载波的乘积,通常二进制振幅键控信号的产生方法有两种,一般的模拟幅度调制方法与数字键控方法实现,2ASK信号的波形随着的通断变化,所以又称为通断键控信号(缩写为OOK)。

二进制振幅键控信号调制器如图3-6所示。

图3-6

M序列(即DeBruijn序列)又叫做伪随机序列、伪噪声(PN)码或伪随机码。

可以预先确定并且可以重复实现的序列称为确定序列;既不能预先确定又不能重复实现的序列称随机序列;不能预先确定但可以重复产生的序列称伪随机序列。

对于一个n级反馈移位寄存器来说,最多可以有2^n个状态,对于一个线性反馈移位寄存器来说,全“0”状态不会转入其他状态,所以线性移位寄存器的序列的最长周期为2^n-1。

当n级线性移位寄存器产生的序列{ai}的周期为T=2^n-1时,称{ai}为n级m序列。

 ASK的伪随机信号我们采用MATLAB产生10kbps的M序列模块,设计原理如图3-7所示。

图3-7

3.62PSK的设计实现

在二进制数字调制中,当正弦载波的相位随二进制数字基带信号离散变化时,则产生二进制移相键控(2PSK)信号。

通常用已调信号载波的0°和180°分别表示二进制数字基带信号的1和0。

二进制移相键控信号的产生方法主要有两种。

如图4-5-1所示。

第一种方法是相乘法,只要数字基带信号为双极性码,并不含直流分量,即能用该方法来产生,如图4-5-1(a);第二种方法是开关选通法,这种方法是产生一个载波的二重相位(对多相的移相键控应是单一载波的多重相位),以基带信号所代表的数值去选择这些相位,如图4-5-1(b)。

当然,也可以是利用被控制的延迟提供所需的载波相移量,然后由基带信号通过开关阵列来控制相移量的大小。

 

图3-8

本系统设计的2PSK调制是在MATLAB中,用产生的M序列控制一个选择器,分别选择0和1,这样,每次M序列发生变化之时,选择器的输出相应发生变化,用选择器的输出去控制DDS的相位,使相位发生180度反转,这就相当于M序列在跳变时,DDS相位就发生反转,MATLAB仿真效果如图3-8所示。

图3-8

3.7Quartus硬件设计

在MATLAB里设计好每个模块之后,通过导出VHDL代码,得到相应quantus文件,然后在quartus工程里添加模块,通过SOPC_Builder,给CPU软核添加控制管脚,最后通过IDE开发环境编程控制这些模块,实现不同的功能。

Quartus硬件设计如图3-9所示,第一个模块为集成的信号发生和调制模块,第二个模块为比较器,在键控调制模式下,比较器使正弦波变为相应方波,第三个模块为分频器,将100KH的方波分频为10KHZ,最后一个模块为M序列产生模块,工作时钟为上一级生成的10KHZ,这样生成的M序列即为10kbps。

在这四个模块中,第一个模块集成了DDS、AM、FM、2ASK和2PSK功能模块,输出信号给到DAC部分。

图3-9

3.8NIOS软核控制

对在quartus环境下设计好的硬件连接,需要编程进行相关控制,在NIOSIDE开发环境建立与quartus硬件相关的工程C文件,编写C代码进行对软核CPU的控制。

根据FPGA硬件,程序采用按键和串口中断进行不同模式切换以及不同模式下功能的选择,具体代码见附录。

3.9人机界面设计

系统人机界面使用了FPGA开发板提供的LED、数码管、按键和串口,主要实现以下功能:

1、按键或串口模式选择(DDS/AM/FM/2ASK/2PSK);

2、按键或串口频率步进(10/100/1k/10k/100k/1M);

3、按键或串口幅值增加(针对DDS输出);

4、其他模块功能(Ma步进、FM频偏选择、2ASK查看正弦波及M序列、2PSK查看正弦波及M序列);

5、每种模式下频率和幅值设置;

人机界面功能框图如图3-10所示:

图3-10

系统总共分为五种模式,分别为DDS、AM、FM、2ASK、2PSK,每种模式下都有自己的按键功能,每种模式都设置了返回按键,方便进入和退出任一模式。

系统串口可以实现和按键同样的功能,并且可以交互选择使用。

数码管用来显示DDS频率,当频率小于10khz时,单位为HZ,当频率大于10khz时,单位为KHZ,最大可显示10MHZ。

LED分为左边四个和右边四个来使用,左边四个显示当前模式对应的数字,右边四个显示当前模式下当前操作的按键数值或串口输入的数值。

4.调试效果图

1.AM调制

2.FM调制

3.FM调制频谱

4.2ASK调制

5.2PSK调制

5.问题及解决方案

●DDS数据输出为有符号数据与ADC芯片要求输入数据类型不一致;

有符号的数据也即是含有负数的数据,我们使用的ADC是不能处理负数的,解决这个问题,需要将原来的DDS输出进行直流漂移,可以采用更改码表或者将输出加一个足够大的常量,最后将数据输出类型设置为无符号类型。

●DDS频率上限仅为1M左右,并且失真比较严重;

ADC的工作时钟以及DDS模块的工作时钟影响最终输出的频率,更改ADC模块工作时钟为100M(原来为20M),即解决问题,频率上限达到20M,并且波形很好。

●2ASK和2PSK出现毛刺,并且波形变化位置变动;

2ASK和2PSK都需要用到M序列,这个M序列还是比较关键的,指标要求M序列必须为10k,这就要求M序列需要单独的工作时钟,而由于M序列的工作时钟与DDS模块的工作时钟不同步,导致上述现象产生,最后,我们直接对DDS产生的正弦波用过比较器产生同频的方波,然后分频得到M序列的工作时钟,这样不会出现不同步的问题,现象很好。

 

参考文献

【1】《EDA技术与VHDL(第三版)》潘松黄继业著,清华大学出版社,2009.9

【2】《SOPC技术与应用》江国强著,机械工业出版社,2006.9

【3】《C程序设计(第三版)》谭浩强著,清华大学出版社,2005

【4】《基于FPGA+DDS的正弦信号发生器的设计》曹志峰等,微型机与应用2012年第31卷第14期

【5】《基于DDS技术的正弦信号发生器设计》洪远泉等,韶关学院学报.自然科学,2006年第27卷第12期

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1