FPGA课程设计最终版要点.docx

上传人:b****3 文档编号:10531855 上传时间:2023-05-26 格式:DOCX 页数:46 大小:587.80KB
下载 相关 举报
FPGA课程设计最终版要点.docx_第1页
第1页 / 共46页
FPGA课程设计最终版要点.docx_第2页
第2页 / 共46页
FPGA课程设计最终版要点.docx_第3页
第3页 / 共46页
FPGA课程设计最终版要点.docx_第4页
第4页 / 共46页
FPGA课程设计最终版要点.docx_第5页
第5页 / 共46页
FPGA课程设计最终版要点.docx_第6页
第6页 / 共46页
FPGA课程设计最终版要点.docx_第7页
第7页 / 共46页
FPGA课程设计最终版要点.docx_第8页
第8页 / 共46页
FPGA课程设计最终版要点.docx_第9页
第9页 / 共46页
FPGA课程设计最终版要点.docx_第10页
第10页 / 共46页
FPGA课程设计最终版要点.docx_第11页
第11页 / 共46页
FPGA课程设计最终版要点.docx_第12页
第12页 / 共46页
FPGA课程设计最终版要点.docx_第13页
第13页 / 共46页
FPGA课程设计最终版要点.docx_第14页
第14页 / 共46页
FPGA课程设计最终版要点.docx_第15页
第15页 / 共46页
FPGA课程设计最终版要点.docx_第16页
第16页 / 共46页
FPGA课程设计最终版要点.docx_第17页
第17页 / 共46页
FPGA课程设计最终版要点.docx_第18页
第18页 / 共46页
FPGA课程设计最终版要点.docx_第19页
第19页 / 共46页
FPGA课程设计最终版要点.docx_第20页
第20页 / 共46页
亲,该文档总共46页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

FPGA课程设计最终版要点.docx

《FPGA课程设计最终版要点.docx》由会员分享,可在线阅读,更多相关《FPGA课程设计最终版要点.docx(46页珍藏版)》请在冰点文库上搜索。

FPGA课程设计最终版要点.docx

FPGA课程设计最终版要点

课程设计任务书

学生姓名:

专业班级:

指导教师:

工作单位:

信息工程学院

题目:

电子琴的设计

课程设计目的:

《FPGA原理与应用》课程设计的目的是为了让学生熟悉基于VHDL语言进行FPGA开发的全流程,并且利用FPGA设计进行专业课程理论知识的再现,让学生体会EDA技术的强大功能,为今后使用FPGA进行电子设计奠定基础。

课程设计内容和要求

设计内容:

(1)设计一个八音电子琴。

(2)由键盘输入控制音响,同时可自动演奏乐曲。

(3)用户可以将自己编制的乐曲存入电子琴,演奏时可选择键盘输入乐曲或者已存入的乐曲。

要求每个学生单独完成课程设计内容,并写出课程设计说明书、说明书应该包括所涉及到的理论部分和充足的实验结果,给出程序清单,最后通过课程设计答辩。

时间安排:

序号

阶段内容

所需时间

1

方案设计

1天

2

软件设计

2天

3

系统调试

1天

4

答辩

1天

合计

5天

指导教师签名:

年月日

系主任(或责任教师)签名:

年月日

摘要

随着基于FPGA的EDA技术的发展和应用领域的扩大与深入,EDA技术在电子信息、通信、自动控制用计算机等领域的重要性日益突出。

EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。

利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程的计算机上自动处理完成。

此次设计主要是基于VHDL文本输入法设计乐曲演奏电路,运用VHDL语言对简易电子琴的各个模块进行设计,并使用EDA工具对各模块进行仿真验证。

该系统基于计算机中时钟分频器的原理,采用自顶向下的设计方法来实现,通过按键输入来控制音响或者自动演奏已存入的歌曲。

系统由乐曲自动演奏模块、音调发生模块和数控分频模块三个部分组成。

选择手动弹奏模式按键时,按下音符键后就会选通相应的频率输出;选择自动演奏模式按键时,储存器会将编写好的音符信息依次取出,去选通各个对应的频率输出,实现自动演奏。

系统实现是用硬件描述语言VHDL按模块化方式进行设计,然后进行编程、时序仿真、电路功能验证,奏出美妙的乐曲(当然由于条件限制,暂不进行功能验证,只进行编程和时序仿真)。

关键词:

EDA,VHDL,电子琴,自动演奏

 

Abstract

