1、武汉工业学院毕业设计(论文)设计(论文)题目:基于 FPGA 的信号发生器设计姓 名 学 号 院 系 电气与电子工程学院专 业 电子信息科学与技术指导教师 基于 FPGA 的信号发生器设计i目录摘要 iiiAbstract .iv前言 11 绪论 .31.1 FPGA 简介 .31.2 modelsim 简介 51.3 DDS 基本原理介绍 .62 设计方案 .82.1 总体设计方案 82.2 方案论证 82.2.1 方案一 82.2.2 方案二 92.2.3 方案三 92.3 方案确定 93 硬件电路设计 .113.1 硬件设计注意事项 113.2 DA 电路 113.3 滤波电路 123.
2、4 硬件电路实现 134 软件设计 .144.1 波形产生模块 144.1.1 正弦波 144.1.2 方波 154.1.3 三角波 154.2 频率控制模块 16基于 FPGA 的信号发生器设计ii4.3 相位累加模块 174.4 选择波形模块 174.5 幅度控制模块 184.6 软件设计总成 195 调 试 205.1 设计及仿真调试使用设备 205.2 调试方法 205.2.1 硬件调试 205.2.2 软件调试 205.2.3 综合调试 205.3 调试结果 215.3.1 软件仿真结果及分析 215.3.2 综合调试结果 24总结 25致谢辞 26参考文献 27附件 1 ROM 生
3、成源程序 .28附件 2 40 位流水线加法器程序 30基于 FPGA 的信号发生器设计iii摘要信号发生器是数字设备运行工作中必不可少的一部分,没有良好的信号源,最终就会导致系统不能够正常工作,更不必谈什么实现其它功能了。本次论文主要研究了基于 FPGA 的函数信号发生器的设计思路与软硬件实现。首先介绍了本次设计任务的总体设计方案,以及该方案中设计的知识点,所使用的软件及硬件基本知识。在此基础上进行了硬件电路的设计,主要采用 DDS(直接数字频率合成)方案,采用了 Altera 公司的低成本 cyclone II 系列 FPGA 的 EP2C5QC8作为核心芯片,构建了外围的 0832DA
4、转换电路,以及 1MHZ 低通滤波电路。再次介绍系统软件的设计过程,给出了 FPGA 自底向上的设计思路,以及各个底层模块的设计原理与思路分析,最后介绍了相关软件的应用知识。最后一段介绍了论文的相关结论,进行仿真调试的过程。关键词:信号发生器;FPGA;Modelsim ;Verilog 语言基于 FPGA 的信号发生器设计ivAbstractSignal generator is an essential part of digital equipment operation work, theres not a good signal source, will eventually lea
5、d to system cant normal work, more dont have to talk about what other functions. This paper mainly studies the function signal generator based on FPGA design and hardware and software implementation. First introduced the overall design scheme of the design task, and the scheme of design knowledge, t
6、he use of basic knowledge of software and hardware. On the basis of the hardware circuit design, and mainly adopts DDS (direct digital frequency synthesis), using the low cost of Altera company EP2C5QC8 of cyclone II series FPGA as the core chip, peripheral 0832 da conversion circuit is constructed,
7、 and the 1 MHZ low-pass filter circuit. Again, introduced the system software design process, presents the design idea of FPGA from the bottom up, and the underlying design principles and ideas of the module analysis, finally introduces the application of related software knowledge. The last paragra
8、ph introduces the papers relevant to the conclusion that the simulation debugging process.Keywords: Signal generator, FPGA, Modelsim, Verilog HDL基于 FPGA 的信号发生器设计1前言随着我国的经济日益增长,社会对电子产品的需求量也就越来越大,目前我国的电子产品市场正在迅速的壮大,市场前景广阔。FPGA (Field Programmable Gate Array,现场可编程门阵列 )在现代数字电路设计中发挥着越来越重要的作用。FPGA/CPLD (C
9、omplex Programmable Logic Device)所具有的静态可重复编程和动态在系统重构的特性,使得硬件的功能可以像软件一样通过编程来修改,这样就极大地提高了电子系统设计的灵活性和通用性,缩短了产品的上市时间并可降低电子系统的开发成本,且可以毫不夸张地讲,FPGA/CPLD 能完成任何数字器件的功能,从简单的 74 电路到高性能的 CPU。它的影响毫不亚于 20 世纪 70 年代单片机的发明和使用。现在随着电子技术的发展,产品的技术含量越来越高,使得芯片的复杂程度越来越高,人们对数万门乃至数百万门设计的需求也越来越多,特别是专用集成电路(ASIC)设计技术的日趋进步和完善,推动
10、了数字系统设计的迅速发展。仅靠原理图输入方式已不能满足要求,采用硬件描述语言 VHDL 的设计方式应运而生,解决了传统用电路原理图设计大系统工程时的诸多不便,成为电子电路设计人员的最得力助手。设计工作从行为、功能级开始,并向着设计的高层次发展。这样就出现了第三代 EDA 系统,其特点是高层次设计的自动化。第三代 EDA 系统中除了引入硬件描述语言,还引入了行为综合工具和逻辑综合工具,采用较高的抽象层次进行设计,并按层次式方法进行管理,可大大提高处理复杂设计的能力,缩短设计周期,综合优化工具的采用使芯片的品质如面积、速度和功耗等获得了优化,因而第三代 EDA 系统迅速得到了推广应用。目前,最通用
11、的硬件描述语言有 VHDL 和 VerilogHDL 两种,现在大多设计者都使用 93 年版标准的 VHDL,并且通过了 IEEE 认定,成为世界范围内通用的数字系统设计标准。VerilogHDL 是一种新兴的程序设计语言,使用 VerilogHDL 进行设计其性能总是比常规使用 CPU 或者 MCU 的程序设计语言在性能上要高好几个数量级。这就是说,在传统上使用软件语言的地方,VerilogHDL 语言作为一种新的实现方式会应用得越来越广泛。本课题设计是采用美国 Altera 公司的 cyclone II 器件,使用的是 Altera 公司的 EDA 软件平台 quartus II 可编程逻
12、辑器件开发软件。基于 EDA工具的 FPGA/CPLD 的开发流程,FPGA/CPLD 器件的设计一般可分为设计输入、设计实现和编程三个设计步骤:1. 设计输入方式主要由文本输入和图形输入两种,可根据需要选择,也可混合输入。EDA 工具会自动检查语法;2. 设计实现阶段 EDA 工具对设计文件进行编译,进行逻辑综合、优化,并针对器件进行映射、布局、布线,产生相应的适配文件;基于 FPGA 的信号发生器设计23. 编程阶段 EDA 软件将适配文件配置到相应的 CPLD/FPGA 器件中,使其能够实现预期的功能。信号发生器是数字设备运行工作中必不可少的一部分,没有良好的信号源,最终就会导致系统不能
13、够正常工作,更不必谈什么实现其它功能了。不论是处于开发还是故障检修阶段,输出标准且性能优秀的信号发生器总是能够带来工作效率的大幅提升,使新产品有一个标准的信号源、损坏的系统得到正确校验,不会被一些故障所蒙蔽。在传统的信号发生器中,大都使用分立元件,而且体积庞大携带不便,且大部分只能输出一种脉冲信号波形。在设计领域,不管采用什么技术生产,生产的产品用在哪里,其产品设计的宗旨都是离不开以下几点:实用性高、成本低、可升级、功能完善可扩展等!使用专用的数字电路设计的信号发生器,设备成本高、使用复杂。基于以上考虑,在中小型数字电路的设计和测试中,迫切需要设计一种小型易用成本低廉的信号发生器。此课题的设计
14、以小型经济,集成度高,性能稳定,使用方便为指导,在功能上力求完善实用,同时兼顾商业价值与应用价值的体现。基于 FPGA 的信号发生器设计31 绪论1.1 FPGA 简介FPGA (Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL、 GAL、CPLD 等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。(1) 背景目前以硬件描述语言(Verilog 或 VHDL)所完成的电路设计,可以经过简单的综合与布局,快速的烧录至 FPGA 上进行
15、测试,是现代 IC 设计验证的技术主流。这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如AND、 OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式。在大多数的 FPGA 里面,这些可编辑的元件里也包含记忆元件例如触发器(Flipflop )或者其他更加完整的记忆块。 系统设计师可以根据需要通过可编辑的连接把 FPGA 内部的逻辑块连接起来,就好像一个电路试验板被放在了一个芯片里。一个出厂后的成品 FPGA 的逻辑块和连接可以按照设计者而改变,所以 FPGA 可以完成所需要的逻辑功能。 FPGA 一般来说比 ASIC(专用 集成芯片)的速度要慢,无法完成复杂的设计,而且
16、消耗更多的电能。但是他们也有很多的优点比如可以快速成品,可以被修改来改正程序中的错误和更便宜的造价。厂商也可能会提供便宜的但是编辑能力差的FPGA。因为这些芯片有比较差的可编辑能力,所以这些设计的开发是在普通的FPGA 上完成的,然后将设计转移到一个类似于 ASIC 的芯片上。另外一种方法是用CPLD(复杂 可编程逻辑器件 备)。 (2) CPLD 与 FPGA 的关系早在 1980 年代中期,FPGA 已经在 PLD 设备中扎根。CPLD 和 FPGA 包括了一些相对大数量的可编辑逻辑单元。CPLD 逻辑门的密度在几千到几万个逻辑单元之间,而 FPGA 通常是在几万到几百万。 CPLD 和
17、FPGA 的主要区别是他们的系统结构。CPLD 是一个有点限制性的结构。这个结构由一个或者多个可编辑的结果之和的逻辑组列和一些相对少量的锁定的寄存器。这样的结果是缺乏编辑灵活性,但是却有可以预计的延迟时间和逻辑单元对连接单元高比率的优点。而 FPGA 却是有很多的连接单元,这样虽然让它可以更加灵活的编辑,但是结构却复杂的多。 CPLD 和 FPGA 另外一个区别是大多数的 FPGA 含有高层次的内置模块(比如加法器和乘法器)和内置的记忆体。因此一个有关的重要区别是很多新的 FPGA 支基于 FPGA 的信号发生器设计4持完全的或者部分的系统内重新配置。允许他们的设计随着系统升级或者动态重新配置
18、而改变。一些 FPGA 可以让设备的一部分重新编辑而其他部分继续正常运行。 (3) FPGA 工作原理FPGA 采用了逻辑单元阵列 LCA(Logic Cell Array)这样一个概念,内部包括可配置逻辑模块 CLB(Configurable Logic Block)、输出输入模块 IOB(Input Output Block)和内部连线(Interconnect)三个部分。 现场可编程门阵列(FPGA)是可编程器件。与传统逻辑电路和门阵列(如 PAL,GAL 及 CPLD 器件)相比,FPGA 具有不同的结构, FPGA 利用小型查找表( 161RAM)来实现组合逻辑,每个查找表连接到一个
19、 D 触发器的输入端,触发器再来驱动其他逻辑电路或驱动I/O,由此构成了既可实现组合逻辑功能又可实现时序逻辑功能的基本逻辑单元模块,这些模块间利用金属连线互相连接或连接到 I/O 模块。FPGA 的逻辑是通过向内部静态存储单元加载编程数据来实现的,存储在存储器单元中的值决定了逻辑单元的逻辑功能以及各模块之间或模块与 I/O 间的联接方式,并最终决定了 FPGA 所能实现的功能,FPGA 允许无限次的编程. (4) FPGA 芯片的内部结构1) 可编程输入输出单元(IOB) 可编程输入/输出单元简称 I/O 单元,是芯片与外界电路的接口部分,完成不同电气特性下对输入/输出信号的驱动与匹配要求。F
20、PGA 内的 I/O 按组分类,每组都能够独立地支持不同的 I/O 标准。通过软件的灵活配置,可适配不同的电气标准与I/O 物理特性,可以调整驱动电流的大小,可以改变上、下拉电阻。目前,I/O 口的频率也越来越高,一些高端的 FPGA 通过 DDR 寄存器技术可以支持高达 2Gbps 的数据速率。 外部输入信号可以通过 IOB 模块的存储单元输入到 FPGA 的内部,也可以直接输入 FPGA 内部。当外部输入信号经过 IOB 模块的存储单元输入到 FPGA 内部时,其保持时间(Hold Time)的要求可以降低,通常默认为 0。 为了便于管理和适应多种电器标准,FPGA 的 IOB 被划分为若
21、干个组(bank),每个 bank 的接口标准由其接口电压 VCCO 决定,一个 bank 只能有一种 VCCO,但不同 bank 的 VCCO 可以不同。只有相同电气标准的端口才能连接在一起, VCCO电压相同是接口标准的基本条件。2) 可配置逻辑块(CLB) CLB 是 FPGA 内的基本逻辑单元。CLB 的实际数量和特性会依器件的不同而不同,但是每个 CLB 都包含一个可配置开关矩阵,此矩阵由 4 或 6 个输入、一些选型电路(多路复用器等)和触发器组成。开关矩阵是高度灵活的,可以对其进行配置以便处理组合逻辑、移位寄存器或 RAM。在 Xilinx 公司的 FPGA 器件中,CLB 由基
22、于 FPGA 的信号发生器设计5多个(一般为 4 个或 2 个)相同的 Slice 和附加逻辑构成。每个 CLB 模块不仅可以用于实现组合逻辑、时序逻辑,还可以配置为分布式 RAM 和分布式 ROM。 (5) 基本特点 采用 FPGA 设计 ASIC 电路(专用集成电路),用户不需要投片生产,就能得到合用的芯片。 FPGA 可做其它全定制或半定制 ASIC 电路的中试样片。 FPGA 内部有丰富的触发器和 I/O 引脚。 FPGA 是 ASIC 电路中设计周期最短、开发费用最低、风险最小的器件之一。 FPGA 采用高速 CMOS 工艺,功耗低,可以与 CMOS、TTL 电平兼容。 可以说,FP
23、GA 芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。 FPGA 是由存放在片内 RAM 中的程序来设置其工作状态的,因此,工作时需要对片内的 RAM 进行编程。用户可以根据不同的配置模式,采用不同的编程方式。加电时,FPGA 芯片将 EPROM 中数据读入片内编程 RAM 中,配置完成后,FPGA进入工作状态。掉电后,FPGA 恢复成白片,内部逻辑关系消失,因此,FPGA 能够反复使用。FPGA 的编程无须专用的 FPGA 编程器 ,只须用通用的EPROM、PROM 编程器即可。当需要修改 FPGA 功能时,只需换一片 EPROM 即可。这样,同一片 FPGA,不同的编程数据,可以产生
24、不同的电路功能。因此,FPGA的使用非常灵活。1.2 modelsim 简介Mentor 公司的 ModelSim 是业界最优秀的 HDL 语言仿真软件,它能提供友好的仿真环境,是业界唯一的单内核支持 VHDL 和 Verilog 混合仿真的仿真器。它采用直接优化的编译技术、Tcl/Tk 技术、和单一内核仿真技术,编译仿真速度快,编译的代码与平台无关,便于保护 IP 核,个性化的图形界面和用户接口,为用户加快调错提供强有力的手段,是 FPGA/ASIC 设计的首选仿真软件。主要特点: RTL 和门级优化,本地编译结构,编译仿真速度快,跨平台跨版本仿真; 单内核 VHDL 和 Verilog 混
25、合仿真; 源代码模版和助手,项目管理; 集成了性能分析、波形比较、代码覆盖、数据流 ChaseX、Signal Spy、虚拟对象 Virtual Object、Memory 窗口、Assertion 窗口、源码窗口显示信号值、信号条件断点等众多调试功能; C 和 Tcl/Tk 接口,C 调试; 对 SystemC 的直接支持,和 HDL 任意混合; 基于 FPGA 的信号发生器设计6 支持 SystemVerilog 的设计功能; 对系统级描述语言的最全面支持,SystemVerilog ,SystemC,PSL; ASIC Sign off。 ModelSim 分几种不同的版本:SE、PE、
26、LE 和 OEM,其中 SE 是最高级的版本,而集成在 Actel、Atmel、Altera、Xilinx 以及 Lattice 等 FPGA 厂商设计工具中的均是其 OEM 版本。SE 版和 OEM 版在功能和性能方面有较大差别,比如对于大家都关心的仿真速度问题,以 Xilinx 公司提供的 OEM 版本 ModelSim XE 为例,对于代码少于 40000 行的设计,ModelSim SE 比 ModelSim XE 要快 10 倍;对于代码超过40000 行的设计,ModelSim SE 要比 ModelSim XE 快近 40 倍。ModelSim SE 支持PC、 UNIX 和 L
27、INUX 混合平台;提供全面完善以及高性能的验证功能;全面支持业界广泛的标准;Mentor Graphics 公司提供业界最好的技术支持与服务。1.3 DDS 基本原理介绍直接数字频率合成(Direct Digital Synthesis,简称 DDS)技术是频率合成领域中的一项新技术。DDS 的设计思想完全是基于数值计算信号波形的抽样值来实现频率合成的。DDS 的工作原理是基于相位和幅度的对应关系,通过改变频率控制字来改变相位累加器的累加速度,然后在固定时钟的控制下取样,取样得到的相位值通过相位幅度转换得到与相位值对应的幅度序列,幅度序列通过数模转换得到模拟形式量化的正弦波输出。相位累加器频
28、率控制字 K 时钟 图 1-1 DDS 的结构原理图DDS 的结构原理图如图 1-1。其中相位累加器字长为 N,DDS 控制时钟频率为,频率控制字为 K。DDS 直接从“相位”的概念出发进行频率合成。相位累加器由加法器与累加寄存器级联构成。每来一个时钟脉冲 ,加法器将频率控制字 K 与累加寄存器输出的累加相位数据相加,把相加后的结果送至累加寄存器的数据输入端。累加寄存器将加法器在上一个时钟脉冲作用后所产生的新相位数据反馈到加法N位加法器 N 位相位寄存器 波形存储器 D/A 转换器低通滤波器基于 FPGA 的信号发生器设计7器的输入端,以使加法器在下一个时钟脉冲的作用下继续与频率控制字相加。这
29、样,相位累加器在时钟作用下,不断对频率控制字进行线性相位累加。由此可以看出,相位累加器在每一个时钟脉冲输入时,把频率控制字累加一次,相位累加器输出的数据就是合成信号的相位,相位累加器的溢出频率就是 DDS 输出的信号频率。DDS 的核心就是相位累加器,利用它来产生信号递增的相位信息,整个 DDS系统在统一的参考时钟下工作,每个时钟周期相位累加器作加法运算一次。加法运算的步进越大,相应合成的相位值变化越快,输出信号的频率也就越高。对于幅值归一化的正弦波信号的瞬时值完全由瞬时相位来决定,因为 ,所以相位=()变化越快,信号的频率越高。ROM 表完成将累加器相位信息转换为幅值信息的功能。再由 D/A
30、 完成数字抽样信号到连续时域信号的转换, D/A 输出的台阶信号再经低通滤波器平滑以得到精确的连续正弦信号波形。相位累加器利用 Nbit 二进制加法器的模溢出特性来模拟理想正弦波的 相位周2期。相位累加器输出和 ROM 输出可分别理解为理想正弦波相位信号和时域波形的时钟抽样。用相位累加器输出的数据作为波形存储器的相位取样地址,这样就可把存储在波形存储器内的波形抽样值(二进制编码)经查找表查出,完成相位到幅值转换。波形存储去的输出送到 D/A 转换器,D/A 转换器将数字量形式的波形幅值转换成所要求合成频率的模拟量形式信号。低通滤波器用于滤除不需要的取样分量,以便输出频谱纯净的正弦波信号。相位累
31、加器字长为 N,DDS 控制时钟频率为 ,时钟周期为 ,频率控 =1制字为 K。系统工作时,累加器的单个时钟周期的增量值为 ,相应角=22频率为 ,所以 DDS 的输出频率为=2/2, DDS 输出的频率步进间隔 。=2=2 =2因 DDS 输出信号是对正弦波的抽样合成,所以应满足 Niqust 定理的要求,即,也就是要求 ,根据频谱性能的要求,一般取 。21 21 0.4当 DDS 相位累加器采用 32 位字长,时钟频率为 30MHZ 时,它的输出频率间隔可达 。可见,DDS 的基于累加器相位=2=501062320.01=10控制方式给它带来了微步进的优势。基于 FPGA 的信号发生器设计
32、82 设计方案2.1 总体设计方案(1) 设计步骤此设计将按模块式实现,设计总共分为四大部分完成:1.产生波形(三种波形:方波、三角波和矩形波)信号;2.波形选择;3.频率控制;4.幅度控制。(2) 设计思想利用 Verilog HDL 编程,依据基本数字电路模块原理进行整合。系统各部分所需工作时钟信号由输入系统时钟信号经分频得到,系统时钟输入端应满足输入脉冲信号的要求。具备幅度和频率可调功能,幅度通过两个按键可以增减调节,频率控制模块则是一个简易的计数器,控制步径为 100HZ 的可调频率,达到设计课题所要求的输出波形频率可调及幅度可调功能。幅度可调功能由于比较简单,可以在FPGA 外部利用
33、硬件电路实现。总体设计框图如下图 2-1 所示:图 2-1 系统总体框图2.2 方案论证2.2.1 方案一采用 DDS(直接数字频率合成器)来设计,设计总体框图如图 2-2 所示。在设计界里众所周知,DDS 器件采用高速数字电路和高速 D/A 转换技术,具有频率转换时间短、频率分辨率高、频率稳定度高、输出信号频率和相位可快速程控切换等优点,所以,我们可以利用 DDS 具有很好的相位控制和幅度控制功能,另外其数据采样功能也是极具精确和完善的,它可以产生较为精确的任何有规则波形信号,可以实现对信号进行全数字式调制。用 FPGA 和 DDS 实现信号调制,既克服了传统的方法实现带来的缺点,若采用它来
34、编程设计,必定会事半功倍,且使设计趋于理想状态。但鉴于 DDS 的占用 ROM 空间较大,我们设计时就必须考虑到所用期间的ROM 空间是否够用,结合我选用的 Cyclone II 系列的 EP2C5Q208C8N 器件所提供的 26 个 M4KRAM 存储模块,可以高达 1.1Mbits 的存储单元。应该可以满足本次设计的需要。时钟信号 信号产生 信号控制 D/A 转换器 滤波输出选择信号基于 FPGA 的信号发生器设计9图 2-2 DDS 与 FPGA 总体设计图2.2.2 方案二采用震荡器频率合成方案。具体方案如下:首先通过频率合成技术产生所需要频率的方波,通过积分电路就可以得到同频率的三
35、角波,再经过滤波器就可以得到正弦波。其优点是工作频率可望做得很高,也可以达到很高的频率分辨率;缺点是使用的滤波器要求通带可变,实现很难,高低频率比不可能做得很高。2.2.3 方案三采用 VHDL 语言来编程,然后下载文件到 FPGA 来实现。VHDL 语言是电子设计领域的主流硬件描述语言,具有很强的电路描述和建模能力,能从多个层次对数字系统进行建模和描述,从而大大降低了硬件设计任务,提高了设计效率和可靠性,要比模拟电路快得多。该方案是利用 FPGA 具有的静态可重复编程和动态在系统重构的特性,使得硬件的功能可以像软件一样通过编程来修改,极大地提高了电子系统设计的灵活性和通用性,而且大大缩短了系
36、统的开发周期。2.3 方案确定由上述三个方案对比,采用第一种方案:使用直接数字信号合成技术(DDS),将三种波形的数据存储在 FPGA 配置的ROM 中,通过 FPGA 软件扫描方式将波形数据读出传输给 DAC0832 产生波形输出。这种方法在软、硬件电路设计上都简单,且与我们的设计思路紧密结合。幅度控制部分在设计中目前有两种方法:其一是通过软件将存储的波形数据进行统一比例的缩放在输出给 DAC0832,这样就可以实现幅度的调节。第二种方法是通过外部电位器调节 DAC0832 参考电压的值来调节输出幅度。第一中锋方法调节精确但是除法器肯定会占用大量的 FPGA 内部资源,造成不必要的开销。而使
37、用电位器调节 DAC0832 的参考电压的方法简单,但是调节精度很难达到 0.1V 的步进值。鉴于现在还出于理论分析时期不易决定何种方法更好,此点暂时待定等试验阶段在做确认。频率控制字 相位累加器ROMD/A变换低通滤波基于 FPGA 的信号发生器设计10波形组合如果采用分开式模块实现,也必将导致占用大量的资源,而且模块设计复杂度提高,只要采用重复调用一个模块的设计方法,既可以降低资源的占用率,也使得设计更加灵活且有针对性。此信号发生器的特点及功能集成度高,因采取整体模块式设计,在此也考虑到实际应用中,万一 FPGA 的逻辑门数量不够,特准备了一套备用方案。备用方案:将波形数据存放在外部 SD
38、RAM 中,SDRAM 的存储容量大,且可重复使用,可以很好的解决内存不够使用的情况。 综合以上涉及方面的分析,因此本次课题采用此方案进行设计。基于 FPGA 的信号发生器设计113 硬件电路设计3.1 硬件设计注意事项此次设计利用所购买的 FPGA 核心开发板,并且通过面包板搭建 DA 电路与滤波电路,实现系统功能,能在在良好的环境中正常工作。但是实际制作硬件电路时,就应考虑到干扰所带来的负面影响。为了避免干扰信号影响系统正常工作,未分配功能的 FPGA 引脚必须接地,在 FPGA 器件的电源端必须并连一 0.01uF 的退耦电容,在所有的输入引脚上串联 100 欧姆左右电阻减弱干扰信号影响
39、,如有必要还应在输入端设置上拉或下拉电阻。3.2 DA 电路本设计采用 DAC0832 作为输出 DA 电路,并采用直通通方式(控制总线片选信号 CS,读写使能信号 WR,传输控制信号 XFER,输入所存使能信号 ILE 直接接地),以得到最大的转换速度,电路示意图如下:图 3-1DAC0832 电路连接图(1) DAC0832 简介:DAC0832 是 8 分 辨 率 的 D/A 转 换 集 成 芯 片 。 与 微 处 理 器 完 全 兼 容 。 这 个 DA芯 片 以 其 价 格 低 廉 、 接 口 简 单 、 转 换 控 制 容 易 等 优 点 , 在 单 片 机 应 用 系 统 中 得
40、 到广 泛 的 应 用 。 D/A 转 换 器 由 8 位 输 入 锁 存 器 、 8 位 DAC 寄 存 器 、 8 位 D/A 转 换 电路 及 转 换 控 制 电 路 构 成 。主 要 特 点 : 分辨率为 8 位; 基于 FPGA 的信号发生器设计12 电流稳定时间 1us; 可单缓冲、双缓冲或直接数字输入; 只需在满量程下调整其线性度; 单一电源供电(+5V +15V); 低功耗,20mW。(2) DAC0832 结构:D0D7:8 位数据输入线,TTL 电平,有效时间应大于 90ns(否则锁存器的数据会出错) ; ILE:数据锁存允许控制信号输入线,高电平有效; CS:片选信号输入
41、线(选通数据锁存器),低电平有效; WR1:数据锁存器写选通输入线,负脉冲(脉宽应大于 500ns)有效。由ILE、CS、WR1 的逻辑组合产生 LE1,当 LE1 为高电平时,数据锁存器状态随输入数据线变换,LE1 的负跳变时将输入数据锁存; XFER:数据传输控制信号输入线,低电平有效,负脉冲(脉宽应大于 500ns)有效; WR2:DAC 寄存器选通输入线,负脉冲(脉宽应大于 500ns)有效。由WR2、 XFER 的逻辑组合产生 LE2,当 LE2 为高电平时,DAC 寄存器的输出随寄存器的输入而变化,LE2 的负跳变时将数据锁存器的内容打入 DAC 寄存器并开始 D/A转换。 IOU
42、T1:电流输出端 1,其值随 DAC 寄存器的内容线性变化; IOUT2:电流输出端 2,其值与 IOUT1 值之和为一常数; Rfb:反馈信号输入线,改变 Rfb 端外接电阻值可调整转换满量程精度; Vcc:电源输入端,Vcc 的范围为+5V+15V ; VREF:基准电压输入线,VREF 的范围为-10V +10V; AGND:模拟信号地 DGND:数字信号地3.3 滤波电路DA 输出的滤波器电路可选用有源滤波器与无源滤波器。下面即那个对两种滤波器简单介绍一下:a) 有源滤波器:有源电力滤波器(APF)是一种用于动态抑制谐波、补偿无功的新型电力电子装置,它能够对大小和频率都变化的谐波以及变
43、化的无功进行补偿,之所以称为有源,顾名思义该装置需要提供电源(用以补偿主电路的谐波),其应用可克服 LC 滤波器等传统的谐波抑制和无功补偿方法的缺点(传统的只能固定补偿),实现了动态跟踪补偿,而且可以既补谐波又补无功;三相电路瞬时无功功率基于 FPGA 的信号发生器设计13理论是 APF 发展的主要基础理论;APF 有并联型和串联型两种,前者用的多;并联有源滤波器主要是治理电流谐波,串联有源滤波器主要是治理电压谐波等引起的问题。有源滤波器同无源滤波器比较,治理效果好,主要可以同时滤除多次及高次谐波,不会引起谐振,但是价位相对高!b) 无源滤波器:无源滤波器,又称 LC 滤波器,是利用电感、电容
44、和电阻的组合设计构成的滤波电路,可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路;单调谐滤波器、双调谐滤波器、高通滤波器都属于无源滤波器。因为本设计中要求幅度 5V 内可调节,但是无缘滤波器会造成信号的衰减,因此本设计中采用有源滤波器。设计 D/A 输出后,通过滤波电路、输出缓冲电路,使信号平滑且具有负载能力。输出频率小于 1MHZ,为保证 1MHZ 频带内输出幅度平坦,又要尽可能抑制谐波和高频噪声,选用宽带运放 OPA227,用 TI 提供的滤波器设计软件 FilterPro 设计出截止频率为 1MHZ,为了保证通带的平坦度
45、与阻带的截止特性 ,这里选用 4 阶巴特沃斯低通滤波器.滤波器原理如下图:图 3-2 滤波器电路图OPA27 是一种宽带低噪声高精度运放,带宽可达到 8MHZ,是完全可以满足本次设计的要求的。滤波器频谱特性如下图:图 3-3 滤波器幅频特性3.4 硬件电路实现本设计使用 FPGA 最小系统版与外接面包板焊接的 DA 电路与滤波电路组成。基于 FPGA 的信号发生器设计144 软件设计4.1 波形产生模块本设计用 verilog 语言根据 Niqustc 采样定理,对波形 ROM 进行扫描,分别产生正弦波、三角波和方波。以下介绍各种常用信号的原理。4.1.1 正弦波(1) 设计思想:正弦波发生分
46、为两个步骤,即正弦波幅值采样存储和正弦波波形的还原输出。幅值采样是将一个周期正弦波进行 256 等分,将 256 个采样点进行量化处理,量化值 ,将 256 点量化值存入存储器。正弦波形的产=127.5+127.5*sin(*128)生是通过循环反复将存储器中的 256 点采样值通过 DAC0832 进行还原输出,得到幅值正比于 256 点采样值的正弦波。f(t) f(t)A0 tt 0.5T-ATT图 4-1 正弦波采样 图 4-2 方波采样(2) 正弦波数据获取:通过 MATLAB 获取正弦信号数据MATLAB 程序如下:x=0:255;y=127.5+127.5*sin(x*pi/128
47、);y=round(y);plot(x,y);波形数据如下:基于 FPGA 的信号发生器设计15图 4-3 正弦波 ROM 表ROM 生成源程序见附件 1。4.1.2 方波(1) 设计思路:矩形波的实现较之正弦波发生简单,由于矩形波是两个电平值间的交替变换,因此波形采样值的预存只要有两个不同的数值就行了,为了使矩形波发生的频率控制与正弦波一致,我们采用与正弦波相同的原理,采用 256 个采样值扫描输出来实现,循环反复将存储器中的 256 点采样值通过 DAC0832 进行还原输出,得到幅值正比于点采样值的矩形波。采样图如图 4-2 所示。(2) 方波数据获取 MATLAB 程序如下:x=0:2
48、55;y=127.5+127.5*sign(128-mod(x,256);y=round(y);plot(x,y);其波形数据产生与正弦波一致,这里就不在赘述了。4.1.3 三角波设计思路:由于三角波是线性的,比较简单就可以产生,如果最低电压 DA 参考量为 0,最高电压参考量是 255,我们同样设置 256 个点采样深度(128 点为上升阶段另外128 点为下降阶段),那么根据它的公式 ,每个点的电压参考量只要依2551282基于 FPGA 的信号发生器设计16次加 2 就可以得到,一个波形所以采用简单的加减算法就可实现,如图 4-4 所示三角波的采样图:f(t)AtT-A图 4-4 三角波
49、采样图4.2 频率控制模块本课题要求频率控制是在 100HZ1MHZ,步进为 100HZ。在本题设计中只需借助 FPGA 便可完成。根据上面对 DDS 理论的分析中采用 25 位的相位累加器,并且本次设计的系统时钟为 50MHZ,则由分析可知频率分辨率为,本次要求频率为 100HZ 步进可调,分析后知道=50/2251.4901,只要对频率控制字 送入相位累加器进行累加或1.4904*67=99.837100 K=67累减就可以实现以 100HZ 为步进的频率调节。本模块只要再设计两个按键来判断是对累加器加还是对累加器减就可以实现频率控制,并且 也是满足 采K=67 21样要求。频率控制模块 verilog 程序如下:module Fword(clk,key1