基于Verilog多首乐曲选择演奏电路设计.doc
《基于Verilog多首乐曲选择演奏电路设计.doc》由会员分享,可在线阅读,更多相关《基于Verilog多首乐曲选择演奏电路设计.doc(8页珍藏版)》请在课桌文档上搜索。
1、-基于verilog硬件乐曲演奏电路设计quartus II模块可以实现4x4键盘扫描按键播放音乐,ROM中存四首歌曲,可以通过选择播放。一、设计任务与要求设计目的:利用数控分频器设计硬件演奏电路。设计容:学习课本定制音符数据ROMmusic。填入新的乐曲。争取可以在一个ROM装上多首歌曲,可手动或自动选择歌曲。设计要求:用仿真波形和电路原理图,详细表达硬件电子琴的工作原理及其verilog文件中相关语句功能,表达硬件实现情况。二、总体框图ROMmusic音符控制输出数控分频器音符译码七段数码管分频器蜂鸣器LED灯ROM中的音乐数据文件刚可由编辑好的音符填入MIF文件中再定制LPM_ROM将音
2、符数据加载入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 音符数据地址发生器模块T138T模块T138T是一个10位二进制计数器,部计数最大值为500,作为
4、音乐ROM地址发生器。这个计数器的计数频率即为4HZ,即每一个数值停留时间为0.25秒。可以通过选那么en的值 00 01 10 11,选择不同的歌曲。module T138T (clk,t,en);input clk;input 1:0 en;output 9:0t;reg 9:0t; always (posedge clk ) begincase(en)0:begin if(t=139&t=263&t=335&t=439)t=t+1; elset=335;endendcaseendendmodule模块图:仿真图:3.2 分频预置查表模块F_CODE模块F_CODE 乐曲简谱码对应的分频预
5、置数查表为SPKER提供所发音符的分频预置数,分频分频预置数共14个,每一个音符的停留时间由音乐节拍和音调发生查表模块MUSIC中简码和时钟inclock的频率决定,为4hz即0.25s一个上升沿到来就传送一次数据。程序:module f_code (inx,code,h,to);input 3:0 inx; output h; output 3:0 code; output 10:0 to;reg10:0 to; reg3:0 code; reg h;always (inx) begin case (inx) 0:begin to =11H7FF; code=0;h=0;end1:begin
6、 to =11H305; code=1;h=0;end2:begin to =11H390; code=2;h=0;end3:begin to =11H40C; code=3;h=0;end4:begin to =11H45C; code=4;h=0;end5:begin to =11H4AD; code=5;h=0;end6:begin to =11H50A; code=6;h=0;end7:begin to =11H55C; code=7;h=0;end8:begin to =11H582; code=1;h=1;end9:begin to =11H5C8; code=2;h=1;end1
7、0:begin to =11H606; code=3;h=1;end11:begin to =11H640; code=4;h=1;end12:begin to =11H656; code=5;h=1;end13:begin to =11H684; code=6;h=1;end14:begin to =11H69A; code=7;h=1;end15:begin to =11H6C0; code=1;h=1;enddefault : begin to= 11H6C0;code=1; h=1;end endcase end endmodule模块:仿真图:3.3 数控分频器模块SPKER工作时其
8、CLK输入一较高频率1MHZ时钟,通过分频后,经由触发器由输出。由于直接从数空分频器中出来的输出信号是脉冲极窄的信号,为了有利于驱动扬声器,加一个触发器分频以均衡其占空比,但这时的频率是原来的.对输入的例如是与的间距为,每隔就为,出现的频率就是音符对应的频率,相应的频率越高对应的数值就越高,就是离越近的分频预置数。程序:module spker (clk,tn,spks);input clk; input 10:0 tn;output spks;reg spks;reg 10:0t11;always (posedge clk) begin : t11b_loadif(t11=11h7FF) b
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Verilog 乐曲 选择 演奏 电路设计

链接地址:https://www.desk33.com/p-14078.html