WiththeexpansionandfurtherFPGA-basedEDAtechnologydevelopmentandapplications,theimportanceofEDAtechnologyinthefieldofelectronicinformation,communication,computerandotherautomaticcontrolhavebecomeincreasinglyprominent.EDAtechnologyistothecomputerasatooldesignerintheEDAsoftwareplatform,hardwaredescriptionlanguageHDLcompletethedesignfileandthenautomaticallydonebycomputerlogiccompilation,simplification,segmentation,integration,optimization,placement,routingandsimulation,untilforspecifictargetchipadaptercompilation,mappingandlogicprogrammingdownloadwork.

UseofEDAtools,electronicdesignersfromconcept,algorithms,protocols,andsobeganthedesignofelectronicsystems,alotofworkcanbedonebycomputerandelectronicproductscanbefromthecircuitdesign,performanceanalysistotheentireprocessofIClayoutdesignorlayoutofthePCBautomaticprocessingiscompletedonthecomputer.

ThedesignismainlybasedonVHDLtextinputmusicperformancecircuitdesign,eachmoduleusingVHDLlanguageofsimpleflowerdesign,andtheuseofEDAtoolsforsimulationofeachmodule.Thesystemisbasedontheprincipleofthecomputerclockdivider,usingtop-downdesignapproachtoachieve,throughthekeyinputtocontrolthesoundorsongtoautomaticallyplayhasbeendeposited.Systemfromautomaticallyplayingmusicmodule,tonegeneratormoduleandNCdividermodulethreeparts.Whenyouselectthemanualmodeaftertheplaybutton,itwillnoteispressedthecorrespondingfrequencystrobeoutput;SelectAutoPlaymodebutton,thereservoirwillberemovedinordertowritegoodmusicinformation,eachcorrespondingtothefrequencyofthestrobeoutput,automaticplaying.SystemimplementationishardwaredescriptionlanguageVHDLbyamodularapproachtodesign,andthenprogramming,timingsimulation,circuitfunctionalverification,playwonderfulmusic(ofcourse,duetoconstraints,theywillnotperformfunctionalverification,andtimingsimulationprogramonly).

Keywords:

EDA,VHDL,electronicorgan,automaticplay

1设计意义和要求

1.1设计意义

电子琴作为音乐与科技的产物,在电子化和信息化的时代,为音乐的大众化做出了很大的贡献,歌曲的制作大多数都要由电子琴来完成,然后通过媒介流传开来,电视剧和电影的插曲、电视节目音效、甚至手机铃声,都很可能包含电子琴的身影。

电子琴是数字电路中的一个典型应用。

然而在实际的硬件设计中用到的器件非常多,连线比较复杂,同时会产生比较大的延时,从而造成测量误差较大,可靠性不好。

以EDA工具作为开发手段,运用VHDL硬件描述语言可以使使整个系统大大简化,提高了电子琴整体的性能和可靠性。

1.2功能要求

1)设计一个八音电子琴;

2)由键盘输入控制音响,同时可自动演奏乐曲;

3)用户可以将自己编制的乐曲存入电子琴,演奏时可选择键盘输入乐曲或者已存入的乐曲。

 

2方案论证及原理分析

2.1实现方案比较

方案一:

采用数字逻辑电路制作,用IC拼凑焊接实现。

其特点是直接用现成的IC组合而成,简单方便,但本系统需用到许多分频器,这就使得需要用到相当多的IC,从而造成了体积过于庞大,而且连线也会比较复杂。

方案二:

由单片机来完成设计。

可用单片机控制键盘的输入,以及产生相应的频率信号作为输出。

目前,单片机的功能已比较强大,集成度日益增高且其设计和控制比较容易。

但是由于在传统的单片机设计系统中必须使用许多分立元件组成单片机的外围电路,如锁存器,译码器等都需要单独的电路,因此整个系统显得十分复杂,抗干扰性差,在运行过程中容易死机或进入死循环,可靠性降低,而功耗费用增高。

方案三:

采用可编程逻辑器件(FPGA)来完成该设计,将所有器件集成在一块芯片上,大大减小了电子琴的体积,可靠性和精度都比较好。

用VHDL编程实现时更加方便,而且易于进行功能扩展,并可调试仿真,制作时间大大缩短。

综合分析后我认为,方案三采用FPGA的方法来实现,不仅可以实现按键播放音乐和自动播放音乐的要求,有较高的灵敏度和可靠性。

并且原理方法和模块结构清晰,制作方案比较容易实现,所以我采用方案三作为具体实现方案。

2.2乐曲实现原理

