数电实验简易电子琴的设计报告

  • 格式:docx
  • 大小:172.78 KB
  • 文档页数:9

下载文档原格式

  / 7
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数电实验简易电子琴的设计报告

简易电子琴的设计

姓名:

班级:

学号:

一、项目概况

选题目的,为了进一步巩固之前学到的知识,将课本的知识结合趣味性,让自己得到更好的提高。

项目构思,模型要做一个能成功实现的简易电子琴,包括按键按下后蜂鸣器会根据相应的频率准确发出相应音阶的声音,7

段数码管会显示出按键的简谱,输出端H能够表示音的高低。要用到计数器,触发器分频器,7段数码显示器等元件。

二、方案设计

系统框图为:

系统简介如下:

1.系统框图

2.系统端口(2个输入口 3个输出口)

(1)CLK,频率1MHz。用于提供时钟脉冲信号。

(2)DIN[7..0]。琴键输入的8个音符,8位中只有一位是低电平即每次只能按一个键。

(3)SPK。用于驱动蜂鸣器,输出频率fB与蜂鸣器发出的音调与电子琴各音阶基频有对应关系。

(4)LED。接数码管,用于显示对应的简谱码,H显示音调高低。

3.工作原理

(1)编码器CODE3。将输入的8位琴键信号进行编码,输出一个4位码,最多能对应16个音符(若有16个键)。按下的琴键的电平为低。

例:

8’b11111110 : KEY<=4’b0001

输入第一位琴键“哆”此时编译成4位二进制数 2^0=1 传入译码器INX2CODE。

(2)译码器INX2CODE。将键盘输入的编码信号译码成数控分频器SPK0输出信号的频率控制字。

例:

1 : F_CODE <= 11’H305

刚才编码器编码传入的琴键“哆”的 1此时被译码为数控分频器SPK0的输出信号的频率控制字305H。

(3)SPK0。计数器CNT11B是一个LPM宏模块,利用同步加载控制sload避免来自进位信号cout中可能的毛刺影响,反相器和D触发器使得进位信号延迟半个时钟周期,过滤掉可能的毛刺,使得加载更加可靠。

例:

经过编译的305H被置入模块SPK0的11位可预置计数器中计数器不断以此值为计数起始值,直至全为1。以305H计数起始,计数器成为一个模为1270(7FFH-305H=4F6H=1270)的计数器。从CLK 端每输入1270个脉冲,BEEP输出一个进位脉冲。CLK的输入频率是1MHz,BEEP输出的信号频率是1/(12701us)=787Hz,

然而SPK0的输出信号经过一个D触发器接成的T’触发器后才输出给蜂鸣器。T’触发器一是作二分频器,二分频就是经过有分频作用的电路结构,在时钟每触发2个周期时,电路输出1个周期信号。此时预置的305H对应的蜂鸣器发音的基频FB约等于392.00Hz,二是作为占空比均衡电路,使得SPK0模块输出的功率极低脉款较窄无法驱动蜂鸣器的信号脉宽变均匀(FB占空比为

50%)。

附加T’触发器的知识点:

T’触发器又叫计数器在上升沿到来时实现对原状态的翻转实现计数,频率是时钟周期的一半实现二分频。

(4)M_CODE。将CODE3的编码编译为简谱码传递给DCD7SG而且编译对应的音调高低值H。当音调为高的时候H输出为1,H接LED 灯亮。

1 :{CODE,H} <= {4’B0001,1’B0} ;

按下“哆”,此时编码的键盘按键为1,M_CODE将其编译为简谱码0001,H为0,低音调。

(5)DCD7SG。数码管7段显示译码器,将简谱码编译成数码管的显示信号。类似于74LS48,其输出顺序为g-a。

例:

4’B0001 : LED <= 7’B0000110 ;

M_CODE编译出来的简谱码B0001在数码管7段(gfedcba)显示译码器中,bc为高电平,数码管显示出来“哆”的简谱1。

三、设计与调试

设计中存在的问题:

1.因为自身基础较差对计数器的功能理解不够在SPK0的部分存在毛刺影响。

解决办法:使用反相器和D触发器接在进位信号cout处,将cout延时半个时钟周期,使得加载更加可靠

2.7段数码管显示出来的数字是镜像。

解决办法:显示器的abcdefg的高位低位弄错,应该为gfedcba。

3.波形仿真时要一一音符验证,较为繁琐。

解决办法:将DIN和LED的count every设置为8.89 这样就能在同一个页面中看出仿真的波形和对比结果以验证是否正确。4.实验板子上的晶振是20MHz的,而实验需要1MHz

调用PLL模块,使其分频为1/20,如图