1、设计说明书 基于 FPGA 的波形产生方法研究 目 录 1 引言 . 2 1.1 项目概述 . 2 1.2 设计目的 . 2 1.3 设计任务 . 2 1.4 研究思路和方法 . 2 2 方案论证 . 3 2.1 可变时钟计数器寻址方式 . 3 2.2 直接数字频率合成方式 . 3 2.3 DDS 原理 . 3 3 基于 FPGA 的 DDS 模块的实现 . 5 3.1 现场可编程门阵列( FPGA)简介 . 5 3.2 波形发生器的 FPGA 实现 . 5 3.2.1 相位累加器模块 . 5 3.2.2ROM 查找表模块 . 6 3.3 硬件平台简介 . 8 3.3.1 DAC0832. 8
2、 3.3.2 系统引脚配置 . 9 4 调试运行 . 10 4.1 系统仿真 . 10 4.2 系统性能测试 . 10 4.2.1 正弦波 . 10 4.2.2 方波 . 11 4.2.3 三角波 . 11 4.2.4 锯齿波 . 12 4.3 系统性能分析 . 12 5 结论 . 13 6 参考文献 . 14 7 附件 . 15 7.1 附件一: FPGA 电路文件 . 15 7.2 附件二:波形数据 MATLAB 文件 . 16 1 引言 1.1 项目概述 函数信号发生器是现代测试领域常用的一种信号源,广泛应用于通信、雷达、测控、电子对抗等领域。几乎所有电参量的测量都要用到波形发生器。随着
3、现代电子技术的飞速发展,现代电子测量工作对波形发生器提出了更高的要求,不仅要求能产生正弦波、方波等标准波形,还能根据需要产生任意波形,并且操作方便等。 可编程门阵列( FPGA)具有高集成度、高速度、可实现大容量存储器功能的特性。函数发生器作为现代测试领域常用的仪器之一,若基于可编程门阵列( FPGA),即可极大地提高函数发生器的性能,降低函数信号发生器的生产成本。 此次试验,我组做的是用数字频率直接合成( DDS)的方式,基于 FPGA 的波形产生方法的研究。通过对 DDS 基本原理和工作特点,基本结构等的学习研究,我们对任意波形发生器进行了细致的理论分析。其次通过对 FPGA 的了解,使用
4、之前学习的数字频率直接合成的( DDS)方式,实现基于 FPGA 的任意波形发生器的研究。实验中,通过产生正弦波、方波、三角波、锯齿波等常规波形,波形频率为 150HZ 44K,印证设计符合标准,进一步产生任意波形。 1.2 设计目的 通过此次试验熟悉波形发生器的设计方法,选择合适的方法进行深入研究,实现提高函数发生器的性能,降低函数发生器的生产成本。学习智能仪器的一般 设计 方法 、熟悉 FPGA 的使用 1.3 设计任务 通过研究波形产生的不同方法,选择适当的方式 研制基于 FPGA 的任意波形发生器。要求可以产生正弦波、方波、三角波与锯齿波等常规波形,而且能够产生任意波形,从而满足研究的
5、需要。 1.4 研究思路和方法 利用 FPGA 产生波形数据,并控制 DA 输出模拟电压再通过低通滤波器即可获得所要产生的波形。 FPGA 的程序设计采用 Quartus II 进行设计,并进行各个模块的软件仿真。硬件部分采用凌阳 FPGA 实验箱,最后我们用 40M 的模拟示波器对所得波形进行测试。 项目总体方案设计 2 方案 论证 2.1 可变时钟计数器寻址方式 采用可变时钟计数器寻址波形存储表,该方法是一种传统型任意波形发生器。通过改变频率发生器的频率设定值,实现调整计数器产生的地址变化速率,从而改变 输出的任意波形的频率。计数器产生的地址码提供读出存储器中波形数据所需的地址信号,波形数
6、据依次读出后送至高速 D/A 转换器,将之转变为模拟量,经低通滤波器后输出所需的波形。 这种传统方式的 任意波形发生器采用可变时钟和计数器寻址波形存储表,可以产生连续的地址,输出波形质量高。但是取样时频率较高,对硬件的要求也较高。而且常需多级分频或采用高性能的锁相环,采用分频式的任意波形发生器频率分辨率低,锁相式的任意波形发生器频率切换速度慢。 2.2 直接数字频率合成方式 直接数字频率合成方式( Direet Digital Synthesizer)简称 DDS。是在一组存储器单元中按照信号波形数据点的输出次序存储了所需的波形数据。在控制电路的协调下,以一定的速率周而复始的将波形数据依次发送
7、给 D/A 转换器转换 成相应的模拟信号。 该方法 用 频率控制寄存器和 相位累加器取代了分频器和锁相环电路,信号输出稳定度高,提高了频率输出分辨率和转换时间。 本项目最开始采用了可变时钟计数器寻址方式制作,通过改变锁相环和时钟分频数来改变输出波形的频率,这种方法频率输出分辨率低、转换速度慢、稳定性不高。后改用 DDS 方式产生,可直接通过试验箱的按键改变频率控制寄存器的值来改变输出波形的频率,提高了频率分辨率、减少转换时间。 2.3 DDS 原理 DDS( Direct Digital Synthesizer)即 直接数字合成器,是一种新型的频率合成技术,具有较高的频率分辨率,可以实现快速的
8、频率切换,并且在改变时能够保持相位的连续,很容易实现频率、相位和幅度的数字控制。因此,在现代电子系统及设备的频率源设计中,尤其是在通信领域,直接数字频率合成器的应用尤为广泛。 DDS 其基本结构主要由相位累加器、 寄存器、 波形 ROM、 D/A 转换器四个 部分 组成 , 相 位 累 加 器波 形 R O MD / A 转 换 器低 通 滤 波 器波 形 输 出频 率 字 输 入 K系 统 时 钟 f c图 1 DDS 结构原理图 系统在系统时钟的作用下工作通过改变频率控制字的值,使相位累加器改变读取波形 ROM 中数据的速度从 而改变波形输出频率。 DDS 通过相位累加器来控制频率完成波形
9、输出。 对于正弦信号发生器其输出可以用下面的表达式进行描述: out = Asint = Asin(2t) 式中, out是指该信号发生器的输出信号波形, out是指输出信号对应的频率。 用基准时间信号 clk 进行抽样,令正弦信号的相位为 : = 2foutt 在一个 clk 周期 clk,相位 的变化量为: = 2outclk = 2outclk式中, clk指 clk 的频率对于 2可以理解成“满”相位,为了对 进行数字量化,把 2切割成 2份,由此每个 clk 周期的相位增量 用量化值 来表述: 2 2 且 为整数。即可解得: B2N =foutfclk 即: = 2 outclk显然
10、,信号发生器的输出描述为: out = Asin(1 + )= asin22 (1 +) = A(1 +) 式中, 1指前一个 clk 周期的相位值。同样可以得出: 1 12 2 由上面的推导可以看出,只要对相位的量化值进行简单的累加加运算,即可以得到正弦信号的当前相位值,而用于累加的相位增量量化值 决定了信号的输出频率 out,并呈现简单的线性关系。 我们可以利用上述原理设计数字控制频率合成器。 3 基于 FPGA 的 DDS 模块的实现 3.1 现场可编程门阵列( FPGA)简介 现场可编程逻辑门阵列(英语: Field Programmable Gate Array, FPGA),是一个
11、含有可编辑元件的半导体设备,可供使用者现场程序化的逻辑门阵列元件,它是在 PAL、 GAL、 CPLD 等可编程器件的基础上进一步发展的产物。它是作为专用集成电路( ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。 主要特点: 1)采用 FPGA 设计 ASIC 电路 (专用集成电路 ),用户不需要投片生产,就能得到合用的芯片。 2) FPGA 可做其它全定制或半定制 ASIC 电路的中试样片。 3) FPGA 内部有丰富的触发器和 I/O 引脚。 4) FPGA 是 ASIC 电路 中设计周期最短、开发费用最低、风险最小的器件之一。
12、 5) FPGA 采用高速 CMOS 工艺,功耗低,可以与 CMOS、 TTL 电平兼容。 可以说, FPGA 芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。 FPGA 是由存放在片内 RAM 中的程序来设置其工作状态的,因此,工作时需要对片内的 RAM 进行编程。用户可以根据不同的配置模式,采用不同的编程方式。 加电时, FPGA 芯片将 EPROM 中数据读入片内编程 RAM 中,配置完成后,FPGA 进入工作状态。掉电后, FPGA 恢复成白片,内部逻辑关系消失,因此, FPGA能够反复使用。 FPGA 的编程无须专用的 FPGA 编程器,只须用通用的 EPROM、PROM 编程
13、器即可。当需要修改 FPGA 功能时,只需换一片 EPROM 即可。这样,同一片 FPGA,不同的编程数据,可以产生不同的电路功能。因此, FPGA 的使用非常灵活。 FPGA 芯片结构: FPGA 芯片主 要由 7 部分完成,分别为:可编程输入输出单元、基本可编程逻辑单元、完整的时钟管理、嵌入块式 RAM、丰富的布线资源、内嵌的底层功能单元和内嵌专用硬件模块。 3.2 波形发生器的 FPGA 实现 3.2.1 相位累加器模块 加 法 器 寄 存 器N 位N 位Kc l k相 位 量 化 序 列N图 2 相位累加器结构图 如图 相位累加器由加法器和寄存器构成 , 在 FPGA 中我们采用 32
14、 位的加法器由 LPM_ADD_SUB 宏模块构成 图 3 32 位累加器 32 位寄存器由 LPM_FF 宏模块担任。 图 4 32 位寄存器 32 位寄存器和 32 位累加器共同构成了 32 相位累加器连 接如图 图 5 32 位相位累加器 其中高 6 位 A31.26作为波形 ROM 的地址输入。 3.2.2ROM 查找表模块 ABA + Bd a ta a 3 1 .0 d a ta b 3 1 .0 c lo c k r e s u lt3 1 .0 lp m _ a d d _ s u b 0in s t 4D F Fd a ta 3 1 .0 c lo c k q 3 1 .0
15、lp m _ ff0ins t 5A 3 1 . . 0 B 3 1 . . 0 ABA + Bd a t a a 3 1 . . 0 d a t a b 3 1 . . 0 c l o c k r e s u l t 3 1 . . 0 l p m _ a d d _ s u b 0ins t 4DFFd a t a 3 1 . . 0 c l o c k q 3 1 . . 0 l p m _ f f 0in s t 5波 形 R O M相 位 量 化 序 列地 址数 据波 形 幅 度 量 化 序 列图 6 波形查找表结构图 ROM 查找表由 LPM_ROM 宏模块担任,设置为 8 位 6
16、4 个字 图 7 波形 ROM 在 rom.mif 文件中录入波形数据,我们可以通过 MATLAB 生成任意我们想要得到的波行数据; 图 8 正弦波 rom.mif 文件数据 q7.0接 D/A 的数据口即可将 ROM 表中的数据转化为模拟量输出。 图 9 系统整体原理图 8 bits64wordsB lo c k t y pe : A U T Oa d d r e s s 5 . . 0 c lo c kq 7 . . 0 s in 0in s t 1A 31. . 0B 31. . 0B 7. . 0B 8. . 15B 24. . 31B 16. . 23V C CC LK I N P
17、U TV C CB 16. . 23 I N P U TV C CB 7. . 0 I N P U TV C CB 8. . 15 I N P U TV C CB 24. . 31 I N P U Tp 7. . 0O U T P U TI LEO U T P U TCSO U T P U TG N DV C CABA + Bd a t a a 3 1 . . 0 d a t a b 3 1 . . 0 c lo c k r e s u lt 3 1 . . 0 l p m _ a d d _ s u b 0ins t 4DFFd a t a 3 1 . . 0 c lo c k q 3 1
18、. . 0 l p m _ f f 0ins t 58 bits64wordsBlo c k t y pe : AU T Oa d d r e s s 5 . . 0 c lo c kq 7 . . 0 s i n 0ins t 1c lkrs tc ntdiv 10ins tA 31. . 26时钟信号接电路上的 50M 晶振然后经过分频为电路提供时钟信号。 3.3 硬件平台简介 3.3.1 DAC0832 本实验硬件平台使用凌阳 FPGA 试验箱 , FPGA 为 Altera 公司的 EP2C35F672C6,芯片主频 50M。 图 10 凌阳 FPGA 实验箱 实验采用的 DAC 芯片
19、为 DAC0832, 分辨率 8 位 , 转换时间为 1us。 通过 DA将数据量装换为模拟量再经过低通滤波器得到所需波形。 图 11 DAC0832 引脚图 表 1 DAC0832 引脚功能图 3.3.2 系统引脚配置 图 12 系统引脚配置 用 Quartus II 设计好 FPGA 程序以后需要将所用管脚与硬件电路锁定,可以通过程序控制实验箱相应部分电路,其中 P0.7接 DAC0832 数据口 , CS、 ILE 接DAC0832 的使能端 CS 和 ILE。 CLK 接板子 50 晶振脚为系统提供时钟信号。 B16.23接按键可通过改变按键改变输出频率。 图 13 按键原理电路 4
20、调试运行 4.1 系统仿真 采用 Quartus II 自带的仿真工具进行仿真,首先建立波形仿真文件,时钟信号 CLK 输入为 1us 占空比为 50%,频率控制字为 33554431 仿真结果如下图,显然各个功能模块工作正常,按时序输出,同时 P0.7按照预想输出了所需波形数据仿真图如下: 图 14 系统仿真结果 4.2 系统性能测试 通过实验测试,得出能够 稳定 输出频率范围: 150HZ44K 以下是在不同频率下的 常见 波形: 4.2.1 正弦波 ( 1)频率为 20K 的波形 输出波形稳定,当频率大于 44K 或小于 150HZ 时输出波形跳动无法得到稳定波形,有时会出现某个点的跳变。当频率较高时会出现毛刺。 到频率到达 200 多 K 以后波形变形变成三角波。