基于FPGA的数字频率计的课程成论文.docx
《基于FPGA的数字频率计的课程成论文.docx》由会员分享,可在线阅读,更多相关《基于FPGA的数字频率计的课程成论文.docx(21页珍藏版)》请在冰豆网上搜索。
基于FPGA的数字频率计的课程成论文
SouthChinaNormalUniversity
课程设计实验报告
课程名称:
EDA技术
指导老师:
专业班级:
2014级电路与系统
姓名:
学号:
基于FPGA的谐波合成设计
摘要:
本文介绍了EP2C5T144C8N微处理器实现多次谐波产生和合成周期性方波的设计,产生的基波频率、各次谐波幅度、相位均可单独数字设置并控制,并最终通过PWM和LPF得到失真较小的谐波合成信号。
本文最后对设计进行了测试与运行,从而验证该设计方案的可行性。
关键词:
谐波;基波;PWM
Abstract:
EP2C5T144C8Nmicroprocessorimplementationareintroducedinthisdesignandsynthesisofcyclicsquarewave,multipleharmonicsproducedbyfundamentalwavefrequency,everyharmonicamplitudeandphaseseparatelydigitalsetandcontrol,andfinallyobtainedbyPWMandLPFharmonicsynthesisoflessdistortionofthesignal.Finally,thepaperhascarriedonthetesttodesignandoperation,toverifythefeasibilityofthedesign.
Keywords:
Harmonic;Fundamentalwave;PWM
目录
1引言4
1.1FPGA简介4
1.2QuartusⅡ简介5
1.3谐波合成原理6
2系统总体分析7
2.1系统总体分析7
2.2系统软件组成9
2.3系统硬件组成9
2.4系统运行环境10
2.5系统总体框架10
3软件模块设计11
3.1CPU模块设计11
3.2Quartus模块设计15
3.3NiosII模块设计16
3.3.1谐波合成17
3.3.2按键中断18
3.3.4PWM输出21
4系统测试及分析22
4.1n次谐波测试22
4.2按键测试23
4.3幅度按键测试23
4.4相位按键测试24
4.5频率按键测试24
5总结25
参考文献26
1引言
1.1FPGA简介
FPGA(Field-ProgrammableGateArray),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。
它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
目前以硬件描述语言(Verilog或VHDL)所完成的电路设计,可以经过简单的综合与布局,快速的烧录至FPGA上进行测试,是现代IC设计验证的技术主流。
这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式。
在大多数的FPGA里面,这些可编辑的元件里也包含记忆元件例如触发器(Flip-flop)或者其他更加完整的记忆块。
FPGA一般来说比ASIC(专用集成芯片)的速度要慢,无法完成复杂的设计,而且消耗更多的电能。
但是他们也有很多的优点比如可以快速成品,可以被修改来改正程序中的错误和更便宜的造价。
厂商也可能会提供便宜的但是编辑能力差的FPGA。
因为这些芯片有比较差的可编辑能力,所以这些设计的开发是在普通的FPGA上完成的,然后将设计转移到一个类似于ASIC的芯片上。
FPGA工作原理
FPGA采用了逻辑单元阵列LCA(LogicCellArray)这样一个概念,内部包括可配置逻辑模块CLB(ConfigurableLogicBlock)、输出输入模块IOB(InputOutputBlock)和内部连线(Interconnect)三个部分。
编辑本段
FPGA的基本特点
1)采用FPGA设计ASIC电路(专用集成电路),用户不需要投片生产,就能得到合用的芯片。
2)FPGA可做其它全定制或半定制ASIC电路的中试样片。
3)FPGA内部有丰富的触发器和I/O引脚。
4)FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。
5)FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容。
可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。
1.2QuartusⅡ简介
QuartusⅡ是Altera公司提供的FPGA/CPLD开发集成环境,Altera是世界上最大可编程逻辑器件的供应商之一。
QuartusⅡ界面友好,使用便捷,被誉为业界最易用易学的EDA软件。
在QuartusⅡ上可以完成设计输入、元件适配、时序仿真和功能仿真、编程下载整个流程,它提供了一种与结构无关的设计环境,是设计者能方便地进行设计输入、快速处理和器件编程。
QuartusⅡ提供了方便的设计输入方式、快速的编译和直接易懂的器件编程。
能够支持逻辑门数在百万门以上的逻辑器件的开发,并且为第三方工具提供了无缝接口。
QuartusⅡ软件包的编程器是系统的核心,提供功能强大的设计处理,设计者可以添加特定的约束条件来提高芯片的利用率。
在设计流程的每一步,QuartusⅡ软件能够引导设计者将注意力放在设计上,而不是软件的使用上。
同时,自动的错误定位、完备的错误和警告信息,使设计修改变得简单容易。
1.3谐波合成原理
基波(分量):
对周期性交流分量进行傅里叶级数分解,得到的与工频相同的分量称为基波。
谐波(分量):
对周期性交流分量进行傅里叶级数分解,得到的为基波频率大于1的整数倍的分量称为高次谐波,简称谐波。
谐波次数:
谐波频率与基波频率的整数比。
任何电信号都是由各种不同频率、幅度和初相的正弦波迭加而成的。
1822年法国数学家傅里叶在研究热传导理论时提出并证明了将周期函数展开为正弦级数的原理。
奠定了傅里叶级数的理论基础、揭示了周期信号的本质,即任何周期信号(正弦信号除外)都可以看作是由无数不同频率、不同幅度的正弦波信号叠加而成的,就像物质都是由分子或者原子构成一样。
周期信号的基本单元信号是正弦谐波信号。
谐波合成的过程是一个逆傅里叶级数的过程,即将由傅里叶级数展开的周期信号的各次谐波重新叠加起来合成原信号的过程。
由傅里叶级数的定义可知,傅里叶级数得出的是一个无穷级数,谐波需要无穷次叠加才能得出原信号。
这在现实中是不可实现的,一般的当谐波数量达到5次以上时,就能大致得出原有信号。
如图1.1所示:
图1.1方波合成图
图1.1为方波的七次谐波合成图,由频域图可以看出方波只有奇次谐波。
方波由多个正选函数和余弦函数叠加而成,当叠加次数达到3次时,基本上能看出方波的模样。
2系统总体分析
2.1系统总体分析
本设计的总体分析比较主要包括了软件实现方式、波形输出方式、人机交互方式等,从而选择出具有可行性的符合实际需求的总体方案。
1)软件实现方式
本设计采用FPGA作为硬件平台,但是由于本设计所涉及的谐波合成需要使用正弦函数和余弦函数,Verilog或VHDL中并没有三角函数库的支持,需要通过其他软件将所需要的三角函数数据存入存储器中调用,并且Verilog或VHDL并不支持浮点型操作。
为了解决以上问题,本设计采用了SOPC技术。
SOPC即可编程片上系统,通过可编程逻辑技术把一个完整的系统安装在一块硅片上。
SOPC是一种特殊的嵌入式系统:
首先它是片上系统(SOC),可通过单个芯片来完成整个系统所需要的主要逻辑功能;其次,它是可编程系统,可进行裁减、扩充、升级等灵活的设计方式,并且具有软硬件均在系统上可编程的功能。
本设计是一个基于NiosII的SOPC系统。
NiosII的硬件通过QuartusII定制合适的CPU和外设来完成。
完成NiosII的硬件开发后,QuartusII将自动生成用户定义的NiosIICPU和外设系统、存储器、外设地址映射等相应的软件开发包SDK,在生成的SDK基础上,进入软件开发流程。
用户可使用汇编或C来进行相应的嵌入式程序设计。
而C函数库中包含了三角函数,并且支持浮点型操作,能大大缩短开发周期和整形操作所带来的误差。
因此本设计主要基于FPGA+SOPC+C语言的方式实现软件设计。
2)波形输出方式
通过FPGA的IO端口输出的是一个数字信号,而一般示波器所检测的是模拟信号,要令示波器显示出谐波叠加后的波形必须通过数/模转换(D/A转换)将数字信号转换模拟信号。
数模转换可通过两种方式实现,一种是通过专门的D/A芯片实现,另一种则是通过PWM和LPF实现的。
PWM即脉冲宽度调制,是一种对模拟信号电平进行数字编码的方法。
通过计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。
如图2.1所示:
图2.1脉冲宽度调制图
b图中将正弦波量化成7个点,并用等宽不同占空比的脉冲表示对应的值,通过这一方式将一个模拟量转换为数字量输出。
当PWM输出通过一个低通滤波器(LPF)后这个数字信号就能还原为一个模拟信号,供示波器使用。
3)人机交互方式
设计中的人机交互方式有两种,一种是使用FPGA平台上自带的七段数码管,另一种则是外接一个LCD显示屏。
由于设计本身仅需要显示幅度、频率、相位等数值,无需使用中文字符,并且平台上已自带有四个共阳极的其段数码管,使用方便,故使用七段数码管和平台上的按键组合实现人机交互。
2.2系统软件组成
系统软件三部分组成:
CPU模块设计、Quartus模块设计和NiosII模块设计。
CPU模块使用Qsys设计。
Qsys是Altera的系统集成工具,能够方便的根据用户要求搭建出自定义CPU。
Quartus模块设计是将通过Qsys生成的CPU作为一个元件调用,并在CPU周围加上适当的外设和进行引脚分配。
NiosII模块设计主要负责烧写到CPU上运行的程序设计。
在本设计是指使用C语言实现谐波合成、PWM输出以及人机交互。
系统软件首先设计好CPU,然后Quartus模块调用CPU并加上适当的外设和进行引脚分配后写入FPGA平台中,再进行NiosII模块的设计。
设计完毕后检测FPGA上是否已装有CPU,当已装有CPU时将程序下载到CPU中并运行。
2.3系统硬件组成
系统硬件由按键、七段数码管和低通滤波器组成,其中按键与七段数码管FPGA平台自带无须搭建,低通滤波器采用电阻和电容简单的搭建然后将输入端与FPGA平台的端口相连。
2.4系统运行环境
系统的软硬件环境关系到系统自身的稳定性和生命周期。
本系统采用CycloneII的EP2C5T144C8作为硬件平台的核心模块。
Cyclone II器件包含了许多新的特性,如嵌入存储器、嵌入乘法器、PLL和低成本的封装等。
系统软件采用Quartus开发环境,结合Qsys和NiosII进行开发。
最终设计出一个基于SOPC的谐波合成系统。
2.5系统总体框架
图2.2系统总体框图
系统总体由软件设计和硬件操作两部分组成。
软件设计主要实现了CPU的设计、使用和程序下载。
当三个模块设计并下载到FPGA平台后,可通过人机交互对系统进行操作。
硬件操作分为两个部分。
一个是功能选择部分,该部分通过按键中断实现,当按下相应的按键后将中断信号传入FPGA中执行相应的操作。
第二个部分是显示部分,显示又有两部分,一是七段数码管显示当前周期信号的幅度、频率、相位、档位等信息,一是通过LPF输出到示波器中,通过示波器观察谐波合成后的周期信号。
3软件模块设计
3.1CPU模块设计
CPU通过Qsys设计。
CPU架构列表如图3.1所示:
图3.1CPU架构列表图
1)CPU
CPU为整个CPU设计的内核。
Qsys中提供了三种类型的CPU,CPU型号及其描述如图3.2所示:
图3.2CPU型号及其描述图
本设计采用标准型CPU,标准型具有占用资源较少,功能齐全等优点,基本能满足本次设计的要求。
2)clk_50
clk_50提供了50MHz的系统时钟,供系统正常运行使用。
50MHz为本设计所使用的FPGA最大晶振频率。
3)jtag_uart
jtag_uart为CPU提供了jtag调试接口,可通过jtag对CPU进行调试,实现中断、单步执行等功能。
4)存储器
存储器包括了epcs_flash_controller、sdram和altpll_0三个部分。
epcs_flash_controller在FPGA中一般用来存储应用程序。
但由于本设计程序大小超过了flash的容量。
故加上了sdram,SDRAM在FPGA开发板中一般作为NIOS处理器的RAM和程序运行空间。
altpll_0用于将系统时钟进行分频,提供时钟给sdram,sdram所使用的时钟需要与系统时钟有时间延时。
altpll_0配置如图3.3所示,c0为系统50MHz时钟,c2为提供给sdram的100MHz时钟。
图3.3altpll_0配置图
5)IO
IO配置包括了IO输出pwm、led、数码管和IO输入key。
数码管包括了数码管的使能输出和数据输出。
IO输出配置如图3.4所示,Width为输出/输入位数,Direction为IO方向。
IO输入配置如图3.5所示。
图3.4IO输出配置图
图3.5IO输入配置图
由于key按键用于CPU中断,除了配置IO输出的两项外,还要配置中断选项。
Edgecaptureregister注册了中断为低电平有效,interrupt配置了中断为边沿中断。
6)timer
timer用于配置定时器,由于数码管是共阳极的,数据线共用,因此需要通过控制不同数码管的使能端控制数码管显示数值。
人眼识别连贯图像的速度大约是40ms,因此使能端的切换速度要低于40ms。
经测试本设计定时1ms效果较佳。
Timer配置如图3.6所示:
图3.6定时器配置图
3.2Quartus模块设计
该模块主要是调用CPU,在CPU周围加上需要的外设,分配硬件引脚以及连接时钟。
本模块配置如图3.7所示:
图3.7Quartus模块配置图
3.3NiosII模块设计
该模块是实现系统总体功能的软件程序编写部分。
包括了谐波的合成、按键中断、数码管显示以及PWM输出。
工作流程如图3.8所示。
程序首先注册按键中断,并开始检测按键中断,当有按键中断时触发相应的中断响应函数。
然后谐波合成,得出谐波合成后的方波数据。
接着数码管初始化以及开启定时器,定时器开启后四个七段数码管将不停的循环显示当前模式下的相应数值。
最后进入循环,不断输出PWM波。
图3.8软件工作流程图
3.3.1谐波合成
本设计实现的是通过多次谐波合成一个周期性方波信号。
方波的各次谐波计算公式如式3.1所示,程序实现如图3.9所示。
程序中通过for循环将各次谐波叠加起来后得出的数据存储在dot数组中,用于后续程序处理。
(3.1)
图3.9谐波合成程序
3.3.2按键中断
按键中断程序的设计包括了按键中断的注册以及中断响应函数。
中断注册用到的函数如图3.10所示:
图3.10按键注册程序
中断注册函数中先允许按键中断,设置边缘捕获寄存器最后注册按键。
当注册完按键后,一旦有中断来到时,程序将转入注册时注册的中断函数ISR_key1中执行中断响应。
程序更具不同的按键作出不同的按键中断响应,详细如下所述。
1)幅度、频率、相位响应
PWM输出经LPF后的方波幅度只与PWM的波形特性有关,与谐波合成后的波形幅度无关。
方波的幅度由PWM每个脉冲的占空比决定,当占空比为0时,得到方波幅值为0V(此处的幅度皆指峰-峰值),当占空比为1时,得到方波幅值为端口最大输出电压3.3V。
要控制方波的幅度就是控制端口输出电压最大时的脉冲占空比。
如要让输出幅度为1.1V,即电压变为原来的1/3,那么只需要在每个脉冲宽度不变的前提下将原来占空比为1缩短为占空比为1/3,其余的2/3均为低电平即可。
方波的频率与幅度一样只与PWM的波形特性有关,与谐波合成后的波形频率无关。
方波的周期由PWM的周期决定,由于PWM中每个脉冲宽度是一样的,不同的只是占空比,因此方波的周期或频率实际是有PWM一个周期中脉冲宽度决定的,调节每个脉冲的宽度即可做到调频的效果。
方波的相位由谐波合成后的相位决定,在本设计中各次谐波是通过时间t取点离散化后,再将相同时间值的点叠加存储于数组中最后得出一个经离散化后方波数据。
因此,方波的相位调节实际就是方波或者是各次谐波第一个取点位置的选择。
程序如图3.11所示。
图3.11相位调节程序图
对比式(3.1)可知,相位调节部分为2*pi*f(t+p*(1/(f*360))。
调节点的初始位置的方法是将方波周期分为360份,相位p代表了占360分中的多少份p*(1/(f*360)后就得出相位偏移后的第一个点的位置,即方波初始位置。
2)模式选择响应
模式选择是用于在幅度、频率和相位之间进行切换,其流程如图3.13所示。
模式选择仅有三个状态:
1-幅度;2-相位;3-频率。
当确实只有按键后,判断模式当前值是否最大值,若是最大值则模式转到幅度模式
(1),否则当前值加一,切换到下一个模式。
图3.13模式选择流程图
3)档位响应
本设计还设置了换挡功能。
当确实有按键时,程序首先更具模式标志判断按键执行对象,然后判断该对象当前的档位。
判断完毕后进入下一个档位,当到达最后档位后,程序会回到初始档位,这里是直接更改档位标志实现的。
改变档位后,当幅度、相位、频率响应发生时,对应的模式当前值会+/-对应的当前档位值。
3.3.3定时器
定时器用于七段数码管的动态显示。
由于四个数码管的数据线是共用的,要另四个数码管显示出不同的数值,需要通过控制数码管的使能端,让数码管不断切换,特定位置的数码管显示特定的数值,其余三个数码管处于关闭状态。
由于人眼一般无法识别40ms以下的连续图像的切换,因此设置数码管的切换时间小于40ms既能让四个数码管显示出不同的数值,而不会因为切换的原因而出现数码管闪烁的现象。
数码管的工作流程如图3.15所示。
先判断当前模式,然后其中一个数码管显示当前模式A/P/F,接着取出当前模式的值的各位赋予其余三个数码管显示。
同时判断当前模式的档位,通过小数点表示出属于那个档位。
图3.15数码管工作流程图
3.3.4PWM输出
PWM输出程序如图3.16所示。
图3.16PWM程序图
本设计的PWM输出时通过延时函数usleep()实现的,usleep()是一个微妙级的延时函数,程序中乘以106是将微秒转换为秒。
首先定义输出PWM的IO输出电平,然后通过延时函数改变电平的持续时间来实现不同的占空比。
4系统测试及分析
通过系统的实际运行,了解系统的实际性能、功能的实现程度。
通过测试对系统存在问题进行修改和完善。
最后验证软件的可用性。
测试内容包括了n次谐波的合成图(0所有的测试均通过示波器观测。
4.1n次谐波测试
图4.11次谐波合成图图4.23次谐波合成图
图4.35次谐波合成图图4.47次谐波合成图
图4.59次谐波合成图图4.611次谐波合成图
从图中可以看出,当谐波次数上升时,合成的图形越趋于完整的周期性方波信号,当谐波次数达到9次时基本可以看作是周期性方波。
4.2按键测试
按键测试中换挡功能已在幅度、相位、频率按键中体现,不在单独测试。
4.3幅度按键测试
图4.71V方波图图4.82.5V方波图
图4.93V方波图
由上图可以看出幅度按键以及幅度换挡功能均运作正常,数码管显示正常。
档位0.1V和1V由小数点在第三个数码管中的有无来体现。
4.4相位按键测试
图4.10初相为0的方波图图4.11初相为90°的方波图
图4.12初相为270°的方波图
由上图可以看出相位按键以及相位换挡功能均运作正常,数码管显示正常。
档位1、10和100由小数点在三个数码管中的有无来体现。
由于本设计是得到所有点后在进行处理的,因此每次改变相位时需要重新绘图,中间会出现零值状态。
4.5频率按键测试
由下图可以看出频率按键以及频率换挡功能均运作正常,数码管显示正常。
档位1、10、100由小数点在三个数码管中的有无来体现。
从图中可以看出当频率到达10Hz时,得出的方波频率已和数码管中显示的数值不符,差异较大,因此后面的100Hz仅作为换挡功能测试所使用。
图4.131Hz方波图图4.142Hz方波图
图4.1510Hz方波图图4.16100Hz方波图
5总结
通过这次课程设计,我认识到EDA技术是一门实用性很强的技术,FPGA是当前数字系统设计领域比较火热的一种工具,它可以大大缩短设计需要的时间,降低成本的同时也提高了系统的稳定性。
本设计使用了基于Altera公司的FPGA系列,采用Altera公司提供的系统开发工具QuartusII软件进行了系统的设计和仿真。
。
本文主要在通过学习傅里叶级数后,利用基波、谐波合成方波。
通过本次设计对谐波合成以及PWM输出有了更加深入的理解,本设计的关键技术是谐波合成,PWM波形的实现和基于SOPC的FPGA程序开发。
而基于FPGA+SOPC+C语言的方式实现软件设计的过程让我认识到FPGA的强大之处。
最终本设计实现了通过多次谐波合成方波,并具有控制方波的幅度、频率、相位及换挡等功能。
但由于设计者能力有限,本系统仍然有着很多可改进的地方,比如幅度、频率、相位的精度,频率可实现的最大范围,其它波形的实现等。
参考文献
[1]FPGA技术开发.高级篇/李洪涛,顾陈,朱晓华.北京:
国防工业出版社,2013
[2]江国强.EDA技术与应用:
第四版[M].北京:
电子工业出版社,2013
[3]张洪润,张亚凡.FPGA/CPLD应用设计200例[M].北京:
北京航空航天大学出版社,2009
[4]杨军,张伟平,赵嘎,王小军.面向SOPC的FPGA设计与应用[M].北京:
科学出版社,2012
[5]郗艳华.基于Matlab周期信号的分解与合成[J].计算机与现代化,2011,9:
156-164
[6]FPGA系统设计与实例/杨晓慧,杨旭编著.北京:
人民邮电出版社,2010
[7]李威,周振宇,张金波.基于DDS/FPGA的谐波信号发生器的研究与设计[J].电工技术,2008,8:
67-69
[8]FPGA设计与应用/刘皖,何道君,谭明编著.北京:
清华大学出版社,2006