基于数控分频器的乐曲硬件演奏电路设计分析_第1页
基于数控分频器的乐曲硬件演奏电路设计分析_第2页
基于数控分频器的乐曲硬件演奏电路设计分析_第3页
基于数控分频器的乐曲硬件演奏电路设计分析_第4页
基于数控分频器的乐曲硬件演奏电路设计分析_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、学号 成绩评语EDA 计算机辅助与分析课程论文题目: 基于数控分频器的乐曲硬件演奏 电路设计作 者:院 别:专 业:完成时间: 2014 年 6 月 18 日目录设计要求 错误!未定义书签。1、实验目的 错误!未定义书签。2 乐曲演奏电路原理 13 音乐硬件演奏电路的实验内容 13.1 定制音符数字 ROM 13.2 根据电路图完成电路设计 23.3 硬件验证 43.4 填入新的乐曲 64 实验报告 错误!未定义书签。5 扩大乐曲硬件演奏电路的通用性 95.1 完善分频预置数模块的功能 96 设计总结与心得体会 12参考文献 131、 实验目的:学习利用数控分频器设计硬件乐曲演奏电路。2、实验

2、原理:主系统由 3个模块组成, TONETABA.VHD 、NOTETABS.VHD 和 SPEAKER.VHD 。音符的频率可以由 SPEAKER获A 得,这是一个数控分频器; 音符的持续时间须根据乐曲的速度及每个音符的节拍数来确定模块TONETAB的A功能首先是为 SPEAKER提A 供决定所发音符的分频预置数,而此数在 SPEAKER输 入口停留的时间即为此音符的节拍值。在 NOTETAB中S设置了一个 8 位二进制计 数器(计数最大值为 138),这个计数器的计数频率选为 4Hz,即每一计数值的停留时间为 0.25 秒,恰为当全音符设为 1 秒时,四四拍的四分音符持续时间3、实验内容3

3、.1:定制例 9-32 的 NoteTabs模块中的音符数据 ROM“music ”。该 ROM 中 的音符数据已列在例 9-33 中。注意该例数据表中的数据位宽、深度和数据的表 达类型。此外,为了节省篇幅,例中的数据都横排了,实用中应该以每一分号为 一行来展开,否则会出错。最后对该 ROM 进行仿真,确认例 9-33 中的音符数据已经进入 ROM 中。【例 9-33 】WIDTH = 4 ; - “梁祝”乐曲演奏数据 DEPTH = 256 ;ADDRESS_RADIX = DEC ; DATA_RADIX = DEC ;CONTENT BEGIN - 注意实用文件中要展开以下数据,每一组占

4、一行 00: 3 ; 01: 3 ; 02: 3 ; 03: 3; 04: 5; 05: 5; 06: 5;07: 6; 08: 8; 09: 8;10: 8 ; 11: 9 ; 12: 6 ; 13: 8; 14: 5; 15: 5; 16: 12;17: 12;18: 12; 19:15; 20:13 ; 21:12 ; 22:10 ; 23:12; 24: 9; 25: 9; 26: 9; 27: 9; 28: 9; 29: 9;30: 9 ; 31: 0 ; 32: 9 ; 33: 9; 34: 9; 35:10; 36: 7; 37: 7; 38: 6; 39: 6;40: 5 ;

5、41: 5 ; 42: 5 ; 43: 6; 44: 8; 45: 8; 46: 9; 47: 9; 48: 3; 49: 3;50: 8 ; 51: 8 ; 52: 6 ; 53: 5; 54: 6; 55: 8; 56: 5; 57: 5; 58: 5; 59: 5;60: 5 ; 61: 5 ; 62: 5 ; 63: 5; 64:10; 65:10; 66:10; 67:12; 68: 7; 69: 7;70: 9 ; 71: 9 ; 72: 6 ; 73: 8; 74: 5; 75: 5; 76: 5; 77: 5; 78: 5; 79: 5;80: 3 ; 81: 5 ; 82:

6、3 ; 83: 3; 84: 5; 85: 6; 86: 7; 87: 9; 88: 6; 89: 6;90: 6 ; 91: 6 ; 92: 6 ; 93: 6; 94: 5; 95: 6; 96: 8; 97: 8; 98: 8; 99: 9; 100:12 ;101:12 ;102:12 ;103:10;104: 9;105: 9;106:10;107: 9;108: 8;109: 8; 110: 6 ;111: 5 ;112: 3 ;113: 3;114: 3;115: 3;116: 8;117: 8;118: 8;119: 8; 120: 6 ;121: 8 ;122: 6 ;123

