数字电路设计实验
——简易电子琴演奏器
班级:2010211112
姓名:李红豆
学号:10210367
班内序号:26
设计课题的任务要求
基本要求:
用8×8点阵显示“1 2 3 4 5 6 7”七个音符构成的电子琴键盘。其中点阵的第一列用一个LED点亮表示音符“1”,第二列用二个LED点亮表示音符“2”,依此类推,如下图所示。
1 2 3 4 5 6 7
图1点阵显示的电子琴键盘
用BTN1~BTN7七个按键模拟电子琴手动演奏时的“1 2 3 4 5 6 7”七个音符。当某个按键按下时,数码管显示相应的音符,点阵上与之对应的音符显示列全灭,同时蜂鸣器演奏相应的声音;当按键弹开时数码管显示的音符灭掉,点阵显示恢复,蜂鸣器停止声音的输出。下图所示为按下BTN3按键时点阵的显示情况。
1 2 3 4 5 6 7
图2 按键按下后的点阵显示
由拨码开关切换选择高、中、低音,并用数码管进行相应的显示。
通过按键BTN0进行复位,控制点阵显示图1的初始状态。
提高要求:
可通过一个拨码开关进行手动/自动演奏的切换,并与点阵显示配合增加自动演奏乐曲的功能。
增加手动演奏的音符存储、播放功能。
系统设计
设计思路
根据声乐知识,产生音乐的两个因素是音乐频率和持续时间。本设计要求产生高、中、低音的1、2、3、4、5、6、7各音符共21个,分别对应21个不同的频率,这些频率通过对基准时钟以不同的分频系数进行分频可以得到。
音符发声的持续时间需要有一个合适频率的时钟来控制,一般的乐曲一拍为1/4s,所以可以用4Hz的时钟来控制每个音符对应频率的输出,从而实现乐曲的自动输出。
总体框图
点阵显示
蜂鸣器
电子琴
LED显示模式及高中低音
模式选择(拨码开关1)
高中低音选择(拨码开关2~4)
琴键输入(BTN1~7)
复位键(BTN0)
图1 总体顶层框图
电子琴
13
16
1
1
CLK 蜂鸣器
1
RESET
9
键盘输入 点阵
1
电源
3
存储控制
1
数码管
模式选择
图2 总体对外接口框图
音
符
编
4Hz 码
节拍信号
音符编码
节拍控制
时钟模块
分频模块
CLK 蜂鸣器
音符编码
产生模块
显示模块
琴键输入 点阵
模式选择
存储控制 数码管
图3 总体逻辑框图
图4 总体RTL电路框图
分块设计
节拍控制时钟模块:
本模块为自动播放的乐曲以及存储待播放的乐曲提供节拍,每1/4秒为一拍。经过对基准时钟50MHz进行分频实现4Hz信号输出。
音符编码产生模块:
本模块可划分为三个小模块,分别为手动输入编码模块、自动播放乐曲存放模块、录音及录音播放模块。
手动输入编码模块:将七个音符以及高低音控制键通过一个9位向量输入,
高两位表示高中低音,“00”表示低音,“01”表示中音,“10”表示高音,高中低音由两个拨码开关控制。第七位从高到低分别表示7、6、5、4、3、2、1,由BTN7~BTN1控制输入。再对这相应21个9位的向量进行相应编码,使之成为5位向量,高两位仍旧表示高中低音,第三位表示1~7七个音符,这样编码过后一方面会节省资源,另一方面便于存储以及与其他模式的匹配。
自动播放乐曲存放模块:将一段乐曲的音符进行同上方式的五位编码,并按照4Hz的节拍进行赋值。
录音及录音播放模块:先要定义一个足够长的存储模块,本设计采用数组。在录音模式下,将键盘输入编成的五位向量码按4Hz的节拍存入数组,结束录音后数组中便存储了在录音模式下输入的音符编码。再用4Hz的节拍控制数组中的音符编码赋值给输出向量来实现录音播放。
最后通过控制拨码开关来实现三个模块输出的切换。
键盘
控制拨码开关
手动输入编码模块
节拍控制时钟
录音模式启动
TONE
录音及录音播放模块
自动播放乐曲模块
图5 音符编码产生模块
显示模块:
显示模块包括点阵显示模块和数码管显示模块,对于输入的音符编码TONE,来对点阵和数码管的管脚进行相应赋值,来显示对应的图形和数字。点阵显示:点阵扫描需要一个8位向量的COL选通列管脚和一个8位向量ROW来选通行管脚。其中,COL高电平有效,ROW低电平有效。为防止因每列不同数量的LED分流而导致点阵显示亮度不均的状况,本设计采用选通行,即逐行扫描的办法来实现点阵显示。由于从1到7的七个音符要显示不同的点阵图像,故选用CASE语句,来对每个音符分情况选通管脚并扫描点阵。选用CASE语句而不用IF语句会提高系统速度。
数码管显示:数码管显示是时钟对选通信号的控制来显示特定数码管,所以先要定义
数字电路实验报告 来自淘豆网m.daumloan.com转载请标明出处.