第4章 应用VHDL设计数字系统-电子琴和音乐播放器的设计.ppt_第1页
第4章 应用VHDL设计数字系统-电子琴和音乐播放器的设计.ppt_第2页
第4章 应用VHDL设计数字系统-电子琴和音乐播放器的设计.ppt_第3页
第4章 应用VHDL设计数字系统-电子琴和音乐播放器的设计.ppt_第4页
第4章 应用VHDL设计数字系统-电子琴和音乐播放器的设计.ppt_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

1、EDA技术及其应用,第4章 应用VHDL设计数字系统,项目1:电子琴的设计,设计目标: 设计一个电子琴,具有8个按键,当按下某一个按键的时候,能够演奏8个音符之一:1、2、3、4、5、6、7、H1 视频演示 知识点: 熟练掌握计数器的设计方法; 熟练掌握可变分频器的设计方法; 熟练掌握IF语句的使用; 熟练掌握CASE语句的使用;,项目1:电子琴的设计,项目分析: 设计问题1:如何发出不同音调的声音?,设计关键1: 可变分频器/数控分配器。,项目1:电子琴的设计,项目分析: 设计问题2:按下不同按键时,如何得到不同的分频数? 设计关键2: 向可变分频器(数控分配器)提供分频数字,需要一个“按键

2、”到“分频数”的转换模块。,?,项目1:电子琴的设计,项目分析: 设计关键1: 可变分频器(数控分配器)!,项目1:电子琴的设计,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CNT10 IS PORT ( CLK,RST,EN : IN STD_LOGIC; CNT: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); COUT : OUT STD_LOGIC ); END CNT10;,知识回顾:10进制计数器设计,项目1:电子琴的设计,ARCHITECT

3、URE behav OF CNT10 IS BEGIN PROCESS(CLK, RST, EN) VARIABLE CNTI : STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN IF RST = 1 THEN CNTI := (OTHERS =0) ; -计数器异步复位 ELSIF CLKEVENT AND CLK=1 THEN -检测时钟上升沿 IF EN = 1 THEN -检测是否允许计数(同步使能) IF CNTI 0); -大于等于9,计数值清零 END IF; END IF; END IF; IF CNTI = 9 THEN COUT = 1; -计数等于

4、9,输出进位信号 ELSE COUT = 0; END IF; CNT = CNTI; -将计数值向端口输出 END PROCESS; END behav;,知识回顾:10进制计数器设计,仿真结果:10进制计数器设计,结论: 计数器就可以完成分频器的任务!,项目1:电子琴的设计,项目1:电子琴的设计,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CNT_N IS PORT ( CLK,RST,EN : IN STD_LOGIC; N: IN STD_LOGIC_VECTOR(

5、11 DOWNTO 0); CNT: OUT STD_LOGIC_VECTOR(11 DOWNTO 0); COUT : OUT STD_LOGIC ); END CNT_N;,设计关键:N进制计数器设计可变分频器,项目1:电子琴的设计,ARCHITECTURE behav OF CNT_N IS BEGIN PROCESS(CLK, RST, EN) VARIABLE CNTI : STD_LOGIC_VECTOR(11 DOWNTO 0); BEGIN IF RST = 1 THEN CNTI := (OTHERS =0) ; -计数器异步复位 ELSIF CLKEVENT AND CLK

6、=1 THEN -检测时钟上升沿 IF EN = 1 THEN -检测是否允许计数(同步使能) IF CNTI 0); -大于等于N-1,计数值清零 END IF; END IF; END IF; IF CNTI = N-1 THEN COUT = 1; -计数等于N-1,输出进位信号 ELSE COUT = 0; END IF; CNT = CNTI; -将计数值向端口输出 END PROCESS; END behav;,设计关键:N进制计数器设计可变分频器,设计关键:N进制计数器设计可变分频器,结论: COUT实现了N分频, 但是占空比是1/N,能量不足,无法驱动蜂鸣器工作。,N分频,占空

7、1/N,项目1:电子琴的设计,项目1:电子琴的设计,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CNT_N IS PORT ( CLK,RST,EN : IN STD_LOGIC; N: IN STD_LOGIC_VECTOR(11 DOWNTO 0); CNT: OUT STD_LOGIC_VECTOR(11 DOWNTO 0); COUT : OUT STD_LOGIC ); END CNT_N;,设计关键: 改进的N进制计数器可变分频器 COUT占空比50%,项目1:

8、电子琴的设计,ARCHITECTURE behav OF CNT_N IS BEGIN PROCESS(CLK, RST, EN) VARIABLE CNTI : STD_LOGIC_VECTOR(11 DOWNTO 0); BEGIN IF RST = 1 THEN CNTI := (OTHERS =0) ; -计数器异步复位 ELSIF CLKEVENT AND CLK=1 THEN -检测时钟上升沿 IF EN = 1 THEN -检测是否允许计数(同步使能) IF CNTI 0); -大于等于N/2,计数值清零 END IF; END IF; END IF; IF CNTI CONV_

