数字电子技术课程设计

本文详细描述了一款简易电子琴的设计,包括基本功能如乐曲演奏、自动播放、记录回放,以及拓展功能如乐曲练习和倍速播放。电路设计涉及译码显示、蜂鸣器、数据选择器、RAM等模块,展示了各个功能模块的实现原理和波形分析结果。
摘要由CSDN通过智能技术生成

一、设计任务

   本课题为简易电子琴,可实现的功能如下:

  1. 乐曲演奏功能(基本功能):用按键模拟琴键,实现多个音符的弹奏功能,用数码管显示弹奏的音符。
  2. 乐曲自动演奏功能(基本功能):按下自动播放按钮后,自动播放《送别》前九节,每节八拍,共七十二个音符。
  3. 乐曲记录及回放功能(基本功能):按下乐曲记录按钮并弹奏,记录所弹奏的音符;再按下回放按钮,实现乐曲回放功能。
  4. 乐曲练习功能(拓展功能):以《七月上》为标准曲目,若外部输入音符与标准曲目音符相同,则电子琴发声且提示下一个需弹奏的音符;若外部输入音符与标准曲目音符不同,则电子琴不发出声音且仍提示当前音符。
  5. 乐曲倍速播放功能(拓展功能):按下倍速播放按钮后,自动二倍速播放《送别》前九节,每节八拍,共七十二个音符。

二、方案与电路设计

1. 总体方案设计

首先,建立译码显示模块、蜂鸣器模块、数据选择器模块、RAM模块,用以处理数据。然后,根据电子琴的主要功能建立自动播放模块、录音回放模块、乐曲练习模块等子模块,并在乐曲自动演奏模块中实现倍速播放附加功能。其中,译码显示模块用于显示音符;蜂鸣器模块用于播放音符;数据选择器模块用于分配数据,在相应的功能开关动作时将正确的数据传入译码显示模块和蜂鸣器模块;RAM模块用于存入或输出弹奏的音符。

2. 主要电路设计

(1)piano_autoplay 自动播放模块

①利用参数Hz_8和Hz_4,对50MHz时钟分频,得到两种不同节奏的打拍器,通过对分频系数的选择实现正常播放和倍速播放。

②用一个73进制计数器实现乐曲循环播放。

③利用case语句来记录演奏的乐谱。

(2)piano_record_replay 录音回放模块

①用两个地址计数器分别控制读地址(r_adr)和写地址(w_adr),保证读操作从第一个地址读起。

②用一个分频电路得到4Hz时钟,用这个4Hz时钟来驱动RAM。

③在模块中调用IP核——双端口RAM,来实现数据的读和写。

(3)piano_exercise 乐曲练习模块

①对50MHz时钟进行12500000分频,得到4Hz时钟,并把这个4Hz的时钟作为打拍器。

②有一个判断正误模块,如果按键输入的音符({scale,note})和标准曲目的音符(standard_melody)一致,判断信号(flag)为高电平,否则为低电平。

③用一个73进制计数器实现提示音符的循环显示。计数器在输入正确的音符(flag==1)时才会加1,显示电路显示下一个提示音符;输入错误则计数器保持不变,显示电路仍显示当前提示音符。

(4)piano_music 蜂鸣器模块
①用一个分频电路对50MHz时钟进行分频,得到6MHz时钟。

②用6MHz时钟驱动分频系数赋值电路,当输入不同的音符给分频系数赋予不同的参数。

③用6MHz时钟驱动控制蜂鸣器鸣响音符的分频电路,实现21个音符的播放。

(5)piano_MUX 数据选择器模块
①用四个参数(AUTOPLAY,RECORD,REPLAY,EXERCISE)表征四个按键的状态,简化代码。
②模式选择电路,在不同的按键状态下,把相应的不同的数据(manual_melody,recorded_melody,auto_melody,exercise_melody,

standard_melody)赋值给显示数据(melody_display_data)和蜂鸣器数据(melody_beep_data),实现在不同按键状态下给显示和蜂鸣器电路正确送入相应的数据。

(6)piano_play 显示模块

①利用人眼的视觉暂留效应,用一个1ms定时器实现数码管动态扫描,让两个数码管可以同时显示不同的数据。
②用一个位选计数器,计数值在0和1之间跳变,对应位选信号(seg)值在1和2之间跳变,从而实现一位数码管显示音阶,一位数码管显示音符。

(7)piano 主模块

调用各个子模块,实现相应功能。

电路图如下图所示。

三、仿真结果与分析

1. piano_music

(1)功能:蜂鸣器,实现音符的播放。

