Verilog hdl—简易电子琴设计_第1页
Verilog hdl—简易电子琴设计_第2页
Verilog hdl—简易电子琴设计_第3页
Verilog hdl—简易电子琴设计_第4页
Verilog hdl—简易电子琴设计_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、湖北文理学院 简易电子琴设计专业:自动化学号:2012118064姓名:一天虹影实验目的使用VerilogHDL语言进行前端设计,并使用Quaruts软件在GW48PK2实验上实现仿真,实现硬件电子琴。电子琴要求有8个音阶,使用外部时钟信号3MHz,能同步显示音阶。设计要求1、 设计一个简易电子琴。要求能演奏的音域为D调的do到E调do。 2、 用GW48PK2中的8个按键作为琴键。 3、 GW48PK2中有蜂鸣器。4、 可以使用GW48PK2上的12MHz作为输入时钟信号设计思路通过可编程逻辑器件(PLD)和VHDL硬件描述语言来实现电子琴的基本要求。 设计的主体是数控分频器,对输入的频率按

2、照与每个音阶对应的分频系数进行分频,得到各个音阶对应的频率分别在蜂鸣器和数码管上以声音和频率数值的形式作为输出。 设计组成与原理下图为系统的工作原理框图。 分频置 数按键分频器12MHZ蜂 鸣 器数码管显示模块设计1. 音名与频率的关系音乐的12平均率规定:每2个八度音(如简谱中的中音1与高音1)之间的频率相差1倍。在2个八度音之间,又可分为12个半音。灵位,音符A(简谱中的低音6)的频率为440HZ,音符B到C之间、到之间为半音,其余为全音。由此可以计算出简谱中所有的音符的频率,在这我们只需计算出中音到高音的频率即可。如下所示: 表一 简谱音名与频率的对应关系音名中音中音中音中音中音中音中音

3、高音频率/HZ523.3587.3659.3698.5784880987.81046.5由于各音符对应的频率多为非整数,而分频系数又不能为小数,故必须将计算得到的分频数四舍五入取整。若分频器时钟频率过低,则由于分频系数过小,四舍五入取整后的误差较大;若时钟频率过高,虽然误差变小,但分频数将变大。实际的设计应综合考虑两方面的因素,在尽量减少频率误差的前提下取合适的时钟频率。本实验要求用12MHZ的时钟脉冲信号,所以不必考虑这方面的因素。实际上,只要各个音符间的相对频率关系不变,弹奏出来的音调听起来是不会走调的。2. 分频系数与初始值(预置数) 本例设计的音乐电子琴选取12MHZ的系统时钟频率。在

4、数控分频器模块中,由于数控分频器输出的波形是脉宽极窄的脉冲波,为了更好地驱动扬声器发生,减少输出的偶次谐波分量,在到达扬声器之前需要均衡占空比,从而生成各音符对应频率的对称方波输出。这个过程实际上进行了一次二分频,频率变为原来的二分之一,即6MHZ。 因此,分频系数的计算可以按照下面的方法进行。以中音1为例,对应的频率值为523.3HZ,它的分频系数应该为:Divider=6MHz/523.3=6*106 /523.3=11466 至于其他音符,同样由上式求出对应的分频系数,这样利用程序可以轻松地得到相应的乐声。各音名对应的分频系数如下表: 表二 各音名对应的分频系数音名中音1中音2中音3中音

5、4中音5中音6中音7高音1分频系数(divider)1146610216910185907653681860745733 由于最大的分频系数为11466,故采用14位二进制计数器已能满足分频要求。将分频系数设为0,其初始值为16383(214 -1 )即可,此时扬声器不会发声。对于不同的分频系数,加载不同的初始值即可。本实验参考王金明:Verilog HDL程序设计教程,采用差值法进行分频。把差值作为初始值,为不同音阶的发声的来源。各音名对应的初始值如下表:表三 各音名对应的初始值音名中音1中音2中音3中音4中音5中音6中音7高音1初始值(origin)49176167728277938730

