欢迎来到天天文库
浏览记录
ID:39455138
大小:2.67 MB
页数:11页
时间:2019-07-03
《Verilog多首乐曲选择演奏电路设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、基于verilog硬件乐曲演奏电路设计(quartusII)模块可以实现4x4键盘扫描按键播放音乐,ROM中存四首歌曲,可以通过选择播放。一、设计任务与要求设计目的:利用数控分频器设计硬件演奏电路。设计内容:学习课本定制音符数据ROM“music”。填入新的乐曲。争取可以在一个ROM装上多首歌曲,可手动或自动选择歌曲。设计要求:用仿真波形和电路原理图,详细叙述硬件电子琴的工作原理及其verilog文件中相关语句功能,叙述硬件实现情况。二、总体框图ROM“music”音符控制输出数控分频器音符译码七段数码管分频器蜂鸣器LED灯ROM中的音乐数据文件刚可由编辑好的音符填入MIF文件
2、中再定制LPM_ROM将音符数据加载入ROM中,并设计程序在运行时自动读取ROM中的文件并置入数控分频器中。当采用四四拍曲子时,每节拍持续时间为0.5秒。置入数控分频器的速度也应与此同步或一致,避免音乐过快或过快慢而失真。我给出的C调音阶频率表,各频率对应的预置数就与数控分频推动蜂鸣器发出声音的频率对应。在编写数控分频器时,不仅要考虑预置数的输入方式,还要考虑输入的速度,以及驱动蜂鸣器发声的频率。为了在扩展能够在ROM中同时存放多首歌曲,并可以手动选择需要的歌曲,故可将ROM中分若干段存放不同曲子。当手动选择歌曲时,可根据输入的选择信号,读出ROM中对应地址的曲子,并将ROM中
3、的曲子完整的播放出来。为了显示高、中、低三种音调,可在音符>>预置数的译码过程中,同时译出高、中、低三种音阶的信号,并利用三个LED灯输出信号。同时,也可利用该译码模块,将当前演奏的音符简谱表达出来。下面给出C调音节频率表:音阶频率Hz音阶频率Hz音阶频率Hz1661.227830.617415.311479.986739.9963701318.525659.335329.631174.664587.334293.671108.733554.373277.19987.762493.882246.9488014401220三、功能模块3.1音符数据地址发生器模块CNT138T模块
4、CNT138T是一个10位二进制计数器,内部计数最大值为500,作为音乐ROM地址发生器。这个计数器的计数频率即为4HZ,即每一个数值停留时间为0.25秒。可以通过选则en的值00011011,选择不同的歌曲。moduleCNT138T(clk,cnt,en);inputclk;input[1:0]en;output[9:0]cnt;reg[9:0]cnt;always@(posedgeclk)begincase(en)0:beginif(cnt<=138)cnt=cnt+1;elsecnt=0;end1:beginif(cnt>=139&&cnt<=263)cnt=cnt+1
5、;elsecnt=139;end2:beginif(cnt>=263&&cnt<=335)cnt=cnt+1;elsecnt=263;end3:beginif(cnt>=335&&cnt<=439)cnt=cnt+1;elsecnt=335;endendcaseendendmodule模块图:仿真图:3.2分频预置查表模块F_CODE模块F_CODE乐曲简谱码对应的分频预置数查表为SPKER提供所发音符的分频预置数,分频分频预置数共14个,每一个音符的停留时间由音乐节拍和音调发生查表模块MUSIC中简码和时钟inclock的频率决定,为4hz即0.25s一个上升沿到来就传送一次
6、数据。程序:modulef_code(inx,code,h,to);input[3:0]inx;outputh;output[3:0]code;output[10:0]to;reg[10:0]to;reg[3:0]code;regh;always@(inx)begincase(inx)0:beginto<=11'H7FF;code<=0;h<=0;end1:beginto<=11'H305;code<=1;h<=0;end2:beginto<=11'H390;code<=2;h<=0;end3:beginto<=11'H40C;code<=3;h<=0;end4:beginto
7、<=11'H45C;code<=4;h<=0;end5:beginto<=11'H4AD;code<=5;h<=0;end6:beginto<=11'H50A;code<=6;h<=0;end7:beginto<=11'H55C;code<=7;h<=0;end8:beginto<=11'H582;code<=1;h<=1;end9:beginto<=11'H5C8;code<=2;h<=1;end10:beginto<=11'H606;code<=3;h<=1;end11:beginto<
此文档下载收益归作者所有