乐曲都是由一连串的音符组成,按照乐曲的乐谱依次输出这些音符所对应的频率,就可以在扬声器上连续地发出各个音符的音调。

为了准确地演奏出一首乐曲,仅仅让扬声器能够发出声音是远远不够的,还必须准确地控制乐曲的节奏,即每个音符的持续时间。

由此可见,乐曲中每个音符的发音频率以及音符持续的时间是乐曲能够连续演奏的两个关键因素。

乐曲的12平均率规定:

每2个八度音之间的频率要相差1倍,比如简谱中的中音2与高音2。

在2个八度音之间,又可分为12个半音。

另外,音符A(简谱中的低音5)的频率为392Hz,音符E到F之间、B到C之间为半音,其余为全音。

由此可以计算出简谱中从低音l至高音1之间每个音符的频率。

简谱音名与频率对应关系如表2-1所示:

音名

频率/Hz

音名

频率/Hz

音名

频率/Hz

低音1

262

中音1

523

高音1

1047

低音2

296

中音2

587

高音2

1175

低音3

330

中音3

659

高音3

1319

低音4

350

中音4

698

高音4

1397

低音5

392

中音5

784

高音5

1568

低音6

440

中音6

880

高音6

1760

低音7

494

中音7

988

高音7

1976

表2-1简谱音名与频率的对应关系

使用一分频器来产生各音符所需的频率,但由于各音符对应的频率多为非整数,而分频系数又不能为小数,所以必须将计算得到的分频数四舍五入取整数。

若分频器时钟频率过低,则由于分频系数过小,四舍五入取整数后的误差较大;若时钟频率过高,虽然误差变小,但分频数将会变大。

在实际的设计中应综合考虑这两方面的因素,在尽量减小频率误差的前提下取合适的时钟频率。

实际上,只要各个音符间的相对频率关系不变,演奏出的乐曲听起来都不会走调。

设计的音乐电子琴选取32MHZ的系统时钟频率。

在数控分频器模块,首先对时钟频率进行4分频,得到8MHZ的输入频率,然后再次分频得到各音符的频率。

由于数控分频器输出的波形是脉宽极窄的脉冲波,为了更好的驱动扬声器发声,在到达扬声器之前需要均衡占空比,从而生成各音符对应频率的对称方波输出。

这个过程实际上进行了一次二分频,将脉冲展宽。

因此,分频系数的计算可以按照下面的方法进行。

以中音1为例,对应的频率值为523Hz,它的分频系数应该为:

至于其他音符,可由上式求出对应的分频系数,这样利用程序可以很轻松地得到相应的乐声。

各音名对应的分频系数如表2-2所示:

音名

频率/Hz

分频系数

音名

频率/Hz

分频系数

中音1

523

7648

高音1

1047

3820

中音2

578

6920

高音2

1175

3404

中音3

659

6069

高音3

1319

3032

中音4

698

5730

高音4

1397

2863

中音5

784

5102

高音5

1586

2522

中音6

880

4545

高音6

1760

2272

中音7

988

4048

高音7

1976

2024

低音5

392

10204

低音6

440

9090

表2-2各音名对应的分频系数

音符的持续时间须根据乐曲的速度及每个音符的节拍数来确定。

因此,要控制音符的音长,就必须知道乐曲的速度和每个音符所对应的节拍数。

如果将全音符的持续时间设为1s的话,那么一拍所应该持续的时间为0.25秒,则只需要提供一个4HZ的时钟频率即可产生四分音符的时长。

至于音长的控制,在自动演奏模块,每个乐曲的音符是按地址存放的,播放乐曲时按4HZ的时钟频率依次读取简谱,每个音符持续时间为0.25秒。

如果乐谱中某个音符为三拍音长,那又该如何控制呢?

其实只要在3个连续地址存放该音符,这时就会发三个0.25秒的音长,即持续了三拍的时间,通过这样一个简单的操作就可以控制音长了。

2.3系统组成及工作原理

2.3.1系统组成

整个系统由乐曲自动演奏模块、音调发生器模块和数控分频器模块三个部分组成。

乐曲自动演奏模块又包含了键盘的编码,并且设置了一个自动演奏/键盘输入切换auto。

乐曲自动演奏模块的作用是产生发声控制输入信号。

音调发生器根据发声控制输入产生获得音阶的分频预置值(即分频系数)。

数控分频器根据分频预置值对FPGA的基准频率进行分频,得到与各个音阶对应的频率输出。

系统组成框图如图2-1所示。

图2-1系统组成框图

2.3.2系统工作原理

