EDA实验报告5-乐曲硬件演奏电路设计_第1页
EDA实验报告5-乐曲硬件演奏电路设计_第2页
EDA实验报告5-乐曲硬件演奏电路设计_第3页
EDA实验报告5-乐曲硬件演奏电路设计_第4页
EDA实验报告5-乐曲硬件演奏电路设计_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

1、EDA技术与应用实验报告姓名学号专业年级电子信息工程实验题目乐曲硬件演奏电路设计实验目的1. 学习利用数控分频器设计硬件乐曲演奏电路2. 掌握模块化和层次化的设计方法以及音符编码的设计思想实验原理1. 一定频率的矩形波通过扬声器可以发出相应频率的声音,乐曲是由一系列的音符组成的。所以,如果我们通过控制每个音符的发音频率值及其持续的时间,就可以以纯硬件的手段,利用这些数值来实现所希望演奏的乐曲。2. 该硬件演奏电路由三个模块构成<1>音符数据ROM的地址发生器模块NoteTabs.vhdl 内置8位二进制计数器,作为ROM的地址发生器,计数频率4Hz,即每一计数值的停留时间为0.25

2、s,恰为全音符设为1s时,四四拍的4音符持续时间。随着NoteTabs中的计数器按4Hz的时钟速率作加法计数即地址值递增时,ROM中的音符数据将通过ToneIndex3.0输向ToneTaba模块,乐曲即开始演奏起来。<2>乐曲简谱码对应的分频预置数查表电路模块ToneTaba.vhdl ToneTaba为Speakera提供决定所发音符的分频预置数,此数在Speakera输入口停留的时间即为此音符的节拍值。输入Index3.0可确定乐曲全部音符所对应的分频预置数(13个)每一音符的停留时间由NoteTabs模块的clk决定(4Hz)。<3>决定每一个音符音调的数控分频

3、器模块Speakera.vhdl 输入端clk输入一较高频率(12MHz)的信号,经Speakera分频,再经2分频以展宽脉冲后,由SpkOut输出。11位预置数Tone10.0决定由clk输入信号的分频比,SpkOut输出的频率决定每一音符的音调。实验内容1. 定制存放LPM-ROM模块Music,在连续地址上存放乐曲的音符数据,2. 用vhdl文本输入法和元件例化语句完成NoteTabs.vhdl的设计,该模块包含音符数据ROM模块Music.vhdl3. 完成ToneTaba.vhdl的设计,此模块给数控分频模块提供每个音符所对应的分频预置数,即计数初值4. 完成Speakera.vhd

4、l的设计,该模块是一个初值可变的加法计数器。该计数器的模为2047,当计数器记满时,计数器产生一个溢出信号FULL,此溢出信号就是用作发音的频率信号5. 用vhdl文本输入法和元件例化语句完成硬件演奏电路顶层文件 play_song.vhdl的设计,编译、仿真,选用杭州康芯电子有限公司生产的 GW48系列 EDA实验箱和Altera公司生产的 FPGA芯片 Cyclone的EP1C6Q240C8,引脚锁定,下载到FPGA上进行硬件测试实验步骤1. 定制ROM模块,生成Music.vhdl地址文件,以存储乐曲演奏数据2. 输入NoteTabs.vhdl,编译、仿真,给出时序波形3. 输入Tone

5、Taba.vhdl,编译、仿真,给出时序波形4. 输入Speakera.vhdl,编译、仿真,给出时序波形5. 建立硬件演奏电路顶层文件play_song.vhdl,将以上4个vhdl文件拷贝进顶层文件所在目录,用元件例化语句和层次化设计方法,完成乐曲硬件演奏电路的设计,编译、仿真,给出时序波形,引脚锁定并下载进FPGA进行硬件测试实验结果及分析vhdl文本输入法时序仿真波形1. 由音符数据地址发生模块的仿真波形NoteTabs.sim可知,随NoteTabs中的计数器按输入时钟clk作加法计数,即随ROM地址值的递增,ROM中的音符数据将从ToneIndex3.0中输出。2. 由分频预置数查

6、表电路模块的仿真波形ToneTaba.sim可知,由Index3.0译码输出分频预置数,并通过Tone10.0输出给Speakera模块。与演奏发音相对应的简谱码由CODE通过数码管输出显示,HIGH1显示高八度音。3. 由数控分频器模块的仿真波形Speakera.sim可知,由Tone10.0输入的分频预置数将clk输入的一较高频率(12MHz)的时钟信号进行分频,得到不同频率的输出FullSpkS,由于FullSpkS直接由数控分频器输出,是脉冲极窄的脉冲式信号,经内部增加一个D触发器后,可以得到展宽脉冲后的SpkS。4. 由乐曲硬件演奏顶层文件的仿真波形play_song.sim可知,S

7、pkOut是经SpkS的最终的输出,决定所发出的每一音符的音调。音符不同,SpkOut的脉宽也不同,通过扬声器发出的声音也不同,因而可以演奏音乐,得到预期的效果。5. 乐曲演奏时,简谱码可以在数码管上同步显示出来,同时HIGH1对应的LED灯随高低音的不同,亮灭情况也不同,实验结果符合预期。实验过程中所遇到的问题及相应的解决方法1. 刚开始实验用的是KHF-4型的实验箱,需要将晶振频率为22.1184Hz的时钟信号进行分频,以得到NoteTabs模块和Speakera模块所需的4Hz和12MHz的输入时钟,并将简谱码通过译码输出到数码管上显示。然而在实验箱测试后却得不到预期的结果,HIGH1所

8、对应的LED灯恒亮,蜂鸣器发出持续的高音。检查Speakera的时序仿真波形,输出SpkOut是持续的低电平,而不是脉宽不一的方波。2. 多次尝试没有结果后,决定换杭州康芯电子有限公司生产的 GW48系列 EDA实验箱,该实验箱有8个译码输出显示的数码管,和可选的多个时钟输入端,这样可以省去译码和分频电路。引脚锁定,硬件下载测试后,蜂鸣器可以正常放出预置的乐曲。3. 之后对Speakera模块的仿真文件反复揣摩,多次改变输入的频率,并设定不同的分频预置数,终于可以看到SpkOut输出脉宽不一的方波信号,对于顶层文件用相同的方法,亦可以得到预期的输出。4. 个人认为,之前在KHF-4型实验箱测试

9、的时候,应该是分频模块的问题。经22.1184MHz分频输出的频率不满足该硬件演奏电路所需要的时钟输入。NoteTabs模块的输入时钟clk_8Hz(实为4Hz)决定了每一音符在Speakera输入端停留的时间,而Speakera的输入时钟clk_12MHz决定了每一音符的音调。如果时钟偏差过大,将会导致时许错乱,如音符在Speakera输入端停留的时间过长或过短,数控分频输出的脉冲过宽或者过窄,这都直接影响音乐的正常播放。5. 在梁祝乐曲演奏成功后,换了一首歌you_and_me,但问题也接踵而至。<1>首先在定制LPM_ROM模块时,得到的.bsf元件输入端口跟定制梁祝乐曲ROM时的端口不一致了,在NoteTabs模块中用了元件例化语句,因此编译不成功。重新命名端口后,再次编译,问题解决。<2>其次,在mif文件you_and_me.mif中,depth = 280,而梁祝的为256,即每一字节的宽度为8bit,结果编译报错。于是我把you_and_me的mif文件的地址音符数据去掉后面一部分,使得depth = 256。虽然一首歌不再完整,但在定制LPM_ROM的时候

温馨提示

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

评论

0/150

提交评论