9、INTEGER(N)/2 THEN COUT = 0; ELSE COUT = 1; END IF; CNT = CNTI; COUT = COUTI; -将计数值向端口输出 END PROCESS; END behav;,设计关键: 改进的N进制计数器可变分频器 COUT占空比50%,占空比非50%,占空比接近50%,结论: COUT实现了N分频, 当N比较大时,占空比是接近50%,能量足以驱动蜂鸣器工作。,设计关键: 改进的N进制计数器可变分频器 COUT占空比50%,项目1:电子琴的设计,项目1:电子琴的设计,项目分析: 设计关键2: 向可变分频器(数控分配器)提供分频数字,需要一个“按

10、键”到“分频数”的转换模块。,项目1:电子琴的设计,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY converter IS PORT ( key : IN STD_LOGIC_VECTOR (7 DOWNTO 0) ; en : OUT STD_LOGIC; div_num : OUT integer range 0 to 4095; CODE : OUT STD_LOGIC_VECTOR (3 DOWNTO 0) ; HIGH : OUT STD_LOGIC ); END

11、entity converter ;,设计关键2: “按键”到“分频数”的转换模块。,项目1:电子琴的设计,ARCHITECTURE one OF converter IS BEGIN PROCESS(converter ) BEGIN CASE key IS - 译码电路,查表方式,控制音调的预置数 WHEN 00000000 = div_num div_num div_num div_num div_num div_num div_num div_num div_num div_num=0 ; en = 0; CODE=0000; HIGH =0; - 同时按多个键,0Hz,不响 END

12、CASE; END PROCESS; END one;,设计关键2: “按键”到“分频数”的转换模块。,项目1:电子琴的设计,设计关键2: “按键”到“分频数”的转换模块。,设计关键3: 在顶层原理图中组装各个功能模块。,项目1:电子琴的设计,思考: 原理图作为顶层设计文件有什么优点和缺点? 如何使用“元件例化”语句完成模块调用和信号线连接,顶层程序设计怎样设计?VHDL程序作为顶层设计有什么优缺点?,4.3 1位全加器的VHDL描述,4.3.1 半加器描述,LIBRARY IEEE; -1位二进制全加器顶层设计描述 USE IEEE.STD_LOGIC_1164.ALL; ENTITY f_

13、adder IS PORT (ain,bin,cin : IN STD_LOGIC; cout,sum : OUT STD_LOGIC ); END ENTITY f_adder; ARCHITECTURE fd1 OF f_adder IS COMPONENT h_adder -调用半加器声明语句 PORT ( a,b : IN STD_LOGIC; co,so : OUT STD_LOGIC); END COMPONENT ; COMPONENT or2a PORT (a,b : IN STD_LOGIC; c : OUT STD_LOGIC); END COMPONENT; SIGNAL

14、 d,e,f : STD_LOGIC; -定义3个信号作为内部的连接线。 BEGIN u1 : h_adder PORT MAP(a=ain,b=bin,co=d,so=e); -元件例化语句 u2 : h_adder PORT MAP(a=e, b=cin, co=f,so=sum); u3 : or2a PORT MAP(a=d, b=f, c=cout); END ARCHITECTURE fd1;,项目1:电子琴的设计总结,知识点回顾: IF语句的使用; CASE语句的使用; 计数器的设计; 可变分频器的设计;,项目1:电子琴的设计总结,知识点回顾: IF语句的使用; IF语句既可以描

15、述组合电路,也可以描述时序电路; 完整条件IF语句用来描述组合电路;,IF s = 0 THEN y = a ; ELSE y = b ; END IF;,IF CLKEVENT AND CLK = 1 THEN CNT = CNT + 1 ; END IF;,不完整条件IF语句用来描述时序电路;,项目1:电子琴的设计总结,知识点回顾: CASE语句的使用; CASE语句最适合于描述译码器电路; 不完整的CASE语句会生成不必要的锁存器;,CASE key IS - 译码电路,查表方式,控制音调的预置数 WHEN 00000000 = div_num div_num div_num div_n

16、um div_num div_num div_num div_num div_num div_num=0 ; en = 0; CODE=0000; HIGH =0; - 同时按多个键,0Hz,不响 END CASE;,项目1:电子琴的设计总结,知识点回顾: 计数器的设计; 可变分频器的设计;,项目2:音乐播放器的设计,设计目标: 设计一个音乐播放器,可以播放一首歌曲; 拓展设计: 设计一个音乐播放器,可以播放多首歌曲; 具有“播放/停止”、“暂停播放”和2个按键; 当第一次按下“播放/停止”按键的时候,能够重头开始演奏一首动听的乐曲,第二次按下键,就停止播放; 当按下“暂停播放”按键的时候能够