7、: 5;124: 3;125: 5;126: 6;127: 8;128: 5;129: 5; 130: 5 ;131: 5 ;132: 5 ;133: 5;134: 5;135: 5;136: 0;137: 0;138: 0; END ;3.2:根据给出的乐曲演奏电路原理图及其各模块的 VHDL 描述,在 QuartusII 上完成全部设计,包括编辑、编译、综合和仿真操作等。给出仿真波形,并作出 详细说明。编辑3仿真图3. 3:硬件验证。先将引脚锁定,使 CLK12MHz 与 clock9 相接,接受 12MHz时钟频率(用短路帽在 clock9接“12MHz”);CLK8Hz 与 clock

8、2相接,接受 4Hz 频率;发音输出 SPKOUT接 Speaker;与演奏发音相对应的简谱码输出显示可由CODE1 在数码管 5显示; HIGH1 为高八度音指示,可由发光管 D5 指示,最后 向目标芯片下载适配后的 SOF 逻辑设计文件。实验电路结构图为 NO.1。4结构图信号 / 与芯片引脚对照表结构图 上的信 号名Cyclone 系 列的 EP1C3TC144 芯片引脚号结构图 上的信 号名Cyclone 系 列的 EP1C3TC144 芯片引脚号结构图上的信号名Cyclone 系 列的 EP1C3TC144 芯片引脚号PIO01PIO12PIO3172PIO71119PIO23PIO

9、3273PIO72114PIO34PIO3374PIO73113PIO45PIO3475PIO74112PIO56PIO3576PIO75111PIO67PIO3677PIO76143PIO710PIO3778PIO77144PIO811PIO3883PIO78110PIO932PIO3984PIO79109PIO1033PIO4085SPEAKER129PIO1134PIO4196CLOCK093PIO1235PIO4297CLOCK217PIO1336PIO4398CLOCK5165PIO1437PIO4499CLOCK992PIO1538PIO45103PIO1639PIO46105PI

10、O1740PIO47106PIO1841PIO48107PIO1942PIO49108PIO2047PIO60131PIO2148PIO61132PIO2249PIO62133PIO2350PIO63134PIO2451PIO64139PIO2552PIO65140PIO2667PIO66141PIO2768PIO67142PIO2869PIO68122PIO2970PIO69121PIO3071PIO70120锁定引脚3.4:填入新的乐曲,如 “采茶舞曲 ”、或其它熟悉的乐曲。操作步骤如下:a、根据所填乐曲可能出现的音符, 修改例 9-3 的音符数据表格, 同时注意每 一音符的节拍长短;b、

11、如果乐曲比较长, 可增加模块 NOTETABA 中计数器的位数, 如 9 位时可 达 512 个基本节拍。4 实验报告:用仿真波形和电路原理图,详细叙述硬件电子琴的工作原理及其 4 个 VHDL 文件中相关语句的功能,叙述硬件实验情况。参考程序如下:LIBRARY IEEE; - 硬件演奏电路顶层设计 USE IEEE.STD_LOGIC_1164.ALL;ENTITY Songer ISPORT ( CLK12MHZ : IN STD_LOGIC;- 音调频率信号CLK8HZ : IN STD_LOGIC;- 节拍频率信号CODE1 : OUT STD_LOGIC_VECTOR (3 DOW

12、NTO 0);-简谱码输出显示HIGH1 : OUT STD_LOGIC; -高 8 度指示SPKOUT : OUT STD_LOGIC );-声音输出END;ARCHITECTURE one OF Songer ISCOMPONENT NoteTabsPORT ( clk : IN STD_LOGIC;ToneIndex : OUT STD_LOGIC_VECTOR (3 DOWNTO 0) );END COMPONENT;COMPONENT ToneTabaPORT ( Index : IN STD_LOGIC_VECTOR (3 DOWNTO 0) ;CODE : OUT STD_LOG

13、IC_VECTOR (3 DOWNTO 0) ;HIGH : OUT STD_LOGIC;Tone : OUT STD_LOGIC_VECTOR (10 DOWNTO 0) );END COMPONENT;COMPONENT SpeakeraPORT ( clk : IN STD_LOGIC;Tone : IN STD_LOGIC_VECTOR (10 DOWNTO 0);SpkS : OUT STD_LOGIC );END COMPONENT;SIGNAL Tone : STD_LOGIC_VECTOR (10 DOWNTO 0);SIGNAL ToneIndex : STD_LOGIC_V

14、ECTOR (3 DOWNTO 0);BEGINu1 : NoteTabs PORT MAP (clk=CLK8HZ, ToneIndex=ToneIndex);u2 : ToneTaba PORT MAP (Index=ToneIndex,Tone=Tone,CODE=CODE1,HIGH=HIGH1);u3 : Speakera PORT MAP(clk=CLK12MHZ,Tone=Tone, SpkS=SPKOUT );END;【例 9-30 】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL

