1、基于 FPGA 的 DDS 的设计1基于 FPGA的 DDS的设计电子信息科学与技术专业 刘童指导教师 孙红艳摘要:在电子技术飞速发展的今天,人们对于信号源的要求也逐渐提高。传统的信号源采用独立元件或简单数字电路设计,导致了经济代价大,设计周期长,产品的升级换代困难等诸多不足,显然已经不适合现代电子技术的要求。因此,要利用全新的思路设计符合要求的信号源。采用 DDS 技术已成为当前设计信号源的主流方法,DDS 是指直接数字式频率合成器,它是利用相位的概念直接合成用户所需波形,主要包括相位累加器,波形存储器,数模转换器和低通滤波器组成,通过 FPGA 利用硬件描述语言 VHDL 来进行此设计。与
2、传统的信号源相比,利用 DDS 原理设计的信号源具有频率分辨率高,频率转换速度快,切换相位连续等优点,使用 FPGA 来进行设计,大大缩短了设计周期,降低了研发和制作成本,同时设计可以根据用户不同需求进行改进和升级。关键字:信号源;DDS;FPGADDS Based on the design of the FPGAStudent majoring in Electronic information science and technology Liu tongTutor Sun hong yanAbstract:In the electronic technology rapid devel
3、opment today, people for the signal source requirement also gradually improve. The traditional signal source adopt independent components or simple digital circuit design, leading to the economic cost, the design cycle is long, the upgrade of products such as difficulty some shortcomings, have appar
4、ently not suitable for the modern electronic technology requirements. Therefore, to take advantage of the new idea design to meet the requirements of source. The technology has become the DDS design method of the mainstream of the signal source, is referred to as a direct DDS digital frequency synth
5、esizer, it is to use the concept of phase the direct synthesis of customer need waveforms, mainly including phase accumulators, waveform memory, digital-to-analog converters and low pass filter composition, through the FPGA use hardware description language to this design VHDL. Compared with the tra
6、ditional signal source, using the principle of the signal source has design DDS frequency resolution is high, the frequency conversion speed, switch phase continuous etc, and use to design the FPGA, greatly reducing the design period, lower the cost of making the research and development, and, at th
7、e same time, according to the different needs of the users design can improve and upgrades.Key words:signal source;signal source;DDS;FPGA菏泽学院本科生毕业设计(论文)21 绪论1.1 设计背景我国的电子行业伴随着经济的飞速增长进入了本行业发展的春天,随着物质生活的不断丰富,人们对于电子产品的要求不仅体现在需求量上,而且还表现在对产品的功能上。正因为如此,我国的电子市场正在迅速扩大,有着十分广阔的市场前景。数字电子技术的飞速发展,有力地推动和促进了信息化的提高
8、,它的应用已经渗透到我们生活的各个方面。不管是从计算机到手机,还是数字电话到数字电视,甚至军用设备、工业自动化及航天技术,都是采用了数字电子技术,它的核心是 EDA(电子设计自动化,Electronic Design Automation)技术。就是以计算机工作平台,以 EDA 软件工具为开发环境,以硬件描述语言为设计语言,以可编程器件为实验载体,以电子系统设计为应用方向的电子产品自动化设计过程。它是以计算机科学和微电子技术发展为先导的,汇集了计算机图形学、拓扑逻辑学、微电子工艺与结构学和计算数学等多种计算机应用学科的最新成果的先进技术,是在先进计算机工作平台上开发出来的一整套电子系统设计的软
9、件工具。FPGA(现场可编程器件,Field Programmable Gate Array)便是 EDA 技术的一个分支,是 20 世纪 80 年代中期出现的高密度可编程器件,短短几十年来,取得了惊人的发展,其单片集成密度从最初的 1200 门发展到目前的几百万门,而且时钟频率由最初的不到 10MHz 发展到目前的 300MHz,FPGA 的结构类似于掩膜可编程门阵列(MPGA),有许多独立的可编程模块组成,用户可以通过编程将这些模块连接起来实现不同的设计。高密度可编程器件可以通过硬件描述语言进行设计,使得硬件的修改像软件一样方便,这一特性使得产品的研发时间大大缩短,便于产品的升级换代。高密
10、度可编程可以设计成任何数字器件,无论是简单的门电路,还是高性能的处理器,它的发明对于数字电子电子技术来说具有里程碑式的意义。通信是 FPGA 的传统领域。随着未细化的进步,芯片的面积越来越小、价格越来越低,市场发展正在逐步加快,同时由于 FPGA 灵活方便,不仅性能、速度、连接具有优势,而且可以缩短上市时间,因此应用领域在不断扩展。现在,许多用户都开始在一些批量生产的消费类电子产品上采用 FPGA,如 DVD、TV、游戏设备、空调、PDA、数字视频移动网络、无线局域网等。1.2 设计的意义在电子产品的研发,检测和维修等环节,都会用到信号源,而随着电子产品的品质不断提高,传统的信号源已经不能满足
11、现代电子技术在其频率分辨率、转换速度等方面的要求;而有时我们需要通过计算机来控制信号源,从而完成一些复杂的操作。随着数字信号处理和集成电路技术的发展,DDS(直接数字频率合成器)得到越来越广泛的应用,基于 FPGA 的 DDS 的设计3DDS 有如下优点:频率分辨率高,输出频点多,可达 2 的 n 次方个频点(n 为相位累加器位数);频率切换速度快,可达 us 量级;频率切换时相位连续;可以输出宽带正交信号;输出相位噪声低,对参考频率源的相位噪声有改善作用;可以产生任意波形;全数字化实现,便于集成,体积小,重量轻。现代电子行业正在朝着功能更强,功耗更低,体积更小,速度更快,精度更高的方向发展,
12、这些要求推动着集成电路不断发展。现场可编程器件(FPGA)具有集成度高,逻辑实现能力强、设计灵活性好等优点,可以快速完成复杂的数字系统的设计,符合现代电子行业的发展趋势,因此 FPGA 具有更强大的功能和市场前景,受到电子设计工程师们的普遍欢迎。传统的信号源采用独立元件设计,导致体积庞大,不易携带,且功耗很高,这些缺点大大限制了它们的使用范围和效能,此设计利用 FPGA 为载体,不仅克服了上述不足,减小了体积,降低了功耗,而且设计的信号源性能更加优良,性能的提高不仅在研发过程中可以提高产品的质量,而且在检修过程中可以大幅度提高工作效率,发现一些不易发现的故障。而设计还可以根据需要进行升级和功能
13、的扩展,表现出了极强的市场生命力。1.3 设计实现的目标本设计利用 FPGA 和外围电路来进行对 DDS 信号源的设计,并且利用 EDA 开发软件Quartus来进行设计和功能仿真,设计的性能要求:(1)能够输出典型的正弦波。(2)通过键盘控制频率的大小,并且利用数码管显示出来。(3)输出的峰峰值5V.2 设计方案2.1 DDS设计2.1.1 DDS 设计原理频率合成技术是将一个(或多个)基准频率变换成另一个(或多个)合乎质量要求的所需频率的技术。一个的简单的原始单频信号可表示为:(2-1)0()sin(2)utUft在它的初始相位 0和幅度 U 不变的情况下,它的频谱为一条谱线,频率为 f0
14、。在这里,为了简化表示,令 U=1, 0=0,这是不会影响系统研究的,简化后的信号可以表示为:(2-2)0()si)si()tftt如果对(2-2)式中表示的信号进行采样,令采样周期为 Tc(即采样频率为 fc) ,则可得到离散的波形序列:(2-3)0()sin2)cuf(0,123)n菏泽学院本科生毕业设计(论文)4相应的离散相位序列为:(2-4)0 2cnfTn0,123式中:(2-5)0cf是连续两次采样之间的相位增量。根据采样定理:(2-6)02cf分析上述关系式得:只要(2-3)式中的离散序列确定,便可唯一的恢复出(2-2)式中的模拟信号。从(2-2)可知,是相位函数的斜率决定了信号
15、的频率;从(2-5)可知,决定相位函数斜率的是两次采样之间的相位增量 。因此,只要控制这个相位增量,就可以控制合成信号的频率。现将整个周期的相位 2 分成 M 份,每一份为 =2/M,若每次的相位增量选择为 的 K 倍,即可得到信号的频率:(2-7)02ccffT相应的模拟信号为:(2-8)sincftutM式中 K 和 M 都是正整数,根据采样定理的要求,K 的最大值应小于 M 的 1/2。综上所述,在采样频率一定的情况下,可以通过控制两次采样之间的相位增量(不得大于 )来控制所得离散序列的频率,经保持、滤波之后可唯一的恢复出此频率的模拟信号。DDS 设计原理图如图 2-1 所示:参考频率源
16、f c l k相位累加器( N b i t )波形存储器D / A 转换器L P F ( 低通滤波器 )M DAf o u t图 2-1 DDS设计原理图主要构成:内部:相位累加器,波形存储器外围:D/A 转换器,LPF(低通滤波器)图中 M 为频率控制字,N 为相位累加器的位数,D 为相位累加器的输出位数,A 为波形存储部分输出的幅度码的位数,参考频率源的频率为 fclk,输出频率为 fout.。2.1.2 DDS 工作过程在每一个参考频率 fclk 作用下,加法器就将频率控制字 M 与累加寄存器输出的累加相位数据相加,相加的结果又反馈到累加寄存器的数据输入端,以使加法器在下一个时钟脉冲的作
17、用下继续与频率字相加。这样相位累加器在时钟作用下,不断对频率控制字进行线性相位累加。由此可以看出,在每一个时钟脉冲输入时,相位累加器便把频率控制字累加一次,相位累加器输出的数据就是合成信号的相位,相位累加器的溢出频率就是 DDS 输出的信号频率。用相位累加器输出的数据作为波形存储器(ROM)的相位采样地址,这样就可以把存储在波形存储器内的波形采样值(二进制编码)经查表找出,完成基于 FPGA 的 DDS 的设计5相位到幅值的转换。波形存储器的输出送到 D/A 转换器,由 D/A 转化器将数字信号转换成模拟的阶梯电压信号,阶梯电压信号经过低通滤波器平滑后,可以得到所需的正弦波信号。DDS 信号流
18、程示意图如图 2-2 所示:相位 累加器R O M D / A L P F图 2-2 DDS信号流程示意图由于相位累加器为 N 位,相当于把正弦信号在相位上的精度定为 N 位(N 的取值范围一般为 2432) ,所以其分辨率为 1/ 2N。若系统的时钟频率为 fclk,频率控制字 M 为 1,则输出频率为:fout=fclk/2 N,这个频率相当于“基频 ”。若 M 为 B 则输出频率为:(2-9)NfclkfoutB当系统输入时钟 fclk 不变时,输出信号频率由 M 所决定。由上式可得:(2-10)2ftclk其中 B 为频率控制字,注意 B 要取整。2.2 FPGA设计 DDS的原理根据
19、 DDS 的实现原理,使用 FPGA 设计 DDS 更为实用,足够大的逻辑单元,保证了可以实现很小的步进频率,提高产品的精度,且辅助有高速的 D/A 转换器可以做到很高的频率。FPGA 设计 DDS 原理框图如图 2-3 所示:定模累加器 ( 模值 = 2N)D D S 主输入时钟 f c l k累加步进值( M )波形 R O M 表图 2-3 DDS原理框图在主输入时钟 fclk 和步进累加器步进值 M 的共同作用下,累加器输出波形数据表地址,在 ROM 中查得相应波形当前幅度值,从而确定输出波形。 2.3 FPGA器件的选择与简介FPGA 是现场可编程门阵列(Field Programm
20、able Gate Array)的英语缩写,它是在阵列的各个节点放上由门 、触发器等做成的逻辑单元,并在各个单元之间预先制作了许多连线。在 FPGA 中常用的编程工艺有反熔丝和 SRAM 两类。综合考虑设计、仿真和调试的全过程,在此主要考虑选用 Altera 公司的 Cyclone 系列的 FPGA 芯片。Cyclone 是 Altera 公司 2003 年推出的产品系列,它集合了可编程器件的灵活性,采用0.13um 工艺,1.5v 内核供电,与 Stratix 结构类似,是一种低成本 FPGA 系列 ,是目前主流产品,其配置芯片也改用全新的产品。系统时钟可以达到 275MHZ,兼容 66MH
21、Z,64 bit PIC,采用独特的嵌入式阵列和逻辑阵列的逻辑实现结构,同一系列相同封装的芯片在管脚上满足兼容。菏泽学院本科生毕业设计(论文)6同时,可为用户提供 92Kbit 的片内 RAM,其双口 RAM 为独立的读写操作提供了独立的读、写端口,且每个 I/O 口都有寄存器;PLL 时钟管理和时钟增强电路提高了系统的性能,并且可以提供时钟倍频;专用进位链路,可实现快速加法器和计数器功能;专用级联链路,支持系统集成;支持多时钟系统的低时滞要求;具有 JTAG 边界扫描测试内速电路。本设计中采用 Altera 公司的 Cyclone 系列芯片 EP1C6Q240,作为实现 DDS 的FPGA
22、芯片。EP1C6Q240 的主要参数如表 2-4 所示:逻辑单元(LE)4K bit+奇偶校验I/O 门数 RAM 总量 /bit PLL配置二进制文件大小(bit)可选串行主动配置器件5980 20 185 92160 2 1167216 EPCS1/EPCS4/EPCS16表 2-4 EP1C6Q240的主要参数其 3.3V 外部电源和 TTL、CMOS 电平兼,丰富的寄存器资源和 I/O 口,48MHZ 的工作频率满足基准时钟 10MHZ 的要求,其优良的特性完全可以实现 DDS 芯片的功能。电路原理图见附录 5。2.4 开发环境简介本设计利用 Altera 公司提供的开发 FPGA 的
23、集成环境 Quartus,简单易学易用,其可视化、集成化设计环境等优点为大家公认,从设计输入、仿真、编译、综合、布局布线和下载都可以使用这个集成环境来完成。它提供了一种与结构无关的设计环境,我们只需要使用自己熟悉的开发工具,通过软件提供的各种输入方式进行编译、仿真和综合,便可设计出需要的可编程器件。Quartus能够直接满足特定的设计需要,为可编程器件提供全面的设计环境,它含有 FPGA 设计所有阶段的解决方案,其设计流程图如 2-5 所示设计入口综合布局布线时序分析仿真编程和重构设计入口工程改变管理设计入口图 2-5 FPGA设计流程图此外,Quartus软件为设计流程的每个阶段提供 Qua
24、rtus图形用户界面、EDA 工具界面和命令行界面。可以在整个流程中只是用这些界面中的一个,也可以在设计流程的不同阶段使用不同的界面。2.5 设计语言选择与简介硬件描述语言(HDL)是一种用形式化方法描述数字电路和系统语言。利用这种语言,数字电路系统的设计可以从上层到下层(从抽象到具体)逐层描述自己的设计思想,用一系列分层的模块来表示极其复杂的数字系统。然后,利用电子设计自动化(EDA)工具,基于 FPGA 的 DDS 的设计7逐层进行仿真验证,再把其中需要变为实际电路的模块组合,经过自动综合工具转换到门级电路网表。接下来,利用现场可编程门阵列 FPGA 自动布局布线工具,把网表转换成要实现的
25、具体电路布线结构。目前,这种高层次(High-Level-Design)的方法已被广泛采用。据统计,目前在美国的硅谷约有 90%以上的 FPGA 采用硬件描述语言进行设计。硬件描述语言 HDL 的发展至今已有 20 多年的历史了,并成功应用于 EDA 设计的各个阶段:建模、仿真、验证和综合等。到 20 世纪 80 年代,已经出现了上百种硬件描述语言,对设计自动化曾起到极大的促进和推动作用。但是,这些语言一般各自面向特点的设计领域和层次,而且众多的语言使用户无从适应。因此,急需一种面上设计的多领域、多层次并得到普遍认同的标准硬件描述语言。20 世纪 80 年代后期,VHDL 和 Verilog
26、HDL 语言适应这种趋势的要求,先后成为 IEEE 标准。本设计采用 VHDL 作为硬件描述语言,因为 VHDL 能够形象化地表示出电路的结构与行为,支持从系统到逻辑门级所有层次的设计,适合复杂电路和系统设计,除此之外它还是与显示技术相独立的语言,既不束缚于某一特定模拟程序或数字装置,也不把设计方法强加于设计者。其最大的特点是描述能力强,可覆盖逻辑设计的诸多领域和层次,并支持众多硬件模型。因此我们选用 VHDL 作为 DDS 设计的硬件描述语言。VHDL 程序设计的基本结构如图 2-6 所示V H D L 整体程序库 、 程序包使用模型 实体 结构体 配置G E N E R I C 类属说明
27、P O R T 端口说明 结构体说明 结构体功能描述图 2-6 VHDL程序基本结构图3 综合设计3.1 FPGA设计部分此设计中,FPGA 需要完成 DDS 模块、DDS 顶层设计模块、 DDS 波形存储器模块和DDS 接口测试模块的设计。3.1.1 DDS 顶层模块的设计此模块是整个设计总模块,在此模块中不仅有调用其他模块的声明,而且还有整个设计中所有管脚的定义,它是整个程序的主函数,其他所有的功能模块都是在它的控制下进行工作的,这是整个设计的核心。DDS 顶层模块生成的原理图如下:菏泽学院本科生毕业设计(论文)8图 3-1 DDS顶层模块原理图此模块程序代码见附录 13.1.2 DDS
28、功能模块设计在此模块中主要设计了频率相位累加器和相位调制器,相位累加器是此设计的关键功能模块,它的性能直接决定了此设计的系统性能,相位累加主要是利用频率控制字和相位控制字来累加出寻址地址,freq_countclock,c0=dds_clk);-调用 PLL 模块U2: dds PORT MAP(clock=dds_clk,fword=fword,pword=X“000“,da_clk=da_clk,da_data=da_data,da_mode=da_mode);-调用 DDS 模块.U3: dds_test PORT MAP(clock=clock,key=key,fword=fword,
29、seg=seg,dig=dig);-END;附录 2DDS 模块程序代码LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_Arith.ALL;USE IEEE.STD_LOGIC_Unsigned.ALL;ENTITY dds ISPORT(clock: IN STD_LOGIC;fword: IN STD_LOGIC_VECTOR(31 DOWNTO 0);-输入频率字pword: IN STD_LOGIC_VECTOR(11 DOWNTO 0);-输入相位字da_data:OUT STD_LOGIC_VECTOR(9
30、 DOWNTO 0);-输出 DA 数据da_clk: OUT STD_LOGIC;-输出 DA 时钟da_mode:OUT STD_LOGIC-DA 模式控制);END;ARCHITECTURE one OF dds ISCOMPONENT dds_rom -调用元器件说明。PORT(address : IN STD_LOGIC_VECTOR (11 DOWNTO 0);clock : IN STD_LOGIC ;q : OUT STD_LOGIC_VECTOR (9 DOWNTO 0);基于 FPGA 的 DDS 设计19END COMPONENT;SIGNAL fword_r: STD_
31、LOGIC_VECTOR(31 DOWNTO 0);SIGNAL pword_r: STD_LOGIC_VECTOR(11 DOWNTO 0);SIGNAL freq_count: STD_LOGIC_VECTOR(31 DOWNTO 0);-频率相位累加器SIGNAL rom_addr:STD_LOGIC_VECTOR(11 DOWNTO 0);-正弦波数据表地址BEGINda_moderom_addr,clock=clock,q=da_data);END;附录 3DDS 接口测试模块程序代码LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEE
32、E.STD_LOGIC_Arith.ALL;USE IEEE.STD_LOGIC_Unsigned.ALL;ENTITY dds_test ISPORT(clock: IN STD_LOGIC;-系统时钟 48MHzkey:IN STD_LOGIC_VECTOR(7 DOWNTO 0);-按键输入 key1 key8fword: OUT STD_LOGIC_VECTOR(31 DOWNTO 0);-要发送的数据。seg: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);-数码管段码输出。菏泽学院本科生毕业设计(论文)20dig: OUT STD_LOGIC_VECTOR(7
33、DOWNTO 0)-数码管位码输出。);END;ARCHITECTURE one OF dds_test ISSIGNAL fword_r: STD_LOGIC_VECTOR(31 DOWNTO 0);SIGNAL seg_r: STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL dig_r: STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL count: STD_LOGIC_VECTOR(16 DOWNTO 0);-时钟频计数器SIGNAL dout1,dout2,dout3: STD_LOGIC_VECTOR(7 DOWNTO 0);-消抖寄存器S
34、IGNAL buff: STD_LOGIC_VECTOR(7 DOWNTO 0);-边沿检测寄存器SIGNAL cnt: STD_LOGIC_VECTOR(2 DOWNTO 0);-数码管扫描计数器SIGNAL disp_dat: STD_LOGIC_VECTOR(3 DOWNTO 0);-数码管扫描显存SIGNAL key_edge: STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL div_clk: STD_LOGIC;-分频时钟BEGINPROCESS(clock) -时钟分频部分BEGINIF RISING_EDGE(clock) THENIF countdisp
35、_datdisp_datdisp_datdisp_datdisp_datdisp_datdisp_datdisp_dat dig_r dig_r dig_r dig_r dig_r dig_r dig_r dig_r seg_r seg_r seg_r seg_r seg_r seg_r seg_r seg_r seg_r seg_r seg_r seg_r seg_r seg_r seg_r seg_r seg_r=X“FF“;END CASE;END PROCESS;dig=dig_r;seg=seg_r;fword=fword_r;END;附录 4 FPGA 设计总体 RTL 电路图基于 FPGA 的 DDS 设计25附录 5 EP1C6Q240 电路原理图菏泽学院本科生毕业设计(论文)26