- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PAGE
PAGE 2
西南科技大学
实验报告
课程名称: 基于FPGA的现代数字系统设计
实验名称: 硬件电子琴电路设计
姓 名:
学 号:
班 级: 通信1301
指导教师: 刘桂华
西南科技大学信息工程学院制PAGE
PAGE 17
硬件电子琴电路设计实验原理
实验目的:
学习利用数控分频器设计硬件电子琴实验。
二、原理说明:
主系统由3个模块组成,例1是顶层设计文件,其内部有三个功能模块(如图1所示):Speakera.v(例4) 和ToneTaba.v (例3),NoteTabs.v (例2)。
模块ToneTaba是音阶发生器,当8位发声控制输入Index中某一位为高电平时,则对应某一音阶的数值将从端口Tone输出,作为获得该音阶的分频预置值;同时由Code输出对应该音阶简谱的显示数码,如‘5’,并由High输出指示音阶高8度显示。
模块Speakera中的主要电路是一个数控分频器,它由一个初值可预置的加法计数器构成,当模块Speakera由端口Tone获得一个2进制数后,将以此值为计数器的预置数,对端口Clk12MHZ输入的频率进行分频,之后由Spkout向扬声器输出发声。
增加一个NoteTabs模块用于产生节拍控制(Index数据存留时间)和音阶选择信号,即在NoteTabs模块放置一个乐曲曲谱真值表,由一个计数器的计数值来控制此真值表的输出,而由此计数器的计数时钟信号作为乐曲节拍控制信号,从而可以设计出一个纯硬件的乐曲自动演奏电路。
图1 硬件电子琴电路结构
实验步骤
构建一个工程名为songer的工程
分别输入ToneTaba.v、Speakera.v、的Verilog HDL文本,进行综合和功能仿真,理解、验证模块功能。
创建音节发生器ToneTaba.v模块
module ToneTaba (Index,Code,High,Tone);
input[3:0] Index;
output[3:0] Code;
output High;
output[10:0] Tone;
reg[3:0] Code;
reg High;
reg[10:0] Tone;
always @ (Index)
begin
case(Index)
4b0000:begin Tone=11b11111111111;Code=4b0000;High=1b0;end//2047
4b0001:begin Tone=11b01100000101;Code=4b0001;High=1b0;end//773
4b0010:begin Tone=11b01110010000;Code=4b0010;High=1b0;end//912
4b0011:begin Tone=11b10000001100;Code=4b0011;High=1b0;end//1036
4b0101:begin Tone=11b10010101101;Code=4b0101;High=1b0;end//1197
4b0110:begin Tone=11b10100001010;Code=4b0110;High=1b0;end//1290
4b0111:begin Tone=11b10101011100;Code=4b0111;High=1b0;end//1372;
4b1000:begin Tone=11b10110000010;Code=4b0001;High=1b1;end//1410;
4b1001:begin Tone=11b10111001000;Code=4b0010;High=1b1;end//1480;
4b1010:begin Tone=11b11000000110;Code=4b0011;High=1b1;end//1542;
4b1100:begin Tone=11b11001010110;Code=4b0101;High=1b1;end//1622;
4b1101:begin Tone=11b11010000100;Code=4
文档评论(0)