verilogHDL的电子琴设计
- 格式:doc
- 大小:265.50 KB
- 文档页数:24
简易电子琴电路设计一、设计要求:(1) 设计一个简易电子琴。
(2) 利用实验箱的脉冲源产生1,2,3,……共7 个或14 个音阶信号。
(3) 用指示灯显示节拍。
(4) 能产生颤音效果。
二、原理说明:简易电子琴实现自动播放和手动弹奏两种模式,由一个开头选择。
自动播放功能可以预置多首乐曲,可以通过手动选择,本设计预置了两首乐曲《梁祝》和《两只老虎》。
手动弹奏设置了7个按键做琴键,分别对应7个音阶。
系统由8个模块组成,图1是顶层设计文件,其内部有7个功能模块:Speakera.v(例2) 和ToneTaba.v (例3),NoteTabs.v (例4),div_27.v,div-50.v,Keyboard.v,Dir.v。
模块ToneTaba音阶发生器,当4位发声控制输入Index中某一位为高电平时,则对应某一音阶的数值将从端口Tone输出,作为获得该音阶的分频预置值;同时由Code输出对应该音阶简谱的LED显示,音阶越高,LED亮的数目越多。
模块Speakera中的主要电路是一个数控分频器,它由一个初值可预置的加法计数器构成,当模块Speakera由端口Tone获得一个2进制数后,将以此值为计数器的预置数,对端口Clk12MHZ输入的频率进行分频,之后由Spkout 向扬声器输出发声。
模块NoteTabs用于产生节拍控制(Index数据存留时间)和音阶选择信号,即在NoteTabs模块放置两个乐曲曲谱真值表,通过song来选择播放的音乐,00代表复位,01选乐曲《梁祝》,10选《两只老虎》,由一个计数器的计数值来控制此真值表的输出,而由此计数器的计数时钟信号作为乐曲节拍控制信号,从而可以设计出一个纯硬件的乐曲自动演奏电路。
模块div-27和div_50是分频模块,通过计数的方式进行分频。
div_27是由板上27M时钟分频产生4Hz的频率用于节拍控制,div_50是板上50M时钟产生12.5MHz用于Sperkera模块。
电子设计自动化课程设计报告院系:信息工程学院专业:电子信息工程学号:姓名:指导教师:2013 年月日目录1设计目的 (3)2题目描述与要求 (3)3课程设计报告内容 (3)3.1设计原理与思路 (3)3.2操作过程 (4)3.3设计和调试过程中出现的问题及解决方法 (7)4设计总结和心得体会 (8)一、课程设计目的使用VerilogHDL语言进行前端设计,并使用Quaruts软件在实验箱上实现仿真,实现硬件电子琴。
电子琴要求有8个音阶,使用外部时钟信号32MHz,能同步显示音阶。
二、课程设计题目描述和要求题目:简易电子琴的设计主要功能:(1)设计一个八音电子琴。
(2)由键盘输入控制音响,同时可自动演奏乐曲。
(3)用户可以将自己编制的乐曲存入电子琴,演奏时可选择键盘输入乐曲或者已存入的乐曲。
三、课程设计报告内容3.1设计原理与思路系统由数控分频器、乐曲存储模块以及发声模块组成。
数控分频器对FPGA的基准频率进行分频,得到与各个音阶对应的频率输出。
乐曲存储模块产生节拍控制和音阶选择信号,即在此模块中可存放一个乐曲曲谱真值表,由一个计数器来控制此真值表的输出,而由计数器的计数时钟信号作为乐曲节拍控制信号。
由发声模块产生音符对应的频率的信号来使扬声器发音。
(1)模块automusic模块automsic由auto信号来选择发声的方式,auto=0时系统自动播放内置的音乐,auto=1时由键盘来手动演奏音乐。
(2)模块TONE模块Tone是音阶发生器,当8位发声控制输入Index中某一位为高电平时,则对应某一音阶的数值将从端口Tone输出,作为获得该音阶的分频预置值;同时由Code输出对应该音阶简谱的显示数码,如‘5’,并由High输出指示音阶高8度显示。
(3)模块Speaker模块Speaker中的主要电路是一个数控分频器,它由一个初值可预置的加法计数器构成,当模块Speaker由端口Tone获得一个2进制数后,将以此值为计数器的预置数,对端口Clk12MHZ输入的频率进行分频,之后由Spkout向扬声器输出发声。
如题,,,再附加上程序的控制说明.......是用GW48教学实验箱仿真的如果对你有帮助,请大家顶上...程序直接贴上了控制说明:1、电子琴:程序设计采用八个输入端口,分别与实验箱上的按键8~1引脚相连接,采用一个输出端口,与扬声器的引脚连接,时钟频率采用6MHz和4Hz。
按键7~1分别用于中音的七个音符的发音(DO,RE,MI,FA,SO,LA,SI),按键8用于控制乐曲的播放。
程序的编写采用状态机的编写方法,对按键的状态进行判断,对应相应的音符或乐曲。
2、电子钟:程序的设计模块有:时钟初始化模块、时钟工作模块、时钟设置模块、闹钟设置模块、闰年的月份天数判断模块、数码管显示模块、闹钟铃声模块及其它的设置模块。
程序使用8个输入分别与8个按键连接,用按键8对应时钟工作状态(work_state),当work_state 为0时,时钟正常工作,当work_state为1时,进入时钟设置状态。
按键7对应输入端口display_set控制时钟显示状态(display_state),每按2次(用于产生上升沿触发)则数码管的输出不同。
Display_state与work_state相结合使用,以区分设置的参数。
按键6~4对应输入个脚in_set,该参数共有三位,用以表示三个状态:state_yorh (设置年或小时)、state_morm (设置月份或分钟)、state_dors(设置日期或秒钟)。
按键3~2对应数值设置端口up各down。
Up用于产生上升沿触发,当down为0时,则每一个上升沿产生时,相应的参数加1,当down为1时,则每一个上升沿产生时,相应的参数减1。
按键1与输入端口clock_on相连,用于闹钟的开与关,当clock_on为1时开闹钟,否则关闹钟。
扬声器与输出端口speaker 相连,用于输出闹钟铃声。
附录:源程序一、电子琴:module piano(in,clk_6MHz,clk_4Hz,song,speaker);input in,clk_6MHz,clk_4Hz,song;output speaker;reg speaker;reg[7:0] state;reg song_on;wire[6:0] in;reg[3:0] high,med,low;reg[13:0] divider,origin;reg[7:0] counter;reg out;wire carry;reg[20:0] i;parameter zero=8'b0000_0000,one=8'b0000_0001,two=8'b0000_0010,three=8'b0000_0100,four=8'b0000_1000,five=8'b0001_0000,six=8'b0010_0000,seven=8'b0100_0000;initialbeginsong_on<=0;endalways @(posedge song)beginsong_on<=~song_on;endalways @(posedge clk_6MHz)beginif(song_on)speaker<=out;elsebegincase(in)zero:beginspeaker<=0;i<=0;endone:begin //doif(i>=11451)beginspeaker=!speaker;i<=0;endelsei<=i+1;endtwo:begin //reif(i>=10204)beginspeaker=!speaker;i<=0;endelsei<=i+1;endthree:begin //miif(i>=9091)beginspeaker=!speaker;i<=0;endelsei<=i+1;endfour:begin // fa if(i>=8596)beginspeaker=!speaker;i<=0;endelsei<=i+1;endfive:begin //soif(i>=7653)beginspeaker=!speaker;i<=0;endelsei<=i+1;endsix:begin //loif(i>=6818)beginspeaker=!speaker;i<=0;endelsei<=i+1;endseven:begin //siif(i>=6073)beginspeaker=!speaker;i<=0;endelsei<=i+1;enddefault:beginspeaker<=0;i<=0;endendcaseendendassign carry=(divider==16383);always @(posedge clk_6MHz)beginif(carry)divider<=origin;elsedivider<=divider+1;endalways @(posedge carry)beginout<=~out; //2 分频产生方波信号endalways @(posedge clk_4Hz)begincase({high,med,low}) //分频比预置'b000000000011: origin<=7281;'b000000000101: origin<=8730;'b000000000110: origin<=9565;'b000000000111: origin<=10310;'b000000010000: origin<=10647;'b000000100000: origin<=11272;'b000000110000: origin<=11831;'b000001010000: origin<=12556;'b000001100000: origin<=12974;'b000100000000: origin<=13516;'b000000000000: origin<=16383;endcaseendalways @(posedge clk_4Hz)beginif(counter==63)counter<=0; //计时,以实现循环演奏elsecounter<=counter+1;case(counter) //记谱0: {high,med,low}<='b000000000011; //低音“3”1: {high,med,low}<='b000000000011; //持续4 个时钟节拍2: {high,med,low}<='b000000000011;3: {high,med,low}<='b000000000011;4: {high,med,low}<='b000000000101; //低音“5”5: {high,med,low}<='b000000000101; //发3 个时钟节拍6: {high,med,low}<='b000000000101;7: {high,med,low}<='b000000000110; //低音“6”8: {high,med,low}<='b000000010000; //中音“1”9: {high,med,low}<='b000000010000; //发3 个时钟节拍10: {high,med,low}<='b000000010000;11: {high,med,low}<='b000000100000; //中音“2”12: {high,med,low}<='b000000000110; //低音“6”13: {high,med,low}<='b000000010000;14: {high,med,low}<='b000000000101;15: {high,med,low}<='b000000000101;16: {high,med,low}<='b000001010000; //中音“5”17: {high,med,low}<='b000001010000; //发3 个时钟节拍18: {high,med,low}<='b000001010000;19: {high,med,low}<='b000100000000; //高音“1”20: {high,med,low}<='b000001100000;21: {high,med,low}<='b000001010000;22: {high,med,low}<='b000000110000;23: {high,med,low}<='b000001010000;24: {high,med,low}<='b000000100000; //中音“2”25: {high,med,low}<='b000000100000; //持续11 个时钟节拍26: {high,med,low}<='b000000100000;27: {high,med,low}<='b000000100000;28: {high,med,low}<='b000000100000;29: {high,med,low}<='b000000100000;30: {high,med,low}<='b000000100000;31: {high,med,low}<='b000000100000;32: {high,med,low}<='b000000100000;33: {high,med,low}<='b000000100000;34: {high,med,low}<='b000000100000;35: {high,med,low}<='b000000110000; //中音“3”36: {high,med,low}<='b000000000111; //低音“7”37: {high,med,low}<='b000000000111;38: {high,med,low}<='b000000000110; //低音“6”39: {high,med,low}<='b000000000110;40: {high,med,low}<='b000000000101; //低音“5”41: {high,med,low}<='b000000000101;42: {high,med,low}<='b000000000101;43: {high,med,low}<='b000000000110; //低音“6”44: {high,med,low}<='b000000010000; //中音“1”45: {high,med,low}<='b000000010000;46: {high,med,low}<='b000000100000; //中音“2”47: {high,med,low}<='b000000100000;48: {high,med,low}<='b000000000011; //低音“3”49: {high,med,low}<='b000000000011;50: {high,med,low}<='b000000010000; //中音“1”51: {high,med,low}<='b000000010000;52: {high,med,low}<='b000000000110;53: {high,med,low}<='b000000000101; //低音“5”54: {high,med,low}<='b000000000110;55: {high,med,low}<='b000000010000; //中音“1”56: {high,med,low}<='b000000000101; //低音“5”57: {high,med,low}<='b000000000101; //持续8 个时钟节拍58: {high,med,low}<='b000000000101;59: {high,med,low}<='b000000000101;60: {high,med,low}<='b000000000101;61: {high,med,low}<='b000000000101;62: {high,med,low}<='b000000000101;63: {high,med,low}<='b000000000101;endcaseendendmodule。
VHDL电子琴实验报告
实验目的:
本实验的目的是设计一个VHDL电子琴,通过FPGA实现,实现按键发出不同的音调,并通过扬声器输出对应的音频信号,达到模拟真实电子琴的效果。
实验原理:
VHDL(Very High Speed Integrated Circuit Hardware Description Language)是一种硬件描述语言,用于描述数字电路的行为和结构。
在本实验中,我们将使用VHDL语言描述电子琴的按键和音调的对应关系,通过FPGA实现电子琴的功能。
电子琴实验主要包含两个部分:输入部分和输出部分。
输入部分是按键,按下不同的按键会发出不同的音调。
输出部分是扬声器,通过扬声器输出对应的音频信号。
实验步骤:
1.确定电子琴的按键数量和对应的音调。
2.使用VHDL语言描述电子琴的按键和音调的对应关系。
3.将VHDL代码综合成逻辑电路网表。
4.将逻辑电路网表烧录到FPGA中。
5.连接扬声器到FPGA输出引脚。
6.按下不同的按键,测试扬声器输出的音频信号是否正确。
实验结果:
经过实验测试,我们成功实现了一个简单的VHDL电子琴。
按下不同的按键,扬声器输出对应的音调。
通过调整VHDL代码中的音频频率,可以改变电子琴的音调高低。
实验总结:
通过本实验,我们深入理解了VHDL语言的应用和FPGA的原理。
电子琴作为一个实际应用案例,充分展示了数字电路设计的魅力。
在今后的学习和工作中,我们将能更加熟练地应用VHDL语言和FPGA技术,设计更加复杂的数字电路系统。
Verilog HDL课程设计(多路选择器设计与乐曲硬件演奏电路设计)目录1.绪论 (1)1.1 EDA介绍 (1)1.2 FPGA介绍 (1)1.3 Verilog HDL硬件描述语言 (2)1.3.1 Verilog HDL硬件描述语言介绍 (2)1.3.2 Verilog HDL功能 (2)1.4. Quartus II 9.0介绍 (3)1.4.1 Quartus II 9.0安装 (3)1.4.2 Quartus II 9.0破解 (5)2.多路选择器的设计 (6)2.1设计要求 (6)2.2设计原理框图 (6)2.3硬件原理图 (7)2.4程序设计 (7)2.5.仿真结果 (8)2.6.引脚锁定如下 (8)2.7.分析报告 (9)3.乐曲硬件演奏电路设计 (9)3.1设计要求 (9)3.2设计原理 (9)3.3设计原理框图 (9)3.4硬件原理图 (10)3.4程序设计 (10)3.5.仿真结果及分析 (11)5.论文总结 (122)参考文献 (13)1.绪论1.1 EDA介绍EDA电子设计自动化是Electronic Design Automation的简称,从20世纪60年代中期发展开始至今,已经取得了飞跃性的进步,在电子技术设计领域,可编程逻辑器件(如CPLD、FPGA)的应用,已经非常普及,这些可编程逻辑器件为数字系统的设计带来了相当大的灵活性。
这些器件可以通过软件编程而对其硬件结构和工作方式进行重构和改变,这就使得硬件的设计可以如同软件设计那样方便快捷效率高,可编程逻辑器件加快了EDA技术的发展,在现代社会,尤其是电子信息科技行业发展突飞猛进,在化工、机械、电子、通信、医学、航空航天、矿产、生物、军事等各个领域都有EDA的广泛应用,相信在为了社会EDA 技术会发展的更加发达。
1.2 FPGA介绍FPGA是Field-Programmable Gate Array的简称,即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。
文理学院简易电子琴设计专业:自动化学号:2012118064:一天虹影实验目的使用VerilogHDL语言进行前端设计,并使用Quaruts软件在GW48-PK2实验上实现仿真,实现硬件电子琴。
电子琴要求有8个音阶,使用外部时钟信号3MHz,能同步显示音阶。
1、 设计一个简易电子琴。
要求能演奏的音域为D 调的do 到E 调do 。
2、 用GW48-PK2中的8个按键作为琴键。
3、 GW48-PK2中有蜂鸣器。
4、 可以使用GW48-PK2上的12MHz 作为输入时钟信号设计思路通过可编程逻辑器件(PLD )和VHDL 硬件描述语言来实现电子琴的基本要求。
设计的主体是数控分频器,对输入的频率按照与每个音阶对应的分频系数进行分频,得到各个音阶对应的频率分别在蜂鸣器和数码管上以声音和频率数值的形式作为输出。
设计组成与原理下图为系统的工作原理框图。
分频置 数按 键分 频器12MHZ蜂 鸣 器数码管显示1.音名与频率的关系音乐的12平均率规定:每2个八度音(如简谱中的中音1与高音1)之间的频率相差1倍。
在2个八度音之间,又可分为12个半音。
灵位,音符A(简谱中的低音6)的频率为440HZ,音符B到C之间、E到F之间为半音,其余为全音。
由此可以计算出简谱中所有的音符的频率,在这我们只需计算出中音1到高音1的频率即可。
如下所示:表一简谱音名与频率的对应关系由于各音符对应的频率多为非整数,而分频系数又不能为小数,故必须将计算得到的分频数四舍五入取整。
若分频器时钟频率过低,则由于分频系数过小,四舍五入取整后的误差较大;若时钟频率过高,虽然误差变小,但分频数将变大。
实际的设计应综合考虑两方面的因素,在尽量减少频率误差的前提下取合适的时钟频率。
本实验要求用12MHZ的时钟脉冲信号,所以不必考虑这方面的因素。
实际上,只要各个音符间的相对频率关系不变,弹奏出来的音调听起来是不会走调的。
2.分频系数与初始值(预置数)本例设计的音乐电子琴选取12MHZ的系统时钟频率。
基于FPGA的电子琴设计课程设计摘要乐曲演奏广泛用于自动答录装置、手机铃声、集团电话、及智能仪器仪表设备。
实现方法有许多种。
现用可编程逻辑器件(PLD)来完成该设计。
核心是一数控分频器,对输入的脉冲进行分频,得到每个音阶对应的频率,由此实现简易电子琴的发音功能。
电子琴可演奏由键盘输入的音阶,同时在数码管上显示对应音节的频率。
本设计基于超高速硬件描述语言VHDL在Altera公司的CycloneⅡ系列的EP2C5T144C8芯片上编程实现;经仿真,调试基本能够达到技术指标,仿真结果基本正确。
关键词音乐译码电路模块,VHDL,数控分频,电子琴AbstractMusic performances are widely used in automatic answering devices, cell phone ring tones, the Group phones, smart instrumentation and equipment。
The design is accomplished using a programmable logic device (PLD). The core is a numerical control frequency divider, the input pulse frequency, the frequency of each scale corresponding to the frequency, thus achieving the function of simple electronic piano. The electronic piano can be played by the keyboard input of the scale, while in the digital tube display the corresponding syllable frequency. The design based on ultra high speed hardware description language VHDL on Altera's cyclone II Series ep2c5t144c8 chip programming; the simulation and debugging can basically meet the technical indicators, and the result of simulation is correct.Keywords Music decoder circuit module,VHDL,Numerical control pointing frequency modules,electronic organ目录摘要 (I)Abstract (II)1 引言 (1)2 VHDL简述及应用 (2)2.1VHDL简述 (2)2.2 VHDL的应用 (2)3 FPGA的简述 (3)3.1 FPGA的介绍 (3)3.2 FPGA的整体结构 (3)3.3 Altera公司的FPGA (3)4 电子琴演奏系统设计原理分析 (4)4.1电子琴演奏设计的基本要求 (4)4.2电子琴演奏原理 (4)4.3音名与频率的关系 (5)4.4控制音长的节拍发生器 (6)5 电子琴硬件演奏电路的层次化设计方案 (8)5.1按键控制模块 (8)5.2自动演奏模块 (8)5.3自动播放控制模块 (9)5.4数控分频模块设计 (9)5.5数码管译码显示 (10)5.6音频驱动模块 (10)结论 (11)致谢 (12)参考文献 (13)附录1 (14)附录2 (15)1 引言我们生活在一个信息高速发达的时代,各种各样电子产品层出不穷。
数电EDA简易电子琴Verilog- 设计.数字电子技术课程设计--简易电子琴设计专业班级:电子姓名:学号:日期: 2015.6.5一、设计任务用Verilog HDL语言设计简易电子琴。
(1)单独从左至右按下S1-S7每个按键后能够各自对应发出“哆来咪发唆啦西”的音乐声;(2)按下最右边按键(S8),同时再配合按下S1-S7键后,发高八度的对应音;(3)按键需要进行“消抖”处理;(4)外部输入脉冲信号频率为1mhz;(5)扩展要求:自主设计(增加低8度功能)。
二、实验目的1、学习verilogHDL语言的基本运用,能够利用其进行简单编程;2、学习使用QuartusⅡ7.0的基本操作,能够利用其进行简单的设计;3、结合实践加深对理论知识的理解。
三、设计原理1)喇叭的振动频率不同,导致产生不同的声音;振动频率越低,声音越低沉,振动频率越高,声音越尖锐。
题目中音乐基本音的“哆”对应频率为523Hz 、“来”对应频率为587Hz 、“咪”对应频率为659Hz 、“发”对应频率为698Hz 、“唆”对应频率为784Hz 、“啦”对应频率为880Hz 、“西”对应频率为998Hz。
低8度音:基本音频率/2,例如低音1的频率为523/2=261.5Hz。
高8度音:基本音频率×2,例如高音1的频率为523×2=1046Hz.。
不同的频率产生利用给定的时钟脉冲来进行分频实现。
(2)消抖的原理:按键默认输入逻辑‘1',当有按键按下时对应的输入为逻辑‘0'(但会存在抖动),当FPGA开始检测到该引脚从‘1'变为‘0'后开始定时(按键抖动时间大约10ms),定时时间结束后若该引脚仍然为‘0'则表示确实发生按键按下,否则视为抖动而不予以理会;按键松开过程的消抖处理和按下时原理一样。
)原理框图3(.四、程序设计消抖模块module xiaodou(key_in,key_out,clk); input key_in;input clk;output key_out;reg key_out;reg [2:0]presta;integer q;parameter s0=3'b000,s1=3'b001,s2=3'b010,s3=3'b011,s4=3'b100,s5=3'b101,s6=3'b110,s7=3'b111;always@(posedge clk)begincase(presta)s0:beginkey_out<=0;q<=0;if(key_in==1)presta<=s0;elsepresta<=s1;ends1: beginkey_out<=0;if(q>9999)presta<=s2;elseq<=q+1;ends2:beginkey_out<=0;q<=0;if(key_in==1)presta<=s0;elsepresta<=s3;ends3:beginkey_out<=1;q<=0;if(key_in==0)presta<=s3;elsepresta<=s4;ends4:beginkey_out<=1;if(q>44444)presta<=s5;elseq<=q+1;ends5:beginq<=0;if(key_in==1)presta<=s0;elsepresta<=s3;ends6:beginpresta<=s0;ends7:beginpresta<=s0;endendcaseendend module按键模块module anjian(a,b,c,d,e,f,g,h,i,qout); input a,b,c,d,e,f,g,h,i;output [10:0] qout;reg [8:0] q;reg [10:0] qout;always@(a or b or c or d or e or f or g or h or i) beginq[0]=i;q[1]=h;q[2]=g;q[3]=f;q[4]=e;q[5]=d;q[6]=c;q[7]=b;q[8]=a;endalways@(q)begincase(q)9'b100000000:qout<=11'b01110111100;9'b010000000:qout<=11'b01101010011;9'b001000000:qout<=11'b010********;9'b000100000:qout<=11'b010********;9'b000010000:qout<=11'b010********;9'b000001000:qout<=11'b010********;9'b000000100:qout<=11'b00111110101;9'b100000010:qout<=11'b00111011110;9'b010000010:qout<=11'b00110101010;9'b001000010:qout<=11'b00101111011;9'b000100010:qout<=11'b00101100110; 9'b000010010:qout<=11'b00100111111; 9'b000001010:qout<=11'b00100011100; 9'b000000110:qout<=11'b00011111011;9'b100000001:qout<=11'b11101111000; 9'b010000001:qout<=11'b11010100110; 9'b001000001:qout<=11'b10111101110; 9'b000100001:qout<=11'b10110011000; 9'b000010001:qout<=11'b10011111100; 9'b000001001:qout<=11'b10001110000; 9'b000000101:qout<=11'b01111101010;9'b000000011:qout<=11'b00000000000; 9'b000000001:qout<=11'b00000000000; 9'b000000000:qout<=11'b00000000000; 9'b000000010:qout<=11'b00000000000; default:qout<=qout;endcaseendendmodule分频模块module fenpin(clk_1M,yuzhi,pl_out); input clk_1M;input [10:0]yuzhi;reg [10:0]q;output pl_out;reg pl_out;always@(posedge clk_1M)beginif(yuzhi>0)beginif(q<yuzhi)beginq<=q+1;pl_out<=0;endelsebeginq<=11'b00000000000;pl_out<=1;endendelsebeginq<=11'b00000000000; pl_out<=1;endendendmodule五、原理图及仿真波形图六、心得体会由于之前对本次设计所需知识了解较少,所以在实验过程中遇到了很多的困难,真的很难,但是同样在解决各种困难的过程中也有所收获。
1 引言随着EDA技术的进展,基于可编程的数字电子系统设计的完整方案越来越受到人们的重视。
与利用微处理器(CPU或MCU)来实现乐曲演奏相比,以纯硬件完成乐曲演奏电路的逻辑要复杂得多,如果不借助于功能强大的EDA工具和硬件描述语言,仅凭传统的数字逻辑技术,即使最简单的演奏电路也难以实现。
如何使用EDA工具设计电子系统是人们普遍关心的问题。
本课程设计主要是采用FPGA器件驱动小扬声器构成一个乐曲演奏电路,FPGA器件选择Altera的EPF10K10,在MAX + plusⅡ的EDA软件平台上,实现了乐曲演奏电路的设计。
1.1 课程设计的目的本课程设计主要是基于Verilog HDL设计乐曲演奏电路,系统实现是用硬件描述语言Verilog HDL按分频控制的方式进行设计,然后进行编程、时序仿真、电路功能验证,奏出美妙的乐曲。
该设计的目的在于加深对EDA技术的理解,掌握乐曲演奏电路的工作原理,了解怎样控制音调的高低变化和音长,从而完成乐曲的自动循环演奏。
1.2 课程设计的要求本课程设计中由于每一个音调对应不同的频率,从而输出对应频率的声音。
因此本设计要求通过控制输出到扬声器的激励信号频率的高低和持续的时间,从而使扬声器发出连续的乐曲声,且当乐曲演奏完成时,保证能自动从头开始演奏。
1.3 设计平台MAX + plusⅡ是美国Altera 公司的一种EDA 软件,用于开发CPLD 和FPGA 进行数字系统的设计。
2 应用工具介绍作为当今最流行的计算机软件系统,EDA技术是以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术的最新成果,进行电子产品的自动设计。
EDA可提供文本输入以及图形编辑的方法将设计者的意图用程序或者图形方式表达出来,而我们经常用到的VHDL语言便是用于编写源程序所需的最常见的硬件描述语言(HDL)之一。
2.1 EDA技术介绍EDA是电子设计自动化(Electronic Design Automation)的缩写,在20世纪90年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来。
基于VHDL语言的电子琴电路设计XX班XX 学号:XX摘要:由于近十年来资讯工业的蓬勃发展,伴随着微电子技术的快速发展,小至传统的门层(GATE LEVEL)设计,大到电话LCD的来电显示,电梯控制器,出租车计费器等等由硬件描述语言(HDL,hardware description language)的设计方式,无一不是电脑与IC设计相关应用所及之地,而不论是电脑本身或是其他应用,则正是数位电路的产物。
为得到理论与实际应用的结合,于是选择电子琴为研究课题,进行相关的实验,运用VHDL(Very high speed integrated circuit hardware description language)使得数位电路设计接近于软件演算法的实现,将传统的逻辑设计导向了系统层级和高阶电路合成的方向。
使用到的软件为Altera 的Max+PlusⅡ,使用它可使用一模拟器来模拟一系统的行为而不用实际建构一系统,另一方面合成编辑器可以将此系统行为描述转换成实现此系统的数位硬件.这些对于构建电子琴及声音处理制作有很大帮助.关键词:VHDL 电子琴电路设计Max+PlusⅡ1.选题背景:1.1选题背景:基于当前市场上的电子琴价格较昂贵,很难大众化,而且市场上大多电子琴靠硬件实现其功能,这样很难降低其成本,基于EDA技术的发展,我们可以利用软件实现电子琴的功能,从而降低成本,并且可以进行一定的功能扩展。
VHDL 适用于此类实用设备的模拟仿真,以并行和顺序的多种语句方式来描述在同一时刻中所有可能发生的事情,因此可以认为,VHDL具有描述由相关和不相关的多维时空组合的复合体系统的功能,因此要以多为并发的思路运用VHDL来完成电子琴的程序设计。
乐曲都是由一连串的音符组成,因此按照乐曲的乐谱依次输出这些音符所对应的频率,就可以在扬声器上连续地发出各个音符的音调。
大多数的电子琴设计都有弹奏和播放功能。
进入20世纪90年代以后,VHDL技术得到了飞速的发展,电子系统的设计方法发生了很大的变化,传统的设计方法正逐步退出历史舞台,而基于EDA技术的可编程逻辑芯片设计成为电子系统设计的主流。
河海大学计算机与信息学院(常州)课程设计报告题目电子琴设计专业/学号电科/**********授课班号278605学生姓名马东林指导教师单鸣雷完成时间2014/01/07河海大学本科课程设计报告课程设计(报告)任务书(理工科类)Ⅰ、课程设计(报告)题目:电子琴设计Ⅱ、课程设计(论文)工作内容用FPGA器件驱动蜂鸣器演奏“茉莉花”片段。
一首乐曲包含三个要素:乐曲声音频率,发音时间的长短,停顿的时间。
按照图1乐谱,设计相应电路控制speaker信号的方波频率,某一频率持续时间长短,各频率间间隔大小,就可以推动蜂鸣器演奏乐曲。
图1 茉莉花简谱一、课程设计目标1、培养综合运用知识和独立开展实践创新的能力;2、培养学生独立编写verilog hdl 程序的能力,加深对课本知识的理解。
二、研究方法及手段应用1、将任务分成若干模块,查阅相关论文资料,分模块调试和完成任务;2、两人一组合作分工完成程序的编写和调试。
三、课程设计预期效果1、完成实验环境搭建;2、完成程序的编写和调试;3、能在实验平台上顺利演示效果用蜂鸣器播放一首音乐,并可以按键弹奏;4、锻炼学生的独立分析程序,解决问题的能力以及掌握verilog hdl 的实际应用。
学生姓名:马东林专业年级:电科/2011摘 要乐曲演奏广泛用于自动答录装置、手机铃声、集团电话及智能仪器仪表设备。
实现方法有许多种,在众多的实现方法中,以纯硬件完成乐曲演奏,随着FPGA 集成度的提高,价格下降,EDA 设计工具更新换代,功能日益普及与流行,使这种方案的应用越来越多。
FPGA 预装了很多已构造好的参数化库单元LPM 器件,通过引入支持LPM 的EDA 软件工具,设计者可以设计出结构独立而且硅片的使用效率非常高的产品。
本设计由现场可编程门矩阵(FPGA )作为控制芯片,通过VreilogHDL 硬件描述语言设计,运用自顶而下的设计思想,按功能逐层分割实现层次化的设计。
总体设计方案为先用分频电路产生不同频率方波;再利用利用数控分频器实现speaker 输出信号频率的选择,某一频率持续时间长短,各频率间间隔大小,其中方波的频率决定了音调的高低。
【关键词】FPGA 分频 方波 乐曲演奏ABSTRACTPlaying music is widely used in automatic answering device, cell tones, PBX and intelligent instrumentation equipment. There are many the improvement of FPGA integration, lower prices, EDA design tool replacement, the increasing popularity of functional and popular, so the application of this approach increasingly more. FPGA preloaded with many already constructed parameterized library unit LPM devices supported by the introduction of LPM's EDA software tools, designers can design a structure independent and efficient use of silicon products is very high. The design of field programmable gate array (FPGA) as a control chip, description language design, the use of top-down design ideas through VreilogHDL hardware, divided by function layer by layer to achieve hierarchical design. The overall design of the first to produce a square wave with a different frequency divider circuit; recycling use NC divider to achieve speaker output signal frequency selection, Square wave The music playing第一章 系统设计第一节 课题目标及总体方案基于现场可编程逻辑门阵列FPGA ,通过EDA 技术,采用VerilogHDL 硬件描述语言实现乐曲演奏电路设计。
程序设计思想为:1、用分频电路产生不同频率方波;2、利用计数器实现speaker 信号频率选择,某一频率持续时间长短,各频率间间隔大小。
其框图如图2。
本设计由现场可编程门矩阵(FPGA )作为控制芯片,通过VreilogHDL 硬件描述语言设计,运用自顶而下的设计思想,按功能逐层分割实现层次化的设计。
总体设计方案为(1)用分频电路产生不同频率方波;(2)利用计数器实现speaker 信号频率的选择,某一频率持续时间长短,各频率间间隔大小。
下面介绍主要模块的功能及作用。
蜂鸣器数码管图2 系统组成第二节 应用工具简介一、 EDA 技术介绍EDA 是电子设计自动化(Electronic Design Automation)的缩写,在20世纪90年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来。
EDA 技术是在电子CAD 技术基础上发展起来的计算机软件系统,是指以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术的最新成果,进行电子产品的自动设计[1]。
EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。
典型的EDA工具中必须包含两个特殊的软件包,即综合器和适配器。
综合器的功能就是将设计者在EDA平台上完成的针对某个系统项目的HDL、原理图或状态图形描述,针对给定的硬件系统组件,进行编译、优化、转换和综合,最终获得我们欲实现功能的描述文件。
综合器在工作前,必须给定所要实现的硬件结构参数,它的功能就是将软件描述与给定的硬件结构用一定的方式联系起来。
也就是说,综合器是软件描述与硬件实现的一座桥梁。
综合过程就是将电路的高级语言描述转换低级的、可与目标器件FPGA/CPLD相映射的网表文件。
在今天,EDA技术已经成为电子设计的普遍工具,无论设计芯片还是设计系统,没有EDA工具的支持,都是难以完成的。
EDA工具已经成为设计师必不可少的武器,起着越来越重要的作用。
从目前的EDA技术来看,其发展趋势是政府重视、使用普及、应用广泛、工具多样、软件功能强大。
EDA技术发展迅猛,完全可以用日新月异来描述。
EDA技术的应用广泛,现在已涉及到各行各业。
EDA水平不断提高,设计工具趋于完美的地步。
语言介绍Verilog HDL是一种硬件描述语言,用于从算法级、门级到开关级的多种抽象设计层次的数字系统建模。
被建模的数字系统对象的复杂性可以介于简单的门和完整的电子数字系统之间。
数字系统能够按层次描述,并可在相同描述中显式地进行时序建模[2]。
作为一种通用化的硬件描述语言,Verilog HDL语言具有下述描述能力:设计的行为特性、设计的数据流特性、设计的结构组成以及包含响应监控和设计验证方面的时延和波形产生机制。
所有这些都使用同一种建模语言。
此外,Verilog HDL 语言提供了编程语言接口,通过该接口可以在模拟、验证期间从设计外部访问设计,包括模拟的具体控制和运行[3]。
Verilog HDL语言不仅定义了语法,而且对每个语法结构都定义了清晰的模拟、仿真语义。
因此,用这种语言编写的模型能够使用Verilog仿真器进行验证。
语言从C编程语言中继承了多种操作符和结构。
Verilog HDL提供了扩展的建模能力,其中许多扩展最初很难理解。
但是,Verilog HDL语言的核心子集非常易于学习和使用,这对大多数建模应用来说已经足够。
当然,完整的硬件描述语句足以对从最复杂的芯片到完整的电子系统进行描述。
Verilog HDL语言已经成为一种标准的硬件描述语言。
它具有以下特点:(1)作为一种多用途的硬件描述语言,它具有很好的易学性和易用性。
(2)Verilog HDL语言允许在同一个模块中进行不同抽象层次的描述。
(3)大多数逻辑综合工具都支持Verilog HDL,使得它成为设计人员的一个很好的选择。
(4)所有的制造厂商都提供了Verilog HDL的工艺库,用以支持仿真。
(5)Verilog HDL的程序语言接口拥有强大的功能,允许用户用C语言对内部数据结构进行描述[3]。
正是以上优点,使得Verilog HDL语言广泛流行。
1、程序设计流程下面是verilog的设计流程图2 Verilog hdl的设计流程图2、基本原理乐曲演奏的原理是这样的:组成乐曲的每个音符的频率值(音调)及其持续的时间(音长)是乐曲能连续演奏所需的两个基本数据,因此只要控制输出到扬声器的激励信号频率的高低和持续的时间,就可以使扬声器发出连续的乐曲声[4]。
2.1音调的控制频率的高低决定了音调的高低。
音乐的十二平均率规定:每两个8度音(如简谱中的中音1与高音1)之间的频率相差一倍。
在两个8度音之间,又可分为12个半音,每两个半音的频率比为12√2。
另外,音名A(简谱中的低音6)的频率为440Hz,音名B到C之间、E到F之间为半音,其余为全音[4]。
由此可以计算出简谱中从低音1至高音1之间每个音名对应的频率,如表3.11所示:表1 简谱中的音名与频率的关系所有不同频率的信号都是从同一个基准频率分频得到的。
由于音阶频率多为非整数,而分频系数又不能为小数,故必须将计算得到的分频数四舍五入取整。
若基准频率过低,则由于分频比太小,四舍五入取整后的误差较大;若基准频率过高,虽然误差变小,但分频数将变大。
实际的设计综合考虑这两方面的因素,在尽量减小频率误差的前提下取合适的基准频率[4]。
本例中选取500kHz为基准频率。
若无500kHz的基准频率,则可以先分频得到500kHz,或换一个新的基准频率。
实际上,只要各个音名间的相对频率关系不变,演奏出的乐曲听起来都不会"走调"。