15、;ENTITY Speakera ISPORT ( clk : IN STD_LOGIC;Tone : IN STD_LOGIC_VECTOR (10 DOWNTO 0);SpkS : OUT STD_LOGIC );END;ARCHITECTURE one OF Speakera ISSIGNAL PreCLK, FullSpkS : STD_LOGIC;BEGINDivideCLK : PROCESS(clk)VARIABLE Count4 : STD_LOGIC_VECTOR (3 DOWNTO 0) ;BEGINPreCLK 11 THEN PreCLK = 1; Count4 :=

16、0000;ELSIF clkEVENT AND clk = 1 THEN Count4 := Count4 + 1;END IF;END PROCESS;GenSpkS : PROCESS(PreCLK, Tone)- 11位可预置计数器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; FullSp

17、kS = 0; END IF;END IF;END PROCESS;DelaySpkS : PROCESS(FullSpkS)- 将输出再 2 分频,展宽脉冲,使扬声器有足够功率发音VARIABLE Count2 : STD_LOGIC;BEGINIF FullSpkSEVENT AND FullSpkS = 1 THEN Count2 := NOT Count2;IF Count2 = 1 THEN SpkS = 1;ELSE SpkS Tone=11111111111 ; CODE=0000; HIGH Tone=01100000101 ; CODE=0001; HIGH Tone=011

18、10010000 ; CODE=0010; HIGH Tone=10000001100 ; CODE=0011; HIGH Tone=10010101101 ; CODE=0101; HIGH Tone=10100001010 ; CODE=0110; HIGH Tone=10101011100 ; CODE=0111; HIGH Tone=10110000010 ; CODE=0001; HIGH Tone=10111001000 ; CODE=0010; HIGH Tone=11000000110 ; CODE=0011; HIGH Tone=11001010110 ; CODE=0101

19、; HIGH Tone=11010000100 ; CODE=0110; HIGH Tone=11011000000 ; CODE=0001; HIGH NULL;END CASE;END PROCESS;END;【例 9-32 】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY NoteTabs ISPORT ( clk : IN STD_LOGIC;ToneIndex : OUT STD_LOGIC_VECTOR (3 DOWNTO 0) );END;ARCHITECTURE on

20、e OF NoteTabs ISCOMPONENT MUSIC - 音符数据 ROMPORT(address : IN STD_LOGIC_VECTOR (7 DOWNTO 0);inclock : IN STD_LOGIC ;q : OUT STD_LOGIC_VECTOR (3 DOWNTO 0);END COMPONENT;SIGNAL Counter : STD_LOGIC_VECTOR (7 DOWNTO 0);BEGINCNT8 : PROCESS(clk, Counter)BEGINIF Counter=138 THEN Counter = 00000000;ELSIF (clk

21、EVENT AND clk = 1) THEN Counter Counter , q=ToneIndex, inclock=clk); END;5 扩大乐曲硬件演奏电路的通用性前面所设计的电路只能演奏”两只老虎”曲子, 但是在实际应用中 , 若能将 电路实用于各种曲子的演奏, 它的实用性和应用范围就会扩大许多。 这里主要通 过修改分频预置数模块的程序, 使其实用于各种曲子的演奏。 另外要使更改乐曲 方便,主要通过重新设置音符数据文件,再对其进行 LPM-ROM定制。5.1 完善分频预置数模块的功能在前面的 VHDL设计中,我们只能通过程序输出”两只老虎”曲子中的 13 个音符的分频预置数(即

22、计数初值) ,但是在其它的乐曲中可能会用到另外的那 些音符,因此对程序进行修改完善它的功能, 使其能输出另外那些音符的分频预 置数。程序修改如下:Library ieee;Use ieee.std_logic_1164.all;Entity tonetaba isPort( index : in std_logic_vector(4 downto 0); code : out std_logic_vector(4 downto 0); high : out std_logic;tone : out std_logic_vector(10 downto 0);End;Architecture o

23、ne of tonetaba isBeginSearch : process(index)BeginCase index isWhen 00000=tone=11111111111;code=00000;hightone=01100000101;code=00001;hightone=01110010000;code=00010;hightone=10000001100;code=00011;hightone=10000110101;code=00100;hightone=10010101101;code=00101;hightone=10100001010;code=00110;highto

24、ne=10101011100;code=00111;hightone=10110000010;code=01000;hightone=10111001000;code=01001;hightone=11000000110;code=01010;hightone=11000101000;code=01011;hightone=11001010110;code=01100;hightone=11010000100;code=01101;hightone=11010110101;code=01110;hightone=11011000000;code=10001;hightone=11011101010;code=10010;hightone=11100000111;code=10011;hightone=11100010110;code=10100;hightone=11100101111;code=10101;hightone=11101000110;code=10110;hightone=11101011010;code=10111;high null;End case;End process;End;将其设为当前工程,并选用 cyclone 为目标芯片对其进行编译和仿真。完善后模块的功能是输出所有音符所对应的分频预置数。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论