一、设计任务
1、熟悉音频电路设计;
2、掌握 4 乘 4 键盘按键扫描原理;
3、掌握 HDL 模块化程序设计。
二、设计过程
(一)设计要求
熟练掌握 4 乘 4 键盘以及音频功放的原理及编程控制。利用 4 乘 4 键盘作为电子琴按键输入,区分
不同音高和音阶通过音频功放模块输出相应乐曲。
(二)设计思路
完成本实验必备的两个知识是:1、如何正确的完成键盘扫描;2、蜂鸣器播放音乐的原理。通过阅
读实验指导书可知,我们所用的实验箱都是低电平有效的,其工作原理是:首先按列循环输入扫描信号
然后当按下某个按键时返回一个行信号,通过当前的返回值和列信号值即可知道哪一个按键被按下。
以下说明音频播放的原理:
乐曲的 12 平均率规定:每 2 个八度音(如简谱中的中音 1 与高音 1)之间的频率相差 1 倍。在 2
个八度音之间,又可分为 12 个半音,每 2 个半音的频率比为 12√2。另外,音符 A(简谱中的低音 6)的
频率为 440Hz,音符 B 到 C 之间、E 到 F 之间为半音,其余为全音。由此可以计算出简谱中从低音 l
至高音 7 之间每个音符的频率,如下所示。
音名 频率(Hz) 音名 频率(Hz) 音名 频率(Hz)
低音 1 261.6 中音 1 523.3 高音 1 1046.5
低音 2 293.7 中音 2 587.3 高音 2 1174.7
低音 3 329.6 中音 3 659.3 高音 3 1318.5
低音 4 349.2 中音 4 6 98.5 高音 4 1396.9
低音 5 392 中音 5 784 高音 5 1568
低音 6 440 中音 6 880 高音 6 1760
低音 7 493.9 中音 7 987.8 高音 7 1975.5
所有不同频率的信号都可以从同一个基准频率分频而来,可以采用带有预置数的计数器获得
不同频率的音名信号。首先根据基准频率值计算分频系数,由于各音符对应的频率多为非整数,
而分频系数又不能为小数,故必须将计算得到的分频数四舍五入取整,再根据分频系数计算计数
器的预置数。
(三)设计方案
整个实验分为两个大块:1、编写 4 乘 4 键盘的驱动程序。2、给出各个音符的分频比并编写发声程
序
(四)设计步骤
1、打开 quartus II 在 !le 中新建项目向导。这里需要选中合适的地址、项目名、文件名和芯片型号
等。
2、再新建文本文件,输入硬件描述语言如下:
module button_scan1(clk,in,out,num,seg_7,sound);
//de!ne the duankou
input clk;
input[3:0] in;
output[3:0] out;
output[4:0] num;
output[6:0] seg_7;
评论1