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