Verilog-hdl—简易电子琴设计

合集下载

FPGA设计简易电子琴

FPGA设计简易电子琴

简易电子琴电路设计一、设计要求:(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模块。

Verilog 电子琴程序

Verilog 电子琴程序

如题,,,再附加上程序的控制说明.......是用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。

基于Verilog HDL的简易电子琴控制电路设计与实现

基于Verilog HDL的简易电子琴控制电路设计与实现

基于Verilog HDL的简易电子琴控制电路设计与实现
张皓祎;郑冰;卢炽杏;郑惠之;胡锦程
【期刊名称】《电子制作》
【年(卷),期】2024(32)2
【摘要】介绍了一种基于硬件描述语言(Verilog HDL)的简易电子琴控制电路设计,在系统可编程门阵列(FPGA)芯片上实现,可实现自动演奏预存乐曲、弹奏及音符码制显示等常用功能。

该设计采用自顶向下的模块化设计,基于硬件描述语言(Verilog HDL)编程实现。

根据产生各个音符的频率不同,通过将系统的基准频率通过分频器进行分频,得到曲谱中所有音符的频率,再由驱动电路驱动蜂鸣器发声,便可实现乐曲的弹奏或播放功能,用八段数码管显示弹奏或播放音符对应的数字。

该方法设计简单、修改方便、设计周期短。

通过FPGA验证了所设计的控制电路,并完成了简易电子琴的调试及制作。

【总页数】4页(P94-97)
【作者】张皓祎;郑冰;卢炽杏;郑惠之;胡锦程
【作者单位】航天工程大学信息学院
【正文语种】中文
【中图分类】TP3
【相关文献】
1.基于Verilog HDL的逻辑分析仪电路设计
2.基于Verilog HDL的CMOS图像敏感器驱动电路设计
3.基于Verilog HDL的LED显示屏扫描控制模块的实现
4.基于FPGA的简易电子琴控制电路设计
5.基于Verilog HDL的洗衣机控制电路设计
因版权原因,仅展示原文概要,查看原文内容请购买。

verilogHDL的电子琴设计

verilogHDL的电子琴设计

河海大学计算机与信息学院(常州)课程设计报告题目电子琴设计专业/学号电科/**********授课班号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 输出信号频率的选择,某一频率持续时间长短,各频率间间隔大小,其中方波的频率决定了音调的高低。

verilog-hdl—电子琴课程设计

verilog-hdl—电子琴课程设计

v e r i l o g-h d l—电子琴课程设计(总22页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--湖北文理学院课程设计报告题目 Verilog hdl课程设计专业 1211自动化学生姓名一天虹影指导教师单鸣雷完成时间 2015—1—9课程设计(报告)任务书(理工科类)课程设计(报告)题目:电子琴的设计课程设计(论文)工作内容一、课程设计目标1、培养综合运用知识和独立开展实践创新的能力;2、深入学习Verilog HDL,了解其编程环境;3、学会运用Modelsim和Quartus II等编程仿真软件;4、将硬件语言编程与硬件实物功能演示相结合,加深理解Verilog HDL的学习;二、研究方法及手段应用1、将任务分成若干模块,查阅相关论文资料,分模块调试和完成任务;2、遇到问题小组成员及时讨论得出解决方法;3、遇到本组内解决不了的问题,及时和其他小组交流或询问老师;4、程序仿真,仿真无问题后进行模块调试,根据实验箱上的硬件实现是否符合要求来检验程序正确与否。

三、课程设计预期效果1、完成实验环境搭建;2、具有手动弹奏和自动播放功能;3、以按键(或开关)作为琴键,至少可以通过蜂鸣器输出7个音阶;4、自动播放曲目至少两首;摘要简易电子琴的设计通过通过软硬件结合实现,硬件系统包括主控器芯片、9个按键、LED、蜂鸣器等,软件资源包括编写Verilog HDL程序的应用软件Modelsim和仿真软件Quartus II。

电子琴有按键代替琴键的弹奏功能和自动播放功能。

按键有七个音,自动播放功能中有三首曲子,分别是《两只老虎》、《天空之城》和《康定情歌》。

程序共有五个模块,分别为主模块、琴键模块、曲1模块、曲2模块、曲3模块。

硬件实现是用三个LED灯组合亮暗分别表示七个按键按下情况,另外两个按键用来选择曲目。

实验箱原始时钟为50MHz,分频后变成不同的频率输出,通过蜂鸣器输出不同频率的声音。

Verilog hdl—简易电子琴设计

Verilog hdl—简易电子琴设计

文理学院简易电子琴设计专业:自动化学号: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的简易电子琴设计

基于FPGA的简易电子琴设计

课程设计任务书开题报告皖西学院本科毕业论文(设计)中期检查表简易电子琴的设计学生姓名:王春指导老师:郑大腾摘要本系统是采用EDA技术设计的一个简易的八音符电子琴,该系统基于计算机中时钟分频器的原理,采用自顶向下的设计方法来实现,它可以通过按键输入来控制音响。

多功能电子琴的设计是在原有普通电子琴的基础上进行扩充的一个设计。

该电子琴的设计大体可以由三个模块构成,分别是电子琴发声模块、存储器模块和选择控制模块。

用超高速硬件描述语言VHDL编程可以实现各个模块的功能。

不仅能实现弹琴和演奏的功能,它还能实现“复读”的功能,就是可以存储任意一段音乐,并且可以即时的播放出来。

系统实现是用硬件描述语言VHDL 按照模块化方式进行设计,然后进行编程、时序仿真、总体整合。

本系统的功能比较齐全,有一定的现实使用的价值。

本文中介绍了电子琴系统的整体的设计,并基于超高速硬件描述语言VHDL在相关的芯片上编程实现的。

关键字电子琴;EDA;VHDL;音调发生;现场可编程逻辑器件FPGA;超高速硬件描述语言VHDL;电子琴系统;AbstractThis system is designed using EDA technology a simple eight-note keyboard, the system clock divider based on the principle of the computer, using top-down design methodology to implement, it can be controlled through the key input audio. Multi-function keyboard is designed to be an ordinary keyboard in the original expansion on the basis of a design. The design of the keyboard in general consists of three modules, namely the keyboard soundmodules, memory modules and select the control module. Ultra high-speed hardware description language VHDL programming function of each module. Not only can realize the function of playing and playing, it can achieve "repeat" function, which can store any piece of music, and real-time play out. System implementation is to use hardware description language VHDL modular way by design, then programming, timing simulation, integration. The system features a relatively complete, there is a certain value. This paper introduces the overall design of the keyboard system, and based on high speed hardware description language VHDL in Xilinx's Spartan Ⅱ series 2sc200PQ208-5 chip programming.KeywordKeyboard; EDA; VHDL; tone occurred;field programmable logic device FPGA;ultra high-speed hardware description language VHDL; organ systems;目录1 引言..................................................................1.1设计的目的...........................................................1.2设计的基本内容.......................................................2 FPGA、EDA、VHDL简介....................................................2.1FPGA工作原理 ........................................................2.1.2 FPGA的基本特点....................................................2.2EDA技术...............................................................2.3硬件描述语言——VHDL ...................................................2.3.1 VHDL的简介.......................................................2.3.2 VHDL语言的特点...................................................2.3.3VHDL语言上机操作条件.............................................2.3.4 VHDL的设计流程...................................................3 音乐知识介绍............................................................4 简易电子琴设计..........................................................4.1系统设计的总思路.....................................................4.2程序设计的流程图.....................................................4.3简易电子琴的工作流程图...............................................4.4简易电子琴中各模块的设计.............................................4.4.1 乐曲自动演奏模块...................................................4.4.2 音调发生模块.......................................................4.4.3 数控分频模块.......................................................4.4.4 顶层设计...........................................................5 系统仿真.................................................................6 结束语..................................................................致谢..................................................................... 参考文献................................................................. 附录.....................................................................1 引言我们生活在一个信息高速发达的时代,各种各样电子产品层出不穷。

实验七 硬件电子琴电路设计

实验七 硬件电子琴电路设计

电子设计自动化实验报告实验七硬件电子琴电路设计一、实验目的1.熟悉QuartusⅡ软件应用环境,了解实验流程。

2.编写简单的Verilog代码,并在QuartusⅡ中进行调试和验证,并在EDA6000中下载代码和验证。

3.掌握硬件电子琴电路的设计方法,根据键入发出不同的音阶。

二、实验原理一个音的音阶是由频率决定,基本音阶的频率如下表:如果要发出“1”的音,只需产生440Hz(周期为1136.4us*2)的频率即可。

模块speaker实现此功能,speaker是一个带预置的减法计数器,用于产生制定周期的脉冲,speaker的基准时钟是10MHz(100ns),当tone为11364时,每1136.4us*2,产生一个脉冲。

模块tone根据用户的键入,输出相应的周期数供speaker产生脉冲。

当用户按下K0时,输出tone11364,按下K1时输出tone 10124..三、实验内容1、用Verilog HDL语言实现编写实现硬件电子琴电路的程序。

2、编程下载并在实验箱上进行验证四、实验步骤与结果1、新建Verilog工程项目,编写代码并保存至与模块名对应的项目文件夹。

2、编译程序,编译无误后,在【tools】里面选择RTL视图,观察寄存器传输级结构。

3、将实验箱和PC合理连接起来。

打开EDA6000软件,设置好芯片类型为ACEX1K (EP1K30TC144-3),载入模式16。

4、根据EDA6000界面内管脚对应芯片的实际管脚在QUARTUSⅡ里面设定管脚号并检查无误。

5、将程序下载至FPGA试验箱内,并在EDA6000软件界面内进行验证测试。

程序源代码:module dzq(pcode,phigh,pspeaker,clk,key_in);input clk;input [7:0]key_in;output phigh,pspeaker;output [2:0]pcode;reg phigh,pspeaker,lock;integer q1,Q;reg [2:0]pcode;always @ (posedge clk )beginif(Q==0)begin Q<=q1; lock<=1;endelse begin Q<=Q-1; lock<=0;endendalways @(clk or key_in)begincase (key_in)8'b00000001: begin phigh=0;pcode=3'b001;q1<=11364; end8'b00000010: begin phigh=0;pcode=3'b010;q1<=10124;end8'b00000100: begin phigh=0;pcode=3'b011;q1<=9019; end8'b00001000: begin phigh=0;pcode=3'b100;q1<=8513; end8'b00010000: begin phigh=0;pcode=3'b101;q1<=7584; end8'b00100000: begin phigh=0;pcode=3'b110;q1<=6757; end8'b01000000: begin phigh=0;pcode=3'b111;q1<=6020; end8'b10000000: begin phigh=1;pcode=3'b001;q1<=5682; enddefault : begin phigh=0;pcode=3'b000;q1<=0; endendcaseendalways @(posedge lock)pspeaker<=~pspeaker;endmodule编译:选择processing---start compilation命令,开始编译。

数电EDA简易电子琴Verilo

数电EDA简易电子琴Verilo

数电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五、原理图及仿真波形图六、心得体会由于之前对本次设计所需知识了解较少,所以在实验过程中遇到了很多的困难,真的很难,但是同样在解决各种困难的过程中也有所收获。

FPGA简易电子琴设计

FPGA简易电子琴设计

西安邮电大学FPGA课程设计报告题目:简易电子琴设计及FPGA功能验证院系:电子工程学院专业班级:学生姓名:导师姓名:黄海生起止时间: 2012-6-18 至 2012-6-292012年 6 月29 日目录1.任务 (2)2.目的 (2)3.使用环境 (2)4.FPGA课程设计详细内容 (2)4.1 技术规范 (2)4.1.1 总体描述 (2)4.1.2 结构框图.............................................................. 错误!未定义书签。

4.1.3 引脚描述.............................................................. 错误!未定义书签。

4.1.3 应用范围 (5)4.2 设计方案 (5)4.2.1 顶层方案设计 (5)4.2.2 顶层模块程序 (7)4.3 功能验证方案及源程序 (7)4.3.1按键输入控制模块方案设计及源程序 (7)4.3.2控制模块方案设计及源程序 (8)4.3.3LCD驱动模块方案设计及源程序 (11)4.4 电路设计及功能仿真报告 (30)4.5 综合及布局布线报告和引脚分布报告 (21)4.6 硬件测试结果报告 (21)5.课程设计的心得体会 (22)6.参考资料 (22)1.任务:a、设计一个简单电子琴。

(内置2~4首简单音调曲)b、用FPGA开发板的按键可选择演奏内置曲调,用数码管显示当前演奏的哪个演奏曲目或停止。

c、要求电子琴具有自主选择,自动播放所选曲目或停止曲目。

2.目的:a、在掌握计算机组成原理理论相关的基础上,了解 EDA技术,掌握Verilog HDL 硬件描述语言的设计方法和思想,通过学习的 Verilog HDL 语言结合电子电路的设计知识理论联系实际,掌握所学的课程知识;b、深入学习Verilog H DL、FPGA,了解其编程环境;c、学会运用Modelsim和Quartus II等编程仿真软件;d、将硬件语言编程与硬件实物功能演示相结合,加深理解Verilog HDL、FPGA的学习;3.使用环境(软件/硬件环境,设备等)软硬件环境:软件:Quartus II 7.2, Modelsim6.1;硬件环境:DEII开发板;设备:PC一台,USB下载线,FPGA开发板及电源。

【精品】简易电子琴的HDL仿真与实现

【精品】简易电子琴的HDL仿真与实现

简易电子琴的VHDL设计与实现一.设计课题与任务要求:设计制作一个简易电子琴演奏器。

原理概述:根据声乐知识,产生音乐的两个因素是音乐频率的持续时间,音乐的十二平均率规定,每两个八音度之间的频率相差一倍,在两个八音度之间,又可分为12个半音。

每两个半音的频率比为4。

另外,音名A(乐谱中的低音6)的频率为440HZ,音名B到C之间,E 到F之间为半音,其余为全音。

由此可以计算出乐谱中从低音1到高音1之间每个音名的频率如下表所示。

表1简谱中的音名与频率的关系基本要求:1、用8×8点阵显示“1234567”七个音符构成的电子琴键盘。

其中点阵的第一列用一个LED点亮表示音符“1”,第二列用二个LED点亮表示音符“2”,依此类推,如下图所示。

图1点阵显示的电子琴键盘2、用BTN1~BTN7七个按键模拟电子琴手动演奏时的“1234567”七个音符。

当某个按键按下时,数码管显示相应的音符,点阵上与之对应的音符显示列全灭,同时蜂鸣器演奏相应的声音;当按键弹开时数码管显示的音符灭掉,点阵显示恢复,蜂鸣器停止声音的输出。

下图所示为按下BTN3按键时点阵的显示情况。

图2按键按下后的点阵显示3、由拨码开关切换选择高、中、低音,并用数码管进行相应的显示。

4、通过按键BTN0进行复位,控制点阵显示图1的初始状态。

提高要求:1、可通过一个拨码开关进行手动/自动演奏的切换,并与点阵显示配合增加自动演奏乐曲的功能。

2、增加手动演奏的音符存储、播放功能。

二.系统设计(包括设计思路、总体框图、分块设计)1.设计思路说明:电子琴的设计包括七个模块:弹奏模块keyplay、自动演奏模块autoplay、查表及显示模块table、分频模块fenpin、存储模块store、七段数码管显示模块seg7和点阵的显示模块lattice。

弹奏模块keyplay根据按键动作key,和高中低模式选择mode产生指示音调的index_key。

自动演奏模块autoplay接收50MHz的时钟信号,输出index_auto。

基于verilog语言简易电子琴设计 数字电子技术课程设计报告

基于verilog语言简易电子琴设计 数字电子技术课程设计报告

数字电子技术课程设计报告基于verilog HDL 语言地简易电子琴设计学院:__信息与控制工程学院________专业班级:___电气11级四班______________姓名:___商玉玺________________________学号:___11053421_____________________指导教师:___________________________________一、实验目地语言地基本运用,能够利用其进行简单编程;verilogHDL1、学习地基本操作,能够利用其进行简单地设计;Ⅱ7.0、学习使用2Quartus. 3、结合实践加深对理论知识地理解二、设计题目.语言设计简易电子琴用verilogHDl 三、题目要求(1)单独从左至右按下S1-S7每个按键后能够各自对应发出“哆来咪发唆啦西”地音乐声;键后,发高八度地对应音;),同时再配合按下S1-S72()按下最右边按键(S8处理;消抖”(3)按键需要进行“;)外部输入脉冲信号频率为1mhz(4).8度功能,自动播放一段音乐(5)扩展要求:自主设计(增加低四、设计原理(1)喇叭地振动频率不同,导致产生不同地声音;振动频率越低,声音越低沉,振动频率越高,声音越尖锐.题目中音乐基本音地“哆”对应频率为523Hz 、“来”对应频率为587Hz 、“咪”对应频率为659Hz 、“发”对应频率为698Hz 、“唆”对应频率为784Hz 、“啦”对应频率为880Hz 、“西”对应频率为998Hz.2=261.5Hz./1地频率为523低8度音:基本音频率/2,例如低音523×2=1046Hz..1地频率为,例如高音高8度音:基本音频率×2.不同地频率产生利用给定地时钟脉冲来进行分频实现(2)消抖地原理:按键默认输入逻辑‘1',当有按键按下时对应地输入为逻辑‘0'(但会存在抖动),当FPGA开始检测到该引脚从‘1'变为‘0'后开始定时(按键抖动时间大约10ms),定时时间结束后若该引脚仍然为‘0'则表示确实发生按键按下,否则视为抖动而不予以理会;按键松开过程地消抖处理和按下时原理一样.)原理框图3(.四、管脚对应表说明对应信号名称FPGA管脚名L21MHz基准时钟F3OU音频输出F8S1A14S2F10S3B16S基本功能按F1SB1SF1SB1SMBTMBT扩展功能按U1BTU1BT4五、实验过程、设计按键防抖模块1)设计程序1(。

verilog简易电子琴课程设计

verilog简易电子琴课程设计

verilog简易电子琴课程设计一、课程目标知识目标:1. 理解Verilog硬件描述语言的基本概念和语法结构;2. 掌握利用Verilog设计简易电子琴的基本原理和方法;3. 学习并掌握数字信号处理中音调生成的基础知识;4. 了解电子琴音阶与频率的关系,能够运用Verilog进行编码实现。

技能目标:1. 能够运用Verilog编写程序代码,实现简易电子琴的基本功能;2. 能够利用仿真工具对Verilog代码进行测试和验证,确保电子琴设计的正确性;3. 能够运用已学知识解决实际电子琴设计中的问题,具备一定的创新和实际操作能力。

情感态度价值观目标:1. 培养学生对数字电路设计和硬件描述语言的兴趣,激发学习热情;2. 培养学生的团队协作能力,提高沟通与交流技巧;3. 培养学生面对问题时的耐心和毅力,形成积极向上的学习态度;4. 增强学生的创新意识,培养敢于尝试、勇于实践的精神。

课程性质:本课程为电子信息技术专业高年级选修课,旨在让学生在实际操作中掌握Verilog硬件描述语言,提高数字电路设计能力。

学生特点:学生具备一定的电子基础和编程能力,对硬件描述语言有一定了解,具有较强的学习能力和实践欲望。

教学要求:结合学生特点,注重理论与实践相结合,充分调动学生的主观能动性,提高学生的实际操作能力。

通过本课程的学习,使学生能够独立完成简易电子琴的设计与实现。

二、教学内容1. Verilog基础知识回顾:- 数据类型与运算符;- 顺序与并行语句;- 模块与端口定义;- 基本时序控制。

2. 简易电子琴设计原理:- 电子琴音阶与频率关系;- 音色生成与合成方法;- MIDI协议简介;- 电子琴硬件架构。

3. Verilog代码编写与实现:- 音符产生模块设计;- 音调控制模块设计;- 声音合成与输出模块设计;- 整体程序框架搭建。

4. 仿真与测试:- ModelSim仿真工具使用;- 仿真测试用例编写;- 功能验证与调试;- 性能评估与优化。

基于FPGA的多功能电子琴设计与实现

基于FPGA的多功能电子琴设计与实现

西南科技大学电子专业综合设计报告设计名称:基于FPGA的多功能电子琴的设计与实现姓名:学号:班级:指导教师:起止日期: 2013年11月22日-2013年12月10 日西南科技大学信息工程学院制综合设计任务书学生班级:电子1001 学生姓名:学号:设计名称:基于FPGA的多功能电子琴的设计与实现起止日期:2013.11.22-2013.12.10 指导教师:综合设计学生日志基于FPGA的多功能电子琴的设计与实现摘要:随着科学技术的日新月异,人们的生活也在发生在变化,电子产品也随之增多,比如现在流行的电子琴,已经逐渐代替了曾经的手动风琴了。

文章中所介绍的多功能电子琴的设计在Quartus II平台上,采用Verilog HDL 语言和模块化的设计方法,设计出一个能够通过按键控制不同的音符,同时也可以通过按键进行演奏已经存储的曲子的多功能电子琴。

本系统主要由五个个模块组成:顶层模块,曲目1模块,曲目2模块,按键模块,曲目循环播放模块。

关键词: FPGA;电子琴; Verilog HDL;音符FPGA-based design and implementation of multi-organAbstract:With the development of science and technology, also occurs in people's lives change, electronic products also increase, such as the now popular organ, has replaced the former manual organ. Multifunction keyboard design as described in the article on the Quartus II platform, using Verilog HDL language and modular design method, design a button control through different note, you can also play music already stored by keys multifunction keyboard. The system consists of five modules: the top-level module, a module tracks, track 2 modules, key module, track loop module.Key words: FPGA, Keyboard, Verilog HDL, Note一、设计目的和意义目的:1.1、在掌握计算机组成原理理论相关的基础上,了解 EDA技术,掌握 Verilog HDL 硬件描述语言的设计方法和思想;1.2、培养综合运用知识和独立开展实践创新的能力;1.3、深入学习Verilog HDL,了解其编程环境;1.4、学会运用Quartus II等编程仿真软件;1.5将硬件语言编程与硬件实物功能演示相结合,加深理解Verilog HDL的学习。

Veriloghdl—简易电子琴设计

Veriloghdl—简易电子琴设计

湖北文理学院简易电子琴设计专业:自动化学号:2012118064姓名:一天虹影实验目的使用VerilogHDL语言进行前端设计,并使用Quaruts软件在GW48—PK2实验上实现仿真,实现硬件电子琴。

电子琴要求有8个音阶,使用外部时钟信号3MHz,能同步显示音阶。

设计要求1、设计一个简易电子琴。

要求能演奏的音域为D调的do到E调doo2、用GW48-PK2中的8个按键作为琴键。

3、GW48-PK2中有蜂鸣器。

4、可以使用GW48-PK2上的12MHz作为输入时钟信号设计思路通过可编程逻辑器件(PLD)和VHDL硬件描述语言来实现电子琴的基本要求。

设计的主体是数控分频器,对输入的频率按照与每个音阶对应的分频系数进行分频,得到各个音阶对应的频率分别在蜂鸣器和数码管上以声音和频率数值的形式作为输出。

设计组成与原理下图为系统的工作原理框图。

模块设计1. 音名与频率的关系音乐的12平均率规定:每2个八度音(如简谱中的中音1与高音1)之间的频率相差1倍。

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

灵位,音符A (简谱中的低音6)的频率为440H乙音符B到C之间、E到F之间为半音,其余为全音。

由此可以计算出简谱中所有的音符的频率,在这我们只需计算出中音1 到高音1的频率即可。

如下所示:表一简谱音名与频率的对应关系由于各音符对应的频率多为非整数,而分频系数又不能为小数,故必须将计算得到的分频数四舍五入取整。

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

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

本实验要求用12MHZ的时钟脉冲信号,所以不必考虑这方面的因素。

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

2. 分频系数与初始值(预置数)本例设计的音乐电子琴选取12MHZ的系统时钟频率。

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

基于FPGA的电子琴制作.[大全5篇]

基于FPGA的电子琴制作.[大全5篇]

基于FPGA的电子琴制作.[大全5篇]第一篇:基于FPGA的电子琴制作.基于FPGA的电子琴制作【摘要】文章介绍了基于FPGA的电子琴的工作原理和设计过程。

用Altera公司的CycloneⅢ系列的EP3C16F484C6N芯片为核心器件,通过超高速硬件描述语言VHDL,在QuartusⅡ9.0平台上,实现了电子琴的手动弹奏和自动演奏功能。

本系统主要由音乐输入模块(music.vhd),音调发生模块(tone.vhd)和音频播放模块(speaker.vhd)组成。

拨动开关选择手动弹奏模式时,通过拨动音符开关和音调选择后就会选择相应的频率输出;拨动开关选择自动演奏模式时,音乐输入模块会将编写好的音乐简谱依次取出,去选通各个对应的频率输出,实现自动演奏。

音频播放模块由分频器来实现,可产生21个频率,分别为低中音各7个音符,通过喇叭发出声音。

【关键词】FPGA ;QuartusⅡ ;VHDL ;电子琴;音符目录第一章引言 1.1 课题解析1.2 VHDL语言与QuartusⅡ环境简介1.2.1 VHDL语言简介1.2.2 QuartusⅡ环境简介第二章原理分析2.1 电子琴设计原理 2.2 系统设计的主要组成部分第三章硬件设计3.1 现场可编程门阵列FPGA简介 3.2 按键模块及其功能 3.3 显示模块及其功能第四章软件设计4.1 系统的流程4.2 设计模块 4.2.1音乐输入模块(music.vhd)4.2.2音调发生模块(tone.vhd)4.2.3音频播放模块(speaker.vhd)第五章软硬件的系统测试第六章心得体会6.1实验中遇到的问题和解决过程 6.2 电子琴的进一步改进计划附录Ⅰ 各个模块程序以及顶层原理图附录Ⅱ 内置音乐简谱第一章引言电子琴作为音乐与科技的产物,在电子化和信息化的时代,为音乐的大众化做出了很大的贡献,歌曲的制作大多数都要由电子琴来完成,然后通过媒介流传开来,电视剧和电影的插曲、电视节目音效、甚至你的手机铃声,都很可能包含电子琴的身影。

基于FPGA的简易电子琴的设计.doc

基于FPGA的简易电子琴的设计.doc

基于FPGA的简易电子琴的设计..学校代码:学号:本科毕业设计说明书题目:基于FPGA的简易电子琴的设计学生姓名:学院:系别:专业:班级:指导教师:摘要我们都知道的当物体在振动或者在晃动的时候,能够发生声音。

并且如果振动的频率不同,而物体发出的声音就不同,因此音调也会不同。

在简易的电子琴的设计时候虽然没有振动的物体,比如簧,管,弦等,但是电子琴的内部却有很多电子类的装置,而这些电子类的装置只要开始工作就能使扬声器发出像振动的物体那样发出不同的声音。

当按动某个琴键,就会是相应的电子装置工作,从而使扬声器发出不同的音调。

本系统是采用EDA技术设计的一个简易电子琴,该系统基于计算机中时钟分频器的原理,采用自顶向下的设计方法来实现,它可以通过按键输入来控制扬声器,同时也可以有自动播放歌曲的功能。

该电子琴的设计大体可以由三个模块构成,分别是控制输入电路,FPGA和扬声器电路。

用超高速硬件描述语言VHDL 编程可以实现各个模块的功能。

可以实现按键的输入和自动演奏的功能,同时可以即时的播放出来关键词:EDA;VHDL;FPGA;电子琴系统AbstractWe all know that when the vibration of an object that can happen to sound.And the frequency of the vibration is different, the object the sound is different, the tone will be different.Simple design of the keyboard when the vibrating object.Such as reed, tube, string, etc., but the keyboard's internal has a lot of electronic devices.These electronic devices to work can make the speakers like the vibration of objects that make different sounds.When pressing a key, the corresponding electronic devices work, so that speakers of different tones.This system is designed using EDA technology a simple eight- 学号:本科毕业设计说明书题目:基于FPGA的简易电子琴的设计学生姓名:学院:系别:专业:班级:指导教师:摘要我们都知道的当物体在振动或者在晃动的时候,能够发生声音。

verilog-hdl-简易乐曲设计

verilog-hdl-简易乐曲设计

指导教师:日期:EDA技术课程设计题目: EDA技术及其应用——简易电子琴设计姓名:院系:电子信息工程学系专业:通信工程班级: 091班级学号:指导教师:2012年1 月EDA技术课程设计报告——简易电子琴的设计(电子信息工程学系指导教师:)摘要在现代的电子设计中,EDA技术已经成为一种普遍的工具,它在电子信息、通信、自动控制用计算机等领域的重要性日益突出。

本课程设计主要采用EDA技术设计一个简易的八音符电子琴,它采用EDA作为开发工具,Verilog HDL 语言为硬件描述语言,MAX + PLUS II作为程序运行平台,所开发的程序通过调试运行、波形仿真验证,初步实现了设计目标。

本程序使用的硬件描述语言Verilog HDL,既能进行面向综合的电路设计,又可用于电路的模拟仿真,能够在多层次上对所设计的系统加以描述,易学易用,语言功能强。

关键词课程设计;EDA;Verilog HDL;电子琴1.课程设计的目的系统实现是用硬件描述语言verilog按模块化方式进行设计,然后进行编程、时序仿真、电路功能验证,奏出美妙的乐曲。

巩固和运用所学课程,理论联系实际,提高分析、解决计算机技术实际问题的独立工作能力,通过对一个简易的八音符电子琴的设计,进一步加深对计算机原理以及数字电路应用技术方面的了解与认识,进一步熟悉数字电路系统设计、制作与调试的方法和步骤。

巩固所学课堂知识,理论联系实际,提高分析、解决计算机技术实际问题的独立工作能力。

2.课程设计的要求(1)设计一个简易的八音符电子琴,它可通过按键输入来控制音响。

(2)演奏时可以选择是手动演奏(由键盘输入)还是自动演奏已存入的乐曲。

(3)能够自动演奏多首乐曲,且每首乐曲可重复演奏。

3. EDA技术EDA是电子设计自动化(Electronic Design Automation)缩写,是90年代初从CAD(计算机辅助设计)、CAM(计算机辅助制造)、CAT(计算机辅助测试)和CAE(计算机辅助工程)的概念发展而来的。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

湖北文理学院简易电子琴设计专业:自动化学号:64姓名:一天虹影实验目的使用VerilogHDL语言进行前端设计,并使用Quaruts软件在GW48-PK2实验上实现仿真,实现硬件电子琴。

电子琴要求有8个音阶,使用外部时钟信号3MHz,能同步显示音阶。

设计要求1、设计一个简易电子琴。

要求能演奏的音域为D调的do到E调do。

2、用GW48-PK2中的8个按键作为琴键。

3、 GW48-PK2中有蜂鸣器。

4、可以使用GW48-PK2上的12MHz作为输入时钟信号设计思路通过可编程逻辑器件(PLD)和VHDL硬件描述语言来实现电子琴的基本要求。

设计的主体是数控分频器,对输入的频率按照与每个音阶对应的分频系数进行分频,得到各个音阶对应的频率分别在蜂鸣器和数码管上以声音和频率数值的形式作为输出。

设计组成与原理下图为系统的工作原理框图。

模块设计1. 音名与频率的关系音乐的12平均率规定:每2个八度音(如简谱中的中音1与高音1)之间的频率相差1倍。

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

灵位,音符A (简谱中的低音6)的频率为440HZ ,音符B 到C 之间、E到F之间为半音,其余为全音。

由此可以计算出简谱中所有的音符的频率,在这我们只需计算出中音1到高音1的频率即可。

如下所示: 表一 简谱音名与频率的对应关系由于各音符对应的频率多为非整数,而分频系数又不能为小数,故必须将计算得到的分频数四舍五入取整。

若分频器时钟频率过低,则由分频置 数按 键分 频器12MHZ蜂 鸣 器数码管显示于分频系数过小,四舍五入取整后的误差较大;若时钟频率过高,虽然误差变小,但分频数将变大。

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

本实验要求用12MHZ的时钟脉冲信号,所以不必考虑这方面的因素。

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

2.分频系数与初始值(预置数)本例设计的音乐电子琴选取12MHZ的系统时钟频率。

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

这个过程实际上进行了一次二分频,频率变为原来的二分之一,即6MHZ。

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

以中音1为例,对应的频率值为,它的分频系数应该为:Divider=6MHz/=6*106 /=11466至于其他音符,同样由上式求出对应的分频系数,这样利用程序可以轻松地得到相应的乐声。

各音名对应的分频系数如下表:表二各音名对应的分频系数由于最大的分频系数为11466,故采用14位二进制计数器已能满足分频要求。

将分频系数设为0,其初始值为16383(214 -1 )即可,此时扬声器不会发声。

对于不同的分频系数,加载不同的初始值即可。

本实验参考王金明:《Verilog HDL程序设计教程》,采用差值法进行分频。

把差值作为初始值,为不同音阶的发声的来源。

各音名对应的初始值如下表:表三各音名对应的初始值3.数控分频器数控分频器是对基准频率进行分频,得到与各个音阶对应的频率输出。

数控分频模块是由一个初始值可变的14位加法计数器构成,该计数器的模为214=16384,当计数器记满时,产生一个进位信号,该信号就是用作发音的频率信号。

其分为预分频和脉冲展宽两部分。

a)预分频assign preclk=(divider==16383)1:0;always@(posedge clk)beginif(preclk)divider=origin;elsedivider=divider+1;endb) 脉冲展宽(二分频)always@(posedge preclk)beginspeaker=~speaker;目的是将预分频产生的占空比很小的波形进行拓宽,使得波形有足够长的高电平来驱动扬声器。

实验仿真(一)测试使用的仪器与软件仪器康芯GW48系列EDA设备-----GW48-PK2实验电路图和适用范围:本实验适用模式3,其结构图如下CLOCK9CLOCK5CLOCK2CLOCK0实验电路结构图NO.3译码器译码器译码器译码器译码器译码器译码器译码器D9D16D15D14D13D12D11D10D8D7D6D5D4D3D2D1PIO8PIO9PIO10PIO11PIO12PIO13PIO14PIO15S P E A K E R扬声器12345678目标芯片FPGA/CPLD PIO0PIO1PIO2PIO3PIO4PIO5PIO6PIO7键1键2键3键4键5键6键7键8PIO15-PIO8PIO47-PIO44PIO43-PIO40PIO39-PIO36PIO35-PIO32PIO31-PIO28PIO27-PIO24PIO23-PIO20PIO19-PIO16公司的Cyclone 系列的EP2C5T144C8芯片 2.康芯教学实验箱软件Quartus IIQuartus II 是Altera公司的综合性PLD开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程以下为使用Quartus II软件得到的RTL级视图(二) 测试方法注:选择模式3,此模式下按键为琴键式,适合本实验演奏。

1.打开QuartusⅡ软件,file-NewProjectWizard-选择程序e_piano2.设置芯片为CycloneⅡ系列的EP2C5T144C83.定义管脚如下clk PIN_128index[2]PIN_3code[0]PIN_39index[3]PIN_4 code[1]PIN_40index[4]PIN_5 code[2]PIN_41index[5]PIN_6 code[3]PIN_42index[6]PIN_7d PIN_47index[7]PIN_10 index[0]PIN_1spk PIN_129 index[1]PIN_2下图为管脚定义界面4.定义完成后再次编译,再执行Programmer,选中,开始下载。

下图为编译下载界面5.下载完成后控制按键,观察音调准确,声音清晰,数码管能够正常显示音调。

实验总结根据老师的要求,我们先一起通过所学知识讨论了设计原理,不懂的问了下其他同学,最后定制出了大致计划。

在具体设计过程中,我们根据步骤逐次检验,查阅了有关资料,主要包括王金明:《Verilog HDL程序设计教程》以及潘松,黄继业,潘明的《EDA技术实用教程》在初次编写分频模块时候,使用的是比较基本的计数器分频法,编写程序后在modelsim软件中进行了仿真,发现无法观察到分频情况。

经过分析,原因是由于分频比过大,因此在波形图中很难观察到。

而且由于预分频的占空比很小,更难以观察到高电平。

在原因找到后,为了考察程序的性能,我们将输入频率减小。

同时适当缩小分频比,这样就得到了模块仿真中的分频波形。

通过此次实验,我们不仅学会了Quartus II软件的使用方法,还对集成电路设计有了更深的认识,对专业知识得到了加强。

同时认识到了自己的不足,比如有些知识已经模糊,所以有待于复习,所谓“温故而知新”,我们要学习的东西还很多。

这次的学习将对自己以后的研究生学习和将来的工作有很大的帮助,也是一次实践的锻炼!参考文献1.王金明:《Verilog HDL程序设计教程》2.潘松,黄继业,潘明《EDA技术实用教程》3.其他网上资料附录:程序源代码//信号定义与说明://clk:用于产生各种音阶频率的基准频率;//key:电子琴音符输入端口;//speaker:用于激励扬声器的输出信号,本例中为方波信号;//med,high:分别用于显示中音,高音音符,各驱动一个数码显示管和LED来显示;//origin:为数控分频模块提供音符频率的初始值;module dianziqin(clk,key,speaker,med,high);input clk; //12MHZinput [7:0] key;output speaker;output high; //高音显示output [3:0] med; //中音显示reg [13:0] divider; //分频系数和初始值reg [13:0] origin;reg speaker;reg high;reg [3:0] med;wire preclk;assign preclk=(divider==16383)1:0; //14位,对时钟频率进行预分频 always@(posedge clk)beginif(preclk)divider=origin;elsedivider=divider+1;endalways@(posedge preclk)beginspeaker=~speaker;//进行2分频,拓宽波形,产生方波信号endparameter do=8'b00000001,re=8'b00000010,mi=8'b00000100,fa=8'b00001000,so=8'b00010000,la=8'b00100000,xi=8'b01000000,do_=8'b; //状态编码,采用独热码编码方式 always@(key) //分频比预置case(key)do: beginorigin=4917;med=1;high=0;endre: beginorigin=6167;med=2;high=0;endmi: beginorigin=7282; med=3;high=0;endfa: beginorigin=7793; med=4;high=0;endso: beginorigin=8730; med=5;high=0;endla: beginorigin=9565; med=6;high=0;endxi: beginorigin=10309; med=7;high=0;enddo_: beginorigin=10650;med=1;high=1;enddefault:begin origin=16383;high=0;endendcaseendmodule。

相关文档
最新文档