6、956510309106503. 数控分频器数控分频器是对基准频率进行分频,得到与各个音阶对应的频率输出。数控分频模块是由一个初始值可变的14位加法计数器构成,该计数器的模为214=16384,当计数器记满时,产生一个进位信号,该信号就是用作发音的频率信号。其分为预分频和脉冲展宽两部分。a) 预分频 assign preclk=(divider=16383)?1:0; always(posedge clk) begin if(preclk) divider=origin; else divider=divider+1; end b) 脉冲展宽(二分频) always(posedge precl

7、k) begin speaker=speaker;目的是将预分频产生的占空比很小的波形进行拓宽,使得波形有足够长的高电平来驱动扬声器。实验仿真(一) 测试使用的仪器与软件仪器康芯GW48系列EDA设备-GW48-PK2实验电路图和适用范围:本实验适用模式3,其结构图如下1.Altera公司的Cyclone系列的EP2C5T144C8芯片2.康芯教学实验箱软件Quartus IIQuartus II 是Altera公司的综合性PLD开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自

8、有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程以下为使用Quartus II软件得到的RTL级视图(二) 测试方法 注:选择模式3,此模式下按键为琴键式,适合本实验演奏。1.打开Quartus软件,file-NewProjectWizard-选择程序e_piano2.2.Assignment-Device-设置芯片为Cyclone系列的EP2C5T144C83.定义管脚如下clkPIN_128index2PIN_3code0PIN_39index3PIN_4code1PIN_40index4PIN_5code2PIN_41index5PIN_6code3PIN_42in

9、dex6PIN_7dPIN_47index7PIN_10index0PIN_1spkPIN_129index1PIN_2下图为管脚定义界面4.定义完成后再次编译,再执行Programmer,选中e_piano.sof,开始下载。下图为编译下载界面5.下载完成后控制按键,观察音调准确,声音清晰,数码管能够正常显示音调。实验总结 根据老师的要求,我们先一起通过所学知识讨论了设计原理,不懂的问了下其他同学,最后定制出了大致计划。在具体设计过程中,我们根据步骤逐次检验,查阅了有关资料,主要包括王金明:Verilog HDL程序设计教程以及潘松,黄继业,潘明的EDA技术实用教程在初次编写分频模块时候,使

10、用的是比较基本的计数器分频法,编写程序后在modelsim软件中进行了仿真,发现无法观察到分频情况。经过分析,原因是由于分频比过大,因此在波形图中很难观察到。而且由于预分频的占空比很小,更难以观察到高电平。在原因找到后,为了考察程序的性能,我们将输入频率减小。同时适当缩小分频比,这样就得到了模块仿真中的分频波形。通过此次实验,我们不仅学会了Quartus II软件的使用方法,还对集成电路设计有了更深的认识,对专业知识得到了加强。同时认识到了自己的不足,比如有些知识已经模糊,所以有待于复习,所谓“温故而知新”,我们要学习的东西还很多。这次的学习将对自己以后的研究生学习和将来的工作有很大的帮助,也

11、是一次实践的锻炼!参考文献1. 王金明:Verilog HDL程序设计教程 2. 潘松,黄继业,潘明EDA技术实用教程3. 其他网上资料附录:程序源代码 /信号定义与说明:/clk:用于产生各种音阶频率的基准频率;/key:电子琴音符输入端口;/speaker:用于激励扬声器的输出信号,本例中为方波信号;/med,high:分别用于显示中音,高音音符,各驱动一个数码显示管和LED来显示;/origin:为数控分频模块提供音符频率的初始值;module dianziqin(clk,key,speaker,med,high); input clk; /12MHZ input 7:0 key; ou

12、tput 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) begin if(preclk) divider=origin; else divider=divider+1; end always(posedge prec

13、lk) begin speaker=speaker; /进行2分频,拓宽波形,产生方波信号 end parameter do=8b00000001, re=8b00000010, mi=8b00000100, fa=8b00001000, so=8b00010000, la=8b00100000, xi=8b01000000, do_=8b10000000; /状态编码,采用独热码编码方式 always(key) /分频比预置 case(key) do: begin origin=4917; med=1; high=0; end re: begin origin=6167; med=2; high=0; end mi: begin origin=7282; med=3; high=0; end fa: begin origin=7793; med=4; high=0; end so: begin origin=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论