基于FPGA的高频信号发生器设计.docx
《基于FPGA的高频信号发生器设计.docx》由会员分享,可在线阅读,更多相关《基于FPGA的高频信号发生器设计.docx(20页珍藏版)》请在冰豆网上搜索。
基于FPGA的高频信号发生器设计
基于FPGA的高频信号发生器设计
摘要
随着科学技术的不断发展与进步,我们进入了数字化时代,产品的数字化已是大势所趋。
FPGA(现场可编程门阵列)具有的现场可编程的特性,可以让它的硬件的性能,通过如同软件程序一样实时修改程序代码来改变功能,反复修改错误,这种方式极大地提升了电子设计的灵活性,节约了时间成本和开发成本。
本文使用的FPGA芯片,采用的是Altera公司生产的低成本,Cyclone系列的CycloneIIEP2C8Q208C8N做为核心,完成波形的产生功能,利用内部的ROM来存储波形数据,做出简易的信号发生器,然后通过嵌入锁相环(PLL)来倍频时钟信号,改变信号发生器的频率,达到需要的高频100MHZ以上,使用SignalTapII对输出数据进行采样,观察波形输出。
关键词:
FPGA;信号发生器;PLL;100MHZ;SignalTapII
目录
第一章前言3
1.1研究背景3
1.2研究的意义3
1.3研究内容4
1.4本文主要工作4
第二章概述FPGA与PLL5
2.1FPGA简介5
2.1.1FPGA的结构与组成5
2.1.2FPGA与ASIC设计的区别5
2.2FPGA开发流程6
2.3锁相环(PLL)简介7
2.3.1PLL的组成7
2.3.2PLL应用:
频率合成7
2.3.3FPGA内嵌功能模块PLL8
第三章硬件平台9
3.1开发板核心板资源介绍9
3.2存储器SDRAM电路9
3.3电源电路9
3.4独立按键及LED电路10
3.5时钟和复位电路10
第四章设计的软件部分11
4.1开发工具软件的简介11
4.1.1quartus简介11
4.1.2modelsim简介11
4.2设计的系统框图说明12
4.3波形数据存储ROM的定制12
4.3.1波形数据的产生12
4.3.2波形数据存储模块的设计12
4.4频率控制模块的设计13
4.5计数器模块的设计13
第五章设计验证与总结14
5.1功能仿真14
5.2SignalTapII观察波形14
5.3总结15
参考文献16
致谢17
第一章前言
1.1研究背景
FPGA是由美国公司Xilinx在1980年代中期率先推出的。
伴随半导体生产制造工艺技术的不断进步,FPGA在组成、速度和性能等方面有了非常大的改善和提升,和它相对应的是设计方法学和自动化设计工具也得到了飞速的发展。
其中,设计工具的自动化为FPGA的应用和发展起到了推波助澜的效果。
FPGA是一种可编程的数字IC,拥有较短的开发周期、强大的功能和很好的保密性等特点,被大规模的应用于各个领域。
就在此时期,FPGA应用版图的面积在不断扩大和半导体生产制造工艺技术的不断发展,都促进了FPGA飞速发展,当中的Altera和Xilinx公司生产的产品在整个FPGA/CPLD市场上占有很大比重。
信号发生器是一种历史久远的测量仪器,在20年代早期,电了设备刚出现时就有了。
40年代,有了重点使用在测试各种接收机的标准信号发生器。
70年代前,信号发生器重点有两大类:
正弦波和脉冲波。
这时多运用模拟电子技术,模拟元件设计的电路存在着尺寸大、功耗也大等缺点,电路组成非常复杂,产生的波形也少。
70年代后,因为微处理器的出现,可使用处理器、A/D和D/A,硬件和软件结合使波形发生器的性能扩宽了,产生进一步复杂的波形。
这时多以软件为主,本质是处理器对DAC芯片的程序控制,就可得到各类简单的波形。
80年代后,数字技术日益成熟,信号发生器基本上都是运用数字电路。
90年代末,应运而生了几种真正高性能、高价格的波形发生器。
HP公司推出了型号为HP770S的信号模拟装置系统,它由HP8770A任意波形数字化和HP1776A波形发生软件构成。
HP8770A事实上也只可以产生8种波形,并且价格非常昂贵。
二十一世纪,伴随集成电路技术的飞速发展,出现了多种工作频率可过GHz的DDS(直接数字频率合成)芯片,又推动了信号发生器技术的发展。
1.2研究的意义
伴随着电子技术的飞速发展,频率不同、幅度不同的各种规则或不规则的可调节电信号常常被需要,而产生这种电信号的仪器就是信号发生器。
它作为一种通用的信号源,大规模应用于自动化控制等领域。
与万用表、频谱仪、示波器等仪器一样,是作为最普通、最广泛使用的电子测量仪器之一。
绝大多数系统电参量的测量,都会用到它,将它产生的信号作为输入的激励信号,以观察整个系统的反馈。
它是数字设备使用中不可缺少的一部分,假如缺少不错的信号源,那么会导致系统不能正常运行,更不必说什么实现其它什么功能了。
FPGA产品的应用版图面积已经飞速的由以前的通信方面扩大到消费电子、工控、测量等大规模的版面上来了。
由于应用的变化,FPGA产品在近几年的发展趋势也越来越鲜明:
一边是FPGA制造商从事于使用当下最先进的工艺技术来提升产品的性能,降低产品的成本;另一边是为了满足客户产品快速上市的需求,愈来愈多通用IP(知识产权核)或客户定制IP被引进到FPGA当中。
另外,FPGA企业都在努力促进产品功耗的降低,满足业界愈来愈严格的低功耗要求。
将原本机械构造,高功耗的高频信号发生器数字化,设计低功耗,便捷实用的信号发生器是势在必行的趋势。
1.3研究内容
正文是基于FPGA技术,通过以硬件描述语言,Verilog设计高频信号发生器,以开发工具软件QuartusII与Modelsim辅助设计,采用FPGA锁相环(PLL)技术合成高频,设计完成频率为100MHZ以上的高频信号发生器。
本文使用WIN10操作系统,使用的开发工具软件是QuartusII12.0和ModelsimSE10.01a。
1.4本文主要工作
本文主要完成了如下几个方面的工作:
(1)简介FPGA及开发流程
(2)简介PLL(锁相环)与在频率合成的应用
(3)硬件部分,开发板部分介绍
(4)设计的软件部分,工具软件介绍,各个模块的设计
(5)设计的验证过程
(6)总结
第二章概述FPGA与PLL
2.1FPGA简介
什么是FPGA?
FPGA即现场可编程门阵列,英文全称FieldProgrammableGateArray,是一种可编程的集成电路(IC)芯片。
2.1.1FPGA的结构与组成
一般而言,FPGA是布线资源分隔的可编程的逻辑单元(LE)组成的阵列,通过可编程I/O单元围绕整个阵列组成整个芯片,排成阵列的LE透过布线通道里面的可编程内连线连接起来促成相对应的逻辑功能。
时下,通常使用的FPGA芯片的可编程LE,是查找表(LUT)和触发器组成。
LUT它的庐山真面目就是一个静态存储器SRAM。
左边的电路,查找表的实现:
首先FPGA开发工具会自行计算逻辑电路的全部会存在的结果,然后把结果提前写进查找表,在FPGA工作时,输入信号进行的逻辑运算就当于输入一个地址进行查表,然后把地址对应的内容输出,就能够实现逻辑功能。
假如设计的是时序电路,需要触发器,则FPGA开发工具会自行将触发器配备在查找表的后面,促成组合逻辑时就把触发器旁路掉。
对于错综复杂的设计,一个LUT是没有办法做成设计的,FPGA会采用进位逻辑把许多个LUT连接起来,促成n输入的查找表,实现设计要求。
简单的理解,FPGA是由LUT、触发器和布线资源构成。
是一个Cyclone系列的FPGA芯片的内部组成,它当中的一对LUT和触发器组成LE,多个LE组成逻辑阵列块LAB,然后加上各类布线资源,组成一个FPGA芯片。
2.1.2FPGA与ASIC设计的区别
ASIC即专用集成电路,英文全称为ApplicationSpecificIntegratedCircuit。
ASIC和FPGA都是属于SOC(Systemonchip片上系统)的两个不同的发展方向,对比两者的唯一区别在于,ASIC的逻辑电路是固化在它的芯片当中,简单的可以把ASIC看成是不可编程的FPGA。
出于FPGA基于固定的硬件组成设计结构(如存储器、锁相环等),而ASIC设计结构因地制宜,目标不胜枚举,因此ASIC设计的代码格调和FPGA设计的代码格调是有明显不同的,尤其是在功耗、速度、时序要求上。
例如,在ASIC设计中根据要求会有意识的使用一些元件和电路方法来达到降低功耗或提高速度的目的。
2.2FPGA开发流程
HDL即硬件描述语言,英文全称HardwareDesignLanguage,是最常用的数字硬件电路描述方法之一,相对于原理图的描述方式比较而言,HDL设计有更加不错的可移植性、普遍使用性和模块分离和重复利用的特点,从而它被大规模的使用。
通常采用FPGA设计数字电路时,它的开发流程是基于HDL。
本文采用的是Verilog语言,它是HDL中的一种。
它可应用在仿真验证、时序分析、逻辑综合。
它是当下运用最广阔的HDL当中的一种。
(1)需求定义(功能定义)
设计和实现一个系统的第一步,是确定好整个设计的性能指标,再把设计功能划分为不同的可实现的具体模块,并确认各个模块的功能和基本时序。
(2)RTL级(寄存器传输级)HDL描述
RTL级描述是不用管寄存器和组合逻辑方面的细枝末节,透过描述寄存器到寄存器之间的逻辑功能的HDL设计方法。
RTL级相对于门级比较而言,是更加的抽象,也是更加的简单和高效。
RTL级最大的特点是能直接通过综合工具将它综合为门级网表,它直接关系着系统的效能。
(3)功能仿真(前)
功能仿真即综合前仿真,是为了查看RTL级描述和设计用意是否保持如出一辙。
(4)管脚分配与设计约束
不管是RTL级或是门级的HDL设计方法,实现逻辑的时侯都需和FPGA芯片做匹配。
管脚分配是把设计文件输入输出的信号指定至芯片的某个管脚,设置此管脚的参数。
设计约束是对设计的时序约束与在综合、布局布线阶段附加的要求等。
(5)综合
将RTL级HDL语言翻译成由与门、或门、非门等基本逻辑单元构成的门级网表,又要依照设计目的和约束条件优化而变化成的逻辑连接,输出门级网表文件。
(6)综合后仿真(门级)
综合之后经过后仿真的过程来验证综合结果是否与原设计保持如出一辙。
一般而言,测试激励是和功能仿真的测试激励保持同步的。
这一步骤一般而言是会被省略掉的。
(7)布局布线
布局布线即采用综合后的网表文件,把工程的逻辑与时序要求与器件的可用资源做比对。
(8)时序/时延分析
运用时序/时延分析的时序仿真是最准确的,可比较好地反馈芯片的实际工作情况及找到不满足时序约束条件或者器件固有建立时间与保持时间的情况。
(9)配置与下载
编程器把布局布线后产生的配置文件通过下载的方式,下载到FPGA芯片中,对它的硬件资源来做编写程序的过程。
配置文件格式通常为.pof或.sof。
下载方式包含:
AS(主动方式)、JTAG(边际扫描方式)等。
2.3锁相环(PLL)简介
PLL即锁相环,英文全称Phase-locked-loops。
它是运用反馈控制原理促使频率及相位的保持同步的技术,它的效应是把电路当中的输出时钟信号与它的外部参照时钟信号相互同步。
2.3.1PLL的组成
一个锁相环电路一般而言是由如图2-6所示的4个模块组成而来:
(1)鉴频鉴相器/鉴相器(PFD/PD):
是对于已经输入的参照信号和反馈回路信号做频率和相位的方面上的比较,输出一个代表两个差异的信号至LPF。
(2)低通滤波器(LPF):
将输入信号中的高频成分滤除,保留直流部分送至压控振荡器。
(3)压控振荡器(VCO):
输出一个周期信号,其频率由输入电压所控制。
(4)反馈回路:
VCO输出的信号送回至PFD。
一般而言VCO输出的信号频率是超过参照信号的频率,因此需通过加上分频器(Frequencydivider)来降低频率。
2.3.2PLL应用:
频率合成
在数字无线通信系统,PLL是应用在上转换过程中传输,并提供本地振荡器下转换接收期间。
在多数蜂窝手机该功能已经在很大程度上集成到单个集成电路减少手机的成本和尺寸。
然而,由于基地台终端所要求的高性能,发送和接收电路与分立元件内置达到所需的性能水平。
GSM本地振荡器模块通常建有一个频率合成器集成电路和分立谐振器的VCO。
PD比较两个输入信号,并产生一个错误信号,该信号正比于它们的相位差。
误差信号然后被低通滤波和用于驱动它创建一个输出相的VCO输出,通过一个可选的除法器返回到系统的输入进料,产生负反馈环路。
如果输出相位漂移,误差信号将增大,驱动VCO的相位在相反的方向,以减小误差。
因此输出相是在另一输入锁定的相位。
该输入被称为参考。
一个模拟锁相环PLL一般而言都是包含了一个模拟相位检测器、LPF和处于负反馈状态的VCO。
数字锁相环使用数字相位检测器,它也可以具有在反馈路径中或在参考路径,或两者除法,以便使PLL的输出信号频率的有理参考频率的倍数。
参考频率的非整数倍,也可以通过更换简单除法逐个创建?
具有可编程反馈路径计数器脉冲吞咽计数器。
这种技术通常被称为一个小数N分频合成器或小数N分频PLL。
该振荡器产生一个周期输出信号。
假定最初振荡器是在几乎相同的频率作为基准信号。
如果来自振荡器的相位落后,参考的,相位检测器,使得它的速度改变了振荡器的控制电压。
同样地,如果相爬行超前基准的,相位检测器改变控制电压给振荡器减速。
由于最初的振荡器可以是远离参考频率,实际相位检测器还可以响应的频率差,以便增加可允许输入的锁定范围。
根据不同的应用,无论是控制振荡器的输出,或控制信号到振荡器,提供了PLL系统的有用的输出。
2.3.3FPGA内嵌功能模块PLL
FPGA固有硬件结构PLL/DLL,通常被称为IP核。
IP核即知识产权核,它的英文全称为intellectualpropertycore。
IP核一般而言是已经经过了设计的验证,可被设计人员以模块的形式调用,达到减少设计周期的目的,避免重复工作,节约时间成本。
IP核有以下三类,即软核、硬核和固核。
1.软核:
通常软核是与工艺无关,是具有寄存器传输级的硬件描述语言描述设计代码,后续可以进行设计;
2.硬核:
硬核是软核通过逻辑综合、布局、布线之后的一系列工艺文件,具有特定的工艺形式、物理实现方式;
3.固核:
固核则通常介于软核与硬核之间,它已经通过功能验证、时序分析等过程,设计人员可以以逻辑门级网表的形式获取。
PLL/DLL是IP核里面软核的一种,可透过工具软件方便的对IP核进行调用和修改。
第三章硬件平台
为了设计研究的方便,节约时间成本,硬件平台使用现成的开发板,FPGA芯片是CycloneIIEP2C8Q208C8N,整个设计用到了开发板的核心板,也就是最小系统板。
下面对于整个硬件平台的介绍。
3.1开发板核心板资源介绍
核心板配有串行配置芯片EPCS16N,支持JTAG模式下载和AS模式下载的两种下载模式。
采用64Mbit的SDRAM,足够胜任本次设计;
50MHz的有源晶振,为提供系统工作主时钟;
大功率LDO电源管理芯片,支持最大3A的3.3V电压输出;
采用1117‐1.2V稳压芯片,提供FPGA内核电压;
为去耦设计,运用了大量去耦电容;
PLL电源运用PI型滤波,配有双5V直流电源底座,便于使用;
也提供红色电源指示灯及高速肖特基二极管,提防电源反接;
电源开关;复位按键Reset,也可做用户输入按键;
重配置按键及配置成功指示灯;JTAG下载接口,AS下载接口。
EP2C8Q208C8N芯片的资源丰富。
CycloneII系列使用了90nm工艺,对比130nm工艺的Cyclone系列来看,片内的LE大幅增加,最多可达68416个LE,片内的存器容量最多增至1.1Mbit,最多可用引脚增至622个。
CycloneII系列器件内部带有乘法器,这些乘法器能用于完成高速乘法操作,使得CycloneII系列器件的数字信号处理能力得到增强。
CycloneII系列器件还支持NIOSII嵌人式处理器,一片FPGA芯片里面能嵌入不少于1个的NIOSII处理器。
嵌人处理器的好处是可更灵活地满足设计需要,节约开发时间。
核心板上FPGA主芯片的原理图如图3-3、3-4、3-5、3-6所示的4个BANK图。
3.2存储器SDRAM电路
核心板的SDRAM芯片型号是HY57V641620FTP,它容量为64Mbit,它的电源部分,采用了多个104瓷片电容做滤波处理,保证芯片工作的电源稳定性。
3.3电源电路
电源是保证整个开发系统正常工作最重要的部分。
开发板外部输入电源电压为5V,经过电源管理芯片稳压后,输出3.3V。
3.3V的电压主要用于给FPGA所有的I/O口,核心板存储器电路、复位电路等供电。
然后3.3V送给稳压芯片稳压,提供给FPGA的内部核工作,以及锁相环部分电源工作。
D1为电源工作指示灯,在核心板的左上角,D0为高速肖特基二极管,提防接反电源。
同时在各电源输入和输出部分,设计了高质量钽电容用作电源滤波处理,升华了系统电源的稳定性。
电源部分的原理图如图3-8所示。
3.4独立按键及LED电路
核心板上有两个LED灯,与接口板LED灯D1,D2引脚是共用的,位置在核心板PCB的右上角。
在单独使用核心板时,可以用来测试基本工作情况。
3.5时钟和复位电路
系统提供运行时钟频率为50MHZ,时钟部分电路电源通过π形滤波处理。
(一)CLK0和CLK4用作系统工作时钟,直接接入50MHz晶振;
(二)CLK5用作系统复位引脚,可以通过编程实现复位功能;
(三)CKL1、CLK2、CLK3、CLK6和CLK7为用户输入引脚,引出到扩展座.
(四)CKL5未引出。
第四章设计的软件部分
4.1开发工具软件的简介
使用的工具软件是QuartusII与Modelsim。
在第二章的FPGA的开发流程,两个工具软件都是用来辅助设计。
4.1.1quartus简介
QuartusII是Altera公司提供用来进行FPGA开发的工具软件。
它的操作界面友好,使用便捷,是目前使用最广泛的FPGA开发工具软件之一。
它提供了许多设计环境的平台,能满足各种设计的需要,提供了与构造风马牛不相及的设计环境,让设计者可以便捷地进行设计输入、处理迅速与元件编程。
它编译器支持硬件描述语言Verilog等。
支持条理化设计,可在一新的编辑输入环境中,对不同输入设计方式进行的模块化调用,允许原理图与硬件描述语言杂合的输入设计。
在完成设计输入后,它的编译器可给出设计输入的错误报告。
它具备功能不错的设计错误定位器,可定位文本设计或图形设计中的错误。
对采用硬件描述语言的设计,可用它包含的RTLViewer功能来观看综合后的RTL图。
它拥有仿真功能,也可调用第三方的仿真工具Modelsim。
它允许第三方的文件输入,提供了许多的电子设计自动化工具的接口。
可直接调用第三方综合工具SynplifyPro、DC-FPGA等。
QuartusII在版本号9.x及之前的版本都内置仿真器,但版本号为10.0及此后版本,它移除了内置仿真器。
本设计使用QuartusII12.0,需调用工具软件Modelsim进行仿真。
4.1.2modelsim简介
Modelsim是ModelTechnology公司开发的工具软件,它是业界最精良的硬件描述语言仿真软件,提供了良好的操作界面和不错的调试环境。
同类中软件支持单内核VHDL和Verilog掺和仿真使用的独一无二的工具,它的仿真速度极快,编译完成的代码和使用平台风马牛不相及,支持全平台混合使用,能够保护IP核,是FPGA设计的首选仿真工具。
Modelsim能辅助QuartusII完成多个层次的硬件描述语言仿真。
Modelsim针对不同的使用者和环境的不同有多个版本,Modelsim版本有:
ModelsimSE、ModelsimPE、ModelsimLE和ModelsimOEM,一共4个版本。
本设计使用ModelsimSE10.01a,ModelsimSE是最高级的版本,它支持业界广泛的标准,速度快,性能好,拥有强大的调试功能。
4.2设计的系统框图说明
FPGA芯片为核心,完成波形的产生功能,利用内部的ROM来存储波形数据,做出简易的信号发生器,然后嵌入锁相环(PLL)来倍频时钟信号,改变信号发生器的频率,达到需要的高频100MHZ以上,使用SignalTapII对输出数据采样,观察波形输出。
信号发生器的波形数据设计为正弦波,开发板的晶振为50MHZ,输入sclk为50MHZ,为达到100MHZ的高频,使用PLL来进行倍频处理,由于FPGA中的每一个PLL最多可以输出3个不同的时钟信号:
c0,c1,e0,所以就设计了三个倍频信号,分别为:
100MHZ,150MHZ,200MHZ。
4.3波形数据存储ROM的定制
波形数据存储ROM的定制包括两个部分,波形数据初始文件的产生与波形数据存储ROM模块的设计。
4.3.1波形数据的产生
初始化文件有.mif、.hex和.dat,一共3种格式。
其中.mif和.hex是QuartusII能直接调用的初始化文件格式;.dat格式文件可通过Verilog语言直接调用。
这里使用的是.mif格式文件,以下介绍.mif格式文件的产生方法。
产生.mif格式文件有多种方法,下面两种最为常用。
(1)高级语言生成.mif格式文件。
可采用C语言或者使用MATLAB等高级语言生成。
例如,使用C语言,附录2就是一个产生ROM数据值的C语言程序。
程序编译后,有一个可执行文件ROMMIF.EXE,在DOS下执行操作:
ROMMIF,sine.mif,即可生成正弦波的波形数据。
(2)专用.mif文件生成器,工具软件MIFMAKER,如图4-2所示软件界面。
此方法最方便,操作如下。
首先,菜单栏,文件,新建文件,然后设定波形,全局参数,设置完成如图
然后菜单栏,设定波形,正弦波。
文件,保存文件。
正弦波波形数据.mif文件生成完毕。
此软件还可手绘波形,非常方便。
4.3.2波形数据存储模块的设计
为方便设计操作,波形数据存储模块ROM1P_Signal的设计,借助了开发工具软件QuartusII调用ROM模块生成,不用使用硬件描述语言Verilog来编写程序,节约了时间,生成的ROM1P_Signal模块如图4-5,程序代码见附录1。
下面说明,如何使用开发工具,设计ROM1P_Signal模块。
QuartusII菜单栏,选择tools,选择MegaWizardPlug-InManager,选择单口ROM,设置输出文件的存放路径和名称。
然后设置好波形参数,添加波形数据文件PLL_Signal.mif。
最后在顶层文件对模块进行例化。
4.4频率控制模块的设计
频率控制模块PLL_CTRL的设计同样是借助用QuartusII调用PLL模块生成,PLL_CTRL模块如图4-11所示输出信号的参数,2倍频,3倍频,4倍频,零相移,50%占空比,程序代码见附录1。
下面说明,如何使用开发工具,设计频率控制模块PLL_CTRL模块。
QuartusII菜单栏,选择tools,选择第一个MegaWizardPlug-InManager,如图4-6所示。
选择I/O里面的ALTPLL,如图4-12所示,设置输出文件的存放路径和名称等,然后设置PLL的速度等级、输入参考时钟的频率、工作模式等参数输入,晶振频率50MHZ参考时钟频率设为50MHz。
4.5计数器模块的设计
计数器模块是用来产生读取ROM数据的地址,用硬件描述语言Verilog编写8位计数器,与顶层文件写在一起,程序代码参看附录1,如图4-16所示。
图4-