已阅读5页,还剩24页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
电子琴设计 设计要求 设计一个八音电子琴 由键盘输入控制音响 同时可自动演奏乐曲 用户可以将自己编制的乐曲存入电子琴 演奏时可选择键盘输入乐曲或者已存入的乐曲 系统组成 系统由数控分频器和乐曲存储模块组成 数控分频器对FPGA的基准频率进行分频 得到与各个音阶对应的频率输出 乐曲存储模块产生节拍控制和音阶选择信号 即在此模块中可存放一个乐曲曲谱真值表 由一个计数器来控制此真值表的输出 而由计数器的计数时钟信号作为乐曲节拍控制信号 模块设计 1 顶层模块的设计2 自动演奏模块 automusic 的设计3 音调发生器 tone 模块的设计4 数控分频模块 speaker 的设计 1 顶层模块的设计 顶层模块由乐曲自动演奏 automusic 音调发生器 tone 和数控分频器 speaker 三个模块组成 其中乐曲演奏部分又包括了键盘编码 设置一个自动演奏 键盘输入切换auto 即当auto 0 时 选择自动演奏音乐存储器里面的乐曲 auto 1 时 选择键盘输入的信号 顶层设计原理图 2 自动演奏模块 automusic 的设计 音乐存储模块的作用是产生8位发声控制输入index 当auto为 0 时 由存储在此模块中的8位二进制数作为发声控制输入 可自动演奏乐曲 此模块的VHDL程序中包括两个进程 首先是对时基脉冲进行分频得到4Hz的脉冲 作为第二个进程的时钟信号 它用来控制每个音阶之间的停顿时间 1 4 0 25s 第二个进程是音乐的存储 可根据需要编写不同的乐曲 3 音调发生器 tone 模块的设计 音调发生器的作用是产生获得音阶的分频预置值 当8位发声控制输入index中的某一位为高电平时 则对应某一音阶的数值将在端口tone输出 该数值即为该音阶的分频预置值 分频预置值控制数控分频器来对4MHz的脉冲进行分频 由此可得到每个音阶对应的频率 例如输入index 00000010 即对应的按键是2 产生的分频系数便是6809 code输出对应该音阶简谱的显示数码 high输出指示音阶高8度 低电平有效 4 数控分频模块 speaker 的设计 数控分频模块对时基脉冲进行分频 得到与1 2 3 4 5 6 7七个音符对应频率 该模块的VHDL程序中包含了三个进程 首先对FPGA的32MHz的时基脉冲进行分频得到8MHz的脉冲 然后按照tone1输入的分频系数对8MHz的脉冲再次分频 得到所需要的音符频率 第三个进程的作用是在音调输出时再进行二分频 将脉冲展宽 使扬声器有足够发声功率 电子琴程序设计与仿真 电子琴程序设计与仿真 1 顶层程序与仿真2 音阶发生器程序与仿真3 数控分频模块程序与仿真4 自动演奏模块程序与仿真 1 顶层程序与仿真 文件名 top vhd 功能 顶层文件 最后修改日期 2004 3 20libraryIEEE useIEEE STD LOGIC 1164 ALL useIEEE STD LOGIC ARITH ALL useIEEE STD LOGIC UNSIGNED ALL entitytopisPort clk32MHz instd logic 32MHz系统时钟handTOauto instd logic 键盘输入 自动演奏code1 outstd logic vector 6downto0 音符显示信号index1 instd logic vector 7downto0 键盘输入信号high1 outstd logic 高低音节信号spkout outstd logic 音频信号endtop architectureBehavioraloftopis componentautomusicPort clk instd logic Auto instd logic index2 instd logic vector 7downto0 index0 outstd logic vector 7downto0 endcomponent componenttonePort index instd logic vector 7downto0 code outstd logic vector 6downto0 high outstd logic tone0 outintegerrange0to2047 endcomponent componentspeakerPort clk1 instd logic tone1 inintegerrange0to2047 spks outstd logic endcomponent signaltone2 integerrange0to2047 signalindx std logic vector 7downto0 beginu0 automusicportmap clk clk32MHZ index2 index1 index0 indx Auto handtoAuto u1 toneportmap index indx tone0 tone2 code code1 high high1 u2 speakerportmap clk1 clk32MHZ tone1 tone2 spks spkout endBehavioral 顶层文件仿真图 2 音阶发生器程序与仿真 文件名 tone vhd 功能 音阶发生器程序 最后修改日期 2004 4 13 libraryIEEE useIEEE STD LOGIC 1164 ALL useIEEE STD LOGIC ARITH ALL useIEEE STD LOGIC UNSIGNED ALL entitytoneisPort index instd logic vector 7downto0 音符输入信号code outstd logic vector 6downto0 音符显示信号high outstd logic 高低音显示信号tone0 outintegerrange0to2047 音符的分频系数endtone architectureBehavioraloftoneisbegin search process index 此进程完成音符到音符的分频系数译码 音符的显示 高低音阶begincaseindexiswhen 00000001 tone0tone0tone0tone0tone0tone0tone0tone0tone0 2047 code 0000001 high 0 endcase endprocess endBehavioral 音阶发生器仿真图 3 数控分频模块程序与仿真 文件名 speaker vhd 功能 实现数控分频 最后修改日期 20004 3 19 libraryIEEE useIEEE STD LOGIC 1164 ALL useIEEE STD LOGIC ARITH ALL useIEEE STD LOGIC UNSIGNED ALL entityspeakerisPort clk1 instd logic 系统时钟tone1 inintegerrange0to2047 音符分频系数spks outstd logic 驱动扬声器的音频信号endspeaker architectureBehavioralofspeakerissignalpreclk fullspks std logic begin pulse1 process clk1 此进程对系统时钟进行4分频variablecount integerrange0to8 beginifclk1 eventandclk1 1 thencount count 1 ifcount 2thenpreclk 1 elsifcount 4thenpreclk 0 count 0 endif endif endprocesspulse1 genspks process preclk tone1 此进程按照tone1输入的 分频系数对8MHz的脉冲再次分频 得到所需要的音符频率variablecount11 integerrange0to2047 Beginifpreclk eventandpreclk 1 thenifcount11 tone1thencount11 count11 1 fullspks 1 elsecount11 0 fullspks 0 endif endif endprocess delaysps process fullspks 此进程对fullspks进行2分频variablecount2 std logic 0 beginiffullspks eventandfullspks 1 thencount2 notcount2 ifcount2 1 thenspks 1 elsespks 0 endif endif endprocess endBehavioral 数控分频模块仿真图 4 自动演奏模块程序与仿真 文件名 automusic vhd 功能 实现自动演奏功能 最后修改日期 2004 3 19 libraryIEEE useIEEE STD LOGIC 1164 ALL useIEEE STD LOGIC ARITH ALL useIEEE STD LOGIC UNSIGNED ALL entityautomusicisPort clk Auto instd logic 系统时钟 键盘输入 自动演奏index2 instd logic vector 7downto0 键盘输入信号index0 outstd logic vector 7downto0 音符信号输出endautomusic architectureBehavioralofautomusicissignalcount0 integerrange0to31 changesignalclk2 std logic begin pulse0 process clk Auto 此进程完成对系统时钟8M的分频 得到4Hz的信号clk2variablecount integerrange0to8000000 beginifAuto 1 thencount 0 clk2 0 elsifclk eventandclk 1 thencount count 1 ifcount 4000000 4 thenclk2 1 elsifcount 8000000 8 thenclk2 0 count 0 endif endif endprocess music process clk2 此进程完成自动演奏部分曲的地址累加beginifclk2 eventandclk2 1 thenifcount0 31thencount0 0 elsecount0 count0 1 endif endif endprocess com1 process count0 Auto index2 beginifAuto 0 thencasecount0is 此case语句 存储自动演奏部分的曲when0 index0index0index0index0index0index0index0index0index0index0index0index0index0index0index0index0index0index0index0index0 00001000 4 w
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 临床常用肿瘤标志物用途说明
- 中学生英语核心词汇记忆技巧
- 仓库岗位职责划分与绩效考核标准
- 2018-2019学年三年级语文期末考试题解析
- 电信行业投诉处理与服务提升方案
- 大学英语读写第四册教案设计模板
- 交通运输企业扬尘治理技术方案
- 八年级语文学期教学总结报告
- 企业内部审计流程及风险评估方案
- 机械设备分类管理台账模板
- 二次元谷子店创业计划
- 事理论国防安全
- 2024-2025学年新教材高中语文第三单元11.1过秦论课时作业含解析新人教版选择性必修中册
- 2025年四川省德阳市事业单位招聘笔试高频重点提升(共500题)附带答案详解
- 植保无人机飞行作业服务应急及突发事件处理方案
- 商转公配偶委托公证书模板
- 安全生产法律法规汇编(2025版)
- UPS电池更换更新的设计、施工、方案及注意事项(5篇材料)
- 初中英语固定搭配大全附专项练习
- 《离散数学及其应用》全套教学课件
- 尿潴留的中医护理进展
评论
0/150
提交评论