FPGA课程设计.docx
- 文档编号:4596451
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:25
- 大小:406.96KB
FPGA课程设计.docx
《FPGA课程设计.docx》由会员分享,可在线阅读,更多相关《FPGA课程设计.docx(25页珍藏版)》请在冰豆网上搜索。
FPGA课程设计
课程设计任务书
学生姓名:
向阳专业班级:
通信1004班
指导教师:
陈适工作单位:
信息工程学院
题目:
电子琴
小组成员:
何梁孟理驰罗文弢葸彩萍
向阳曹倩倩闫安王丽红
初始条件:
1.FPGA(CycloneIIEP2C8Q208C8)。
2.QuartusII。
3.Verilog/VHDL。
要求完成的主要任务:
1.根据理论知识书写课程设计报告。
2.按照要求编写程序,并仿真调试电路功能。
设计要求:
1.设计一个八音电子琴
2.由键盘输入控制音响
3.可自动演奏乐曲
参考文献:
1.VerilogHDL电路设计指导书.华为.2000.04
2.FPGA设计流程指南.华为.2001.08
3.可编程逻辑器件原理及应用.朱明程.西安电子科技大学出版社
4.数字电路EDA入门.张亦华.北京邮电大学出版社.2003
指导教师签名:
年月日
系主任(或责任教师)签名:
年月日
摘要
随着基于FPGA的EDA技术的发展和应用领域的扩大与深入,EDA技术在电子信息、通信、自动控制用计算机等领域的重要性日益突出。
专用集成电路(ASIC)和用户现场可编程门阵列(FPGA)的复杂度越来越高。
数字通信、工业自动化控制等领域所用的数字电路及系统其复杂程度也越来越高,特别是需要设计具有实时处理能力的信号处理专用集成电路,并把整个电子系统综合到一个芯片上。
设计并验证这样复杂的电路及系统已不再是简单的个人劳动,而需要综合许多专家的经验和知识才能够完成。
由于电路制造工艺技术进步非常迅速,电路设计能力赶不上技术的进步。
在数字逻辑设计领域,迫切需要一种共同的工业标准来统一对数字逻辑电路及系统的描述,这样就能把系统设计工作分解为逻辑设计(前端)和电路实现(后端)两个互相独立而又相关的部分。
由于逻辑设计的相对独立性就可以把专家们设计的各种常用数字逻辑电路和系统部件建成宏单元(Megcell)或软核(Soft-Core)库供设计者引用,以减少重复劳动,提高工作效率。
电路的实现则可借助于综合工具和布局布线工具(与具体工艺技术有关)来自动地完成。
VHDL和VerilogHDL这两种工业标准的产生顺应了历史的潮流,因而得到了迅速的发展。
现在VHDL和VerilogHDL两种语言已经成为IEEE标准,在大规模电路开发中运用十分广泛并已经深入各个领域。
关键词:
FPGA、ASIC、VHDL/Verilog
Abstract
WiththeFPGA-basedEDAtechnologydevelopmentandexpansionofapplicationfieldswithdepth,EDAtechnologyintheelectronicinformation,communication,automaticcontrolcomputerandotherfieldsgrowingimportance.Specificintegratedcircuit(ASIC)andfieldprogrammablegatearraysuser(FPGA)complexityisincreasing.Digitalcommunications,industrialautomationandcontrolandotherareasusedbydigitalcircuitsandsystemsareincreasinglyhighdegreeofcomplexity,especiallywithreal-timeprocessingcapabilitytodesignsignalprocessingASIC,andputtheentireelectronicsystemisintegratedintoasinglechip.Designandvalidatesuchcomplexcircuitsandsystemsisnolongerasimplepersonallabor,andneedcomprehensiveexperienceandknowledgeofmanyexpertstocomplete.Sincethecircuitmanufacturingtechnologyadvancesrapidly,thecircuitdesigncapabilitiescatchtechnology.Inthefieldofdigitallogicdesign,anurgentneedforacommonindustrystandardtounifythedigitallogiccircuitsandsystemsdescription,soyoucandesignthesystemisdecomposedintologicdesign(front)andcircuit(rear)twomutuallyindependentbutrelatedparts.SincetherelativeindependenceofthelogicaldesignexpertsdesignyoucanputavarietyofcommondigitallogiccircuitsandsystemcomponentsbuiltMacrocell(Megcell)orsoft-core(Soft-Core)libraryreferencesforthedesignertoreduceduplicationofeffort,improveworkefficiency.Circuitcanberealizedbymeansofintegratedtoolsandlayouttools(withspecificprocesstechnology-related)toautomaticallycomplete.VHDLandVerilogHDLgenerationofthesetwoindustrystandardsconformtothehistoricaltrend,whichhasbeenrapiddevelopment.NowtwolanguagesVHDLandVerilogHDLhasbecomeIEEEstandard,thedevelopmentoflarge-scalecircuitsandhasbeenappliedtoawidedepthfields.
Keywords:
FPGA,ASIC,VHDL/Verilog
1.方案设计
1.1设计要求
1.设计一个八音电子琴
2.由键盘输入控制音响
3.可自动演奏乐曲
1.2方案比较
方案一:
用ASIC实现,这种电路很直观,简单方便。
但应用数字逻辑设计复杂,使用的器件复杂,体积不易控制,功耗较大。
电路设计及维护不方便,而且电路的保密性和安全性不易保证,使设计的稳定度和可靠性大大降低。
方案二:
运用单片机实现,这种设计方案思路直接,简单可行,但是单片机的运行速度和时钟频率是设计的弊端,而且程序运行可能由于环境影响而不稳定,同时要在外部设计存储器件,使设计变得复杂。
方案三:
基于FPGA芯片设计,这种方案使设计思路变得清晰明了,设计时只需使用verilog语言描述出所需的电路模块。
再把电路代码综合后布局布线映射成电路网表。
使其成为从语言到电路的转换,方法简便,思路清晰,并且芯片具有丰富的资源满足设计要求。
采用现场可编程逻辑门阵列器件(FPGA)制作,将所有器件集成在一块芯片上,体积大大减小,用verilog编程实现时更加方便,易于进行功能扩展,并可调试仿真,制作时间大大缩短。
因此选择第三种方案。
1.3方案论证
电路的乐曲演奏原理:
组成乐曲的每个音符持续的时间(音长),频率值(音调)以及音色(主要由演奏的乐器决定的)是乐曲能连续输出悦耳声音的基本要素,因此要使音响发出悦耳的乐曲声就要控制输出到音响的激励信号的频率的和各个频率信号持续的时间。
由于各种条件的的限制,本系统仅仅是通过控制音长和音调来实现多功能电子琴的设计,而音色由于受器件的类型和质量的影响所以不易控制不在设计之内。
通过模式选择电路可以选择相应的三种模式:
按键演奏,自动播放音乐,按键输入并回放音乐。
按键演奏电路通过设计分频器输出产生不同频率给音响从而产生不同音阶声音;自动播放音乐电路可以通过设计ROM和一个程序计数器来实现,有程序计数器来实现地址的选择ROM中存储的分频数,然后将分频数输入音响实现音乐播放功能;按键输入并回放音乐电路是通过设计按键演奏电路,同时设计读写时钟计数器作为选择地址,通过对RAM的操作实现对输入音乐的自动回放功能。
由于设计合情合理,又有科学依据,所以经过科学论证该设计可以实现。
2.模块设计
本设计采用模块化设计方法,由顶层模块(top.v)、音阶发生器模块(tone.v)、数控分频模块(speaker.v)和自动演奏模块(automusic.v)组成
2.1顶层模块设计
整个多功能电子琴的设计分为几个模块,系统是由底层设计到顶层设计的思想和方法。
通过软件编程和仿真对各个底层模块设计即实现,然后对底层模块的连接实现顶层模块的设计,这样的设计具有巨大的设计优势,由于通过软件编程设计特定的电路或模块,而且该电路或模块可以重用形成用户的库,通过软件编程设计使程序编译成具有形象封装的功能器件,这些功能器件不仅可以从程序到器件相互装换,还可以由各个功能器件联接生成高密度集成器件,以及相应的IP核。
ALTERA公司为我们提供了功能齐全而且丰富的IP核,这样给设计带来了巨大的方便,生成同时通过底层的设计到顶层设计模块重用得到广泛应用,也提高了设计的效率和周期。
避免了设计的重复进行,使得高集成度的电路开发变成现实。
而且特定的IP核已经成为知识产权加以保护。
顶层模块由乐曲自动演奏(automusic),音调发生器(tone)和数控分频器(speaker)三个模块组成。
其中乐曲演奏部分又包括了键盘编码。
设置一个自动演奏/键盘输入切换auto,即当auto=“0”时,选择自动演奏音乐存储器里面的乐曲,auto=“1”时,选择键盘输入的信号。
系统RTL图如图1。
图1系统RTL图
2.2数控分频模块设计
数控分频模块(speaker.v)对时基脉冲进行分频,得到与1、2、3、4、5、6、7七个音符对应频率。
该模块主要由三个Verilog语言always块构成。
首先对FPGA的50MHz的时基脉冲进行分频得到1MHz的脉冲,然后按照tone1输入的分频系数对1MHz的脉冲再次分频,得到所需要的音符频率。
第三个always块的作用是在音调输出时再进行二分频,将脉冲展宽,使扬声器有足够发声功率。
该模块是通过音阶对应的频率的计算得到各个对应频率的分频的数值,然后将分频的数值送给分频器则会产生不同频率的脉冲,然后将脉冲送给音响则会产生不同的音阶的声音。
输出的脉冲是占空比为50%的方波,实际听起来跟真实的电子琴声音有些差异,这是因为跟实际的波形不完全一致造成的。
实际的电子琴可能还含有一些其他的谐波成分,音色不一样。
下表说明了各个音频对应的频率。
表一:
简谱中的音名与频率的关系
音名
频率/Hz
音名
频率/Hz
音名
频率/Hz
低音1
261.6
中音1
523.3
高音1
1045.5
低音2
293.7
中音2
587.3
高音2
1174.7
低音3
329.6
中音3
659.3
高音3
1318.5
低音4
349.2
中音4
698.5
高音4
1396.9
低音5
392
中音5
784
高音5
1568
低音6
440
中音6
880
高音6
1760
低音7
493.9
中音7
987.8
高音7
1975.5
在本设计中,只设计了中音的7个音再加上高音1,总共8个音。
频率f与分频系数tone1的关系为:
(Hz),例如中音1,它的频率是523.3Hz,它对应的分频系数为tone1=1000000/523.3=1910.9.在实际中取整数1910。
这样得到的频率是523.6Hz。
误差为
,这样的误差是很小的,可以忽略。
由此可见设计的精度还是很高的。
数控分频器的音阶产生流程图如图2所示。
图2数控分频流程图
用QuartusII的RTLViewer工具生成RTL图,可看到其RTL图如图3所示。
图3数控分频RTL图
2.3音调发生器模块设计
音调发生器模块(tone.v)的作用是产生获得音阶的分频预置值。
当8位发声控制输入index中的某一位为高电平时,则对应某一音阶的数值将在端口tone0输出,该数值即为该音阶的分频预置值,分频预置值控制数控分频器来对1MHz的脉冲进行分频,由此可得到每个音阶对应的频率。
例如输入index=“00000001”,即对应的按键是1,产生的分频系数便是1910;code输出对应音阶的LED灯点亮数目。
该模块主要由两个always块构成,第一个完成从index到tone0的译码过程,另一个完成从index到code的译码。
tone0为分频预置值,被送到数控分频器模块产生相应频率的音频信号。
音阶与预置分频系数的关系见下表。
表二:
分频系数与音阶的关系
音阶
分频系数
音阶
分频系数
中音1
1910
中音5
1275
中音2
1702
中音6
1136
中音3
1516
中音7
1012
中音4
1431
高音1
956
Code为LED灯信号,全灭代表没有键被按下,点亮1个代表生成了中音1,点亮2个代表生成了中音2,以此类推。
设计的LED为低电平点亮的,code的某位为0,则该LED点亮。
例如code=”11111110”,则最右边的即第1个LED点亮。
code与音阶的关系见下表。
表三:
code与音阶的关系
音阶
code值
音阶
code值
中音1
11111110
中音5
11100000
中音2
11111100
中音6
11000000
中音3
11111000
中音7
10000000
中音4
11110000
高音1
00000000
2.4自动演奏模块设计
每个音符的持续时间则由乐曲的速度以及节拍数来确定的。
所以,必须知道乐曲的速度和每个音符所对应的节拍数才能控制音符的音长,而在这个设计中所演奏的乐曲的最短的音符为四分音符,全音符的持续时间为1秒,则一拍所应该持续的时间应为0.25秒,则只需要一个4HZ的时钟频率即可产生四分音符的时长。
通过编写乐曲文件就可以让系统知道现在应该演奏哪个音符,而这个音符持续的时间是按乐曲文件中音符是按地址存放的,当ROM工作时就按4Hz的频率依次读取音符,当读ROM的某个音符时就对应发这个音符的音调,持续时间为0.25秒。
音乐存储模块的作用是产生8位发声控制输入index。
当auto为“0”时,由存储在此模块中的8位二进制数作为发声控制输入,可自动演奏乐曲。
模块的Verilog程序中包括两个always块,首先是对时基脉冲进行分频得到4Hz的脉冲,作为第第二个always块的时钟信号,它用来控制每个音阶之间的停顿时间,1/4=0.25s;第二个always块是音乐的存储,可根据需要编写不同的乐曲。
在本设计中存储了一首《梁祝》。
自动音乐播放的流程见图4.
图4自动音乐播放流程图
3.软件设计
3.1VerilogHDL硬件描述语言概述
VerilogHDL和VHDL一样,是目前大规模集成电路设计中最具代表性、使用最广泛的硬件描述语言之一。
作为硬件描述语言,VerilogHDL具有如下特点:
1.由于该语言的特点使得代码描述与具体工艺的实现无关,提高了设计的可重用性,便于设计的标准化。
如果有C语言的编程经验的设计人员,只需短暂的时间就能学会和掌握VerilogHDL语言。
2.它能够在各个抽象层次的描述上对设计进行仿真验证,所以它可以及时发现可能存在的错误设计,缩短了设计的周期,并保证整个了设计过程的完整性与正确性。
3.它能够在不同的抽象层次上,如系统级、行为级、RTL(RegisterTransferLevel)级也就是寄存器传输级、门级和开关级,对设计系统进行精确而简练的描述;因此,VerilogHDL可以作为学习HDL设计方法的入门和基础。
VerilogHDL的基本结构是由模块(module)构成的,而每个模块都对应着硬件电路中各个逻辑实体。
因此,每个模块都有独立的结构或功能,以及用于与其它模块之间相互通信端口。
其所写代码主要是由以下几部分组成:
第一部分是代码的注释部分,第二部分是模块定义行,第三部分是端口类型和数据类型的说明部分,第四部分是描述的主体部分,第五部分是结束行。
所以,这种语言在开发中具有简洁,易懂,描述精确,设计高效,在开关级中的描述性能优越于VHDL语言。
本设计采用的是VerilogHLD语言。
3.2模块说明
1.顶层模块
文件名:
top.v
功能:
对各子模块进行顶层映射。
说明:
对automusic.v、speaker.v、tone.v几个子模块进行顶层映射。
2.音乐自动播放模块
文件名:
automusic.v
功能:
对按键进行检测产生index编码,储存一首曲子自动播放。
说明:
通过对50MHz脉冲分频得到一个4Hz的信号作为节拍发生器。
4Hz信号用来更新曲子存储器地址,通过查地址得到谱子,从而达到自动播放音乐的效果。
同时该模块还负责键盘检测的任务,不同的按键被按下,就产生对应的index编码,送到后面的tone.v模块。
3.音调发生器模块
文件名:
tone.v
功能:
根据输入的按键编码index,产生对应的预分频系数tone0。
说明:
该模块将键盘按键的编码值index与分频数tone0相对应并且通过蜂鸣器播放器件输出音乐。
同样还产生一个code编码,用于LED显示。
编码是通过always语句和case语句组合来完成的。
4.数控分频模块
文件名:
speaker.v
功能:
根据输入的分频系数产生对应的音频信号,并驱动蜂鸣器发声。
说明:
系统时钟是50MHz,直接分频的话分频系数会很大,不方便处理。
所以进行两次分频。
第一个always块是一个固定分频器,将50MHz分到1MHz,作为第二个分频器的输入时钟信号。
第二个always块是一个可变分频器,分频系数为tone1端口输入参数,由此来产生需要的频率。
3.3软件实现过程
1.在QuartusII中建立工程项目,项目存储在事先建立的工程文件夹内。
如图5,图6所示。
图5新建工程
图6新建工程(文件视图)
2.建立工程后选择编写代码的文件格式。
新建文件见图7。
图7新建VerilogHDL文件
3.文件编写完成后保存,然后设置编译的器件,我们选择EP2C5Q208C8,无用管脚设置为三态,同时设置为标准的I/O口。
完成后可以选择分步编译,也可以选择全编译。
全编译分4个过程,Analysis&Synthesis,Fitter,Assembler,TimeQuestTimingAnalysis。
每个过程都编译完成后可以直观的看到资源占用情况、引脚占用情况等。
编译见图8,图9。
图8编译工程
图9编译结果
4.在编译完成后下载到板子实现前需要进行管脚分配。
见图10。
图10管脚分配
5.管脚分配完成后,需要再次进行全编译,然后通过USB下载器通过JTAG或AS模式下载到芯片内。
见图11。
图11JTAG模式下载程序
4.仿真与调试
仿真用的是的波形仿真工具,通过分析波形来验证设计的逻辑是否正确,这种方式快捷、直观。
是仿真的基本方法。
1.顶层模块仿真图
图12顶层模块仿真图
2.音阶发生器仿真图
图13音阶发生器仿真图
3.数控分频模块仿真图
图14数控分频模块仿真图
4.自动演奏模块仿真图
图15自动演奏模块仿真图
从图分析可知,仿真结果与设计预想一致。
逻辑没有错误,是正确的。
本设计在FPGA实验板上验证通过,功能均得到实现,效果良好。
设计是成功的。
实验板搭载的FPGA芯片是EP2C8Q208C8,带有蜂鸣器,按键,LED灯,数码管,串口,视频编码解码模块,VGA接口,SD卡接口,SDRAM内存芯片,EEPROM等丰富的资源。
对初级学习应用来说足够了,还可以跑NiosII,完成高级功能应用。
该电子琴设计只用到FPGA芯片,按键,蜂鸣器等资源。
由于板载的按键只有5个,所以在进行管脚分配时,只分配了8音中的4个音,还有一个键是控制自动播放的。
按一下,播放编制好的《梁祝》,长按是暂停。
BUTTON1到BUTTON4分别是中音1到中音4。
实验板如图16所示。
图16FPGA实验板
5.心得与体会
通过对测试结果的分析,我们发现采用FPGA所设计的电子琴系统设计趋于简单、开发时间短;外围器件少,体积小,抗干扰能力强,可靠性高;系统维护起来更方便、快捷.尤其对于设计者来说,不需要考虑太多的硬件设计,只需要有自己的设计思路,编程实现再用烧到FPGA器件中进行测试就可以了。
电子琴作为一种乐器,成本不是很高,因此有一定的生产价值。
在这次FPGA课程设计之前,其实做过了单片机关于蜂鸣器方面的实验,上手起来还是很快的。
按照要求,写规范,确定实现方案,然后在逐一细化,一步一步按照要求去完成整个设计。
本次设计到用QuartusII软件,老师教学用的是ISE软件,由于上学期学EDA课程时教材用的是QuartusII,自己也买了一块FPGA实验板,一开始用的就是QuartusII,所以这次依然用的是QuartusII,用起来习惯。
软件只是开发用的工具,掌握其中一种,其他的都大同小异。
硬件软件化应该是今后的发展趋势,ASIC固然有他先天的优势,但是现在的设计对效率、成本、功耗的要求越来越严格。
高的时间效率,高的硬件利用效率,低的时间成本、低的经济成本,低能耗,都是推向市场、占领市场的至关要素。
通过FPGA这种半定制化的解决方案,设计者可以快速的验证设计的正确性、可行性。
借鉴一些软件的开发设计思想和手段来做硬件,将会解决很多以前难以解决的问题。
比如硬件升级,漏洞修复。
只需轻松更新一下FPGA的程序,硬件上做很少改动、甚至不做改动。
这样可维护好,成本低廉。
不用像ASIC那样重新设计。
这个课程设计同时培养了我的耐心和毅力,一个小小的错误就会导致结果出不来的情况,而对与错误的检查是需要有足够的耐心,由于这个课程设计也使我积累了一定的经验,相信这些经验在我以后的学习和工作中会有很大的作用。
此课程设计也使我了解了VERILOG_HDL设计的方便和灵活性,这的确是我们跨入计算机硬件行业很好的一次锻炼机会
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- FPGA 课程设计
![提示](https://static.bdocx.com/images/bang_tan.gif)