FPGA硬件电子琴电路设计实验报告
时间:2025-04-20
时间:2025-04-20
FPGA实验报告
题目:硬件电子琴电路设计
一.实验目的:学习利用数控分频器设计硬件电子琴实验。
二.实验原理及内容:主系统由3个模块组成,顶层设计文件中包含三个功能模块,Speakera.v 和ToneTaba.v ,NoteTabs.v 。
模块ToneTaba是音阶发生器,当8位发声控制输入Index中某一位为高电平时,
则对应某一音阶的数值将从端口Tone输出,作为获得该音阶的分频预置值;同时由Code输出对应该音阶简谱的显示数码,如‘5’,并由High输出指示音阶高8度显示。
模块Speakera中的主要电路是一个数控分频器,它由一个初值可预置的加法计数
器构成,当模块Speakera由端口Tone获得一个2进制数后,将以此值为计数器的预置数,对端口Clk12MHZ输入的频率进行分频,之后由Spkout向扬声器输出发声。
增加一个NoteTabs模块用于产生节拍控制(Index数据存留时间)和音阶选择信号,
即在NoteTabs模块放置一个乐曲曲谱真值表,由一个计数器的计数值来控制此真值表的输出,而由此计数器的计数时钟信号作为乐曲节拍控制信号,从而可以设计出一个纯硬件的乐曲自动演奏电路。
图
1 硬件电子琴电路结构
三.实验步骤.
1.在QUARTUSII软件下创建一工程,工程名为songer,芯片名为EP2C35F672C6; 2.输入数控分频器程序并命名为Speakera.v,保存与工程相同的文件夹中。
3.输入音阶发生器程序并命名为ToneTaba.v,保存与工程相同的文件夹中。
其功能仿真波形和时序仿真波形分别如下:
4.输入27分频程序并命名为div_27.v,保存与工程相同的文件夹中。
5.
其功能仿真波形和时序仿真波形分别如下:
6.建立梁祝乐曲演奏数据的MIF文件。
WIDTH = 4 ; //定义宽度为4,深度为256的mif文件
DEPTH = 256 ;
ADDRESS_RADIX = DEC ; //每阅读一位后,自动移动到下一位,数据也读到下一位 DATA_RADIX = DEC ;
CONTENT BEGIN --注意实用文件中要展开以下数据,每一组占一行
00: 3 ; 01: 3 ; 02: 3 ; 03: 3; 04: 5; 05: 5; 06: 5;07: 6; 08: 8; 09: 8; 10: 8 ; 11: 9 ; 12: 6 ; 13: 8; 14: 5; 15: 5; 16: 12;17: 12;18: 12; 19:15; 20:13 ; 21:12 ; 22:10 ; 23:12; 24: 9; 25: 9; 26: 9; 27: 9; 28: 9; 29: 9; 30: 9 ; 31: 0 ; 32: 9 ; 33: 9; 34: 9; 35:10; 36: 7; 37: 7; 38: 6; 39: 6; 50: 8 ; 51: 8 ; 52: 6 ; 53: 5; 54: 6; 55: 8; 56: 5; 57: 5; 58: 5; 59: 5; 60: 5 ; 61: 5 ; 62: 5 ; 63: 5; 64:10; 65:10; 66:10; 67:12; 68: 7; 69: 7; 70: 9 ; 71: 9 ; 72: 6 ; 73: 8; 74: 5; 75: 5; 76: 5; 77: 5; 78: 5; 79: 5; 80: 3 ; 81: 5 ; 82: 3 ; 83: 3; 84: 5; 85: 6; 86: 7; 87: 9; 88: 6; 89: 6;
40: 5 ; 41: 5 ; 42: 5 ; 43: 6; 44: 8; 45: 8; 46: 9; 47: 9; 48: 3; 49: 3;
90: 6 ; 91: 6 ; 92: 6 ; 93: 6; 94: 5; 95: 6; 96: 8; 97: 8; 98: 8; 99: 9; 100:12 ;101:12 ;102:12 ;103:10;104: 9;105: 9;106:10;107: 9;108: 8;109: 8; 110: 6 ;111: 5 ;112: 3 ;113: 3;114: 3;115: 3;116: 8;117: 8;118: 8;119: 8; 120: 6 ;121: 8 ;122: 6 ;123: 5;124: 3;125: 5;126: 6;127: 8;128: 5;129: 5;
130: 5 ;131: 5 ;132: 5 ;133: 5;134: 5;135: 5;136: 0;137: 0;138: 0;
END ;
7.输入程序并命名为NoteTabs.v,保存与工程相同的文件夹中。
8.输入硬件演奏电路顶层设计文件并命名为songer.v,保存与工程相同的文件夹中。
9.锁定引脚后重编译并进行下载。 四.思考题.
1.电路上应该满足哪些条件,才能用数字器件直接输出的方波驱动扬声器发声?
答:(1)输出的频率在扬声器的工作范围之内(扬声器的工作频率范围一般是能听见的声波);(2)驱动电流能够驱动扬声器。 2.如果演奏其他乐曲,程序应做哪些方面的改动?
答:程序应将mif文件改掉以及ToneTaba和NoteTabs做一些响应的小改变。
五.实验报告要求:用仿真波形和电路原理图,详细叙述硬件电子琴的工作原理及其3个Verilog文件中相关语句的功能,叙述硬件实验情况。
答:(1)①在数控分频器模块中,在时钟上升沿触发always模块,如果count4>11,则
使PreClk,Count4赋值为1,否则使PreClk赋值为0,Count4加1,用第一个always模块产生的PreClk上升沿做触发条件,如果count11>11’h7FF,则使Count11赋值为Tone,FullSpkS赋值为1,否则使Count11加1,FullSpkS为0;第二个always模块产生的FullSpks上升沿做触发条件,每遇到一个上升沿让count2翻转一次,如果count2为1,扬声器发出声音,否则不发。
②在分频模块中,用27MHz分频产生占空比为50%的4Hz时钟,在27MHz时钟的上升沿触发,如果count计数达到3374999,将count赋为0,并将Q2翻转,否则继续计数。用50MHZ的输入频率接入并进行分频得12.5MHz。 ③在NoteTabs模块中,用Clk上升沿或 reset下降沿做触发条件,如果reset为0,则将计数器置0.当计数到138时,Counter清0,否则继续计数。调用Music模块发音。 (2)原理:用mif文件将梁祝乐曲的曲谱、节拍和音调存储在内存中,再结合程序将乐谱的每一个值按一定频率、音调、节拍读出来,在DE2电路板上接扬声器便能听到有音乐出来,频率是我们利用分频模块设置的频率。这是一个纯硬件的乐曲自动演奏电路。
(3)实验情况:将每个模块进行仿真,得到相应的波形图,与预想的结果一样,但顶层的设计必须与每个模块连接在一起,将程序下载到DE2板上后接上扬声器能听到很清楚且速度很适宜的梁祝音乐。
…… 此处隐藏:957字,全部文档内容请下载后查看。喜欢就下载吧 ……