音乐流水灯报告_第1页
音乐流水灯报告_第2页
音乐流水灯报告_第3页
音乐流水灯报告_第4页
音乐流水灯报告_第5页
已阅读5页,还剩80页未读 继续免费阅读

下载本文档

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

文档简介

1、 1如。又考音乐流水灯1.绪论1.1 eda简介eda是电子设计自动化(electronic design automation )的缩写,在 20 世纪60年代中期从计算机辅助设计(cad、计算机辅助制造(cam、计算机辅 助测试(cat和计算机辅助工程(cae的概念发展而来的。edak术就是以计算机为工具,设计者在 eda软件平台上,用硬件描述语言 hdl完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优 化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下 载等工作。edak术的出现,极大地提高了电路设计的效率和可操作性,减轻了 设计者的劳动强度。利用e

2、dax具,电子设计师可以从概念、算法、协议等开始设计电子系统, 大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计 出ic版图或pcbk图的整个过程的计算机上自动处理完成。现在对eda的概念或范畴用得很宽。包括在机械、电子、通信、航空航天、化工、矿产、生物等各 个领域,都有eda的应用。1.2 硬件描述语vhdl硬件描述语言(hdl)是一种用于设计硬件电子系统的计算机语言,它用软件 编程的方式来描述电子系统的逻辑功能、电路结构和连接形式,与传统的门级描述方式相比,它更适合大规模系统的设计。例如一个32位的加法器,利用图形输入软件需要输人500至1000个门,而利用vhdl语

3、言只需要书写一行“a=b+c 即可。而且vhdl语言可读性强,易于修改和发现错误。早期的硬件描述语言, 如abel、hdl、ahdl ,由不同的eda厂商开发,互不兼容,而且不支持多 层次设计,层次问翻译工作要由人工完成。为了克服以上不足, 1985年美国国 防部正式推出了高速集成电路硬件描述语言vhdl , 1987年ieee采纳vhdl为硬件描述语言标准(ieee-std-1076)。vhdl是一种全方位的硬件描述语言,包括系统行为级。寄存器传输级和逻 辑门多个设计层次,支持结构、数据流和行为三种描述形式的混合描述,因此 vhdl几乎覆盖了以往各种硬件俄语言的功能,整个自顶向下或由下向上的

4、电路 设计过程都可以用vhdl来完成。vhdl还具有以下优点:(1)vhdl的宽范围描述能力使它成为高层进设计的核心,将设计人员的工 作重心提高到了系统功能的实现与调试,而花较少的精力于物理实现。(2)vhdl可以用简洁明确的代码描述来进行复杂控制逻辑设计,灵活且方 便,而且也便于设计结果的交流、保存和重用。(3)vhdl的设计不依赖于特定的器件,方便了工艺的转换。(4)vhdl是一个标准语言,为众多的eda厂商支持,因此移植性好。美国于1981年提出了一种新的、标准化的 hdl,称之为vhsic(very high speed integrated circuit) hardware des

5、cription language 简称 vhdl 。 这是种 用形式化方法来描述数字电路和设计数字逻辑系统的语言。设计者可以利用这种 语言来描述自己的设计思想,然后利用电子设计自动化工具进行仿真, 再自动综 合到门电路,最后用pld实现其功能。fpga/cpld电路设计的一般流程:通常可将设计流程归纳为以下7个步骤。第1步:设计输入。在传统设计中,设计人员是应用传统的原理图输入方法 来开始设计的。自90年代初,verilog、vhdl、ahdl等硬件描述语言的输入 方法得到了广大工程设计人员的认可。第2步:前仿真。所设计的电路必须在布局布线前验证,目的主要是在仿真时,验证电路功能是否有效。在

6、 asic设计中,这一步骤称为第一次 sign-off.第3步:设计输入编译。设计输入之后就有一个从高层次系统行为设计向低 层次门级逻辑电路的转化翻译过程,即把设计输入的某种或某几种数据格式(网表)转化为底层软件能够识别的某种数据格式(网表),以求达到与其工艺无关。第4步:设计输入的优化。对于上述综合生成的网表,根据布尔方程功能等 效的原则,用更小更快的综合结果替代一些复杂的单元, 并与指定的库映射生成 新的网表,这是硬件描述语言输入方式中减小电路规模的一条必由之路。第5步:布局布线。当初步的仿真被验证后,就开始布局布线。这一步可相 对规划出asic和fpga/cpld设计。第3页共80页音乐

7、流水灯rc参数再©为"士才第6步:后仿真。设计人员需要利用在布局线中获得的更精确的 次验证电路的功能和时序。在 asic设计中,这一步骤称为第二次 signoff。第7步:流片。在布局布线和后仿真完成之后,当需要大批量生产该芯片时, 就可以开始asic芯片的投产。1.3 软件介绍quartus ii是altera公司的综合性 pld开发软件,支持原理图、 vhdl、 veriloghdl 以及 ahdl (altera hardware description language 等多种设计输入 形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整 pld设计

8、流程。quartus ii可以在xp、linux以及unix上使用,除了可以使用tcl脚本完成 设计流程外,提供了完善的用户图形界面设计方式。 具有运行速度快,界面统一, 功能集中,易学易用等特点。quartus ii支持altera的ip核,包含了 lpm/megafunction宏功能模块库, 使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。对第 三方eda工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三 方eda工具。此外,quartus ii通过和dsp builder工具与 matlab/simulink相结合,可以 方便地实现各种dsp应用系统;支持a

9、ltera的片上可编程系统(sopc)开发, 集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发 平台。maxplus ii作为altera的上一代pld设计软件,由于其出色的易用性而得 到了广泛的应用。altera在quartus ii中包含了许多诸如 signaltap ii、chip editor 和rtl viewer的设计辅助工具,集成了 sopc和hardcopy设计流程,并且继承 了 maxplus ii友好的图形界面及简便的使用方法。altera quartus ii作为一种可编程逻辑的设计环境,由于其强大的设计能力 和直观易用的接口,越来越受到数字系统设计

10、者的欢迎。第#页共80页 1如。又考音乐流水灯1.4 硬件介绍cyclone 器件:cyclone现场可编程门阵列系列基于 1.5v、0.13 pm全铜层sram工艺,其 密度增加至20060个逻辑元件(le), ram增加至228kb。它具有生成时钟的 锁相环以及ddr sdr和快速ram ( fcram )存储器所需的专用双数据率(ddr) 接口等。cyclone器件支持多种i/o标准,包括640mbps的lvds ,以及频率为 33mhz和66mhz、数据宽度为32位和64位的pci。cyclone器件可以实现nios ii嵌入式处理器,而且只占用不到600个逻辑单 元(le),因此在含

11、多达20260个le的最大cyclone器件中,可以将多个nios ii 处理器集成到一个cyclone器件中。nios ii系列嵌入式处理器以第一代 nios处 理器为基础,提供三种内核来满足嵌入式处理器的应用。设计者可以从高性能内核(超过200 dmips)、低成本内核(代于50美分的逻辑资源消耗)和性价比平 衡的标准内核中进行选择。开发人员通过向nios ii处理器指令集中增加定制指令,可以加速软件算法。 定制指令可以在一个时钟周期的时间内完成复杂的处理任务,为系统优化提供了一种高性价比的解决方案。用户添加的定制指令可以该问存储器和nios ii系统外部的逻辑,提供了高效、灵活的访问数据

12、和逻辑资源的能力。定制指令允许设 计者灵活、轻便地设计高端软件,同时保留了并行硬件操作在可编程逻辑器件 (pld)中的性能优势。1.5 课题研究在本课程设计中使用 altera公司的ep2c35系列的fpga芯片,利用 sopc-niosii-ep2c35f发板上的资源,实现一个音乐流水灯。本设计的任务 要求通过编程实现一段音乐旋律的循环播放,在音乐播放的过程中,流水灯 根据旋律闪烁。1.5.1 课题研究内容主要内容:在本课程设计中使用altera公司的ep2c35系列的ep2c35f484c7 -fpga芯 片,利用sopc-niosii-ep2c35开发板上的资源,实现一个音乐流水灯。本设

13、计 的任务要求通过编程实现一段音乐旋律的循环播放,在音乐播放的过程中,流水 灯根据旋律闪烁。扩展内容:1利用数码管显示播放时间2利用16*16点阵显示播放歌曲名称3利用4x4键盘阵列键盘实现播放歌曲的切换4利用液晶显示频谱分析1.5.2 课题研究方法1.5.2.1 理论依据根据设计要求分析系统功能,掌握设计中所需理论(音乐模块的设计,流水 灯模块的设计,16*16点阵模块的设计,按键选择模块的设计,音乐播放时间模 块的设计),阐述设计原理。1.5.2.2 音乐模块基本原理:组成乐曲的每个音符的频率值以及持续时间是乐曲能连续演奏所 需的基本数据。并将简单音乐的相应程序加载到蜂鸣器模块中,使其能够

14、按照音 乐的节奏发声。1.5.2.3 流水灯模块通过对流水灯模块的编程控制,使其实现随着简单音乐的节奏有规律的进行 点亮和熄灭。1.5.2.4 16*16 点阵模块16*16点阵的行为扫描选通信号、列为数据输入。显示采用逐行列扫描方式, 数据端不断输入数据,行扫描按一定顺序逐行选通,扫描一个周期(16次)产生一帧画面。使其实现在按键选择播放相应简单音乐时,16*16点阵循环显示播放歌曲的名字。第7页共80页 1如。又考音乐流水灯音乐流水灯© 乂力”又考1.5.2.5 按键选择模块由于4*4矩阵键盘模块、数码管模块与16*16点阵模块的引脚有相同的,所 以不能在有数码管模块与16*16

15、点阵模块的功能时同时用4*4矩阵键盘模块控制 简单歌曲的切换。因此,我将采用拨动开关模块控制简单歌曲的切换。1.5.2.6 音乐播放时间模块当音乐开始播放时,八位七段数码管开始从零开始计时,因此通过八位七段 数码管可以知道音乐播放的时间。2课程设计方案及相应原理2.1课程设计总体方案具体总体设计方案见图2.1、图 2.2 :开始扫描16*16点阵读取按键读取按键播放歌曲第9页共80页16*16点阵选择相应代码,显示歌曲名称图2.1总体方案设计流程图(点阵显示+按键选择+流水灯)图2.2总体方案设计流程图(时间显示+按键选择+流水灯)2.2具体设计方法在本节中,将对各个模块的具体设计方法及仿真现

16、象进行阐述,但最后的课 程设计是将好几个模块的设计思路同时同时进行仿真和烧录至开发系统进行验 证的。同时,由于4*4矩阵键盘模块、数码管,g块与16*16点阵模块的引脚有相 同的,所以不能在有数码管模块与16*16点阵模块的功能时同时用4*4矩阵键盘 模块控制简单歌曲的切换。因此,课程设计内容里面要求的部分拓展内容, 将分 为两个程序来实现。2.2.1 音乐模块2.2.1.1 基本原理为了便于理解,首先介绍一下硬件电路的发声原理。 我们知道,声音的频谱 范围约在几十到几千赫兹,若能利用程序来控制fpgac个引脚输出一定频率的矩形波,接上扬声器就能发出相应频率的声音。 而乐曲中的每一音符对应着一

17、个 确定的频率,因此,要想fpgag出不用音符的音调,实际上只要控制它输出相 应音符的频率即可。乐曲都是由一连串的音符组成,因此按照乐曲的乐谱依次输 出这些音符所对应的频率,就可以在扬声器上连续地发出各个音符的音调。而要准确地演奏出一首乐曲,仅仅让扬声器能够发声是不够的,还必须准确地控制乐 曲的节奏,即每个音符的持续时间。由此可见,乐曲中每个音符的发音频率及其 持续的时间是乐曲能够连续演奏的两个基本要素,获取这两个要素所对应的数值以及通过纯硬件的手段来利用这些数值实现所希望乐曲的演奏效果是本实验的 关键。因此要实现在蜂鸣器上播放出有一定规律节奏的简单歌曲,就需要了解各个 音阶的频率,以及怎样将

18、这些频率转换为开发系统以及蜂鸣器能够识别的代码。 具体个音阶的频率见图2.3,以及频率点及音符与音谱对应定义见图2.4:© 如。又考音乐流水灯音名频率/hz酉名频率/hw音名-频率/he低音1261.6_ 1”音】523. 3高将 11045.5低音?293. 7口喑25s7.a高音21174. 7低音三329,6(喑?659,3高有31318.5低音4349. 2n喑469& 5高音41396.9低音53923十音5784高音51568低音6440h音6880高音61760低音74昭9喑7987.8高音71975. 5图2.3各音阶频率表音符对应频率点对应音谱区别高中低音0

19、20470011091112119521312s8314133141514095101479017154171815691291621221016s©3211168942121728521317636214170472图2.4频率点及音符与音谱对应表2.2.1.2 程序及相应电路原理图该模块程序如下所示:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all; 1如。又考音乐流水灯use ieee.std_logic_unsigned.all;entity tkzc isport( clk : in

20、std_logic;-clock signalspk: buffer std_logic; -speaker driverled: outstd_logic_vector(11 downto 0);end tkzc;architecture behave of tkzc issignal tone : std_logic_vector(10 downto 0);signal tone_count : std_logic_vector(10 downto 0);signal tone_index : integer range 0 to 15;signal clk10_count : std_l

21、ogic_vector(17 downto 0);signal time : integer range 0 to 270;signal clk10 : std_logic;beginprocess(clk) -generate 10hz clock signalbeginif(clk'event and clk='1') then clk10_count<=clk10_count+1; if(clk10_count=16#3fff#) then clk10<=not clk10;end if;end if;end process;process(clk10

22、)beginif(clk10'event and clk10='1') thenif(time=270) then time<=0;else time<=time+1;end if;end if;end process;process(clk10)beginif(clk10'event and clk10='1') then case time iswhen 0=>tone_index<=6;when 1=>tone_index<=7;when 2=>tone_index<=8;when 3=>

23、;tone_index<=8;-when 4=>tone_index<=8;when 5=>tone_index<=7;when 6=>tone_index<=8;when 7=>tone_index<=8;- when 8=>tone_index<=10; when 9=>tone index<=10;when 10=>tonewhen 11=>tonewhen 12=>tonewhen 13=>tonewhen 14=>tonewhen 15=>tonewhen 16=>

24、tonewhen 17=>tonewhen 18=>tonewhen 19=>tonewhen 20=>tonewhen 21=>tonewhen 22=>tonewhen 23=>tonewhen 24=>tonewhen 25=>tonewhen 26=>tonewhen 27=>tonewhen 28=>tonewhen 29=>tonewhen 30=>tonewhen 31=>tonewhen 32=>tonewhen 33=>tonewhen 34=>tonewhen 35=

25、>tonewhen 36=>tonewhen 37=>tonewhen 38=>tonewhen 39=>tonewhen 40=>tonewhen 41=>tonewhen 42=>tonewhen 43=>tonewhen 44=>tonewhen 45=>tonewhen 46=>tonewhen 47=>tonewhen 48=>tonewhen 49=>tonendex<=7 ndex<=7 ndex<=7 ndex<=7 ndex<=0 ndex<=0 nd

26、ex<=3 ndex<=3 ndex<=6 ndex<=6 ndex<=6 ndex<=5 ndex<=6 ndex<=6 ndex<=8 ndex<=8 ndex<=5 ndex<=5 ndex<=5 ndex<=5 ndex<=0 ndex<=0 ndex<=3 ndex<=3 ndex<=4 ndex<=4 ndex<=4 ndex<=3 ndex<=4 ndex<=0 ndex<=8 ndex<=8 ndex<=3 ndex&

27、lt;=3 ndex<=3 ndex<=3 ndex<=0 ndex<=9 ndex<=9 ndex<=9 ndex<=7when 50=>tone第11页共80页 1如。又考音乐流水灯when 51=>tone_index<=7;-when 52=>tone_index<=7;when 53=>tone_index<=4;when 54=>tone_index<=4;when 55=>tone_index<=4;-when 56=>tone_index<=7;when 57

28、=>tone_index<=7;when 58=>tone_index<=7;when 59=>tone_index<=7;-when 60=>tone_index<=7;when 61=>tone_index<=7;when 62=>tone_index<=0;when 63=>tone_index<=0;- when 64=>tone_index<=6; when 65=>tone_index<=7;when 66=>tone_index<=8;when 67=>t

29、one_index<=8;-when 68=>tone_index<=8;when 69=>tone_index<=7;when 70=>tone_index<=8;when 71=>tone_index<=8;- when 72=>tone_index<=10; when 73=>tone_index<=10;when 74=>tone_index<=7;when 75=>tone_index<=7;-when 76=>tone_index<=7;when 77=>tone

30、_index<=7;when 78=>tone_index<=0;when 79=>tone_index<=0;-when 80=>tone_index<=3;when 81=>tone_index<=3;when 82=>tone_index<=6;when 83=>tone_index<=6;-when 84=>tone_index<=6;when 85=>tone_index<=5;when 86=>tone_index<=6;when 87=>tone_index&l

31、t;=6;-when 88=>tone_index<=8;when 89=>tone_index<=8;when 90=>tone_index<=5;when 91=>tone_index<=5;-when 92=>tone_index<=5;when 93=>tone_index<=5;when 94=>tone_index<=0;when 95=>tone_index<=0;- when 96=>tone_index<=0;when 97=>tone_index<=3;w

32、hen 98=>tone_index<=4;when 99=>tone_index<=4;- when 100=>tonewhen 101=>tonewhen 102=>tonewhen 103=>tonewhen 104=>tonewhen 105=>tonewhen 106=>tonewhen 107=>tonewhen 108=>tonewhen 109=>tonewhen 110=>tonewhen 111=>tonewhen 112=>tonewhen 113=>tonewhe

33、n 114=>tonewhen 115=>tonewhen 116=>tonewhen 117=>tonewhen 118=>tonewhen 119=>tonewhen 120=>tonewhen 121=>tonewhen 122=>tonewhen 123=>tonewhen 124=>tonewhen 125=>tonewhen 126=>tonewhen 127=>tonewhen 128=>tonewhen 129=>tonewhen 130=>tonewhen 131=>t

34、onewhen 132=>tonewhen 133=>tonewhen 134=>tonewhen 135=>tonewhen 136=>tonewhen 137=>tonendex<=8; ndex<=7;ndex<=7; ndex<=7;- ndex<=8; ndex<=8; ndex<=9; ndex<=9;- ndex<=9;ndex<=10; ndex<=8; ndex<=8;- ndex<=0; ndex<=0; ndex<=8; ndex<=7;-

35、ndex<=6; ndex<=6; ndex<=7;ndex<=7;- ndex<=5; ndex<=5; ndex<=6; ndex<=6;- ndex<=6; ndex<=6; ndex<=0;ndex<=0;- ndex<=8; ndex<=9; ndex<=10; ndex<=10;- ndex<=10; ndex<=9;ndex<=10; ndex<=10;- ndex<=12; ndex<=12; ndex<=9;when 138=>ton

36、ewhen 139=>tone_index<=9;-when 140=>tone_index<=9;-when 141=>tone_index<=9;when 142=>tone_index<=0;when 143=>tone_index<=0;when 144=>tone_index<=5;-when 145=>tone_index<=5;when 146=>tone_index<=8;when 147=>tone_index<=7;when 148=>tone_index<

37、;=8;-when 149=>tone_index<=8;when 150=>tone_index<=10when 151=>tone_index<=10when 152=>tone_index<=10when 153=>tone_index<=10when 154=>tone_index<=10when 155=>tone_index<=10when 156=>tone_index<=0;-when 157=>tone_index<=0;when 158=>tone_index&

38、lt;=0;when 159=>tone_index<=0;when 160=>tone_index<=6;-when 161=>tone_index<=7;when 162=>tone_index<=8;when 163=>tone_index<=8;when 164=>tone_index<=7;-when 165=>tone_index<=7;when 166=>tone_index<=9;when 167=>tone_index<=9;when 168=>tone_inde

39、x<=8;-when 169=>tone_index<=8;when 170=>tone_index<=8;when 171=>tone_index<=5;when 172=>tone_index<=5;-when 173=>tone_index<=5;when 174=>tone_index<=9;when 175=>tone_index<=0;when 176=>tone_index<=0;-when 177=>tone_index<=11when 178=>tone_i

40、ndex<=11when 179=>tone_index<=10when 180=>tone_index<=10when 181=>tone_index<=9;when 182=>tone_index<=9;第17页共80页when 183=>tone_index<=8;when 184=>tone_index<=8;-when 185=>tone_index<=10;when 186=>tone_index<=10;when 187=>tone_index<=10;when 18

41、8=>tone_index<=10;when 189=>tone_index<=10;when 190=>tone_index<=10;when 191=>tone_index<=0;when 192=>tone_index<=0;-when 193=>tone_index<=10;when 194=>tone_index<=10;when 195=>tone_index<=10;when 196=>tone_index<=10;when 197=>tone_index<=0

42、;when 198=>tone_index<=0;when 199=>tone_index<=10;when 200=>tone_index<=10;when 201=>tone_index<=13;when 202=>tone_index<=13;when 203=>tone_index<=13;when 204=>tone_index<=13;when 205=>tone_index<=12;when 206=>tone_index<=12;when 207=>tone_ind

43、ex<=12;when 208=>tone_index<=12;when 209=>tone_index<=10;when 210=>tone_index<=10;when 211=>tone_index<=8;when 212=>tone_index<=8;-when 213=>tone_index<=0;when 214=>tone_index<=8;when 215=>tone_index<=9;when 216=>tone_index<=9;-when 217=>to

44、ne_index<=8;when 218=>tone_index<=9;when 219=>tone_index<=9;when 220=>tone_index<=13;when 221=>tone_index<=10;when 222=>tone_index<=10;when 223=>tone_index<=10;when 224=>tone_index<=10;when 225=>tone_index<=0;when 226=>tone_index<=0;when 227=&

45、gt;tone_index<=10;when 228=>tone_index<=10;- when 229=>tone_index<=13;when 230=>tone_index<=13;when 231=>tone_index<=13;when 232=>tone_index<=13;- when 234=>tone_index<=12;when 235=>tone_index<=12;when 236=>tone_index<=12;when 237=>tone_index<

46、=12;- when 238=>tone_index<=10;when 239=>tone_index<=9;when 240=>tone_index<=8;when 241=>tone_index<=8;-when 242=>tone_index<=8;when 243=>tone_index<=8;when 244=>tone_index<=0;when 245=>tone_index<=8;- when 246=>tone_index<=9;when 247=>tone_in

47、dex<=9;when 248=>tone_index<=8;when 249=>tone_index<=9;-when 250=>tone_index<=9;when 251=>tone_index<=9;when 252=>tone_index<=7;when 253=>tone_index<=7;-when 254=>tone_index<=6;when 255=>tone_index<=6;when 256=>tone_index<=6;when 257=>tone_

48、index<=6;-when 258=>tone_index<=0;when 259=>tone_index<=0;when 260=>tone_index<=6;when 261=>tone_index<=7;-when 262=>tone_index<=6;when 263=>tone_index<=6;when 264=>tone_index<=6;when 265=>tone_index<=6;-when 266=>tone_index<=6;when 267=>to

49、ne_index<=6;when 268=>tone_index<=0;when 269=>tone_index<=0;-when others=>tone_index<=0;end case;end if;end process;process(tone_index)begincase tone_index iswhen 0=>tone<="11111111111”;when 3=>tone<="01000010010”;when 4=>tone<="01001100110”;when

50、 5=>tone<="01100000011”;when 6=>tone<="01110001111”;when 7=>tone<="10000001010”;when 8=>tone<="10001000010”;when 9=>tone<="10010101100”;when 10=>tone<="10100001000”;when 11=>tone<="10100110011”;when 12=>tone<="10

51、110000001"end case;when 13=>tone<="10111000111”;when others=>tone<="11111111111”;end process;process(clk) -control the frequence of the speaker beginif(clk'event and clk='1') then if(tone_count=16#7ff#) then tone_count<=tone;if(tone<2047) then spk<=not

52、 spk;end if;elsetone_count<=tone_count+1;end if;end if;end process;end behave;第19页共80页音乐流水灯© 4为”士才2.2.2 流水灯模块2.2.2.1 基本原理在led1led12引脚上按照简单音乐的节奏有规律的的输出流水数据,如 原来输出的数据是000000000011则表示点亮led1 , led2 (共阴接法),流水一 次后,输出的数据应该为 000000000111,而此时则应点亮 led1led3三个led 发光二极管。就可以实现led流水灯。但是根据本次课程设计的要求,每次只 会有一个

53、音阶响起,所以每次只会有一个led灯亮起。2.2.2.2 程序及相应电路原理图该模块程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity tkzc isport( clk : in std_logic;-clock signalspk: buffer std_logic; -speaker driverled: outstd_logic_vector(11 downto 0);end tkzc;architecture b

54、ehave of tkzc issignal tone: std_logic_vector(10 downto 0);signal tone_count : std_logic_vector(10 downto 0);signal tone_index : integer range 0 to 15;signal clk10_count : std_logic_vector(17 downto 0);signal time: integer range 0 to 270;signal clk10 : std_logic;beginprocess(clk) -generate 10hz cloc

55、k signalbeginif(clk'event and clk='1') thenclk10_count<=clk10_count+1;if(clk10_count=16#3fff#) thenclk10<=not clk10;end if;end if;end process;process(clk10)beginif(clk10'event and clk10='1') thenif(time=270) then time<=0;elsetime<=time+1;end if;end if;end process;

56、process(clk10)beginif(clk10'event and clk10='1') then case time iswhen 0=>tone_index<=6;when 1=>tone_index<=7;when 2=>tone_index<=8;when 3=>tone_index<=8;- when 4=>tone_index<=8; when 5=>tone_index<=7; when 6=>tone_index<=8;when 7=>tone_index&

57、lt;=8;- when 8=>tone_index<=10 when 9=>tone_index<=10 when 10=>tone_index<=7when 11=>tone_index<=7when 12=>tone_index<=7when 13=>tone_index<=7when 14=>tone_index<=0when 15=>tone_index<=0when 16=>tone_index<=3when 17=>tone_index<=3when 18=&g

58、t;tone_index<=6when 19=>tone_index<=6when 20=>tone_index<=6when 21=>tone_index<=5when 22=>tone_index<=6when 23=>tone_index<=6when 24=>tone_index<=8when 25=>tone_index<=8when 26=>tone_index<=5when 27=>tone_index<=5when 28=>tone_index<=5wh

59、en 29=>tone_index<=5when 30=>tone_index<=0when 31=>tone_index<=0when 32=>tone index<=3©为"士才音乐流水灯when 33=>tone_index<=3;when 34=>tone_index<=4;when 35=>tone_index<=4;-when 36=>tone_index<=4;when 37=>tone_index<=3;when 38=>tone_index&l

60、t;=4;when 39=>tone_index<=0;-when 40=>tone_index<=8;when 41=>tone_index<=8;when 42=>tone_index<=3;when 43=>tone_index<=3;-when 44=>tone_index<=3;when 45=>tone_index<=3;when 46=>tone_index<=0;when 47=>tone_index<=9;-when 48=>tone_index<=9;wh

61、en 49=>tone_index<=9;when 50=>tone_index<=7;when 51=>tone_index<=7;-when 52=>tone_index<=7;when 53=>tone_index<=4;when 54=>tone_index<=4;when 55=>tone_index<=4;-when 56=>tone_index<=7;when 57=>tone_index<=7;when 58=>tone_index<=7;when 59=&g

62、t;tone_index<=7;-when 60=>tone_index<=7;when 61=>tone_index<=7;when 62=>tone_index<=0;when 63=>tone_index<=0;- when 64=>tone_index<=6; when 65=>tone_index<=7;when 66=>tone_index<=8;when 67=>tone_index<=8;-when 68=>tone_index<=8;when 69=>ton

63、e_index<=7;when 70=>tone_index<=8;when 71=>tone_index<=8;-when 72=>tone_index<=10;when 73=>tone_index<=10;when 74=>tone_index<=7;when 75=>tone_index<=7;- when 76=>tone_index<=7;when 77=>tone_index<=7;when 78=>tone_index<=0;when 79=>tone_index<=0;-when 80=>ton

温馨提示

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

评论

0/150

提交评论