低频三相函数信号发生器.docx
《低频三相函数信号发生器.docx》由会员分享,可在线阅读,更多相关《低频三相函数信号发生器.docx(13页珍藏版)》请在冰点文库上搜索。
低频三相函数信号发生器
低频两相函数信号发生器(B题)
摘要:
本系统基于FPGA来开发DDS函数发生器,以凌阳单片机SPAICE061A为操纵核心,并由D/A转换器、四阶巴特沃思低通滤波器、电流电压转换器、lcd12864液晶显示器和波形移位等模块组成,单片机负责显示、键盘识别和频率操纵字与相位操纵字的串行输出。
系统可输出单相正弦波、两相正弦波和调频信号波,具有输出波频率预置和步进、两相输出波相位差可预置和步进等功能。
综合测试证明,本系统实现了赛题的所有要求。
关键词:
低频两相FPGADDS单片机步进
一、引言
目前普遍采纳的频率合成技术要紧有直接合成、锁相频率合成和直接数字合成三种方式。
随着数字技术的飞速进展,高精度大动态范围DAC 的显现和普遍应用,用数字操纵方式从一个参考频率源产生多种频率的技术,即直接数字频率合成(DDS) 技术异军突起。
DDS技术是一种新型全数字频率合成技术,可直接从相位动身合成所需的波形。
它在相对带宽、频率转换时刻、相位持续性、正交输出、高分辨力等方面具有显著的特性。
本系统即是基于直接频率合成(DDS)技术产生低频两相函数信号发生器的设计与制作,整个系统以单片机和CycloneII系列FPGA为操纵核心,先把欲产生信号波的波形数据存储在FPGA内定制的ROM中,由单片机的串口发出频率操纵字和相位操纵字来操纵输出波形的频率和相位,操纵字的输出可利用单片机的串口来完成,如此可大大节约单片机的I/O资源。
二、系统设计方案与论证
1.系统整体方案
方案一:
纯单片机方式由单片机、D/A转换器及波形数据存储器等组成系统,单片机承担DDS信号波形的合成、所有的逻辑和时序操纵等工作。
此方案除要求单片机完成大体的处置分析之外,还需要完成信号波数据的存储、按键的处置、信号显示等操纵与变换工作。
其优势在于系统规模小,有较大的灵活性,但单片机内部资源和处置速度均难知足要求,此方案极难实现。
方案二:
基于IP核技术的FPGA由带有IP核的FPGA来完成搜集、存储、显示及D/A转换等功能,由IP核实现人机交互及信号输出分析等功能。
这种方案的优势在于系统高度集成、结构紧凑、操作方便;缺点是调试进程繁琐、难度大,难以在短时刻内完成系统设计。
方案三:
单片机与FPGA结合用单片机完成人机界面、系统操纵、处置变换等,而用FPGA完成信号输出和生成相应的逻辑操纵时序,这种方案结合了单片机和FPGA的优势,兼顾了前两个方案的优势。
同时大多数FPGA都带有内置的EAB存储阵列,可将波形数据存储在FPGA内嵌ROM中,如此节省了片外存储器。
基于以上分析,咱们选择方案三。
2.基于DDS产生可控频率和相位的信号波原理
本系统不仅要求输出单相正弦波和两相正弦波,而且要求输出正弦波的频率与相位都可预置和步进,这就要求增加相位操纵字和频率操纵字,频率操纵字和相位操纵字均由单片机操纵输出。
DDS合成信号波的进程如下(以正弦波为例):
第一将正弦波的波形数据存入波形存储器中,并给波形存储器和寄放器同一基准时钟fc,在此同一时钟的操纵下寄放器输出的数同相位操纵器输出的数相加后形成一N位有效地址来查询波形存储器中的值,并在时钟fc的操纵下将对应的波形数据输出。
当全加器通过k次循环相加后又回到初始值k,则波形存储器就会输出对应的一个正弦波周期内的波形数据,如此通过ROM可将相位值转换为与之对应的D位幅度码S(n),然后经D/A转换器变成阶梯波S(t),再通过低通滤波器滑腻后,就能够够取得合成的信号波形。
合成的信号波形形状取决于波形存储器ROM中存储的幅度码,而且相位操纵字可操纵输出波形的相位在0o~359o的范围内加减。
因此,理论上将DDS能够产生任意波形。
图1DDS的工作进程和原理
3.两相正弦波产生原理
采纳FPGA设计DDS函数发生器能够方便的输出双路信号,而没必要增加硬件本钱,设计思想如下:
设计时将一相的波形数据复制到新建的波形数据ROM表中,作为另一项波的波形数据,在第一相查表地址的基础上加上相位增量(由相位操纵字决定),所得的值即为第二路信号的查表地址,由此便可实现两相信号波形的输出,其原理如下图2:
图2两项正弦波生成原理
4.系统整体框图
由题意知,本系统要紧由数模转换模块、显示模块、键盘模块、低通滤波电路模块、电压放大模块和移位电路模块等组成,原理框图如下图2所示:
图3系统整体原理框图
三、模块方案论证和选择
1.单片机模块
方案一:
选用AT89S52该单片机为51系列增强型8位单片机,具有32个I/O口和8K的内部存储器,晶振频率为12MHz,一个指令周期为1ms。
方案二:
选用C8051F005单片机该单片机具有32个I/O口和32K的ROM,还具有一个12位8通道ADC和256个字节的数据RAM和2K的片外RAM,具有很高的可扩展性,而且其晶振频率为24MHz,一个指令周期为。
本系统要求单片机要能输出多位频率操纵字和相位操纵字,显然有限的一般I/O口资源无法知足要求,这就要靠单片的串口来实现,由两种方案单片机的晶振频率知,方案二的串行通信成效明显优于方案一,故选择方案二。
2.FPGA模块
方案一:
选用CycloneII系列EP2C5T144FPGAAltera® Cyclone® II系列GPGA采纳全铜层、低K值、伏SRAM工艺设计,裸片尺寸被尽可能最小的优化,CycloneII器件扩展了FPGA在本钱灵敏性、大量量应用领域的阻碍力,延续了第一代Cyclone器件系列的成功。
而CycloneII系列EP2C5T144FPGA含4608个逻辑宏单元、两个锁相环,约20万门、约12万RAMbit,而且含全兼容8051核,其主频最高可达250MHz,是一般8051单片机速度的20倍!
因此能够完成语音级的DSP处置,还可进行SOC系统设计。
其内部含DDS函数信号发生器IP核,可直接挪用。
方案二:
选用CycloneIIEP2C15系列FPGA该系列内部集成14448个逻辑单元,总比特殊高达239616,含4个锁相环PLL。
CycloneIIEP2C15系列FPGA的性能要优于EP2C5T144,同时前者的价钱也比后者贵的多。
本系统,只要求在FPGA内部嵌入累加器、加法器和波形数据存储器ROM,方案一已足以知足要求,对本系统来讲,方案二的资源不能取得充分利用,方案一有更高的性价比,故选择方案二。
3.D/A转换模块
方案一:
DAC900D/A转换器DAC900的采样频率为十位,内部为先进的段式结构,该芯片不管对单通道音频信号仍是多通道音频信号都具有卓越的无假信号动态范围。
DAC900独立的输出电流可达20mA,单电源()供电。
方案二:
DAC0832D/A转换器DAC0832是采样频率为八位的D/A转换器件,芯片内有两级输入寄放器,使DAC0832具有双缓冲、单缓冲和直通三种输入方式,以便适于各类电路的需要(如要求多路D/A异步输入、同步转换等)。
DAC0832的转换精度为(1/28),已知足赛题要求输出的电压精度,且DAC0832的输入特性比DAC900要优越的多,在价钱上方案一也高于方案二,故方案二具有更高的性价比,本系统选用DAC0832D/A。
4.键盘模块
按键模块要紧实现频率和相位等的步进和预置,传统4*4键盘已可完全知足要求,且性价比较高,故选择4*4键盘。
5显示模块
方案一:
采纳动态数码管显示此方案是靠人眼的视觉暂留效应和循环扫描的方式实现动态显示的,这种显示方案具有实现简单、显示亮度高和显示稳固等优势。
但系统需要显示的信息量较大,而且要显示英文字母等信息,采纳数码管显示技术很难实现这一要求。
方案二:
1602液晶显示该显示器是一款比较经常使用的液晶显示器,驱动程序简单,利用方便,显示成效优于数码管。
可是该显示模块显示内容较少,无法显示汉字信息,不能知足本系统的显示要求。
方案三:
采纳LCD12864显示此液晶显示器具有功耗低、无辐射、可平面直角显示和影像稳固等特点,和可方便显示英文字母、汉字和图像等优势,只需用一块LCD12864就能够够在一个平面上一次性显示该系统所需显示的全数内容。
就本系统而言,其性价比要优于前两个方案。
基于以上分析,咱们选择方案三。
三、理论分析与计算
DDS模块合成波频率:
若累加寄放器的位数为N,频率操纵字为PSW,时钟基准为fc,则合成波形的频率为fo=1/[(2n/PSW)*(1/fc)]=PSW*fc/2n,其中1/fc为每输出一个波形数据所需时刻,2n/PSW为一个完整的输出波形所含的波形数据数。
基准时钟:
N位全加器、加法器、寄放器和存储器等逻辑电路均内嵌在FPGA的内部,寄放器和存储器的时基fc由FPGA提供。
CycloneII系列EP2C5T144C8外接20MHz外部晶体振荡器,可通过内部锁相环PLL电路将其倍频到250MHz,系统设计时咱们将20MHz的时钟倍频到35MHz作为时钟基准fc。
累加器位数:
累加器是DDS电路工作的最关键部份,累加器的工作速度决定了输出波形的频率精度,由△f=fmin=fc/2n知,累加器的位数决定了频率最小分辨率,设计中fc为FPGA的工作频率,取fc=35MHz。
发挥部份要求,频率可实现1Hz的步进,即频率最小分辨率可达1Hz。
现取输出频率的最小分辨率为1Hz,易知2n=fc=,可算得n=,咱们取n=28位,如此累加器的最小分辨率可达35MHz/228=,连接时将低2位置1(分辨率变成3×=),如此在频率步进时可达到发挥部份步进1Hz的要求。
频率操纵字位数:
由以上内容知△f=fmin=,输出频率为30KHz的波形时频率操纵字FSW由下式得出:
FSW=fo/fΔ=>215=32768,实际设计时取频率操纵字的位数为16位。
相位操纵字位数:
两相正弦波相位之差是靠键盘预置和步进的方式来实现的,移相最大精度与波形表地址精度有关,本系统波形数据存储器ROM中存储了28个数据,则最大移相精度为Δφ360o/256=度,与题目步进1度的要求有度的误差,此误差能够通过增加波形数据数来排除,但这会增加硬件开销。
ROM波形数据表:
在一个周期内ωt的取值范围为0~2π,对应y=f(x)形式,即0ROM地址范围的大小取决于所要求的数据表精度,地址范围越大数据表越精准,但需要的存储空间越大。
在Excel表格中能够用下拉单元格的方式迅速生成地址,本设计中生成256个数据的数据表,地址范围0~255,即波形表中每种波形每周期取256点。
第一在A1和B1两格中输入0和2,然后选中此两格,用下拉菜单的方式向后拖动,直到拖到最后一格恰好生成256个数据为止。
然后在A2格输出公式“=sin((A1/256)*2*)”,再利用下拉单元格的方式,取得各个地址单元所对应得正弦函数值。
以上取得的正弦函数表往往不能被D/A转换器直接利用,需要将其值映射到D/A转换器所能同意的数据空间内。
设计中所用D/A转换器为8位,其数据空间是0~255,能够在C1格输入公式“=*(1+B1)”来映射数据,映射后的数据为小数,还须对其取整,即在A3格中输入公式“=INT(C1)”。
最后,为使数据表能直接用于QuartusII程序中还须添加文本。
添加语法文本可输入“=A1”“=&D1”,再用下拉单元格方式,取得完整的数据表。
已生成的带有语法文本的函数表,经复制后能够直接粘贴到用户程序中。
四、FPGA内部逻辑设计
FPGA部份要紧负责信号波形的合成,要紧由累加器部份、加法器部份和波形数据存储器部份,此部份各原理图见附录部份。
五、硬件电路设计
1.D/A转换模块
本系统数模转换器采纳DAC0832,数模转换模块如下图4所示。
输出的模拟量与输入的数字量(DN-1*2N-1+……+D0*20)成正比,这就实现了从数字量到模拟量的转换。
输入可有28(=256)个不同的二进制组态,输出为256个电压之一,即输出电压不是整个电压范围内任意值,只能是256个可能值中的一个。
本系统要求输出量是电压,而DAC0832输出的是电流量,因此还必需通过一个外接的运算放大器转换成电压,那个地址选用OP07集成运放,此运放具有极低的输入失调电压、极低的失调电压温漂能长期稳固工作等特点。
图4D/A转换模块
2.低通滤波模块
巴特沃思低通滤波电路,在通频带内外都有平稳的幅频特性,滤波输出的信号总会在第一个周期略微有些失真,但往后的幅频特性就超级的好。
为了减少运放对滤波电路的负载效益,同时便于调整,咱们选择两个二阶巴特沃思低通滤波器串联的方式,组成一个四阶巴特沃思低通滤波器,其原理如图5。
电路中各参数可通过差表式软件Filterlab生成,并略加修改即可。
图5四阶巴特沃思滤波电路
3.波形移位和电压放大模块
DDS合成输出的波形的幅值全都大于零,因此要设计一波形移位电路将幅值为零的点全数移到X坐标轴上,波形移位原理如下图6。
波形移位部份,其核心部份是一电压跟从器,电压跟从器的输出Vo1=(Vin-Vp),因此输出的Vo1就相当于在输入Vin的基础上下移了Vp伏,而Vp又受可变电阻器Rw1的操纵,通过划动此变阻器理论上可将Vin的波形向Y轴负方向下移0~12V。
赛题要求输出的电压的峰峰值在10k的电阻上不小于20V,而波形移位模块输出波形的峰峰值最大仅有(FPGA的I/O输出电压只有,因此要加一电压放大电路,放大模块的核心器件为集成运放OP37,由《模拟电路》知识知,Vout=-Vin*Rw2/R3,Rw2/R3的范围是0~10,因此通过调剂Rw2能够使输出波形的峰峰值在0~10Vo1间转变,即输出信号的峰峰值最小可到0V,最大可达33V,这足以知足赛题20V的要求。
另外,易知此放大电路为反相较例放大类型,由于理想运放的输出电阻ro趋近于零,因此
输出电阻Ro也趋近于零,则输出电压大体上可不能受负载的阻碍。
图6波形移位和电压放大原理图
六、单片机软件设计
1.设计思想
单片机要紧操纵频率操纵字与相位操纵字的传送、按键的识别和显示等。
按键识别部份:
通过P1对16个按键进行扫描,判定有无按键按下和哪个或哪几个按键被按下,依照按键扫描的值进入相应的处置程序,案件的扫描可采纳线反转的方式实现。
液晶显示部份:
依照要显示的内容,操纵显示内容的位置和相关汉字提示。
串口传输频率操纵字和相位操纵字:
依照按键扫描的值确信是不是需传送操纵字,和是传送相位操纵字仍是频率操纵字,并通过单片机的串行口将其传出。
2.软件流程图
图6单片机主程序流程图
七、系统测试
1.大体部份测试
大体部份测试要紧包括频率步进和频率预置,结果如下表1:
表1大体要求测试
频率预置
频率步进
波形峰峰值(10k电阻)
设置频率
输出频率
误差/%
当前频率
步进
步进的频率值
1
30Hz
30.02Hz
2
500Hz
501Hz
3
4
2.发挥部份测试
发挥部份要求测试如下表2、表3:
表2输出两相正弦波频率预置和步进测试
输出波形相数
频率预置
频率步进
波形峰峰值(10k电阻)
设置频率
输出频率
误差
当前频率
步进
步进的频率值
1
2
3
4
表3两相正弦波相位测试
初始相位
相位差预置
相位差步进
A相
B相
A相
B相
相位差
步进
A相
B相
相位差
1
2
3
4
3.测试结果分析
1)由表1可知,预置频率与实际输出频率的误不同离为平均误差为知足频率精度为的要求;步进频率与实际输出频率增加量间的误不同离为平均误差为也知足频率精度为的要求。
2)由表2可知,
3)由表3可知,
4.误差分析
由以上测试结果可知,本系统存在的误差要紧有频率步进误差、频率预置误差、相位步进误差和相位预置误差。
频率步进于预置误差:
本系统频率操纵字为10为,累加器输出为28位,由“理论分析与计算”的内容知,步进一步频率增加或减少度,与步进1度的要求有度的误差。
而预置的频率也只能是度的若干整数倍,故存在这一误差。
相位步进和相位预置误差:
系统相位操纵位为8位,由“理论分析与计算”的相关内容可知,步进一次,两项波形的相角差增加或减少度,这与步进1度的要求有度误差,一样预置的两相波形的相位差也只能是度的整数倍,故存在相位步进和相位预置的误差。
八、总结
通过一个礼拜的尽力,咱们设计并制作了一低频两相信号发生器,系统可输出频率范围20Hz~20kHz单项正弦波和频率范围1Hz~30kHz两相正弦波,而且可输出载波频率约为10kHz的频率范围在100Hz~1kHz内的调频信号波,而且各波形输出频率可预置和步进,两相正弦波相位之差也可实现预置和步进的功能。
综合测试表明,本系统知足赛题所有的要求。
参考文献
[1]《电子技术基础模拟部份》康华光编高等教育出版社
[2]《电子技术基础数字部份》康华光编高等教育出版社
[3]《全国大学生电子设计竞赛获奖作品精选》全国大学生电子设计竞赛组委会编北京理工大学出版社
[4]《全国大学生电子设计竞赛试题精选》陈永真等编著电子工业出版社
附录
附录1:
生成正弦信号VHDL原理图
附录2:
产生调制信号RTL原理图
附录3:
单片机源程序