乐曲演奏电路
eda乐曲硬件演奏电路课程设计
eda乐曲硬件演奏电路课程设计一、课程目标知识目标:1. 学生能够理解EDA乐曲硬件演奏电路的基本原理,掌握电路组成及各部分功能。
2. 学生能够描述常见电子元件在演奏电路中的作用,并运用相关知识分析电路性能。
3. 学生能够掌握编程软件及硬件设计工具,完成简单的EDA乐曲演奏电路设计。
技能目标:1. 学生能够运用所学知识,独立完成演奏电路的搭建与调试。
2. 学生能够通过编程软件,编写简单的乐曲程序,实现乐曲演奏。
3. 学生能够运用团队协作能力,共同解决演奏电路设计过程中遇到的问题。
情感态度价值观目标:1. 学生通过本课程的学习,培养对电子技术和音乐艺术的热爱,提高审美情趣。
2. 学生在学习过程中,养成积极探究、勇于创新的精神,增强实践操作能力。
3. 学生能够认识到科技与艺术的结合在生活中的应用,增强社会责任感和团队合作意识。
课程性质:本课程为实践性较强的课程,结合电子技术与音乐艺术,旨在培养学生的动手能力、创新思维和团队协作能力。
学生特点:本年级学生具备一定的电子技术基础知识,对音乐艺术有一定兴趣,好奇心强,善于动手实践。
教学要求:教师应注重理论与实践相结合,引导学生积极参与实践操作,鼓励学生创新思维,提高团队协作能力。
同时,关注学生的个体差异,因材施教,确保每位学生都能在课程中收获成长。
二、教学内容本课程教学内容主要包括以下三个方面:1. 理论知识学习:- 电路基础知识:回顾电路的基本概念、原理及电路图的识别。
- 电子元件介绍:学习常用电子元件的原理、功能及在演奏电路中的应用。
- EDA软件使用:介绍编程软件及硬件设计工具的使用方法,如Multisim、Proteus等。
2. 实践操作能力培养:- 电路搭建:学习演奏电路的搭建方法,熟悉各类电子元件的连接方式。
- 程序编写:编写简单的乐曲程序,掌握编程技巧,实现乐曲演奏。
- 调试与优化:对搭建的演奏电路进行调试,找出问题并进行优化。
3. 创新思维与团队协作:- 设计实践:运用所学知识,小组合作完成指定乐曲的演奏电路设计。
EDA硬件乐曲演奏电路设计梁祝两只老虎
编号:EDA综合设计实验报告课题:硬件乐曲演奏电路设计专业:智能科学与技术学生姓名:黎良贵学号: 12008502112014 年11 月30 日一、概述:硬件乐曲演奏电路顶层模块图如图1-1所示,电路图由11个子模块组成,能够实现:(1)梁祝乐曲的自动演奏;(2)键盘弹奏歌曲;(3)ROM中能存两首歌曲,并能手动选歌。
二、实验原理:①音符的频率可以由图1-1中的SPKER获得。
这是一个数控分频器。
由其CLK端输入一具有较高频率(1MHz)的时钟,通过SPKER分频后,经由D触发器构成的分频电路,由SPK_KX口输出。
由于直接从分频器中出来的输出信号是脉宽极窄的信号,为了有利于驱动扬声器,需另加一个D触发器分频以均衡其占空比,但这时的频率将是原来的1/2。
SPKER对CLK输入信号的分频比由输入的11位预置数TN[10..0]决定。
SPK_KX的输出频率将决定每一音符的音调;这样,分频计数器的预置值TN[10..0] 与输出频率就有了对应关系,而输出的频率又与音乐音符的发声有对应关系,例如在F_CODE模块中若取TN[10..0]=11'H40C,将由SPK_KX发出音符为“3”音的信号频率。
②音符的持续时间需根据乐曲的速度及每个音符的节拍数来确定,图1-1中模块F_CODE的功能首先是为模块SPKER(11位分频器)提供决定所发音符的分频预置数,而此数在SPKER输入口停留的时间即为此音符的节拍周期。
模块F_CODE是乐曲简谱码对应的分频预置数查表电路,每一音符的停留时间则由音乐节拍和音调发生查表模块MUSIC中简谱码和工作时钟inclock的频率决定,在此为4Hz。
这4Hz频率来自分频模块FDIV,模块MUSIC是一个LPM_ROM。
它的输入频率来自锁相环PLL20的2kHz输出频率。
而模块F_CODE的14个值的输出由对应于MUSIC模块输出的q[3..0]及4位输入值INX[3..0]确定,而INX[3..0]最多有16种可选值。
乐曲硬件演奏电路EDA设计
摘要随着科学技术的飞速发展,微电子技术、集成技术和计算机技术也有了迅速的发展,电子系统的设计方法也随之发生变革,基于EDA技术的设计方法也成为现代电子系统设计的主流。
大规模可编程逻辑器件FPGA/CPLD是当今应用最广泛的两类可编程专用集成电路(ASIC)。
由于结构和工艺的改进,可编程ASIC 芯片上包含的资源越来越丰富,可实现的功能越来越强,它已成为实现电子系统集成化的重要手段。
特别是可编程逻辑器件的功能和容量的不断扩大,如FPGA(Field Programmable Gate Array,现场可编程门阵列)使集成电路的设计进入片上系统(System on a Chip,SOC)或可编程片上系统(System on a Programmable Chip,SOPC)的设计时代。
同时采用超高速集成电路硬件描述语言VHDL (Very High Speed Integrated Circuit Hard—ware Description Language),其具有多层次描述系统硬件功能的能力,既支持模块化设计,也支持层次化设计,使各种数字化电子系统的设计通过描述芯片功能实现系统功能,从而有效地缩短了产品开发周期,减少了设计芯片的数量,缩小了系统体积,降低了系统能耗,提高了系统的灵活性和可靠性。
关键词FPGA, 音乐节拍发生器模块,音乐译码电路模块,数控分频模块AbstractTechnically fly to soon develop along with science, micro-electronics technique, integration technique and calculator technique also had a quick development and the design method of electronics system also immediately took place a change and also become modern main current of design of the electronics system according to the EDA technical design rge-scale and programmable FPGA/CPLD of the logic spare part is nowadays to apply two types of most extensive programmable appropriation integrated circuits(ASIC).Because of the improvement of structure and craft, include on the programmable ASIC chip of the resources be more and more abundant, can carry out of the function be more and more strong, it has become to carry out electronics system the integration turn of important means.Function and capacity of especially programmable logic spare part continuously extend and make the design of integrated circuit get into a slice of top system(the System on a Chip, SOC) or programmable slice the top system(a Programmable of the System on Chip, SOPC) such as the FPGA(the Gate Array of the Field Programmable, the spot programmable door array) of design ages.Adopt in the meantime extremely high soon the integrated circuit hardware describe language VHDL(the Circuit Description Language of the Hard-ware of the Speed Integrated of the Very High), it has the system hardware of the multilayers description the ability of the function, since support the mold piece turn a design, also support layer's turn a design and make various numeral turn the design of electronics system to pass description chip function to carry out system function, thus and availably shortenned a product a development a period, reduced to design chip of amount, contracted a system physical volume, lowering system can consume and raised the vivid and credibility of the system.Keywords FPGA, the music rhythm occurrence machine mold piece, music translates the code electric circuit mold piece and the number controls the Pin mold of cent a piece目录摘要 (I)ABSTRACT (II)1引言 (1)1.1 ASIC技术 (1)1.2可编程专用集成电路ASIC (1)1.2.1 概述 (1)1.2.2主要特点 (1)1.2.3发展前景 (2)1.3EDA技术 (2)1.3.1概述 (2)1.3.2 EDA技术的发展趋势 (2)2乐曲演奏系统设计原理分析 (3)2.1乐曲演奏基本要求 (3)2.2乐曲演奏原理 (3)3系统硬件设计 (6)3.1FPGA的介绍 (6)3.1.1 FPGA的基本结构 (6)3.1.2 Altera公司的FPGA (6)3.2FLEX系列的结构特点 (7)3.2.1 概述 (7)3.2.2 FLEX的特点 (7)4乐曲硬件演奏电路的层次化设计方案 (8)4.1音乐节拍发生器N OTE T ABS (8)4.2音符译码电路T ONE T ABA模块 (13)4.3数控分频模块S PEAKERA设计 (15)4.4乐曲硬件演奏电路的顶层设计和仿真 (17)总结 (20)致谢 (21)参考文献 (22)附录 (23)1引言1.1ASIC技术ASIC(Application Specific Integrated Circuits)专用集成电路,与通用集成电路相比,它是面向专门用途的电路,以此区别于标准逻辑(Standard Logic)、通用寄存器、通用微处理器等电路。
基于Quartus2的乐曲演奏电路设计
(3)为了给分频提供预置数,需要计算分频预置数。
(4)对每部分结构单元逐一进行编译,生成相应的元器件符号,并对独立结构单元功能进行仿真。
(5)连接独立结构模块,形成完整的乐曲演奏电路。
由于FPGA/CPLD的集成规模非常大,可利用先进的EDA工具进行电子系统设计和产品开发。
由于开发工具的通用性、设计语言的标准化以及设计过程几乎与所用器件的硬件结构没有关系,因而设计开发成功的各类逻辑功能块软件有很好的兼容性和可移植性。
它几乎可用于任何型号和规模的FPGA/CPLD中,从而使得产品设计效率大幅度提高。
FPGA在结构上主要分为三个部分,即可编程逻辑单元,可编程输入/输出单元和可编程连线三个部分。CPLD在结构上主要包括三个部分,即可编程逻辑宏单元,可编程输入/输出单元和可编程内部连线。
高集成度、高速度和高可靠性是FPGA/CPLD最明显的特点,其时钟延时可小至ns级,结合其并行工作方式,在超高速应用领域和实时测控方面有着非常广阔的应用前景。在高可靠应用领域,如果设计得当,将不会存在类似于MCU的复位不可靠和PC可能跑飞等问题[6]。FPGA/CPLD的高可靠性还表现在几乎可将整个系统下载于同一芯片中,实现所谓片上系统,从而大大缩小了体积,易于管理和屏蔽。
计数时钟信号作为输出音符快慢的控制信号,时钟快时输出节拍速度就快,演奏的速度也就快,时钟慢时输出节拍的速度就慢,演奏的速度自然降低。
2.2.3乐曲产生原理框图
根据2.2.1与2.2.2的分析,我们可以通过图1来获得每个音符的发音频率值与持续的时间这两个要素所对应的数值,以及通过纯硬件的手段来利用这些数值实现乐曲所希望的演奏效果。
实验硬件乐曲自动演奏电路实施方案
验十硬件乐曲自动演奏电路设计1、实验目地:学习利用数控分频器设计硬件电子琴实验.实验仪器:PC机,操作系统为Windows2000/xp,Quartus II 5.1 设计平台,GW48系列SOPE/EDA实验开发系统.3、实验原理:本设计乐曲选取《梁祝》中化蝶部分,其简谱如图1所示.图1 《梁祝》中化蝶部分简谱组成乐曲地每个音符地发音频率值及其持续地时间是乐曲能连续演奏所需地2个基本要素,首先让我们来了解音符与频率地关系.乐曲地12平均率规定:每2个八度音(如简谱中地中音1与高音1)之间地频率相差1倍.在2个八度音之间,又可分为12个半音,每2个半音地频率比为.另外,音符A(简谱中地低音6)地频率为440Hz,音符B到C之间、E到F之间为半音,其余为全音.由此可以计算出简谱中从低音1至高音1之间每个音符地频率,如表1所示.表1 简谱中音符与频率地关系主系统由4个模块组成;例1-1是顶层设计文件,其内部有三个功能模块(如图2所示):Tone.VHD(例1-2)和Speaker.VHD(例1-3)及Notetabs.VHD(例1-4).模块TONE是音阶发生器,当4位发声控制输入INDEX中某一位为高电平时,则对应某一音阶地数值将从端口TONE输出,作为获得该音阶地分频预置值;同时由CODE输出对应该音阶简谱地显示数码,如‘5’,并由HIGH输出指示音阶高8度显示.由例6-28可见,其语句结构只是类似与真值表地纯组合电路描述,其中地音阶分频预置值,如Tone <= 1290是根据产生该音阶频率所对应地分频比获得地.图2 硬件电子琴电路结构模块SPEAKER中地主要电路是一个数控分频器,它由一个初值可预置地加法计数器构成,当模块SPEAKER由端口TONE获得一个2进制数后,将以此值为计数器地预置数,对端口CLK12MHZ输入地频率进行分频,之后由SPKOUT向扬声器输出发声.模块NOTETABS,用于产生节拍控制(INDEX数据存留时间)和音阶选择信号,即在NOTETABS模块放置一个乐曲曲谱真值表,由一个计数器地计数值来控制此真值表地输出,而由此计数器地计数时钟信号作为乐曲节拍控制信号,从而可以设计出一个纯硬件地乐曲自动演奏电路.试完成此项设计,并在EDA实验系统上地FPGA目标器件中实现之.5、实验内容:编译适配以上4个示例文件,给出仿真波形,最后进行下载和硬件测试实验.建议使用实验电路模式“3”(附图2-5),用短路帽选择“CLOCK9”地输入频率选择12MHz,此信号作为系统输入信号CLK12MHZ;CLK8HZ与clock2相接,接受4Hz频率;键8至键1 作为INDEX输入信号控制各音阶;选择数码管1显示琴音简谱码,发光管D1显示高8度.6、思考题1:例1-3中地进程DelaySpkS对扬声器发声有什么影响?7、思考题2:电路上应该满足哪些条件,才能用数字器件直接输出地方波驱动扬声器发声?8、实验报告:用仿真波形和电路原理图,详细叙述硬件电子琴地工作原理及其4个VHDL 文件中相关语句地功能,叙述硬件实验情况..附录;【例10-1】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY TOP IS -- 顶层设计PORT ( CLK12MHZ : IN STD_LOGIC;CLK8HZ : IN STD_LOGIC;CODE1 : OUTINTEGERRANGE 0 TO 15;HIGH1,SPKOUT : OUT STD_LOGIC);END;ARCHITECTURE one OF TOP ISCOMPONENT TonePORT ( Index : IN INTEGERRANGE 0 TO 15;CODE : OUTINTEGERRANGE 0 TO 15;HIGH : OUT STD_LOGIC;Tone : OUT INTEGER RANGE 0 TO 16#7FF# ); --11位2进制数 END COMPONENT;COMPONENT SpeakerPORT ( clk : IN STD_LOGIC;Tone1 : IN INTEGER RANGE 0 TO 16#7FF#; --11位2进制数 SpkS : OUT STD_LOGIC );END COMPONENT;component NotetabsPort ( clk :in std_logic;index0 : out INTEGERRANGE 0 TO 15);end component;SIGNAL Tone2 : INTEGERRANGE0 TO 16#7FF#;SIGNAL Indx: INTEGERRANGE 0 TO 15;BEGIN -- 安装U1, U2, U3u1 : Tone PORT MAP (Index=>Indx, Tone=>Tone2,CODE=>CODE1,HIGH=>HIGH1); u2 : Speaker PORT MAP (clk=>CLK12MHZ,Tone1=>Tone2, SpkS=>SPKOUT );u3 : Notetabs PORT MAP(clk=>CLK8HZ,Index0=>Indx);END;【例10-2】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY Tone ISPORT ( Index : IN INTEGERRANGE 0 TO 15;CODE : OUTINTEGERRANGE 0 TO 15;HIGH : OUT STD_LOGIC;Tone : OUTINTEGERRANGE0 TO 16#7FF# );END;ARCHITECTURE one OF Tone ISBEGINSearch : PROCESS(Index)BEGINCASE Index IS -- 译码电路,查表方式,控制音调地预置数 WHEN 0=>Tone <= 2047; CODE <= 0; HIGH <= '0';WHEN 1=>Tone <= 773; CODE <= 1; HIGH <= '0';WHEN 2=>Tone <= 912; CODE <= 2; HIGH <= '0';WHEN 3=>Tone <= 1036; CODE <= 3; HIGH <= '0';WHEN 5=>Tone <= 1197; CODE <= 5; HIGH <= '0';WHEN 6=>Tone <= 1290; CODE <= 6; HIGH <= '0';WHEN 7=>Tone <= 1372; CODE <= 7; HIGH <= '0';WHEN 8=>Tone <= 1410; CODE <= 1; HIGH <= '1';WHEN 9=>Tone <= 1480; CODE <= 2; HIGH <= '1';WHEN 10=>Tone <= 1542; CODE <= 3; HIGH <= '1';WHEN 12=>Tone <= 1622; CODE <= 5; HIGH <= '1';WHEN 13=>Tone <=1668; CODE <= 6; HIGH <= '1';WHEN 15=>Tone <= 1728; CODE <= 1; HIGH <= '1';WHEN OTHERS =>NULL;END CASE;END PROCESS;END;【例10-3】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY Speaker ISPORT ( clk : IN STD_LOGIC;Tone1 : IN INTEGER RANGE 0 TO 16#7FF#;SpkS : OUT STD_LOGIC );END;ARCHITECTURE one OF Speaker ISSIGNAL PreCLK , FullSpkS : STD_LOGIC;BEGINDivideCLK : PROCESS(clk) -- 将CLK进 11分频,PreCLK为C L 11K 6分频VARIABLE Count4 : INTEGERRANGE 0 TO 15;BEGINPreCLK <= '0';IF Count4 > 11 THEN PreCLK <= '1'; Count4 := 0;ELSIF clk'EVENT AND clk='1' THEN Count4 := Count4 + 1;END IF;END PROCESS;GenSpkS : PROCESS(PreCLK, Tone1)VARIABLE Count11 : INTEGERRANGE0 TO 16#7FF#;BEGIN -- 11位可预置计数器IF PreCLK'EVENT AND PreCLK = '1' THENIF Count11=16#7FF# THEN Count11 := Tone1; FullSpkS <= '1'; ELSE Count11:=Count11 + 1; FullSpkS <= '0';END IF;END IF;END PROCESS;DelaySpkS : PROCESS(FullSpkS)VARIABLE Count2 : STD_LOGIC;BEGINIF FullSpkS'EVENT AND FullSpkS = '1' THEN Count2 := NOT Count2;IF Count2 = '1' THEN SpkS <= '1';ELSE SpkS <= '0';END IF;END IF;END PROCESS;END;【例10-4】library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity Notetabs isPort ( clk: in std_logic; --系统时钟;键盘输入/自动演奏 index0 : out INTEGER RANGE 0 TO 15); --音符信号输出end NOTETABS;architecture Behavioral of Notetabs issignal count0:integer range 0 to 138;--changebeginmusic:process(clk) --此进程完成自动演奏部分曲地地址累加beginif clk'event and clk='1' thenif count0=138 then count0<=0;else count0<=count0+1;end if;end if;end process;com1:process(count0)begincase count0 is --此case语句:存储自动演奏部分地曲when 00 =>index0<=3;when 01 =>index0<=3;when 02 =>index0<=3;when 03 =>index0<=3;when 04 =>index0<=5;when 05 =>index0<=5;when 06 =>index0<=3;when 07 =>index0<=6;when 08 =>index0<=8;when 09 =>index0<=8;when 10 =>index0<=8;when 11 =>index0<=9;when 12 =>index0<=6;when 13 =>index0<=8;when 14 =>index0<=5;when 15 =>index0<=5;when 16 =>index0<=12;when 17 =>index0<=12;when 18 =>index0<=12;when 19 =>index0<=15;when 20 =>index0<=13;when 21 =>index0<=12;when 22 =>index0<=10;when 23 =>index0<=12;when 25 =>index0<=9; when 26 =>index0<=9; when 27 =>index0<=9; when 28 =>index0<=9; when 29 =>index0<=9; when 30 =>index0<=9; when 31 =>index0<=0; when 32 =>index0<=9; when 33 =>index0<=9; when 34 =>index0<=9; when 35 =>index0<=10; when 36 =>index0<=7; when 37 =>index0<=7; when 38 =>index0<=6; when 39 =>index0<=6; when 40 =>index0<=5; when 41 =>index0<=5; when 42 =>index0<=5; when 43 =>index0<=6; when 44 =>index0<=8; when 45 =>index0<=8; when 46 =>index0<=9; when 47 =>index0<=9; when 48 =>index0<=3; when 49 =>index0<=3; when 50 =>index0<=8; when 51 =>index0<=8; when 52 =>index0<=6; when 53 =>index0<=5; when 54 =>index0<=6; when 55 =>index0<=8; when 56 =>index0<=5; when 57 =>index0<=5; when 58 =>index0<=5; when 59 =>index0<=5; when 60 =>index0<=5; when 61 =>index0<=5; when 62 =>index0<=5; when 63 =>index0<=5; when 64 =>index0<=10; when 65 =>index0<=10; when 66 =>index0<=10; when 67 =>index0<=12;when 69 =>index0<=7; when 70 =>index0<=9; when 71 =>index0<=9; when 72 =>index0<=6; when 73 =>index0<=8; when 74 =>index0<=5; when 75 =>index0<=5; when 76 =>index0<=5; when 77 =>index0<=5; when 78 =>index0<=5; when 79 =>index0<=5; when 80 =>index0<=3; when 81 =>index0<=5; when 82 =>index0<=3; when 83 =>index0<=3; when 84 =>index0<=5; when 85 =>index0<=6; when 86 =>index0<=7; when 87 =>index0<=9; when 88 =>index0<=6; when 89 =>index0<=6; when 90 =>index0<=6; when 91 =>index0<=6; when 92 =>index0<=6; when 93 =>index0<=6; when 94 =>index0<=5; when 95 =>index0<=6; when 96 =>index0<=8; when 97 =>index0<=8; when 98 =>index0<=8; when 99 =>index0<=9; when 100=>index0<=12; when 101=>index0<=12; when 102=>index0<=12; when 103=>index0<=10; when 104=>index0<=9; when 105=>index0<=9; when 106=>index0<=10; when 107=>index0<=9; when 108=>index0<=8; when 109=>index0<=8; when 110=>index0<=6; when 111=>index0<=5;when 113=>index0<=3;when 114=>index0<=3;when 115=>index0<=3;when 116=>index0<=8;when 117=>index0<=8;when 118=>index0<=8;when 119=>index0<=8;when 120=>index0<=6;when 121=>index0<=8;when 122=>index0<=6;when 123=>index0<=5;when 124=>index0<=3;when 125=>index0<=5;when 126=>index0<=6;when 127=>index0<=8;when 128=>index0<=5;when 129=>index0<=5;when 130=>index0<=5;when 131=>index0<=5;when 132=>index0<=5;when 133=>index0<=5;when 134=>index0<=5;when 135=>index0<=5;when 136=>index0<=0;when 137=>index0<=0;when 138=>index0<=0;when others => null;end case;end process;end Behavioral;版权申明本文部分内容,包括文字、图片、以及设计等在网上搜集整理.版权为个人所有This article includes some parts, including text, pictures, and design. Copyright is personal ownership.Zzz6Z。
Verilog_HDL—乐曲演奏电路设计
文理学院Verilog HDL乐曲演奏电路设计专业:自动化学号:2012118064:一天虹影设计目的与要求1.课程设计目的:1)加深对EDA技术的理解,掌握乐曲演奏电路的工作原理2)了解怎样控制音调的高低变化和音长,从而完成乐曲的自动循环演奏。
3)培养自主学习、正确分析和解决问题的能力2.课程设计要求:1)使用Verilog HDL设计乐曲演奏电路,系统实现是用硬件描述语言Verilog HDL按分频控制的方式进行设计,然后进行编程、时序仿真、电路功能验证,奏出美妙的乐曲。
2) 通过控制输出到扬声器的激励信号频率的高低和持续的时间,从而使扬声器发出连续的乐曲声,且当乐曲演奏完成时,保证能自动从头开始演奏。
3.该方案可以实现的功能:1)通过蜂鸣器播放音乐;2)通过三位动态数码管输出相应的高中低音符;3)通过一个开关实现两首乐曲的切换;4)在音乐播放的同时,会有led流水灯的闪烁.应用工具介绍作为当今最流行的计算机软件系统,EDA技术是以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术的最新成果,进行电子产品的自动设计。
EDA 可提供文本输入以及图形编辑的方法将设计者的意图用程序或者图形方式表达出来,而我们经常用到的VHDL语言便是用于编写源程序所需的最常见的硬件描述语言(HDL)之一。
2.1 EDA技术介绍EDA是电子设计自动化(Electronic Design Automation)的缩写,在20世纪90年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来。
EDA技术是在电子CAD技术基础上发展起来的计算机软件系统,是指以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术的最新成果,进行电子产品的自动设计[1]。
EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。
硬件乐曲自动演奏电路设计.
SOPC/EDA综合课程设计报告设计题目:硬件乐曲自动演奏电路设计设计者:学号:班级:指导老师:王忠锋完成时间:2012年01月6日目录前言 (3)乐曲硬件演奏电路EDA设计 (4)1.设计要求 (4)2.设计方案 (4)3.原理描述 (5)3.1 音名与频率的关系 (5)3.2 控制音长的节拍发生器 (7)4.乐曲硬件演奏电路的层次化设计方案 (7)4.1 音乐节拍发生器NoteTabs (7)4.2 音符译码电路Tonetaba模块 (15)4.3数控分频模块(speaker)设计 (18)4.4乐曲硬件演奏电路顶层电路的设计和仿真 (21)5.实验总结与心得 (24)6.参考文献 (25)前言乐曲演奏广泛用于自动答录装置、手机铃声、集团电话、及智能仪器仪表设备。
实现方法有许多种,随着FPGA集成度的提高,价格下降,EDA设计工具更新换代,功能日益普及与流行,使这种方案的应用越来越多。
如今的数字逻辑设计者面临日益缩短的上市时间的压力,不得不进行上万门的设计,同时设计者不允许以牺牲硅的效率达到保持结构的独特性。
使用现今的EDA软件工具来应付这些问题,并不是一件简单的事情。
FPGA预装了很多已构造好的参数化库单元LPM 器件。
通过引入支持LPM的EDA软件工具,设计者可以设计出结构独立而且硅片的使用效率非常高的产品。
本课设在EDA开发平台上利用VHDL语言设计数控分频器电路,利用数控分频的原理设计乐曲硬件演奏电路,以“欢乐颂”乐曲为例,将音乐数据存储到音乐节拍器中,就达到了以纯硬件的手段来实现乐曲的演奏效果。
只要修改音乐节拍器所存储的音乐数据,将其换成其他乐曲的音乐数据,连接到程序中就可以实现其它乐曲的演奏。
关键词:FPGA;EDA;VHDL;音乐乐曲硬件演奏电路EDA 设计1.设计要求利用可编程逻辑器件FPGA ,设计一个乐曲硬件演奏电路。
由键盘输入控制音响,同时可自动演奏乐曲。
演奏时可选择键盘输入乐曲或者已存入的乐曲,并配以一个小扬声器。
乐曲硬件演奏电路设计-verilog
EDA技术及创新实践(设计报告)题目: 乐曲硬件演奏电路设计姓名: 漩涡鸣人学院: 数理与信息工程学院专业: 电子科学与技术班级: 112 学号: 1886****20 指导教师: 汤大智2014年6 月一、设计目的及要求实验目的:1、理解音乐演奏的原理及分频器的原理与使用。
2、了解怎样控制音调的高低变化和音长,从而完成乐曲的自动循环演奏。
3、培养自主学习、正确分析和解决问题的能力。
要求:利用分频器设计硬件乐曲演奏电路;能通过数码管显示动态效果;通过一个开关实现两首乐曲的切换;在音乐播放的同时,会有led流水灯的闪烁。
二、设计原理乐曲演奏的原理是这样的:组成乐曲的每个音符的频率值(音调)及其持续的时间(音长)是乐曲能连续演奏所需的两个基本数据,因此只要控制输出到扬声器的激励信号频率的高低和持续的时间,就可以使扬声器发出连续的乐曲声。
图1、顶层模块图其中,乐谱产生电路用来控制音乐的音调和音长。
控制音调通过设置计数器的预置数来实现,预置不同的数值可以使计数器产生不同频率的信号,从而产生不同的音调。
控制音长是通过控制计数器预置数的停留时间来实现的,预置数停留的时间越长,则该音符演奏的时间越长。
每个音符的演奏时间都是0.25s的整数倍,对于节拍较长的音符,如2分音符,在记谱时将该音名连续记录两次即可。
1、音调的控制频率的高低决定了音调的高低。
音乐的十二平均率规定:每两个8度音(如简谱中的中音1与高音1)之间的频率相差一倍。
在两个8度音之间,又可分为12个半音,每两个半音的频率比为12√2。
另外,音名A(简谱中的低音6)的频率为440Hz,音名B到C之间、E到F之间为半音,其余为全音[4]。
由此可以计算出简谱中从低音1至高音1之间每个音名对应的频率,如表2所示:表2简谱中的音名与频率的关系所有不同频率的信号都是从同一个基准频率分频得到的。
由于音阶频率多为非整数,而分频系数又不能为小数,故必须将计算得到的分频数四舍五入取整。
乐曲演奏硬件电路设计报告
乐曲硬件演奏电路设计一、设计任务要求在EDA开发平台上利用VHDL语言设计数控分频器电路,利用数控分频的原理设计乐曲硬件演奏电路,并定制LPM-ROM存储音乐数据,以古典名曲“梁祝”乐曲为例,将音乐数据存储到LPM-ROM,就达到了以纯硬件的手段来实现乐曲的演奏效果。
与利用微处理器来实现乐曲演奏相比,一纯硬件完成乐曲演奏电路的逻辑要复杂得多,如果不借助于功能强大的EDA工具和硬件描述语言,仅凭传统的数字逻辑技术,即使最简单的演奏电路也难以实现。
二、系统设计总述系统设计由以下五个部分组成,分别是乐曲演奏电路基本原理,音符频率的获得,乐曲节奏的控制,乐谱发生器,乐曲演奏电路总体设计流程这五个部分。
乐曲演奏电路基本原理硬件电路的发声原理是,因为声音的频谱范围约在几十到几千赫兹,若能利用程序来控制FPGA芯片某个引脚输出一定频率的矩形波,接上扬声器就能发出相应频率的声音。
乐曲中的每一音符对应着一个确定的频率,要想FPGA发出不同音符的音调,实际上只要控制它输出相应音符的频率即可。
乐曲都是由一连串的音符组成,因此按照乐曲的乐谱依次输出这些音符所对应的频率,就可以在扬声器上连续地发出各个音符的音调。
不过要准确地演奏出一首乐曲,仅仅让扬声器能够发生还是不够的,还必须准确地控制乐曲的演奏节奏,就是指乐曲能够连续演奏的两个关键因素:乐曲中每个音符的发声频率及其持续时间。
音符频率的获得多个不同频率的信号可通过对某个基准频率进行分频获得。
由于各个音符的频率多为非整数,而分频系数又不能为小数,故必须将计算机得到的分频系数四舍五入取整。
若基准频率过低,则分频系数过小,四舍五入取整后的误差较大。
若基准频率过高,虽然可以减少频率的相对误差,但分频结构将变大。
实际上应该综合考虑这两个方面的因素,在尽量减少误差的前提下,选取合适的基准频率。
本设计中选取750KHz的基准频率。
由于现有的高频时钟脉冲信号的频率为12MHz,故需先对其进行16分频,才能获得750KHz的基准频率。
EDA 课程设计——乐曲演奏电路
出题教师:李天倩乐曲演奏电路一、 设计简要说明:用FPGA 器件驱动蜂鸣器演奏“梁祝”片段。
一首乐曲包含三个要素:乐曲声音频率,发音时间的长短,停顿的时间。
按照图1乐谱,设计相应电路控制speaker 信号的方波频率,某一频率持续时间长短,各频率间间隔大小,就可以推动蜂鸣器演奏乐曲。
图1 “梁祝”片段乐谱电路功能模块为:1、用分频电路产生不同频率方波;2、利用计数器实现speaker 信号频率选择,某一频率持续时间长短,各频率间间隔大小。
详细内容见教材《数字系统设计与Verilog HDL 》(第三版)P208相关内容。
二、 源代码及说明(参考)//"梁祝"乐曲演奏电路 //信号定义与说明: //clk_4Hz : 用于控制音长(节拍)的时钟频率; //clk_6MHz : 用于产生各种音阶频率的基准频率; //speaker : 用于激励扬声器的输出信号,本例中为方波信号;//high,med,low : 分别用于显示高音、中音和低音音符,各驱动一个数码管来显示。
module song(clk_6MHz,clk_4Hz,speaker ,high,med,low); input clk_6MHz,clk_4Hz; output speaker;output[3:0] high,med,low; reg speaker;reg[3:0] high,med,low; reg[7:0] counter;reg[13:0] divider ,origin; wire carry;assign carry=(divider==16383); always @(posedge clk_6MHz) begin if(carry) divider<=origin; else divider<=divider+1; endalways @(posedge carry)begin speaker<=~speaker;end //2分频产生方波信号356215521 6 1 3 56 52365132651 6 16 57always @(posedge clk_4Hz)begin case({high,med,low}) //分频比预置'b000000000011: origin<=7281;'b000000000101: origin<=8730;'b000000000110: origin<=9565;'b000000000111: origin<=10310;'b000000010000: origin<=10647;'b000000100000: origin<=11272;'b000000110000: origin<=11831;'b000001010000: origin<=12556;'b000001100000: origin<=12974;'b000100000000: origin<=13516;'b000000000000: origin<=16383;endcaseendalways @(posedge clk_4Hz)beginif(counter==63) counter<=0; //计时,以实现循环演奏else counter<=counter+1;case(counter) //记谱0: {high,med,low}<='b000000000011; //低音"3"1: {high,med,low}<='b000000000011; //持续4个时钟节拍2: {high,med,low}<='b000000000011;3: {high,med,low}<='b000000000011;4: {high,med,low}<='b000000000101; //低音"5"5: {high,med,low}<='b000000000101; //发3个时钟节拍6: {high,med,low}<='b000000000101;7: {high,med,low}<='b000000000110; //低音"6"8: {high,med,low}<='b000000010000; //中音"1"9: {high,med,low}<='b000000010000; //发3个时钟节拍10: {high,med,low}<='b000000010000;11: {high,med,low}<='b000000100000; //中音"2"12: {high,med,low}<='b000000000110; //低音"6"13: {high,med,low}<='b000000010000;14: {high,med,low}<='b000000000101;15: {high,med,low}<='b000000000101;16: {high,med,low}<='b000001010000; //中音"5"17: {high,med,low}<='b000001010000; //发3个时钟节拍18: {high,med,low}<='b000001010000;19: {high,med,low}<='b000100000000; //高音"1"20: {high,med,low}<='b000001100000;21: {high,med,low}<='b000001010000;22: {high,med,low}<='b000000110000;23: {high,med,low}<='b000001010000;24: {high,med,low}<='b000000100000; //中音"2"25: {high,med,low}<='b000000100000; //持续11个时钟节拍26: {high,med,low}<='b000000100000;27: {high,med,low}<='b000000100000;28: {high,med,low}<='b000000100000;29: {high,med,low}<='b000000100000;30: {high,med,low}<='b000000100000;31: {high,med,low}<='b000000100000;32: {high,med,low}<='b000000100000;33: {high,med,low}<='b000000100000;34: {high,med,low}<='b000000100000;35: {high,med,low}<='b000000110000; //中音"3"36: {high,med,low}<='b000000000111; //低音"7"37: {high,med,low}<='b000000000111;38: {high,med,low}<='b000000000110; //低音"6"39: {high,med,low}<='b000000000110;40: {high,med,low}<='b000000000101; //低音"5"41: {high,med,low}<='b000000000101;42: {high,med,low}<='b000000000101;43: {high,med,low}<='b000000000110; //低音"6"44: {high,med,low}<='b000000010000; //中音"1"45: {high,med,low}<='b000000010000;46: {high,med,low}<='b000000100000; //中音"2"47: {high,med,low}<='b000000100000;48: {high,med,low}<='b000000000011; //低音"3"49: {high,med,low}<='b000000000011;50: {high,med,low}<='b000000010000; //中音"1"51: {high,med,low}<='b000000010000;52: {high,med,low}<='b000000000110;53: {high,med,low}<='b000000000101; //低音"5"54: {high,med,low}<='b000000000110;55: {high,med,low}<='b000000010000; //中音"1"56: {high,med,low}<='b000000000101; //低音"5"57: {high,med,low}<='b000000000101; //持续8个时钟节拍58: {high,med,low}<='b000000000101;59: {high,med,low}<='b000000000101;60: {high,med,low}<='b000000000101;61: {high,med,low}<='b000000000101;62: {high,med,low}<='b000000000101;63: {high,med,low}<='b000000000101;endcaseendendmodule三、仿真结果四、硬件测试实验开发板(教改项目完成后可以提供相应平台)乐曲需要现场听五、思考题(指导教师根据学生完成思考题情况酌情加分)1、补完整个乐曲。
EDA课程设计——乐曲硬件演奏电路
《电子技术基础Ⅲ》项目设计报告课程名称任课教师设计题目乐曲硬件演奏电路设计班级姓名学号成绩日期一、题目分析1.设计要求利用FPGA,设计一硬件乐曲硬件演奏电路,能够利用硬件电路,自动播放音乐。
2.题目分析乐曲是由一连串的音符组成,而每个音符的发音频率值及其持续时间是乐曲能连续演奏所需的两个基本因素。
所以,设计音乐发生电路,需要得到相应音符的频率值,及其持续时间。
如果能够得到这两个基本元素,利用程序来控制FPGA 某个引脚输出一定频率的矩形波,接上扬声器就能发出相应频率的声音。
所以,获取这两个要素是本实验的关键。
(1)频率值频率的高低决定了音调的高低。
由于乐曲都是由一连串的音符组成,因此按照乐曲的乐谱,依次输出这些音符相对应的频率,就可以在蜂鸣器上连续地发出各个音符的音调。
简谱的音名与频率的关系如下表:表1 简谱中的音名与频率的关系(2)时长这次设计中所演奏的乐曲的最短的音符为四分音符,如果将全音符的持续时间设为1s的话,那么一拍所应该持续的时间为0.25秒,则只需要再提供一个4Hz 的时钟频率即可产生四分音符的时长。
系统工作时就按4Hz的频率依次读取简谱,当系统读到某个音符的简谱时就对应发这个音符的音调,持续时间为0.25秒,如果在曲谱文件中某个音符为三拍音长,只要将该音符连续书写三遍,系统读乐曲文件的时候就会连续读到三次,也就会发三个0.25秒的音长,这时我们听上去就会持续了三拍的时间,这样就可以控制音乐的音长了。
二、设计方案1.顶层实体描述音乐播放器,是能够演奏一曲完整的乐曲,在外部时钟的作用下,产生相应频率的方波信号,即在乐曲中对应相应的音符。
并且信号要持续一定的时间,即对应乐曲中的节拍。
得到了音调和节拍后,就可以组成相应的乐曲了。
2.模块划分采用“自顶向下”的设计方法,将音乐播放器模块主要划分为地址发生模块、数控分频模块、music 模块和预置数模块。
(1)地址发生模块:增地址计数器,用于产生地址数。
乐曲演奏电路设计实验报告
一、实验目的1、开发学生的创新性思维,培养学生的动手能力和独立思考能力。
2、加深学生对EDA技术与VHDL语言的认知,拓展对该语言的应用。
3、进一步熟悉QuartusII的应用,熟悉文本输入和原理图输入的程序设计方法。
4、掌握ROM的设计方法和使用方法。
5、培养学生对所学知识的综合应用能力。
二、实验内容及要求乐曲演奏电路设计:设计任务:要求能够演奏出《友谊地久天长》的曲调或可另选一段较完整的曲调(扩展要求:能够从数码管上显示出当前曲调的简谱和频率)三、实验原理初步原理图:•音符的频率可以由上图中的U3获得,这是一个数控分频器。
由其clk 端输入一具有较高频率(这里是12MHz)的信号,通过U3分频后由SPKOUT输出,U3对clk 输入信号的分频比由11位预置数Tone[10..0]决定。
SPKOUT的输出频率将决定每一音符的音调,这样,分频计数器的预置值Tone[10..0]与SPKOUT 的输出频率,就有了对应关系。
•音符的持续时间须根据乐曲的速度及每个音符的节拍数来确定,图中模块U2的功能首先是为U3提供决定所发音符的分频预置数,而此数在U3输入口停留的时间即为此音符的节拍值。
模块U2是乐曲简谱码对应的分频预置数查表电路,其中设置了乐曲全部音符所对应的分频预置数(一共8个),每一音符的停留时间由音乐节拍和音调发生器模块U1的clk的输入频率决定(如为4Hz),这8个值的输出由对应于U2的3位输入值Index[2..0]确定。
•在U1中设置了一个7位二进制计数器(计数最大值为65),作为音符数据ROM 的地址发生器。
这个计数器的计数频率若选为4Hz,即每一计数值的停留时间为0.25秒,恰为当全音符设为1秒时,四四拍的4分音符持续时间。
随着U1中的计数器按4Hz的时钟速率作加法计数时,即随地址值递增时,音符数据ROM 中的音符数据将从ROM 中通过ToneIndex[2..0]端口输向U2模块,乐曲就开始连续自然地演奏起来了。
eda乐曲演奏电路的设计
北华航天工业学院课程设计报告(论文)设计课题:乐曲演奏电路的设计专业班级:学生姓名:指导教师:设计时间北华航天工业学院电子工程系乐曲演奏电路的设计课程设计任务书指导教师:胡辉内容摘要在EDA开发工具Quartus II 6.0平台上,采用VHDL语言层次化和模块化的设计方法,通过音符编码的设计思想,预先定制乐曲,实现动态显示乐曲演奏电路的设计,并在此基础上,基于同一原理,使此电路同时具备了简易电子琴的功能,使基于CPLD/FPGA芯片的乐曲播放数字电路得到了更好的优化,提高了设计的灵活性和可扩展性。
关键字:EDA;Quartus II;VHDL;CPLD/FPGA;乐曲演奏电路;简易电子琴目录一概述 (1)二方案设计与论证 (2)三单元电路设计与参数计算 (2)四总原理图 (14)五安装与调试 (14)六性能测试与分析 (14)七结论 (15)八心得体会 (15)九参考文献 (15)一、概述(一)本实验的设计原理是不同的音名对应不同的频率,设计的难点是准确的产生各音名对应的频率。
简谱音名与频率的关系各音名所对应的频率可由一频率较高的基准频率进行整数分频得到,所以实际中产生各音名频率为近似的整数值。
基准频率越高,近似程度越好,音准也越好,但同时分频系数会很大,耗费芯片资源也越多。
本实验选取fo=1MHZ的信号作为基准频率。
分频系数A及n的公式如下:分频系数A=fo÷音名频率分频系数n=分频系数A÷2分频系数n=fo÷音名频率÷2以中音1为例来说明:由fo=1MHZ产生中音1的523.25Hz,其中分频系数A=1000000÷523.25≈1911.13,取整数值为A=1911,此分频系数可由计数器实现。
但若不加处理语句,其分频后的523Hz信号不是对称方波,而占空比很小的方波将很难使扬声器有效的发出声音。
为了得到对称方波,可将分频系数A分解为:分频系数A=分频系数n×2。
音乐演奏电路设计
音符与频率关系对照表
音名
低音1 低音2 低音3 低音4 低音5 低音6 低音7
频率( Hz) 261.1 293.7 329.6 349.2 392 440 493.9
Q
K CLRN
inst1
OUTPUT
PIN_112
speek
按如下步骤完成发声单元设计
建立设计工程后
1、设计10分频器,并生成逻辑符号块; 2、设计数控分频器,并生成逻辑符号块; 3、添加一个LPM常数单元,为数控分频器提供分频预置数; 4、用JK触发器实现一个2分频器(即一个T’触发器); 5、添加输入及输出端口,并完成电路连接; 6、编译; 7、锁定引脚,时钟输入为Pin16(10MHz信号),蜂鸣器(喇
一个基本的发声单元
PIN_16
clk_in
INPUT VCC
lpm_constant0
inst4
135 11
Freq_1MHz Clk_10M clk_1MHz
inst5
VCC
DigFreq
Clk_1MHz Tone[10..0]
Spks
inst
spk_pulse
spk_pulse
JKFF
PRN
J
叭)输出为Pin112; 8、再次编译; 9、器件下载。 10、按分频预置数表格修改LPM常数单元的数值,重复编译、
下载的步骤,体会不同的发音音符。
十分频器VHDL代码示例
数控分频器VHDL代码示例
本次课任务
在上述基本发生单元实现的基础上,用VHDL描述一 个键控音调选择模块,能够通过5个逻辑开关控制, 选择产生不同的音符声音(低、中、高音共21个)。
可编程电子音乐自动演奏电路设计
第1章技术指标1.1系统功能要求可编程电子音乐演奏电路可以通过开关选择预先设定好的音乐曲目,曲目选定后则自动演奏所选曲目。
1.2系统结构要求可编程电子音乐自动演奏电路的系统结构要求如图1-1所示。
图中K1用于选择预先设置在电路中的乐曲,选中某一乐曲后对应的发光二极管亮,音乐演奏电路反复自动演奏所选的乐曲,经功率放大后由喇叭播出,直至选中下一首为止。
1.3 基本指标1.3.1 乐曲要求(a)乐曲数目3首。
(b)每首乐曲长度20s~30s。
(c)所选择的乐曲应在4个8度内,以第6个8度作为最高的8度。
(d)乐曲演奏速度为100拍/min~120拍/min..1.3.2 演奏要求第1页(a)用1个自复键K1选择所需的曲目,用3个LED表示选中对应曲目,当3个LED都不亮时,表示没有选中,电路没有乐曲输出。
(b)一旦选中某一首乐曲,电路将自动循环放送所选的乐曲。
1.3.3 电气指标(a)音频功放输入为方波。
(b)音阶频率误差E≤5生。
(c)负载(喇叭)阻抗为8Ω,功率为1/8W。
(d)输出音量可调。
1.4 设计条件1.4.1 电源电压为5V。
1.4.2 电路设计,不允许采用试凑法,必须采用系统设计方法画出ASM图,并根据ASM图设计控制电路。
1.4.3可供选择的元器件范围如表1-1所示。
表1-1第2页第2章 整体方案设计2.1 设计分析电子乐器模仿各种乐器的基本原理是:先将某种乐器的声音转换为电信号,再分析该乐器的电信号的波形和频谱,最后利用电子技术产生与该乐器相仿的电信号。
仅从电子乐器发出的信号电特性来看,其表现力主要体现在4个方面:音高(基本频率),长短,强弱(信号的电压幅度或输出功率)和音色(信号的波形和频谱)。
由于本课程设计所研究的电子乐器在演奏时,它所产生的信号是方波,其波形是占空比为50%的脉冲波,频谱中仅含有基频和其奇次谐波。
所以,再设计本课程设计时,在保证输出信号是方波的前提之下,主要考虑如何用电子电路控制音高(频率),长短(音的时值)和强弱(信号幅度)这3个电子乐器的基本特性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
成绩指导教师:日期:《EDA技术与VHDL语言设计》课程设计题目: EDA技术及其应用——乐曲演奏电路姓名:陈院系:电子信息工程学系专业:电子信息工程班级:电信092学号: 910706220指导教师:余尤好2011年12 月EDA 技术及其应用——乐曲演奏电路陈(电子信息工程学系 指导教师:余尤好)摘要:利用EDA 技术对乐曲演奏电路进行仿真,设计者在EDA 软件平台上,用硬件描述语言HDL 完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作.EDA 是电子设计自动化(Electronic Design Automation )的缩写,在20世纪90年代初从计算机辅助设计(CAD )、计算机辅助制造(CAM )、计算机辅助测试(CAT )和计算机辅助工程(CAE )的概念发展而来的。
关键词:EDA 技术 仿真 乐曲演奏一、概述1.1设计目的及要求本实验课程的目的,旨在通过上机实验,使学生加深理解EDA 技术的基本方法,帮助和培养学生建立利用原理图和硬件描述语言进行电路设计的基本方法和利用EDA 工具软件(MAX+plus Ⅱ或Quartus7.2)设计简单数字电子系统的能力,为以后从事有关数字电子系统方面的设计和研究开发工作打下基础。
为使演奏能循环进行,需另外设置一个时长计数器,当乐曲演奏完成时,保证能自动从头开始演奏。
1.2实验前预习每次实验前,学生须仔细阅读本实验指导书的相关内容,明确实验目的和实验内容;明确实验原理与步骤;复习与实验内容有关的理论知识;预习仪器设备的使用方法、操作规程及注意事项。
1.3设计环境计算机 MAX+plusII10.2 二、设计过程及原理2.1乐曲演奏的原理组成乐曲的每个音符的频率值(音调)及其持续的时间(音长)是乐曲能连续演奏所需的两个基本数据,因此只要控制输出到扬声器的激励信号的频率高低和持续时间,就可以使扬声器发出连续的乐曲声。
首先来看怎样控制音调的高低变化。
如下图1是乐曲演奏电路的原理框图,其中,乐谱产生的电路用来控制音乐的音调和音长。
控制音调通过设置计数器的预置数来实现,预置不同的数值就可以使计数器产生不同频率的信号,从而产生不同的音调。
控制音长是通过控制计数器预置数的停留时间来实现的,预置数停留的时间越长,则该音符演奏的时间越长。
每个音符的演奏时间都是0.25s 的整数倍,对于节拍长的音符,如2分音符,在记谱时将该音名连续记录两次即可。
6MHz扬声器4Hz数码管 图1 乐曲演奏电路原理框图反馈预置计数器 2分频器曲谱产生 音符显示2.2音名和频率的关系频率的高低决定了音调的高低。
音乐的十二平均率规定:没两个八度音之间的频率相差一倍。
在两个八度音之间,又可分为12个半音,每两个半音的频率比为2开12次方。
另外,音名A的频率为440Hz,音名B到C之间、E到F之间为半音,其余为全音。
由此可以计算处简谱中从低音1至高音1之间每个音名对应的频率见表一所示。
表1 简谱中的音名与频率的关系音名频率/Hz 音名频率/Hz 音名频率/Hz 低音1 261.6 中音1 523.3 高音1 1046.5 低音2 293.7 中音2 587.3 高音2 1174.7 低音3 329.6 中音3 659.3 高音3 1318.5 低音4 349.2 中音4 698.5 高音4 1396.9 低音5 392 中音5 784 高音5 1568 低音6 440 中音6 880 高音6 1760 低音7 493.9 中音7 987.8 高音7 1975.5 2.3音阶频率对应的分频比以及预置数该乐曲各音阶频率计相应的分频比见表二所示。
表2 各音阶频率对应的分频比以及预置数音名分频比预置数音名分频比预置数低音9102 7281 中音5111 11272低音7653 8730 中音4552 11831低音6818 9565 中音3827 12556低音6073 10310 中音3409 12974低音5736 10647 中音2867 13516三、设计过程3.1打开MAX+plusII10.2软件,点击主菜单中空白图标,进入新建文件对话框如图2.图2 新建文件对话框3.2点击ok进入程序编辑对话框如图3,编辑程序,程序代码见附录。
图3 程序编辑框3.3编辑程序完成点击保存按钮,然后点击编译窗口如图4图4 编译窗口3.4点击进行编译,编译成功的话会跳出如图5窗口图5 编译成功四、调试分析4.1点击新建跳出窗口点warefrom Editor file保存,会跳出波形编辑窗口如图6,然后点击保存。
图6 波形编辑窗口4.2将鼠标移至空白处并单击右键,出现如图7对话窗口。
图7 调入设计管脚4.3选择Enter nodes from snf选秀并按左键确认,会出现如图8对话框,单击和按钮,选择欲仿真的I/O管脚。
图8 加入要仿真的管脚4.4单击ok按钮,列出仿真电路的输入、输出管脚图,如图9图9 仿真前波形4.5点击选中simulator点击跳出调试图如图10图10 调试图4.6点击Start,观察仿真结果,单击激励输出波形文件Open SCF图标如图11图11 仿真结果图结束语:通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。
回顾起此次课程设计过程,从到定题目到顺利完成,从理论到实践,在整个学习的日子里,可以学到很多东西,同时不仅可以巩固以前所学过的知识,而且学到了很多在书本上所没有学到过得知识。
在设计中遇到了很多难以解决的问题,通过上网查资料终于游逆而解。
参考文献:[1]王金明.EDA技术与Verilog设计.北京:科学出版社,2008.[2] 崔建明主编.电工电子EDA仿真技术北京:高等教育出版社,2004.附录:modulesong(clk_6MHz,clk_4Hz,speaker,high,med,low); input clk_6MHz,clk_4Hz;output speaker;output[3:0] high,med,low;reg speaker;reg[3:0]high,med,low;reg[7:0]counter;reg[13:0]divider,origin;wire carry;assign carry=(divider==16383);always@(posedge clk_6MHz)begin if(carry)divider<=origin;else divider<=divider+1;endalways@(posedge clk_6MHz)begin speaker<=~speaker;endalways@(posedge clk_4Hz)begincase({high,med,low})'b000000000011:origin<=7281;'b000000000101:origin<=8730;'b000000000110:origin<=9565;'b000000000111:origin<=10310;'b000000010000:origin<=10647;'b000000100000:origin<=11272;'b000000110000:origin<=11831;'b000001010000:origin<=12556;'b000001100000:origin<=12974;'b000100000000:origin<=13516;'b000000000000:origin<=16383;endcaseendalways@(posedge clk_4Hz)beginif(counter==63) counter<=0;else counter<=counter+1; case(counter)0:{high,med,low}<='b000000000011;1:{high,med,low}<='b000000000011;2:{high,med,low}<='b000000000011;3:{high,med,low}<='b000000000011; 4:{high,med,low}<='b000000000101; 5:{high,med,low}<='b000000000101; 6:{high,med,low}<='b000000000101; 7:{high,med,low}<='b000000000110; 8:{high,med,low}<='b000000010000; 9:{high,med,low}<='b000000010000; 10:{high,med,low}<='b000000010000; 11:{high,med,low}<='b000000100000; 12:{high,med,low}<='b000000000110; 13:{high,med,low}<='b000000010000; 14:{high,med,low}<='b000000000101; 15:{high,med,low}<='b000000000101; 16:{high,med,low}<='b000001010000; 17:{high,med,low}<='b000001010000; 18:{high,med,low}<='b000001010000; 19:{high,med,low}<='b000000000000; 20:{high,med,low}<='b000001100000; 21:{high,med,low}<='b000001010000; 22:{high,med,low}<='b000000110000; 23:{high,med,low}<='b000001010000; 24:{high,med,low}<='b000000100000; 25:{high,med,low}<='b000000100000; 26:{high,med,low}<='b000000100000; 27:{high,med,low}<='b000000100000; 28:{high,med,low}<='b000000100000; 29:{high,med,low}<='b000000100000; 30:{high,med,low}<='b000000100000; 31:{high,med,low}<='b000000100000; 32:{high,med,low}<='b000000100000; 33:{high,med,low}<='b000000100000; 34:{high,med,low}<='b000000100000; 35:{high,med,low}<='b000000110000; 36:{high,med,low}<='b000000000111; 37:{high,med,low}<='b000000000111; 38:{high,med,low}<='b000000000110; 39:{high,med,low}<='b000000000110; 40:{high,med,low}<='b000000000101; 41:{high,med,low}<='b000000000101; 42:{high,med,low}<='b000000000101; 43:{high,med,low}<='b000000000110; 44:{high,med,low}<='b000000010000; 45:{high,med,low}<='b000000010000; 46:{high,med,low}<='b000000010000; 47:{high,med,low}<='b000000100000;48:{high,med,low}<='b000000000011; 49:{high,med,low}<='b000000000011; 50:{high,med,low}<='b000000010000; 51:{high,med,low}<='b000000010000; 52:{high,med,low}<='b000000000110; 53:{high,med,low}<='b000000000101; 54:{high,med,low}<='b000000000001; 55:{high,med,low}<='b000000010000; 56:{high,med,low}<='b000000000101; 57:{high,med,low}<='b000000000101; 58:{high,med,low}<='b000000000101; 59:{high,med,low}<='b000000000101; 60:{high,med,low}<='b000000000101; 61:{high,med,low}<='b000000000101; 62:{high,med,low}<='b000000000101; 63:{high,med,low}<='b000000000101; endcaseendendmodule。