系统的基准时钟脉冲为32MHz,所以在本设计中需要将其进行分频,以得到所需要的脉冲来发出相应的音符。

键盘输入一共有9个按键,除了8个音符对应的按键之外,还设置一个自动演奏/键盘输入切换auto,它不是一个单独的模块,它和其他按键一起包含在乐曲自动演奏模块中,作用相当于一个开关。

当auto=“0”时,选择自动演奏音乐存储器里面的乐曲,自动演奏模块以4Hz的频率输出8位发声控制输入信号,再送入音调发生器。

当8位发声控制输入信号中的某一位为高电平时,则对应某一音阶的数值将在端口tone输出,该数值即为该音阶的分频预置值,音调发生器还输出音符显示信号、高低音显示信号。

最后由数控分频模块按照音调发生器输出的分频预置值进行分频,得到存储的乐曲的音符的频率,之后由扬声器输出对应的声调。

auto=“1”时,选择键盘输入的信号,8个按键分别对应8个音符,自动演奏模块将按键输入转化为8位发声控制输入信号送入音调发生器,最后通过数控分频模块得到按键对应的音符的频率,之后由扬声器输出对应的声调。

3系统模块设计

3.1顶层模块的设计

VHDL采用的是自顶向下的设计方式,顶层模块由乐曲自动演奏(automusic),音调发生器(tone)和数控分频器(speaker)三个模块组成。

其中乐曲自动演奏部分(automusic)又包括了键盘编码,还设置了一个自动演奏/键盘输入切换auto,即当auto=“0”时,选择自动演奏音乐存储器里面的乐曲,auto=“1”时,选择由键盘输入的信号,再对其进行编码。

两种情况下输出的都是八位二进制数,对应音调发生器的输入。

图3-1即是顶层模块设计原理图。

图3-1顶层模块设计原理图

3.2乐曲自动演奏模块的设计

为了实现电子琴的功能要求,需要设计一个自动演奏模块,该模块的作用是产生8位发声控制输入index。

当auto为“0”或“1”时可以选择自动演奏或者键盘输入,如果auto为“0”,则由存储在此模块中的8位二进制数来作为发声控制输入index,由此便可自动演奏乐曲;当auto为“1”时,则由键盘的输入转化为8位2进制数作为发声控制输入index。

此模块的VHDL语言中包括三个进程,首先是对基准脉冲进行分频得到4Hz的脉冲,作为第二个进程的时钟信号,它的目的是控制每个音阶之间的停顿时间,此处便是1/4=0.25s;第二个进程完成自动演奏部分乐曲的地址累加;第3个进程是输出存储的自动演奏的乐曲或键盘输入的发声控制输入index。

乐曲自动演奏模块如图3-2所示。

图3-2乐曲自动演奏模块

3.3音阶发生器模块的设计

音阶发生器的作用是产生获得音阶的分频预置值。

当8位发声控制输入index中的某一位为高电平时,则对应某一音阶的数值将以端口tone输出,作为获得该音阶的分频预置值,该值作为数控分频器的输入,来对4MHz的脉冲进行分频,由此得到每个音阶相应的频率,例如输入index="00000010",即对应的按键是2,产生的分频系数便是6920由code输出对应该音阶简谱的显示数码;由high输出指示音阶高8度的显示,高电平有效。

音阶发生器如图3-3所示。

图3-3音阶发生器模块

3.4数控分频器模块的设计

数控分频模块的目的是对基准脉冲分频,得到0,1,2,3,4,5,6,7七个音符对应频率。

该模块的VHDL描述中包含了三个进程。

首先对32MHz的基准脉冲进行分频得到8MHz的脉冲,然后按照tone1输入的分频系数对8MHz的脉冲再次分频,得到的便是所需要的频率。

而第三个进程的作用是在音调输出时再进行二分频,将脉冲展宽,以使扬声器有足够功率发音。

 

图3-4数控分频器模块

 

4程序设计

4.1VHDL设计语言和ISE环境简介

4.1.1VHDL语言简介

VHDL是超高速集成电路硬件描述语言,是一种用于电路设计的高级语言。

它出现于80年代后期,最初是由美国国防部开发出来的,是为了供美军用来提高设计的可靠性和缩减开发周期的一种使用范围较小的设计语言。

VHDL主要是应用在数字电路的设计中。

目前,它在中国的应用多数是用在FPGA/CPLD/EPLD的设计中,同时也被一些实力较为雄厚的单位用来设计ASIC。

VHDL具有多层次描述系统硬件功能的能力,支持自顶向下和基于库的设计特点。

