EDA音乐发生器课程设计报告书

上传人:suij****uang 文档编号:148887020 上传时间:2022-09-06 格式:DOCX 页数:26 大小:423.10KB
返回 下载 相关 举报
EDA音乐发生器课程设计报告书_第1页
第1页 / 共26页
EDA音乐发生器课程设计报告书_第2页
第2页 / 共26页
EDA音乐发生器课程设计报告书_第3页
第3页 / 共26页
点击查看更多>>
资源描述
A Ki尘住鼠我匹下的隔用单3 & S C 怆卜尊 时非禅 自己挖 自1. 软件硬件1 EP3C40Q240C8 芯片2实验箱底板电路(包括 蜂鸣器、7段数码管、Led灯1个、拨码开关3 个、Key按键7个)3 Quartus 119.04计算2. 总体模块功能1 使用两个时钟分别为12MHz和8Hz的时钟,分别供分频驱动器(数控分 频器)与计数器使用。2 计数器完成计数功能,分为两个计数器counter1和counter2, counter1 计数到269, counter2计数到163,都是在上升沿来临时计数。3四个音乐模块分别记录了 2首歌的乐谱。根据上一模块计数器所计的数 读取相应地址里的数据传递给下一模块。4选择器完成选择歌曲的功能。5数据翻译模块将选择器所选择的歌曲里的地址的数据翻译成分频驱动器 (数控分频器)分频所需的控制数据、1个led灯数据(中低音)、以及译码器 所需的数据。6 分频驱动器也就是一个数控分频器,完成分频的功能,并驱动蜂鸣器。7译码器将乐谱数据在led数码管上显示。3. 各个模块图形及程序亳小棚波神主题歌3.1计数器及歌曲存储模块(notetabs)计数器完成计数功能分计1数器乂分别计到269 和163,因为两首歌 曲的最大字符分别为269和)63,,存储的心歌是采蘑菇的小姑娘、小糊涂 神,曲谱如下:| 1 J 1 2 1 | T 2 5 | 6 6 | 5 3关81的时技也着幅金tffi涂柄脂陆是大南瓜靛果征盼2 ) 355 | 3_6 5|2 3|5 -比衣上也闻魅豪陶敲口牌门券等曰己陞口己te.6 6 6 0 6 , _ Ao6 6 0 &*. k-H6 333V 1采善的)谁不知山M的个3 22 12 16 5J:嗥象料星里 次上儿e Q 洁.大得象胆小伞苛的幸福:0 1; | ?* ? 2 1寒翌翌罗穿罗罗呷5333 哩,*写亨哩.7 7 7 e12罗哩a聂2 22 6 117 7 1J 1 7 7 G R岁U史罗哇罗L里罗L里罗L皇罗旦其!? -41.分.- 飞E-享,81肝!600 0 |宴!采蘑菇的小姑娘1二 F 务_-.啧光同答建曲 成洋亲制(3 -3 -.-4 -.-.L-L-32i 22 - 2 i & 5 6 -6 - 321711模块图形模块如图3-3所示:_DinnameinputVCCpinnamelINPUTVCCpinname2inputVCCnotetabsrst toneindex23.0CLK一 dinstOUTPUT pin_name3图3-3 notetabs模块图形2程序由于此程序较多,在附录中给出,见附录3仿真波形图仿真图如图3-4所示:图3-4 notetabs仿真波形图通过仿真图可以清楚的看到,每计一次数输出toneindex的值随之发生一定 的变化,只不过根据乐谱的不同,输出的变化也不尽相同。例如在本次设计中, 自第8个时钟上升沿来临到第15个时钟上升沿,输出toneindex2均选取音符 “5”。然后把输出toneindex2输入到音调编码器模块,进行下一步编码工作。3.2手动模块(tone)可通过7个按键手动的进行演奏,7个按键分别代表7个音。1 模块图形模块如图3-5所示:pin_name4.程序library ieee;use ieee.std_logic_1164.all;entity tone isport(key:in std_logic_vector(6 downto 0);toneindex1:out std_logic_vector(3 downto 0);end;architecture one of tone isbeginsearch:process(key)begincase key iswhen0000001=toneindex1toneindex1toneindex1toneindex1toneindex1toneindex1toneindex1=0111;when others=toneindex1=0000;end case;end process;end;3仿真波形图仿真图如图3-6所示:在此仿真图中不同的key相当于对应不同的琴键,当按下不同的琴键时输出 相对应的toneindex1, toneindex1在输入音调编码器中进行下一步编码。3.3.3手动、自动选择模块(mux)根据设计的要求,该简易乐曲演奏器能实现手动或自动演奏乐曲的功能。于 是,可通过一个按键cs来进行自动与手动的选择,当cs按下时,乐曲自动演奏, 其他情况下均为手动演奏乐曲,即可以通过按下其他的按键(与。,相连的按键 除外)来控制不同的音符。与此同时,还需要一个复位信号rst来控制该演奏器是否工作,当rst为1时,停止演奏,为0时,可以演奏。动的选择只能在rst为0时有效。1 模块图形模块图形如图3-7所示:OUTPUT ,pin_name2以上提到的手动与自2程序library ieee;use ieee.std_logic_1164.all;entity mux isport(rst:in std_logic;index1:in std_logic_vector(3 downto 0);index2:in std_logic_vector(3 downto 0);cs :in std_logic;toneindex:out std_logic_vector(3 downto 0);end;architecture arc_mux of mux isbegin process(cs)beginif rst=1then toneindextoneindextoneindex=index2;when others=toneindex pin_name6Output匚二 pin_name72程序见附录3仿真波形图仿真图形如图3-10所示:图3-10 tonetaba仿真波形图在此仿真图中从上到下依次代表输出code、high、输入index和输出tone。 通过此仿真图能清楚的看到当音符分别为4、10、8、15时,它们所对应的分频 预置数tone分别是1116、1542、1410、1728;所对应的音谱code分别是4、3、 1、1。其中code、high1能分别在数码管和led上显示,而tone则输入到数控 分频模块作为分频的依据。于是,由仿真图印证了音调编码模块传送预置数及显 示功能。3.3.5数控分频器(speakera)将芯片上提供的50MHz的时钟分频为12MHz和8Hz的时钟,分别供计数器与 分频驱动器(数控分频器)使用。1模块图形:模块图形如图3-11所示:pin_nameI,1睫沙pin_name1I INPUTVCCSpeakera旗10.0SpkSinstOUTPUTpin_name22程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY Speakera ISPORT (clk :IN STD_LOGIC;Tone :IN STD_LOGIC_VECTOR (10 DOWNTO 0);END;SpkS :OUT STD_LOGIC );ARCHITECTUREone OFSpeakera ISSIGNAL PreCLK, FullSpkS : STD_LOGIC;BEGINDivideCLK : PROCESS(clk)VARIABLE Count4 : STD_LOGIC_VECTOR (3 DOWNTO 0);BEGINPreCLK 11 THEN PreCLK = 1; Count4 :=0000;ELSIF clkEVENT AND clk =1 THEN Count4 :二 Count4 + 1;END IF;END PROCESS;GenSpkS : PROCESS(PreCLK, Tone)VARIABLE Count11 : STD_LOGIC_VECTOR (10 DOWNTO 0);BEGINIF PreCLKEVENT AND PreCLK =1 THENIF Count11 = 16#7FF# THEN Count11 :二 Tone ; FullSpkS = 1;ELSE Count11 :二 Count11 + 1; FullSpkS = 0; END IF;END IF;END PROCESS;DelaySpkS : PROCESS(FullSpkS)VARIABLE Count2 : STD_LOGIC;BEGINIF FullSpkSEVENT AND FullSpkS =1 THEN Count2 :二 NOT Count2;IF Count2 =1 THEN SpkS = 1;ELSE SpkS = 0; END IF;END IF;END PROCESS;END;3仿真波形图仿真图如图3-12所示:_/0Fn:ellE *Vtlue J10.011;:Vr?3p: :0.0叫站叫就汇町站叫“无Ohe .::.I: LiUflil1 1 1 1 1 I1 1 1 1 1 1 1 1 1 1mini咖m9 1 1 1 3 9 I 1 1 i.111111nil咖1RMIWI fi111111111S1111111111111111111I11111I11111I11111I1111191111111111111111111111111Sill1111Sill1111Sill1111Sill1111Sill1111i111111111S111111111S111111111S111111111S111111111图3-12 speakera仿真波形图在此仿真图中,输入clk是一个频率较大的时钟信号,输入tone代表着某 个音符的分频预置数,输出spks则代表将输入clk先经过12次分频,再经过(预 置数终值2048-tone)次分频,最终在进行二分频处理后的信号,而这个信号的 频率就是我们需要演奏的音谱的频率,根据频率的不同,从而能通过喇叭听到不 同的声音,这就是我们一直想要演奏的乐曲了。3.4硬件设计及仿真分析3.4.1顶层音乐演奏器原理图ToneTabaTone10OUTPU spksIndex3.0CODE6. HIGH经过了各个子模块的分析与验证后,我们只需将各个子模块之间的输入输出 端、子模块与整体电路之间的输入输出端进行正确的硬件连接就得到了顶层音乐 演奏器的原理图,如图3-13index13.0index23.03.4.2顶层文件仿真波形分析首先,介绍一下总体程序中各个引脚的作用及硬件连接情况:输入clk8Hz 是一个频率较小的时钟信号,在进行硬件下载时它与实验箱上标准时钟信号源模 块的8Hz频率相连,它决定着乐曲演奏的快慢;输入clk12mHz是一个频率较大 的时钟信号,因为要对它进行多次不同的分频,下载时它与实验箱上标准时钟信 号源模块的20MHz频率相连;输入key6.0是当手动演奏时自己确定的音符,; 输入rst和cs分别是整体复位端和演奏方式选择端;输出code1和high1分别 用来显示音谱与高中低音,它们分别与实验箱上的数码管1和led 1相连;输出 spkout要与实验箱上的喇叭相连,用来发出声音。其次,顶层电路的仿真波形图是否正确依赖于各个子模块的功能是否完善, 同时顶层电路的功能实现又验证了各个子模块的正确性,二者相互依存。最后,由仿真波形图印证了整体电路的功能3.4.3顶层文件的管脚分配以及硬件连接图下载到硬件时管脚的连接图如图3-14Hna_L*3席M刊 * M J AfcM |fw:日工I娘WEEMJ* ctdirprd k3B3_HI1bw:咂顶站霓村53ffuLpuAFJZtsWsMhnCl匚U对PWJ3IH_HI皿侦 Jd|二 Wil515诚戏也jRJcsxteXw.XTJ戏也*GCUpilPTSItl_KJ皿cnh(fl.jQ|二 WilTFWJSG&隧加藉戏也jfc:虫EJ心;都8o- Etal|lPFdJMDE-H- H39CitKi6ES_K3站戏也*i心:,虹5药也*iWInstFW_W54M_K3玷邮火gi心宵5W d【gPWJ3S!SU- HlZ.W“d 倾4虬HI找也*1u- 启何PFd_W3M-_HIg:XrAI143EOI.职戏也Ju嫌 I F Ia州5IFpfj n-3B3 HI心:3*1it* kMSQTfid:FH_ra3E_H2职戏也i辱IE Jffj心奶直1在 y pfj e3B3 H2mW*心:XilJ&Ur 5InpU3KrJiZkiHA.x|g:XrAIW!* 5JPT单3林2职戏也Ju辱IE间a州*2PTJJ 血5W-_H304网赛1站戏:WMl心州直1EOMikw raxfa图3-15硬件连接图硬件的连接图如图3-15所示:对应着管脚分配图和硬件连接图可看出硬件芯片分别连接了上方的七段数 码管,左方的7个白色按键key和标准时钟信号源,下方的led灯,蜂鸣器和右下方的三个拨码开关。4设计总结1本次简易乐曲演奏器的设计经过了整体分析、模块化分析、整体与模块 的仿真分析这样三个步骤,硬件实现了整体复位、按键选择演奏方式、循环演奏 以及数码管显示乐谱的功能。2 在做数控分频器模块的仿真时一定要处理好时序问题。3 本文介绍了基于FPGA的音乐硬件演奏电路的设计,实现了一个乐曲播 放器,乐曲演奏器的设计经过了整体分析、模块化分析、整体与模块的仿真分 析这样三个步骤,硬件实现了循环演奏以及数码管显示乐谱的功能,描述了其 工作原理、设计思路及实现方 法,并在QuartusII上选用目标芯片仿真实现了 音乐硬件演奏电路的功能。实践证明:采用FPGA设计实现音乐硬件演奏电路的 可行性和可靠性,而且更改乐曲容易,可根据 需要修改ROM中的音符数据文件, 从而使电路实现任一曲子的播放。这种基于FPGA的音乐硬件演奏电路的设计与 实现不仅通过VHDL层次化和模块化,同时采用数控分频的设计思想,更好的优 化了乐曲演奏数字电路的设计,在此基础上不必变化顶层文件架构可随意变更乐 曲,有效缩短了产品开发周期、减少了设计芯片的数量、降低了功耗、提高了设 计的灵活性、可靠性和可扩展性 本次设计可以说达到了设计要求,但尚有需要 改进的地方。随着乐谱的复杂程度加大,如果依然在音调发生器的程序过时钟 计数来决定音符的输出,会加大编程的繁杂度,这时一个很好的解决办法就是 把将要演奏的乐谱存放在人为开辟的存储空间里,这样只需要在相应地址中读 出音符即可。5设计心得与感想在这2周里我用EDA的知识完成了乐曲硬件演奏电路的设计,这使我对这 门课程有了更深一步的了解。随着科学技术的发展,电子信息技术与人们的生 活已经分不开,可以说人们 走到哪里都离不开电子产品,如我们常遇到的交通 信号灯,出租车计价器,家用 电器更不用说。我很荣幸能选择到这个专业学习, 我想我会在今后的工作生活中,能用所学的知识为人们创造出更多更方便的东 西来满足人们的需要。在这2周里,我通过查找资料,向老师请教等完成了乐 曲硬件演奏电路的设 计,以前在课堂上只是听老师说EDA是门很常用的学科, 能完成各种仪器的编程等,但从来没有应用到实践中来,所以我以前对这门课 感到很陌生,不知道怎么才能将这门课应用到实践。不过在这2周里,我认真 的查找资料,上机调试,使我对这门课有了更进一步的认识,它功能强大,应 用到的围也非常的广,因此我很高兴能学到这么一门有用的学科。通过这2周 的时间,我把以前学过的知识从理论应用到了实践,这大大培养了我独立思考 的能力和动手能力,也锻炼了我遇到困难不要受到挫折的心理,我感到个人能 力又得到了提高。总之,这次课程设计为我以后的工作奠定了坚实的基础,充分 锻炼了我的个人能力,作为电子信息工程专业的一名学生,我会在以后的工作生 活中不段磨练自己,为社会创造出更多有益于人们生活的产品来。6参考文献1 .松、黄继业等编著.EDA技术与VHDLM.:清华大学2 .边计年主编.用VHDL设计电子线路M.:清华大学3 .王金明,吉斌等编著.数字系统设计与Verilog HDLD.:电子工业4 .徐志军,徐光辉等编著.CPLD/FPGA开发与应用M.:电子工业5 .松,黄继业等编著.EDA技术实用教程(第2版)M.:科学6 .叶天迟主编.EDA实用技术实验及课程设计指导书M.:自编实验指导书附录1 notetabs 程序library ieee;use ieee.std_logic_1164.all;entity notetabs isport(rst:in std_logic;CLK:in std_logic;d:in std_logic;toneindex2:out std_logic_vector(3 downto 0);end notetabs;architecture one of notetabs issignal counter1:integer range 0 to 269;signal counter2:integer range 0 to 163;begincnt8:process(clk)beginif rst=1 then counter1=0;counter2=0;elsif counter1=269 thencounter1=0;elsif counter2=163 thencounter2=0;elsif clkevent and clk=1thencounter1=counter1+1;counter2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2tonei ndex2tonei ndex2toneindex2tone i ndex2tone i ndex2tone i ndex2tone i ndex2tone i ndex2tonei ndex2tonei ndex2tone i ndex2tone i ndex2tone i ndex2tone i ndex2tone i ndex2tone i ndex2tone i ndex2tone i ndex2toneindex2toneindex2tone i ndex2tone i ndex2tone i ndex2tone i ndex2tonei ndex2tone i ndex2tone i ndex2tone i ndex2tone i ndex2tone i ndex2tone i ndex2tone i ndex2tonei ndex2tonei ndex2tone i ndex2tone i ndex2tonei ndex2tonei ndex2toneindex2toneindex2tone i ndex2tone i ndex2tone i ndex2tone i ndex2tone i ndex2tone i ndex2tone i ndex2tone i ndex2tone i ndex2tone i ndex2toneindex2=0101;when 71二toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2=1010;when 120二toneindex2=1010;when 121二toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2tone i ndex2tonei ndex2tone i ndex2tone i ndex2tone i ndex2tone i ndex2tone i ndex2tone i ndex2tone i ndex2tone i ndex2tone i ndex2tone i ndex2tone i ndex2tone i ndex2tone i ndex2tone i ndex2tone i ndex2tone i ndex2tone i ndex2tone i ndex2tone i ndex2tone i ndex2tone i ndex2tone i ndex2tone i ndex2tone i ndex2tone i ndex2tone i ndex2tone i ndex2tone i ndex2tone i ndex2tone i ndex2toneindex2tonei ndex2toneindex2tonei ndex2toneindex2tonei ndex2toneindex2tonei ndex2toneindex2tonei ndex2toneindex2tonei ndex2toneindex2tonei ndex2toneindex2tonei ndex2tone i ndex2tone i ndex2tone i ndex2toneindex2tone i ndex2tone i ndex2tone i ndex2tone i ndex2tone i ndex2tone i ndex2toneindex2tonei ndex2toneindex2tonei ndex2toneindex2tonei ndex2toneindex2tonei ndex2tone i ndex2tone i ndex2tone i ndex2tone i ndex2tone i ndex2tone i ndex2tone i ndex2tone i ndex2toneindex2tonei ndex2toneindex2tonei ndex2toneindex2tonei ndex2toneindex2tonei ndex2toneindex2tonei ndex2toneindex2tonei ndex2toneindex2tonei ndex2toneindex2tonei ndex2toneindex2tonei ndex2toneindex2tonei ndex2toneindex2tonei ndex2=0110;when others=null;end case;elsif d=1thencase counter? iswhen 0二toneindex2=1000;when 1二toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2tonei ndex2toneindex2tone i ndex2toneindex2tone i ndex2toneindex2二”1001”; when 48=tonei ndex2tone i ndex2tone i ndex2tone i ndex2tone i ndex2toneindex2二”1001”; when 54=tonei ndex2tone i ndex2tone i ndex2toneindex2tone i ndex2toneindex2二”1001”; when 60=tonei ndex2ton
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 图纸设计 > 毕设全套


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!