基于FPGA的乐曲播放器的设计.docx
- 文档编号:29584198
- 上传时间:2023-07-24
- 格式:DOCX
- 页数:38
- 大小:179.22KB
基于FPGA的乐曲播放器的设计.docx
《基于FPGA的乐曲播放器的设计.docx》由会员分享,可在线阅读,更多相关《基于FPGA的乐曲播放器的设计.docx(38页珍藏版)》请在冰豆网上搜索。
基于FPGA的乐曲播放器的设计
摘要本文以FPGA为核心控制器件,描述了一种基于FPGA的乐曲发生器的设计方法,该设计在MAX+PLUSⅡ的EDA软件平台上,通过定制LPM-ROM存储音乐数据,达到了以纯硬件的手段来实现乐曲的演奏效果。
只要修改LPM-ROM中所存储的音乐数据,就可以实现其它乐曲的演奏。
因此,该设计具有电路简单、程序易改和调试方便等特点。
整个系统工作稳定,程序精简,界面友好。
关键词:
FPGA;乐曲播放器器;EDA
Abstract
ThisarticleintroducesthedesigntakingFPGAasthecorecontroldevice,describesaFPGAbasedmusicgeneratordesignmethod,thedesignintheMAX+PLUSIIEDAsoftwareplatform,throughcustomLPM-ROMstoredmusicdata,reachedapurehardwaremeanstoachievethemusicplayingeffect.AslongasthemodifiedstoredinLPM-ROMmusicdata,canrealizetheothermusicplaying.Therefore,thedesignhastheadvantagesofsimplecircuit,easytoprogramandconvenientdebuggingetc..Theentiresystemisstable,proceduresimplification,friendlyinterface.
Keyword:
FPGA;Musicgenerator;EDA
1绪论
1.1选题背景及意义
传统电子产品设计方案是一种基于电路板的设计方法,该方法需要选用大量的固定功能器件,然后通过这些器件的配合设计从而模拟电子产品的功能,其工作集中在器件的选用及电路板的设计上。
传统电子电路的设计,首先要对系统进行分析,然后按功能对系统进行划分,接下来就要选择特定芯片,焊接成PCB电路板,最后对成品PCB电路板进行调试。
这样的设计没有灵活性可言,搭成的系统需要的芯片种类多且数目大,而且对于电路图的设计和电路板的设计都需要很大的工作量,工作难度也很高。
然而,随着可编程器件和EDA技术的发展,传统设计的劣势被克服,采用可编程逻辑器件基于芯片的设计方法,期间的内部逻辑和引脚可以由设计者自行决定,大大提高了设计的灵活性,提高了工作效率;同时,将系统集成在一个芯片上的设计,使系统具有体积小、功耗低、可靠性高等特点。
随着计算机性价比的提高及可编程逻辑器件的出现,对传统的数字电子系统设计方法进行了解放性的革命,现代电子系统设计方法是设计师自己设计芯片来实现电子系统的功能,将传统的固件选用及电路板设计工作放在芯片设计中进行。
从20世纪90年代初开始,电子产品设计系统日趋数字化、复杂化和大规模集成化,各种电子系统的设计软件应运而生。
在这些专业化软件中,EDA(ElectronicDesignAutomation)具有一定的代表性,EDA技术是一种基于芯片的现代电子系统设计方法。
它的优势主要集中在能用HDL语言进行输入、进行PLD(可编程器件)的设计与仿真等系统设计自动化上;20世纪90年末,可编程器件又出现了模拟可编程器件,由于受技术、可操作性及性价比的影响,今后EDA技术会向模拟可编程器件的设计与仿真方向发展,并占据市场的一定份额。
EDA技术主要包括大规模可编程逻辑器件、硬件描述语言、开发软件工具及实验开发系统4个方面。
其中,大规模可编程逻辑器件是利用EDA技术进行电子系统设计的载体硬件,描述语言是利用EDA技术进行电子系统设计的主要表达手段,开发软件工具是利用EDA技术进行电子系统设计的智能化与自动化设计工具,实验开发系统则是提供芯片下载电路及EDA实验、开发的外围资源。
EDA技术的发展大致经历了三个阶段:
20世纪70年代的CAD(计算机辅助设计)阶段、20世纪80年代的CAE(计算机辅助工程)阶段、20世纪90年代后的EDA(电子设计自动化)阶段。
以下主要介绍第三个阶段。
EDA技术即电子设计自动化技术,它是以可编程逻辑器件(PLD)为载体,以硬件描述语言(HDL)为主要的描述方式,以EDA软件为主要的开发软件的电子设计过程。
它主要采用“自顶向下”的设计方法,设计流程主要包括:
设计输入、综合、仿真、适配、下载。
EDA技术主要有以下特征:
(1)高层综合的理论和方法取得进展,从而将EDA设计层次由RT级提高到了系统级,并推出了相应的系统级综合优化工具,大大缩短了复杂ASIC的设计周期。
(2)采用硬件描述语言来描述10万门以上的设计,并形成了VHDL和Verilog-HDL两种标准硬件描述语言。
(3)采用平面规划技术对逻辑综合和物理版图设计联合管理,做到在逻辑设计综合早期阶段就考虑到物理设计信息的影响。
(4)可测性综合设计。
(5)为带有嵌入式IP核的ASIC设计提供软、硬件协同设计工具。
(6)建立并行设计工具框架结构的集成化设计环境,以适应当今ASIC规模大而复杂、数字与模拟电路并存、硬件与软件设计并存、产品上市速度快等特点。
总而言之,EDA技术的出现,给电子信息产业带来了革命性的变革。
基于DE2板的乐曲发生电路利用可编程芯片(CYCLONEⅡ2C35)的可编程系统,通过VHDL编程可以避免由于实际的硬件设计用到的器件较多,连线复杂,而且产生比较大的延时,可靠性差等弊端。
本文主要介绍了基于DE2板的音乐乐曲发生电路的组成及工作原理,简述了在EDA平台上用FPGA器件构成该数字系统的设计思想。
详细论述了用VHDL语言设计音乐乐曲发生器电路的分频模块,功能选择模块,测频控制信号发生器模块,锁存模块,译码显示模块,完成了对乐曲发生电路的设计。
1.2设计目标
由上所述中我们知道,音调频率一般是4HZ,而系统提供的信频率一般在50Mhz,这样我们必须对频率分频。
在本设计中我们用VHDL语言分别编写分频模块,计数模块,歌曲选择模块,音调编码模块,音调发声模块的程序,并能在软件MAX+PLUSⅡ下仿真
结果正确。
该采集电路能实现的功能具体要求:
1)能产生音调频率,可以选择播放歌曲。
2)用VHDL语言编写程序并进行仿真。
3)利用DEII板的硬件资源采集即用DEII板上的按键和数码管模拟和显示四路脉冲频率值。
2FPGA及DE2板介绍
2.1FPGA简介
2.2.1概述
当今社会是数字化的社会,是数字集成电路广泛应用的社会。
数字集成电路本身在不断地进行更新换代。
它由早期的电子管、晶体管、小中规模集成电路、发展到超大规模集成电路(VLSIC,几万门以上)以及许多具有特定功能的专用集成电路。
但是,随着微电子技术的发展,设计与制造集成电路的任务已不完全由半导体厂商来独立承担。
系统设计师们更愿意自己设计专用集成电路(ASIC)芯片,而且希望ASIC的设计周期尽可能短,最好是在实验室里就能设计出合适的ASIC芯片,并且立即投入实际应用之中,因而出现了现场可编程逻辑器件(FPLD),其中应用最广泛的当属现场可编程门阵列(FPGA)和复杂可编程逻辑器件(CPLD)。
FPGA是一种可以由用户自定义并进行配置的高密度专用集成电路。
FPGA具有阵列型PLD器件的优点,同时其结构又类似掩模门阵列,因此更高的集成度和更强大的逻辑实现能力,使得设计更加灵活和容易实现。
事实上FPGA已成为一类标准器件。
世界知名的可编程逻辑供应商(如Xilinx、Altera和Actel)可以为客户提供各具特色的FPGA产品。
因此对FPGA而言有着不同的分类方法,一般可以根据互连结构和编程特性对FPGA进行分类。
目前主流的FPGA产品内部连线一般采用分段互连结构,并且可重复编程。
2.1.2FPGA基本结构
FPGA结构概述
现场可编程门阵列FPGA作为集成度和复杂程度最高的可编程ASIC。
是ASIC的一种新型门类,它建立在创新的发明构思和先进的EDA技术之上。
运算器、乘法器、数字滤波器、二维卷积器等具有复杂算法的逻辑单元和信号处理单元的逻辑设计都可选用FPGA实现。
以Xilinx的FPGA器件为例,它的结构可以分为3个部分:
可编程逻辑块CLB(ConfigurableLogicBlocks)、可编程I/O模块IOB(Input/OutputBlock)和可编程内部连接PI(ProgrammableInterconnect)。
CLB在器件中排列为阵列,周围环形内部连线,IOB分布在四周的管脚上。
Xilinx的CLB功能很强,不仅能够实现逻辑函数,还可以配置成RAM等复杂的形式。
现场可编程门阵列FPGA是含有大规模数字电路的通用性器件。
这些数字电路之间的互联网络是由用户使用更高级的软件来定义的。
FPGA可以进行无限次的重复编程,从一个电路到另一个电路的变化是通过简单的卸载互联文件来实现的,极大地推动了复杂数字电路的设计,缩短了故障检查的时间。
传统的数字逻辑设计使用TTL电平和小规模的数字集成电路来完成逻辑电路图。
使用这些标准的逻辑器件已经被证实是最便宜的手段,但是要求做一些布线和复杂的电路集成板(焊接调试)等工作,如果出现错误,改动起来特别麻烦。
因此,采用传统电子设计方案人员的很大一部分工作主要集中在设备器件之间物理连接、调试以及故障解决方面。
正是因为FPGA的EDA技术使用了更高级的计算机语言,电路的生成基本上是由计算机来完成,将使用户能较快地完成更复杂的数字电路设计,由于没有器件之间的物理连接,因此调试及故障排除更迅速、有效。
可编程特点有助复杂电路设计,FPGA能进行无限次的重复编程,因此能够在相同的器件上进行修改和卸载已经完成好的设计。
在一个FPGA芯片上的基本部件数量增加了很多,这使得在FPGA上实现非常复杂的电子电路设计变成比较现实。
由于采用FPGA的EDA技术所产生的性价比更高一些,从而使得最近有多家公司开始采用这项技术,并且这种增长趋势仍旧在继续。
FPGA中的逻辑块是CLB,逻辑块是指PLD(ProgrammableLogicDevice)芯片中按结构划分的功能模块,它有相对独立的组合逻辑单元,块间靠互连系统联系。
FPGA的逻辑块粒度小,输入变量为4~8,输出变量为1~2,每块芯片中有几十到上千个这样的单元,使用时非常灵活。
FPGA内部互连结构是靠可编程互联PI实现逻辑块之间的联接。
它的互联是分布式的,它的延时与系统布局有关,不同的布局,互联延时不同。
根据FPGA的不同类型,可采用开关矩阵或反熔线丝技术将金属线断的端点连接起来,从而使信号可以交换于任意两逻辑单元之间。
采用FPGA技术集成设计数字电路产品最大的特点就是可以使设计和实现相统一,无须前期风险投资,而且设计实现均在实验室的EDA开发系统上进行,周期很短,大大有利于现代产品的市场竞争需求,所以,FPGA的应用设计,特别适应于电子新产品的小批量开发,科研项目的样机试制以及ASIC产品设计的验证,能够进行现场设计实现、现场仿真及现场修改。
由此,受到电子产品设计工程师的广泛推崇和欢迎。
FPGA的应用领域
FPGA所具有的无限次可重复编程能力,灵活的体系结构,丰富的触发器及布线资源等一系列的特点使得它可以满足电子产品设计的多种需求。
FPGA的应用领域主要集中在替换通用逻辑和复杂逻辑、重复编程使用、板极设计集成、高速计数器、加减法器、累加器和比较器的实现、总线接口逻辑等方面。
应用和开发FPGA必须对器件的性能有一个全面了解,例如对器件的容量、速度、功耗,接口要求和引脚数目等进行综合考虑,同时还要注意以下几个细节问题:
●时序电路应用“上电”复位电路,保证开机加电后,置时序电路于初始状态;
●器件的电源与地引脚必须并接一只0.1μF的无感电容,起滤波和去耦作用;
●不能采用数目是偶数的反向器串联的方法构成“延时电路”,一则延时的时间不准确,二则自动编译时会作为冗余电路被简化掉;
●主要的全局缓冲器必须由半专用的焊盘驱动,次要的全局缓冲器可以来源于半专用的焊盘或内部网线;
●引脚之间严禁短路,忌用万用表直接测量器件引脚;
●器件的I/O口如被定义为输出端,忌对该端加信号,否则将损坏芯片;
●低功耗的器件如接负载过大时,不仅会使所用器件的工作效率显著降低,甚至会损伤芯片。
2.2DE2板介绍
2.2.1DEⅡ开发板简介
DEⅡ开发板是ALTERA公司开发的基于FPGA测试开发板,DEⅡ开发板使用了与大批量生产的高端产品(如最高QC标准的高密度PC主板和汽车infotainment系统)相一致的严格设计与布线准则。
主要的设计和布线思路如下:
仔细安排器件及连接走线。
这种良好的排版可增加制造产量,并简化主板调试流程。
无跳线设计提高鲁帮性。
跳线易出错而且为不随时携带手册的用户带来不便。
部件的选择取决于片上容量。
我们选择了在PC和DVD播放器中最常用的配置确保这些部件将来能够得到持续供应。
电源和IO口保护设计考虑到了大部分的现场以外情况。
2.2.2DEⅡ开发板特性
DEⅡ开发板为用户提供了用于多媒体开发的多种特性。
器件按照当前最流行的多媒体产品设计来选择。
DEⅡ开发板平台能使拥护迅速理解实时多媒体工业产品的所有内在技巧。
DEⅡ区块描述:
(1)CYCLONEⅡ2C35FPGA
有35000个逻辑单元,FinelineBGA672管脚封装,475用户自定义IO口,有105M4KRAM块和483KbitSRAM,有35个嵌入式乘法器和四个锁相环等
(2)Altera系列配置器件(EPCS16)和USBBlaster电路
用户编程和用户API控制的板上USBBlaster,支持JTAG模式和AS模式,提供EPCS16系列配置器件。
(3)8MbyteSDRAM
单数据速率同步动态RAM存储芯,1M*4*16位,支持NIOSⅡ和Terasic高速多端RAM控制器。
(4)1Mbyte闪存(可升级至4Mbyte)
带有1MbyteNAND闪存,可支持4MbyteSDRAM的布线。
支持NIOS和Terasic高速多端闪存控制器。
(5)按键
带有4个按键,施密特触发器实现防抖动,常态是高电平,按下按键时产生一个有效低点平脉冲。
(6)时钟输入
带有一个50Mhz晶振,一个27Mhz晶振,带有一个SMA外部时钟输入。
(7)串口
提供2个串行端口:
一个RS—232口,1个PS/2口,提供RS—232断口的DB9连接器,提供连接DE2PS2鼠标或键盘的PS/2连接器。
(8)音频CODEC
使用WolfsonWM873124位sigma_delta最优品质音频CODEC,包括line_in,line_out和micropone;8KHz_96KHz采样频率可应用于MP3播放器录音器PDA和智能手机。
(9)XSGADAC输出
使用ADI7123240MHzTriple10位高速视频DAC,带有15个管脚的高密度D_sub连接器,最佳性能和品质时支持100Hz刷新速率下1600*1200分辨率,能有CycloneⅡFPGA实现高性能TV编码器。
(10)NTSC/PAL电视编码电路
使用ADI718B多格式SDTV视频编码器
支持NTSC——(M,J,4,43),PAL——(B/D/G/H/I/M/N),SECAM
集成了3个54MHz,9位AD,由单个27MHz晶振输入提供时钟。
多种可编程模拟输入格式:
Comositevideo(CVBS),S_Video(Y/C)和YPrPb组件。
应用范围:
DVD接收器,液晶电视,置顶盒,数字电视和便携式视频设备。
(11)10/100以太网控制器
集成了带有通用处理器接口的MAC和PHY,支持100Base_T和100Mb/s的全双工操作
完全兼容IEEE802.3uspec,支持IP/TCP/UDP求和校验,支持用于半双工模式数据流控制的背压。
USB主从控制器完全兼容USBSpec2.0版本,支持全速和低速数据传输,支持USB主从模式,支持2个USB端口(一个是A类用于主设备,一个是B类用于DE2上的设备)。
提供大多数CPU的高速并行接口,支持带驱动的NIOSⅡ,支持可编程I/O和DMA。
(12)2个带二极管保护的40脚扩展接口
CycloneⅡ引出72个I/O管脚到2个40脚扩展接口,40脚扩展接口兼容标准IDE硬件驱动的排线电缆。
(13)USBBlaster电路和设置设备
板上内置USBBlaster电路,带有供DE2控制面板API连接的增强特性,提供JTAG和AS编程模式,包括16Mbit(EPCS16)串行设置设备。
(14)DEⅡ主板有一个预加载数据流来显示这块主板的一些特性。
这个数据流也允许用户检查这块主板是否工作在合适的状态。
按如下步骤运行:
1.PC机和DE2板间连接USB线
2.连接9V适配器到DE2板
3.连接LCD到DE2
4.连接耳机到DE2
5.按下DE2板上的开关键
6.确保[RUN〈-〉PROG]键是设定在RUN位置(注意PROG位置只是用于AS模式编程)
3VHDL语言及MAX+PLUSⅡ软件介绍
3.1VHDL语言简介
传统的硬件电路设计方法是采用自下而上的设计方法,即根据系统对硬件的要求,详细编制技术规格书,并画出系统控制流图;然后根据技术规格书和系统控制流图,对系统的功能进行细化,合理地划分功能模块,并画出系统的功能框图;接着就进行各功能模块的细化和电路设计;各功能模块电路设计、调试完成后,将各功能模块的硬件电路连接起来再进行系统的调试,最后完成整个系统的硬件设计。
采用传统方法设计数字系统,特别是当电路系统非常庞大时,设计者必须具备较好的设计经验,而且繁杂多样的原理图的阅读和修改也给设计者带来诸多的不便。
为了提高开发的效率,增加已有开发成果的可继承性以及缩短开发周期,各ASIC研制和生产厂家相继开发了具有自己特色的电路硬件描述语言(HardwareDescriptionLanguage,简称HDL)。
但这些硬件描述语言差异很大,各自只能在自己的特定设计环境中使用,这给设计者之间的相互交流带来了极大的困难。
因此,开发一种强大的、标准化的硬件描述语言作为可相互交流的设计环境已势在必行。
于是,美国于1981年提出了一种新的、标准化的HDL,称之为VHSIC(VeryHighSpeedIntegratedCircuit)Hardware
DescriptionLanguage简称VHDL。
3.2VHDL的基本结构
VHDL语言通常包含实体(Entity),构造体(Architecture),配置(Configuration),包集合(Package),和库(Library)五部分.其中实体用于描述所设计的系统的外部接口信号;构造体用于描述系统内部的结构和行为;建立输入和输出之间的关系;配置语句安装具体元件到实体—结构体对,可以被看作是设计的零件清单;包集合存放各个设计模块共享的数据类型、常数和子程序等;库是专门存放预编译程序包的地方。
如下只对基本设计单元做了详细介绍。
(1)实体
实体说明有如下结构:
ENTITY实体名IS
[端口说明]
END实体名;
(VHDL语言中不分大小写字母)
其中:
端口说明是对设计实体中输入和输出借口进行描述,格式如下:
PORT(端口名(,端口名):
方向数据类型名;
:
:
端口名(,端口名):
方向数据类型名);
端口名是赋予每个系统引脚的名称,一般用几个英文字母组成。
端口方向是定义引脚是输入还是输出,见下表:
方向
说明
IN
输入到实体
OUT
从实体输出输出
INOUT
双向
BUFFER
输出(但可以反馈到实体内部)
LINKAGE
不指定方向
常用的端口数据类型有两种:
BIT和BIT_VECTOR,当端口被说明为BIT时,只能取值“1”或“0”,当端口被说明为BIT_VECTOR时,它可能是一组二进制数。
(2)构造体
构造体是实体的一个重要部分,每一个实体都有一个或一个以上的构造体。
构造体格式如下:
ARCHITECTURE构造体名OF实体名IS
[定义语句]内部信号,常数,数据类型,函数等的定义
BEGIN
[并行处理语句]
END构造体名;
(3)库
库是经编译后的数据的集合,它存放包定义、实体定义、构造定义和配置定义。
在设计单元内的语句可以使用库中的结果,所以,库的好处就是设计者可以共享已经编译的设计结果,在VHDL中有很多库,但他们相互独立。
库的使用:
在使用库之前,一定要进行库说明和包说明,库和包的说明总是放在设计单元的前面:
LIBRARY库名;
USELIBRARYname.package.name.ITEM.name
库的作用范围:
库的作用范围从一个实体说明开始到它所属的结构体、配置为止,当有两个实体时,第二个实体前要另加库和包的说明。
(4)包
通常在一个实体中对数据类型、常量等进行的说明只可以在一个实体中使用,为使这些说明可以在其它实体中使用,VHDL提供了程序包结构,包中罗列VHDL中用到的信号定义、常数定义、数据类型、元件语句、函数定义和过程定义,它是一个可编译的设计单元,也是库结构中的一个层次,使用包时可以用USE语句说明,例如:
USEIEEE.STD_LOGIC_1164.ALL
(5)配置
用于在多构造体中的实体中选择构造体,例如,在做RS触发器的实体中使用了两个构造体,目的是研究各个构造体描述的RS触发器的行为性能如何,但是究竟在仿真中使用哪一个构造体的问题就是配置问题。
配置语句格式:
CONFIGURATION配置名OF实体名IS
[说明语句]
END 配置名;
例:
最简单的配置
CONFIGURATION配置名OF实体名IS
FOR被选构造体名
ENDFOR;
END 配置名;
3.3VHDL语言的数据类型和构造体的描述方式
3.3.1VHDL语言的数据类型
(1)整数(INTEGER)
范围:
-2147483547---2147483646
(2)实数(REAL)
范围:
-1.0E38---1.0E38,书写时一定要有小数。
(3)位(BIT)
在数字系统中,信号经常用位的值表示,位的值用带单引号的‘1’和‘0’来表示,明确说明位数值时:
BIT‘(‘1’)
(4)位矢量(BIT_VECTOR)
位矢量是用双引号括起来的一组位数据,“010101”
(5)布尔量(BOOLEAN)
只有“真”和“假”两个状态,可以进行关系运算
(6)字符(CHARACTER)
字符量通常用单引号括起来,对大小写敏感
(7)字符串(STRING)
字符串是双引号括起来的一串字符:
“laksdklakld”
(8)时间(TIME)
时间的单位:
fs,ps,ns,ms,sec,min,hr。
例:
10ns。
整数数值和单位之间应有空格
(9)错误等级(SEVERITYLEVEL)
用来表示系统的状态,它共有4种:
NOTE(注意)
WARNING(警告)
ERROR(错误)
FAILURE(失败)
(10)大于等于零的整数(NATURAL)、正整数
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 FPGA 乐曲 播放 设计