其开发流程:

在顶层用方框图或硬件语言对电路的行为进行描述后,进行系统仿真验证和纠错。

再用逻辑综合优化工具生成具体的门级逻辑电路的网表。

然后通过适配器将网表文件配置于指定的目标器件,产生最终下载文件或配置文件。

最后把适配后生成的下载或配置文件通过编程器或编程电缆下载到具体的FPGA/CPLD器件中去,以便进行硬件调试和验证,而实现可编程的专用集成电路ASIC的设计。

VHDL主要用于描述数字系统的结构,行为,功能和接口。

除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。

VHDL系统设计与其他硬件描述语言相比,VHDL具有更强的行为描述能力,从而决定了他成为系统设计领域最佳的硬件描述语言。

强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。

4.1.2XilinxISE简介

Xilinx是最大的FPGA/CPLD生产商之一,其设计开发的软件也不断升级换代,已从Foundation系列发展到目前的ISE13.x系列。

ISE(IntegratedSystemConfiguration)是集成综合环境的简称,是Xilinx提供的一套工具集,其集成的设计工具可以完成整个FPGA/CPLD的开发过程。

ISE具有强大辅助功能,在编写代码时可以使用编写向导生成文件共和模块框架,也可使用语言模板(LanguageTemplates)帮助编写代码。

在图形输入时可以使用ECS的辅助项帮助设计原理图。

另外,ISE的CoreGenerator和LogiBLOX工具可以方便地生成IPCore(IP核)与高效模块为用户所用,大大减少了设计者的工作量,提高了设计效率与质量。

ISE通过改进综合、实现等关键环节的优化手段与方法,提高了设计的工作速度,减小了设计消耗的面积,使设计结果能更好地调动芯片的内部资源,工作更高效。

4.2顶层模块的程序设计

顶层模块(top)是整个电子琴设计的核心,也是VHDL程序的主程序,其他三个子模块的源程序都是作为子程序分别实现电子琴的某一功能,而顶层模块则通过调用子程序最终实现乐曲演奏的目的,奏出美妙的乐曲。

利用VHDL语言COMPONENT将三个模块组合起来,其中3个模块和顶层模块的输入输出是一一对应的,比如auto对应handTOauto,tone0对应tone2,spks对应spkout等。

设计时采用自顶而下的设计方法,其软件流程图如图4-1所示。

 

图4-1顶层模块软件流程图

4.3乐曲自动演奏模块的程序设计

该模块的VHDL源程序主要由3个工作进程组成,分别为PULSE0,MUSIC和COM1。

PULSE0的作用是判断自动演奏(键盘输入)的值0或

(1),若为0则要将系统时钟进行8M的分频,得到4Hz的信号clk2。

如果产生了clk2,那么第二个进程MUSIC就会根据clk2时钟完成自动演奏部分乐曲的地址累加。

在第三个进程中就根据地址输出存储的乐曲对应的音符的8位发声控制输入index,如果在第一个进程中判断为键盘输入,在此进程中就将输入按键对应的音符转化为8位发生控制输入index。

软件流程图如4-2所示。

 

图4-2乐曲自动演奏模块流程图

4.4音阶发生器模块的程序设计

音阶发生器模块的作用是产生音阶的分频预置值。

该模块的唯一输入信号INDEX对应就是自动模块中最后的输出INDEX0。

音符显示信号CODE,高低音显示信号HIGH和音符分频系数TONE都是根据音符输入确定的。

比如我们自定义INDEX第1位为高电平时,它的分频系数则为6920,音符显示信号为0010010,此时高低音显示0表示非高音。

部分源程序如下:

CASEINDEXIS

WHEN"00000010"=>TONE0<=6920;CODE<="0010010";HIGH<='0';

--音符第1位为1,分频系数为6920,音符显示为0010010,属非高音

WHEN"01000000"=>TONE0<=4048;CODE<="0001111";HIGH<='0';

WHENOTHERS=>TONE0<=8191;CODE<="0000001";HIGH<='0';

显然,该模块最主要的作用就是给音符输入预设频率值,因为,电子琴最终实现乐曲演奏就是输出不同频率的声波,此模块就是将二进制发声信号转化为对应分频系数。

4.5数控分频模块的程序设计

该模块的VHDL源主要由3个工作进程组成。

首先,第一个进程根据系统时钟信号的输入进行4分频得到预分频时钟脉冲。

第二个进程是此模块的核心,即按照tone1输入的分频系数对8MHz的脉冲再次分频,得到所需要的音

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2