DDFS数字信号发生器.docx
《DDFS数字信号发生器.docx》由会员分享,可在线阅读,更多相关《DDFS数字信号发生器.docx(9页珍藏版)》请在冰豆网上搜索。
DDFS数字信号发生器
DDFS数字信号发生器
设计文档
前言
任务分配情况:
调研和选题:
A、B
方案设计:
A、B、C、D
系统实现
信号发生模块:
A
波形采样和显示模块:
C、D
键盘输入和控制模块:
B
系统联调
C、A、B、D
设计文档
第一章:
C
第二章:
A
第三章:
C
第四章:
B
第五章:
C
整理:
B
第一章QuickStart
一.1DDFS数字信号发生器功能简介
DDFS(直接数字频率合成)最早由美国学者J.Tierncy,C.M.Rader和B.Gold提出以全数字技术,从相位概念出发直接合成所需波形的一种新的频率合成方法。
随着集成电路技术和器件水平的提高,直接数字频率合成(DDFS)得到了飞速的发展。
它在相对带宽、频率转换时间、相位连续性、正交输出、高分辨率以及集成化等一系列性能指标方面已远远超过了传统频率合成技术。
DDFS的最低合成频率接近于零频。
转换时间最快可达10ns量级,这都是传统频率合成所不能比拟的。
本设计实现的主要功能有:
1.键盘控制,VGA回显下的七位DDFS信号产生;
2.键盘控制下的DDFS数字信号的采样和VGA显示。
一.2操作指南
1.接线(电源,VGA接口,下载线),开机,将vgacore.bit下载到芯片上,如果下载成功,实验箱上编号为P139的绿色LED灯会点亮;
2.按reset键(实验箱上的P121键),系统进入初始状态,此时如果屏幕上没有内容显示,请检查实验箱上的P14,P15两个开关,如果P14,P15均为0,则只需改变它们中的任意一个就可以在屏幕上看到图案;
3.通过键盘输入发生波形的频率,范围为16~999kHz(否则系统不能正常工作),其间输入错误可以使用Backspace键进行修正;
4.按回车键系统进入波形发生状态;
5.现在您可以通过按回车键或者按实验箱上的P120键来激发一次采样绘图,每次按键,屏幕显示的波形会和先前有所不同;
6.如果此时按下Esc键或者reset键都回使系统回到初始状态,重复步骤3~5,就可以产生并观察新的波形。
第二章DDFS算法设计
二.1DDFS基本原理
DDFS技术是一种可把一系列数字量形式信号通过DAC转换成模拟量形式信号的合成技术。
目前使用最广泛的一种DDFS方式是利用高速存储器作查寻表,然后通过高速DAC产生已用数字形式存入的正弦波。
图1是DDFS的基本原理图。
图1.1信号源结构框图
相位累加器
相位累加器由N位加法器与N位累加寄存器级联构成。
时钟脉冲每触发一次,加法器便将频率控制数据与累加寄存器输出的累加相位数据相加,然后把相加后的结果送至累加寄存器的数据输入端。
累加寄存器将加法器在上一个时钟作用后所产生的新相位数据反馈到加法器的输入端,以使加法器在下一个时钟的作用下继续与频率控制数据相加。
这样,相位累加器在参考时钟的作用下将进行线性相位累加,相位累加器累加满量时,就会产生一次溢出,以完成一个周期性的动作,这个周期就是DDFS合成信号的一个频率周期,累加器的溢出频率就是DDFS输出的信号频率。
相位-幅值转换
用相位累加器输出的数据作为取样地址来对正弦波波形存储器进行相位-幅值转换,即可在给定的时间上确定输出的波形幅值。
数模转换
通过DAC可将数字量形式的波形幅值转换成所要求的合成频率模拟量形式信号,低通滤波器用于衰减和滤除不需要的取样分量,以便输出频谱纯净的正弦波信号。
对于计数容量为2N的相位累加器和具有M个相位取样的正弦波波形存储器,若频率控制字为K,则DDS系统输出信号的频率为:
fo=fc×K/2N,而频率分辨率则为:
Δf=fomin=fc/2N。
基于FPGA的DDFS结构设计。
图1.2信号源结构框图
图1.2是利用DDFS原理设计的一个信号源发生器的结构框图。
图中,FPGA用来控制输出波形的频率、相位和波形的选择。
波形数据的存放有两种形式,一种是将固定波形数据存放在EEPROM里,主要有正弦波,三角波,锯齿波包括半正弦波,半三角波,半锯齿波数据。
而对于特殊的波形,则通过上位机下载到RAM里,然后从RAM里读取数据。
该系统在工作时,首先由上位机把控制命令和数据参数通过USB接口用AT96总线传给FPGA。
如果是固定波形,就从EEPROM中读取数据,否则就从RAM中读取数据。
数据传送给FPGA后即可等待触发信号,触发信号由时基卡或软件给出。
触发信号到来之后,就开始读取数据并输出波形。
同时由FPGA给上位机一个状态位,该状态位可用于表示发送波形是正在发送,还是已经发送结束了。
信号源的输出频率范围分为如下几档:
0.001Hz~1Hz1Hz~10Hz10Hz~100Hz;100Hz~200Hz,步进为1/1000。
之所以分档控制,是为了保证输出波形频率具有更高的精度,在输出波形频率较低时可对数据不抽点,频率较高时应进行抽点。
要达到较高的频率精度,必须利用数字频率合成器(DDFS)来实现对输出波形频率的控制并按频率要求对相位增量进行累加,然后以累加相位值作为地址码来读取存放在存储器中的波形数据。
通过改变相位增量寄存器的增量值(即步长),使相位累加器能够输出依据相位增量寄存器所给出的步长来改变波形存储器的地址,从而改变波形每周期的点数,从而达到改变输出波形频率的目的。
该电路的设计关键在于用硬件构造一个多位累加器来实现相位的累加。
根据DDFS的原理,输出信号频率
与累加器时钟
、累加器位数M、相位增量N的关系如下:
根据以上原理,结合实际情况可得到的各项参数(这里采用32.768MHz=1000×215的晶振频率)。
为了保证所需的精度以及输出波形频率的步进。
这里选M=27。
由于D/A的最大转换速度为1MHz,波形每个周期的样点数是128k,因此当输出波形的频率大于8Hz时,一般就需要进行抽样。
结论
DDFS是现今一种重要的频率合成手段,高速集成电路的发展进一步改善了DDFS的性能,它与传统技术相结合组成的各种混合设计方案将频率源的性能提高到了一个新的水平,因此,未来的DDFS不仅可应用于需要使用信号源的传统领域,而且也必将开拓出许多新的应用领域。
第三章控制和显示界面的设计实现
三.1功能描述
1.在输入状态下实现对输入数据的回显。
回显内容包括阿拉伯数字,Backspace,以及;
2.在波形输出状态下实现对输出波形的采样和绘制。
显示界面设计
界面结构如图2.1所示:
图2.1显示界面设计
其中方框内为波形绘制区域,区域中的网格和边框,以及左下方字母为固定内容。
左下方数字为键盘输入回显。
三.2实现方案
波形采样
数据保存采用一个7*256的RAM记录采样数据,字长取7位是因为波形显示区域纵向点数为128个,字数取256个是因为波形显示区域长256个象素点。
通过手动按键产生脉冲信号,进而激发一次采样,采样进程以系统时钟频率对波形产生模块输出的数字序列进行采样,采够256个数据点后通知写波形模块刷新双口RAM中的内容,即写入新的波形。
屏幕输出
屏幕输出内容主要分为三种类型:
1.固定区域:
采用逻辑判断和查ROM方式,包括全屏幕背景,网格,字母“Frequency”和“kHz”;
2.波形显示区域:
256*128尺寸象素点描绘。
每个象素点信息通过一位数据记录,这样一个8位字节就可以保存8个象素点的信息,因此一共需要4095个字节保存波形显示区域的内容。
象素点保存方式如图2.2,图中为字节编号,0~63字节为一列,64~127字节为一列,……,4032~4095字节位一列。
图2.2波形显示区域象素信息保存顺序
因此采用双口RAM保存波形显示区域的内容,RAM名称为ram_for_wave,A口只写,B口只读。
写入波形时根据采样波形序列,每个采样数据对应一列象素点,和该采样数据对应的象素点数据位写为’1’,否则写为’0’。
3.回显区域:
采用查ROM的方式,根据键盘传送的数据更新回显区域的内容。
三.3模块接口
在原有的colormap模块基础上实现:
第四章键盘控制模块的设计实现
四.1键盘功能
键盘给出数字波形的频率,控制波形的产生和结束。
当发现有按键时,发出一个时钟脉冲,同时发送按键信息。
按键设置包括0~9共10个数字、BackSpace、Enter、Esc(退出)。
四.2设计思路
键盘工作原理
键盘之所以可以识别按键信息,是因为键盘内部具有扫描电路、产生被按下键代码的编码电路、将代码送出的接口电路。
键盘的处理器扫描按键矩阵,如果发现有键被按下、释放或按住,键盘将发送相应的扫描码信息,包括通码和断码。
只要一个键被按下,这个键的通码就被发送;当按下并按住这个键,则键盘将一直发送这个键的通码直到它被释放或其他键被按下;键一释放,断码就被发送;每个键都有自己唯一的通码和断码。
程序设计
用两状态的状态机s0和makecode控制键盘工作。
由于键盘接口是串行通信,用一个移位寄存器存储按键扫描码。
判断寄存器内容,如果是断码则进入状态s0;如果是通码,则输出该通码,同时输出一个时钟脉冲通知VGA有键被按下。
将输出的通码扫描码映射为相应的二进制形式输出。
四.3模块接口
参考网络学堂的键盘部分程序,对输出进行修改。
第五章系统综合结果
系统综合结果如下
SelectedDevice:
2s200pq208-5
NumberofSlices:
784outof235233%
NumberofSliceFlipFlops:
409outof47048%
Numberof4inputLUTs:
1384outof470429%
NumberofbondedIOBs:
13outof1449%
NumberofBRAMs:
9outof1464%
NumberofGCLKs:
4outof4100%
TimingSummary:
---------------
SpeedGrade:
-5
Minimumperiod:
20.698ns(MaximumFrequency:
48.314MHz)
Minimuminputarrivaltimebeforeclock:
5.853ns
Maximumoutputrequiredtimeafterclock:
35.040ns
Maximumcombinationalpathdelay:
9.764ns
系统接口如图5.1
图5.1系统接口
系统内部结构如图5.2(可放大)
图5.2系统内部结构