(2)波形分析:由仿真结果图可知,在输入音符时,蜂鸣器可以输出特定频率的方波,仿真结果符合预期。

2. piano_autoplay

(1)功能:通过mode_change控制电子琴进入自动播放模式,播放事先存储的曲目《送别》。
(2)波形分析:如图所示,在清零信号clr为低电平,且mode_change变量为1时,自动播放模块开始工作,提前录入的曲谱数据被依次送入蜂鸣器和显示器模块。当accel为0时,倍速播放不开启,每拍的时间为0.25s,第一个两拍音符M5输出约为0.5s。显示的输出依次为“M5”“M3”“M5”“H1”“M6”“H1”“M5”,与曲谱完全相同,与预计完全吻合。当accel为1时,倍速播放开启,每拍的时间为0.125s,第一个两拍音符M5输出约为0.25s。乐曲播放速度变为原来的两倍,显示的输出与原谱完全吻合,电路正常工作。

3. piano_exercise

(1)功能:将弹奏的音符输入电子琴,若被弹奏音符与电子琴曲谱音符相同,(即与standard_melody中所存储的数据相同),则曲谱录入下一位;若被弹奏的音符与电子琴曲谱音符不同,则standard_melody中的数据不变。

(2)波形分析:如图所示,在清零信号rst为低电平时,练习模块开始工作,弹奏的音符与提前录入的曲谱数据相比较,当输入为“0100000001”时,与标准曲谱中音符相同,将这一音符录入乐谱,读出standard_melody的下一位数据;当输入“0000000000”时,与standard_melody音符不同,仍读出standard_melody的当前位,且不把这一音符录入乐谱;当输入“0100000010”与标准音符standard-melody“0100010000”不同时,仍读出standard_melody的当前位,且不把这一音符录入乐谱;当输入“0100010000”与乐谱音符standard_melody“0100010000”相同时,将这一音符录入乐谱,读出standard_melody的下一位数据。综上所述,电子琴的练习模块正常运行。

4. piano_play

(1)功能:显示当前音符。

(2)波形分析:①如图所示,在清零信号为低电平时,输入scale,note,开始弹奏,有对应输出,符合预期。②利用人眼视觉暂留效应,用1ms定时器实现动态扫描,让两个数码管可以同时显示不同数据。利用位选计数器,实现一位数码管显示音阶,一位数码管显示音符。如图所示,位选信号每隔1ms进行变化,符合预期。③输入为“0100000001”时,对应输出为“M1”;输入为“0100000010”时,对应输出为“M2”;输入为“0100010000”时,对应输出为“M5”。与预期结果完全吻合,通过实际测试,电路可正常运行。

5. piano_MUX

(1)功能:在按下不同的按键时,给蜂鸣器模块和显示模块送入不同的数据。
(2)波形分析:①当autoplay_function==1时,电子琴进入自动播放状态,autoplay中的数据“3”被送入蜂鸣器模块和显示模块,符合预期。②当record_function==1时,电子琴进入录音模式,此时,弹奏模块中的数据“1”被送入蜂鸣器和选择器模块。③当replay_function==1时,电子琴进入回放模式,此时,在录音模式中保存的数据“2”被送入蜂鸣器和选择器模块,达到播放存储音乐的效果,符合预期。④当exercise_function==1时,进入练习模式,标准曲目的数据“5”被送入显示模块,给弹奏者提示下一个需要弹奏的音符,当弹奏的音符与标准音符一致时,练习模块中的数据“4”被送入蜂鸣器模块。
综上,该模块的运行符合预期。

四、硬件测试结果

经过测试,实现了如下功能:

  1. 乐曲演奏功能(基本功能):用按键模拟琴键,实现多个音符的弹奏功能,用数码管显示弹奏的音符。
  2. 乐曲自动演奏功能(基本功能):按下自动播放按钮后,自动播放《送别》前九节,每节八拍,共七十二个音符,每音符约0.5s,与预计时间相符。
  3. 乐曲记录及回放功能(基本功能):按下乐曲记录按钮并弹奏,记录所弹奏的音符;再按下回放按钮,实现乐曲回放功能。

4. 乐曲练习功能(拓展功能):以《七月上》为标准曲目,若外部输入音符与标准曲目音符相同,则电子琴发声且提示下一个需弹奏的音符;若外部输入音符与标准曲目音符不同,则电子琴不发出声音且仍提示当前音符。

5. 乐曲倍速播放功能(拓展功能):按下倍速播放按钮后,自动二倍速播放《送别》前九节,每节八拍,共七十二个音符。

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值