数字系统设计大作业报告A6

数字系统设计大作业报告A6

ID:41676144

大小:276.26 KB

页数:10页

时间:2019-08-29

数字系统设计大作业报告A6_第1页
数字系统设计大作业报告A6_第2页
数字系统设计大作业报告A6_第3页
数字系统设计大作业报告A6_第4页
数字系统设计大作业报告A6_第5页
资源描述:

《数字系统设计大作业报告A6》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、数字系统设计大作业报告基于FPGA的带指示功能的简易电子琴学院电子与信息学院专业学生姓名一、题目要求(一)制作一个有16个琴键的简易电子琴。(二)音符从低音fa到高音suoo(三)由开关控制用LED指示演示一首歌曲的弹奏方法。如《一闪一闪亮晶晶》其简谱如下图所示:11

2、55

3、66

4、5-

5、44

6、33

7、22

8、1-155

9、44

10、33

11、2-

12、55

13、44

14、33

15、2-

16、11

17、55

18、66

19、5-

20、44

21、33

22、22

23、1-1二、系统框图三、系统设计(-)模块关系图(-)底层模块介绍1.键盘编码模块输入:键盘信号。输出:分频比,为受控分频模块提供的复位信号。设计思路:该模块为纯组合逻辑,将键盘输入信

24、号编码为受控分频模块的分频比和复位信号。在没有键按下或无法编码的按键情况时,输出有效的复位信号(高电平);按下某个键时,输出相应的分频比,同时清除复位信号(低电平)。2.受控分频模块输入:分频比、系统时钟、复位信号。输出:音频信号。设计思路:该模块为受控分频器,用来输出相应的音频波。分频输出的频率受输入分频比的控制。分频器用计数器实现,计数器复位,用键盘编码模块产生的复位信号,溢出判断量是键盘编码模块输出的分频比。该模块输出为占空比50%的方波,以此来驱动功放或扬声器发声。3.固定分频模块输入:系统时钟、复位信号输出:5Hz时钟信号。设计思路:该模块为固定频率的分频器,用来输出

25、约5Hz的信号,为LED驱动波形产生模块提供基准频率。分频器用计数器实现,计数器时钟和复位信号由外部提供,固定溢出量,产生占空比50%的方波以此为LED驱动波形产生模块提供基准频率。1.LED驱动波形产生模块输入:5Hz时钟信号、音乐指示开关信号。输出:LED驱动信号。功能:产生驱动乐曲指示灯的信号。设计思路:该模块为一个进位计数器,最小计数变量在停止标记无效(高电平)的情况下在低频时钟上升沿计数,每计数5次进位一次。对应一个音符中4次LED流水和一次停顿。最小音符单元在最小计数变量进位时自增一次,该演示曲每句6个时值为1的音,一个时值为2的音,因此最小音符单元计数满8时进位一

26、次。最小音符单元用来指示这是每句中的第几个音。句子变量在最小音符单元进位时自增一次,该演示曲共六句,计数满后所有变量恢复初始状态,停止标记变为有效(低电平),使演示只进行一遍。同时流水灯“行”驱动波形产生进程中在每句前6个时值为1的每个音符弹奏时间内产生较短的4次LED流水信号,在每句后1个时值为2的每个音符弹奏时间内产生较长的4次LED流水信号。流水灯''列”驱动波形产生进程中根据句子变量和最小音符单元的值,产生音符选择信号(流水灯“列”驱动信号)。(三)模块连接图1.键盘与发音部分pk_tKBD为键盘编码模块ccd为受控分频模块2.弹奏指示部分LC2:UIc2LC2为固定分

27、频模块LC1为LED驱动波形产生模块1.顶层设计TDisp:UdisT3..0]L0]TDisp为弹奏指示部分tomp为键盘与发音部分(四)关键代码1.琴键编码器if(KB(15)=0)thenrst_ag<=,0,;ds_ag<=xH117A8H;-_4■…0elsif(KB(14)二'0')thenrst_ag<=,0,;ds_ag<=x"0F920";—_5-…1elsif(KB(13)=0*)thenrst_ag<='0,;ds_ag<=x,,0DDF2,,;-_6—-2clsif(KB(12)=0)thenrst_ag<=,0,;ds_ag<=xM0C5BAn;-_7

28、■…3-低音elsif(KB(O)='O')thenrst_ag<='0';ds_ag<=x"03E48M5.——15-高音elserst_ag<=,r;endif;未按键这部分代码釆用if-elsif-else语句,构成16路优先编码器,将按键情况编码为分频比。1.受控分频器elsif(rising_edge(clk))thenif(cnt

29、键盘编码器控制,因此产生的方波频率受到键盘控制,以便产生不同音调的琴声。2.固定分频器if(rst_i='O,)thencnt<=0;div_in<=,0';elsif(rising_edge(clk))thenif(cnt<4999900)then—4个9ent<=ent+1;elsedivin<=notdivin;cnt<=0;endif;endif;这部分代码是用讦语句构成的计数器,计数溢出值固定,用以生成驱动LED的基本低频时钟信号。3.LED驱动器if(rst_i=,O,)then

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。