17、在暂停演奏和继续演奏之间切换;,项目2:音乐播放器的设计,存储和读音符模块,频率转换模块,数控分频模块,项目2:音乐播放器的设计,4-5 乐曲硬件演奏电路设计,ROM中的数据文件music.mif WIDTH = 4 ; -“梁祝”乐曲演奏数据 DEPTH = 256 ; ADDRESS_RADIX = DEC ; DATA_RADIX = DEC ; CONTENT BEGIN -注意实用文件中要展开以下数据,每一组占一行 00: 3 ; 01: 3 ; 02: 3 ; 03: 3; 04: 5; 05: 5; 06: 5;07: 6; 08: 8; 09: 8; 10: 8 ; 11: 9

18、 ; 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 ; 41: 5 ; 42: 5 ; 43: 6; 44: 8; 45: 8; 46: 9; 47: 9; 48: 3; 49: 3; 50: 8 ; 51: 8 ; 52:

19、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: 3 ; 83: 3; 84: 5; 85: 6; 86: 7; 87: 9; 88: 6; 89: 6; 90: 6 ; 91: 6 ; 92: 6 ; 93:

20、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: 5;124: 3;125: 5;126: 6;127: 8;128: 5;129: 5; 130: 5 ;131: 5 ;132: 5 ;133: 5;13

21、4: 5;135: 5;136: 0;137: 0;138: 0; END ;,设计关键1:存储和读音符模块,项目2:音乐播放器的设计,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY NoteTabs IS PORT ( clk : IN STD_LOGIC; ToneIndex : OUT STD_LOGIC_VECTOR (3 DOWNTO 0) ); END; ARCHITECTURE one OF NoteTabs IS COMPONENT MUSIC -音符数据ROM

22、 PORT(address : IN STD_LOGIC_VECTOR (7 DOWNTO 0); clock : IN STD_LOGIC ; q : OUT STD_LOGIC_VECTOR (3 DOWNTO 0) ); END COMPONENT; SIGNAL Counter : STD_LOGIC_VECTOR (7 DOWNTO 0); BEGIN PROCESS(clk, Counter) BEGIN IF (clkEVENT AND clk = 1) THEN IF Counter=138 THEN Counter Counter , clock=clk, q=ToneInd

23、ex ); END;,设计关键1:存储和读音符模块,项目2:音乐播放器的设计,设计关键2:频率转换模块,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY ToneTaba IS PORT (Index : IN STD_LOGIC_VECTOR (3 DOWNTO 0) ; CODE : OUT STD_LOGIC_VECTOR (3 DOWNTO 0) ; HIGH : OUT STD_LOGIC; en : OUT STD_LOGIC; div_num:OUTinteger range 0 to 4095 ); END; CASE Inde

24、x IS - 译码电路,查表方式,控制音调的预置数 WHEN 0001 = div_num div_num div_num div_num div_num div_num div_num div_num div_num div_num div_num div_num div_num div_num div_num div_num=0 ; en = 0; CODE=0000; HIGH =0;- 不响 END PROCESS; END;,项目2:音乐播放器的设计,设计关键3:数控分频模块,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.ST

25、D_LOGIC_UNSIGNED.ALL; ENTITY Speakera IS PORT ( CLK_1500kHz: IN STD_LOGIC; EN: IN STD_LOGIC; div_num: IN integer range 0 to 4095; Speaker: OUT STD_LOGIC ); END; ARCHITECTURE one OF Speakera IS BEGIN PROCESS(CLK_1500kHz, EN) VARIABLE CQI : integer range 0 to 4095; VARIABLE Speaker_reg : STD_LOGIC; BE

26、GIN IF CLK_1500kHzEVENT AND CLK_1500kHz=1 THEN-检测时钟上升沿 IF EN = 1 THEN -检测是否允许计数(同步使能) IF CQI = 0 THEN CQI := div_num/2 - 1; Speaker_reg := not Speaker_reg; ELSE CQI := CQI - 1; END IF; END IF; END IF; Speaker = Speaker_reg; END PROCESS; END;,项目2:音乐播放器的设计,存储和读音符模块,频率转换模块,数控分频模块,请写出对应的元件例化语句,设计关键4:组合子模块,生成songer模块,项目2:音乐播放器的设计,存储和读音符模块,频率转换模块,数控分频模块,设计关键4:组合子模块,生成songer模块,项目2:音乐播放器的设计,设计关键5:分频模块,产生4Hz

温馨提示

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

评论

0/150

提交评论