EDA简易电子琴设计

合集下载

EDA简易电子琴

EDA简易电子琴

EDA上机实验报告简易电子琴学院:电子工程学院班级:020831简易电子琴1.系统原理框图扬声器在不同频率的信号驱动下将发出不同的声音。

本实验是利用实验板上的8个按键产生不同的音阶信号,按键不同时,不同的音阶信号产生不同的频率信号去驱动扬声器,从而实现电子琴的功能。

根据音乐理论,每个8度音之间可分为12个半音,每个半音之间的频率相差(0599.1212 Hz )。

若C 调第一个音名的频率为261.63Hz ,则各音名与频率以及2MHz 时钟的分频系数的关系如表所示。

表1—1音名与频率以及2MHz 时钟的分频系数的关系器产生按键编码信号;时钟分频器产生不同的分频系数,将输入时钟频率分频至各音名对应的频率值,从而驱动扬声器发出该频率的声音。

键盘输入扬声器2MHz 时钟输入图1—2 简易电子琴的系统框图图1—3为实现简易电子琴的顶层原理图。

其中,KEYBOARD 模块实现对键盘的编码,K[7..0]为键盘输入,SEL[2..0]为3位二进制编码输出,EN 为使能输出信号(高电平有效);M_FREQ 模块实现分频功能,CLK 为时钟输入,当SEL[2..0]编码输入不同,且EN 输入为高电平时,分频器产生不同的频率值,当SPK 输出为1时扬声器响,否则静音。

图1—3实现简易电子琴的顶层原理图2.模块设计①键盘编码器VHDL描述文件keyboard.vhd如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity keyboard isport(k: in std_logic_vector(7 downto 0); --8位键盘输入sel: out std_logic_vector(2 downto 0); --3位键盘编码输出en: out std_logic ---使能输出);end keyboard;architecture arc_keyboard of keyboard isbeginprocess(k)begincase k iswhen"11111110"=>sel<="001"; --按键,产生编码en<='1';when"11111101"=>sel<="010";en<='1';when"11111011"=>sel<="011";en<='1';when"11110111"=>sel<="100";en<='1';when"11101111"=>sel<="101";en<='1';when"11011111"=>sel<="110";en<='1';when"10111111"=>sel<="111";en<='1';when"01111110"=>sel<="000";en<='1';when others=> sel<="000";en<='0';end case;end process;end arc_keyboard;②时钟分频器VHDL描述文件m_freq,vhd如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity m_freq isport(clk,en:in std_logic;sel: in std_logic_vector(2downto 0); --3位键盘编码输入spk: out std_logic --扬声器控制信号输出);end m_freq;architecture arc_m_freq of m_freq issignal count_ld,count:std_logic_vector(12 downto 0);beginprocess(sel)begincase sel iswhen "000" => count_ld <= "0111011101110"; --3822when "001" => count_ld <= "1110111011011"; --7643when "010" => count_ld <= "1101001010101"; --6809when "011" => count_ld <= "1011110110010"; --6066when "100" => count_ld <= "1011001011101"; --5725when "101" => count_ld <= "1001111101101"; --5101when "110" => count_ld <= "1000111000000"; --4544when "111" => count_ld <= "0111111010000"; --4048when others => count_ld <= "0111011101110"; --3822end case;end process;processbeginwait until clk'event and clk='1'; --计数器同步清零if en='0' thencount<=(others=>'0');spk<='1'; --当计数值小于count_ld/2时,spk=’1’,且加1计数elsif count<('0'&count_ld(12 downto 1)) thencount<=count+1;spk<='1';--当计数值大于count_ld/2且小于count_ld时,spk=’0’,且加1计数elsif count<count_ld thencount<=count+1;spk<='0';--当计数值小于count_ld时,计数器清零,spk=’1’else count<=(others=>'0');spk<='1';end if;end process;end arc_m_freq;3.原理图和波形仿真图①键盘编码器的.bsf图:②时钟分频器的.bsf图:③简易电子琴的顶层原理图.bdf:⑤波形仿真图:⑴按键编码为’11111110’时波形图:⑵按键编码为’11111101’时波形图:⑶按键编码为’01111111’时波形图:其它的波形图也和这差不多,只要分别改变k[7]到k[0]的高低电平达到和编码的高低电平相同,然后仿真再看波形图。

eda课程设计简易电子琴

eda课程设计简易电子琴

eda课程设计简易电子琴一、课程目标知识目标:1. 让学生了解EDA(电子设计自动化)的基本概念,掌握简易电子琴的设计原理;2. 使学生掌握电子琴电路的组成、工作原理和编程方法;3. 帮助学生理解电子琴音调、音量调节的电路实现方式。

技能目标:1. 培养学生运用EDA工具进行电路设计和编程的能力;2. 提高学生动手实践、团队合作和问题解决的能力;3. 让学生学会使用电子琴演奏简单曲目,培养音乐素养。

情感态度价值观目标:1. 激发学生对电子设计的兴趣和热情,培养创新精神和实践能力;2. 培养学生严谨、认真、负责的学习态度,养成良好的学习习惯;3. 引导学生关注科技发展,认识电子技术在生活中的应用,增强社会责任感。

课程性质:本课程为实践性较强的课程,结合理论知识,注重培养学生的动手能力和创新能力。

学生特点:学生处于初中阶段,具有一定的物理、数学基础,对新鲜事物充满好奇心,但可能缺乏实际操作经验。

教学要求:结合学生特点,采用任务驱动法,引导学生主动探究、实践,注重理论与实践相结合,提高学生的综合能力。

在教学过程中,将课程目标分解为具体的学习成果,以便进行教学设计和评估。

二、教学内容1. 理论知识:- 电子元件基本原理:电阻、电容、二极管、三极管等;- 电子琴工作原理:振荡器、分频器、放大器、键盘扫描电路等;- EDA软件使用:原理图绘制、PCB设计、仿真测试等。

2. 实践操作:- 简易电子琴电路搭建:指导学生动手搭建电子琴电路;- EDA软件操作:教授学生使用EDA软件进行原理图绘制和PCB设计;- 编程与调试:教授学生编程方法,对电子琴进行调试。

3. 教学大纲:- 第一周:电子元件基本原理学习;- 第二周:电子琴工作原理学习;- 第三周:EDA软件使用教学;- 第四周:简易电子琴电路搭建与调试;- 第五周:总结与展示,学生进行作品展示,分享心得。

4. 教材章节:- 《电子技术基础》中关于电子元件、电路原理的相关章节;- 《电子设计自动化》中关于EDA软件使用的相关章节;- 《电子琴设计与制作》中关于电子琴工作原理和制作过程的相关章节。

基于EDA的简易电子琴设计-鲍亚文

基于EDA的简易电子琴设计-鲍亚文

基于EDA的简易电子琴设计鲍亚文(安庆师范大学物理与电气工程学院安徽安庆 246011)指导老师:郑江云摘要:本设计是一个简易的七音符电子琴,该电子琴可以通过按键输入来控制音调,也可对预置乐曲的自动演奏,同时由数码管显示即时音符。

系统的实现是基于EDA技术,在Quartus软件平台上,借助FPGA目标器件,用硬件描述语言Verilog HDL进行编程并仿真验证。

本设计中的电子琴可操作性好,音符显示直观,声音优美。

关键词:电子琴,电子设计自动化,Verilog HDL语言引言科技发展的日新月异,催生了一系列新奇实用的电子产品。

在这些电子产品中,电子琴早已成为电子乐器行列中的重要一员。

电子琴是人类仿制常规乐器的代表之一,其发明问世极大地丰富了人们的听觉感受,推动了音乐的普及和发展。

在信息化与电子化交织的今天,电子琴作为社会科技与文明的产物,正扮演着音乐领域中不可或缺的角色。

EDA技术的快速发展和成熟,FPGA等数字可编程器件的出现和进步,基于EDA技术的设计也变得愈加简单可行。

基于EDA技术的设计不仅系统可靠性较高,而且能实现较为复杂的功能。

运用EDA软件可方便地在计算机平台上实现设计与仿真,本设计中的电子琴便是基于EDA技术,运用Verilog HDL 语言设计完成的。

1 EDA概述与音乐知识1.1 EDA技术1.1.1 EDA的发展EDA(Electronic Design Automation,电子设计自动化)可以认识为在计算机工作平台上,以EDA 软件为开发环境,以PLD器件或ASIC专用集成电路为目标器件来设计实现电路系统的一门技术。

EDA 技术在逐渐进步,其大致经历了3个发展阶段:CAD阶段(20世纪70年代至80年代初)、CAE阶段(20世纪80年代初至90年代初)、EDA阶段(20世纪90年代以后)。

[1]EDA技术在进入21世纪后,得到了不小的进步和发展,突出表现在以下几个方面:[2](1)不断推出在仿真验证和设计两方面都支持标准硬件描述语言的EDA软件,功能更加强大且验证更加高效;(2) EDA技术使得电子设计成果以自主知识产权(IP)的方式予以确认,提高了设计成果的可重用性;(3)EDA技术使得电子领域各学科之间的界限更加模糊,互为包容,如模拟和数字、软件和硬件、系统和器件、ASIC和FPGA等;(4)SoPC(可编程芯片系统)进入实用化阶段;(5)高速数字信号处理算法可基于FPGA的DSP技术实现。

EDA简易电子琴设计报告

EDA简易电子琴设计报告

,、题目分析1、分析要求,确定总体方框图本设计基本部分是用VHDL语言设计一个简易的八音符电子琴,在Quartus II 平台下下载到Cyclone系列的EP1C12Q240C芯片中,该电路设计能够实现DO RE Ml、FA等八个音调的电子琴,发挥部分是设计一乐曲自动演奏器,用户自己编制乐曲存入电子琴,电子琴可以完成自动演奏。

电子琴音乐产生原理及硬件设计由于一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了。

根据系统设计要求,系统设计采用自顶向下的设计方法,系统的整体组装设计原理图如图1所示,它由乐曲自动演奏模块AUTO音调发生模块TONE和数控分频模块FENPIN三部分组成。

图1系统的整体组装设计原理图2、最终完成的技能指标(1)设计一个简易的八音符电子琴,它可通过按键输入来控制音响。

(2)演奏时可以选择是手动演奏(由键盘输入)还是自动演奏已存入的乐曲】、选择方案通过可编程逻辑器件(PLD和VHDL硬件描述引言来实现电子琴的基本部分和发挥部分的设计。

对于基本部分,设计的主体是数控分频器,对输入的频率进行分频,得到各个音阶对应的频率最为输出。

当按下不同的键时发出不同的声音。

对于发挥部分,则在原设计的基础上,增加一个乐曲存储模块,代替了键盘输入,产生节拍控制(index数据存留时间)和音阶选择信号,即在此模块中可存放一一个乐曲曲谱真值表,由一个计数器来控制此真值表的输出,而由此计数器的计数时钟信号作为乐曲节拍控制信号,从而可以设计出一个纯硬件的乐曲自动演奏电路。

方案一:由单片机来完成设计。

可用单片机控制键盘的输入,以及产生相应的频率信号作为输出。

目前,单片机的功能已比较强大,集成度日益增高且其设计和控制比较容易。

但是由于在传统的单片机设计系统中必须使用许多分立元件组成单片机的外围电路,如锁存器,译码器等都需要单独的电路,因此整个系统显得十分复杂,抗干扰性差,在运行过程中容易死机或进入死循环,可靠性降低,而功耗费用增高。

数字电子EDA课程设计八音电子琴

数字电子EDA课程设计八音电子琴

数字电子EDA课程设计八音电子琴第一篇:数字电子EDA课程设计八音电子琴燕山大学EDA课程设计实验报告院系:信息科学与工程学院姓名:班级:学号:日期:[实验名称] 八音电子琴[实验要求] 1.能发出1.2.3.4.5.6.7.i八个音2.用按键作为键盘3.C调至B调对应频率如下表音调 C(高音)B A G F E D C频率(Hz)261.63x2 493.88 440.00 392.00 349.23 329.63 293.66 261.63 [实验电路设计] 1.命题分析根据命题的要求,要使扬声器发音,需要在其输入信号端连接一个对应频率的方波信号.实验使用的信号源可以提供从几Hz到几兆Hz不等的信号频率,自然可以想到本实验命题的关键是一个具有相应分频比的分频器.考虑到硬件(按钮)在实际工作过程中会因元件的接触产生一些不可避免的抖动脉冲电平,会对实验造成影响,因此需要在按键接入线路中安装防抖动电路.2.设计过程1>分频器为了取得合适的电路复杂度和可接受的误差范围,分频器的时钟信号选取为器件所提供的JPCK—1(3MHz音频信号).然后通过计算,用时钟信号频率除以各发音频率,得到的分频比如下表:分频比(16进制)5DEE 6384 6F84 7D62 8ADE 951C A760 BBDE频率(Hz)高C:261.63x2 B:493.88 A:440.00 G:392.00 F:349.23 E:329.63 D:293.66 C:261.63 利用四片十六进制计数器74LS161就可以连接成适用的分频器.分频器连接完成后会产生一个预定频率的周期脉冲.但是实验要求的方波其占空比应该为1:1,因此在输出脉冲端加装一个T触发器,每次脉冲到达触发器的时候输出便会跳变电平,这就达到了驱动扬声器的条件.但是在应用了T触发器后输出方波的周期比预定的扩大了一倍,也就是说频率减至原来的二分之一.此时应重新选择时钟信号,令其为原来2倍即可.根据实验指导书,最终确定选择的时钟信号为6MHz.2>防抖动电路利用D触发器的电压跟随特性可以用一个频率较低的时钟信号驱动,达到防止按键抖动的目的.电路较简单,见图3.图1.时钟分频电路(downway)图2.CP为375K时上图的B4输出波形由于设计的原因,本电路只能支持单音节输入.当同时键入两个以上的音阶时,分频比较小的(比较高的音阶)优先发声.图3.按键输入防抖动电路3>电路组合组合后的电路模块如图4.共有11个输入端和1个输出端.其中,CP_6M为整个电路的主频,使用电路板上的6MHz信号输出端;CP_1US为防抖动电路中触发器所使用的时钟,要求频率不高,选择电路板提供的CLK3-3(12Hz);KEYCa-B是电子琴的输入按键接口,依次是从低音到高音.Speaker是电路的输出端,接入扬声器,为其产生相应音阶的频率.实际电路如图4.连接完成后,对该电路进行仿真测试,如图5,令其CP_6M为6MHz,CP_1US为一个较低频率脉冲,设臵KEYB(音节B)为有效电平,在speaker上得到的输出频率为493,与实际音节的频率相同.图4.八音电子琴图5.电子琴完成品的仿真波形T触发器2分频电路[硬件测试] [实习心得] 第一感觉,数字电子技术EDA实习很有意思.我们可以有充分的时间去思考怎么做出一个东西,这个东西的用处也许不大甚至几乎没有,但重要的是思考的过程:从它的用途总结出它的特性,从它的特性构思出它的原理,从原理到构建模型,再到模型的实现,利用已有的知识,可用的元件,最终组合出一个具有高度逻辑性的组合电路,这和我们小时候玩搭积木差不多.把积木一块块的搭成一座城堡,中间缺少任何一层甚至任何一块,城堡都可能会倒塌.同理,在我们构建命题所给的元器件时任何一个逻辑错误都可能是致命的,导致最后无法出现正确结果或者干脆不能用.因此,实习,有意思的同时还不能大意.这是一个锻炼逻辑思维和思维严谨性的极好的机会,我和我的同学们在这次工作中受益非浅.大家都积极思思考,查找资料,集思广益来解决现有的问题。

音乐发生器及简单电子琴的eda设计 2

音乐发生器及简单电子琴的eda设计 2

音乐发生器及简单电子琴的eda设计摘要本系统是采用EDA技术设计的一个简易的八音符电子琴和音乐发生器,该系统基于计算机中时钟分频器的原理,采用自顶向下的设计方法来实现,它可以通过按键输入来控制音响。

系统由乐曲自动演奏模块、乐器演示模块琴/乐功能选择模块、音调发生模块和数控分频模块五个部分组成。

系统实现是用硬件描述语言VHDL按模块化方式进行设计,然后进行编程、时序仿真、整合。

本系统功能比较齐全,有一定的使用价值。

关键字电子琴;EDA;VHDL;音调发生;QuartusII;1 引言:1.1设计目的1)利用数控分频器设计一个电子琴硬件电路和音乐发生器2)演奏时可以选择是手演奏(键盘输入)或自动演奏已存入的乐曲,并且能自动重复演奏1.2设计的基本内容运用VHDL语言对简易电子琴的各个模块进行设计,并使用EDA 工具对各模块进行仿真验证。

本设计包含如下三个模块:乐曲自动演奏模块,音调发生模块,数控分频模块,最后把各个模块整合后,通过电路的输入输出对应关系连接起来2.1 EDA技术EDA技术是在电子CAD技术基础上发展起来的计算机软件系统,是指以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术的最新成果,进行电子产品的自动设计。

利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程的计算机上自动处理完成。

现在对EDA的概念或范畴用得很宽。

包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有EDA的应用。

目前EDA技术已在各大公司、企事业单位和科研教学部门广泛使用。

例如在飞机制造过程中,从设计、性能测试及特性分析直到飞行模拟,都可能涉及到EDA技术。

本文所指的EDA技术,主要针对电子电路设计、PCB设计和IC设计。

2.2 硬件描述语言——VHDL2.2.1 VHDL的简介VHDL的英文全名是Very-High-Speed Integrated Circuit HardwareDescription Language,诞生于1982年。

eda电子琴课程设计

eda电子琴课程设计

eda电子琴课程设计一、课程目标知识目标:1. 学生能够理解并掌握EDA电子琴的基本结构和工作原理;2. 学生能够运用电子琴演奏简单的旋律,并识别不同音符的音高和时值;3. 学生能够了解并运用基本的音乐理论知识,如音阶、和弦等;4. 学生掌握音乐创作的基本方法,能够创作简单的电子琴曲目。

技能目标:1. 学生能够熟练操作EDA电子琴,进行基本演奏;2. 学生能够运用所学音乐理论知识,进行简单的曲目分析和创作;3. 学生能够在团队合作中,与他人共同演奏和创作音乐作品;4. 学生能够运用电子琴进行即兴演奏,提高音乐表现力。

情感态度价值观目标:1. 学生培养对音乐的热爱,提高音乐素养,树立正确的审美观念;2. 学生在学习和创作过程中,培养创新精神和实践能力;3. 学生通过团队合作,培养协作精神和沟通能力;4. 学生通过音乐学习,增强自信,勇于展示自我。

本课程针对小学四年级学生,结合电子琴教学实际,以趣味性和实用性为导向,注重培养学生的动手操作能力、音乐素养和团队协作精神。

通过本课程的学习,使学生能够在轻松愉快的氛围中掌握电子琴演奏技巧,提高音乐创作能力,激发学生对音乐的热爱和兴趣。

同时,课程目标分解为具体的学习成果,便于后续教学设计和评估。

二、教学内容1. 电子琴基础知识:介绍EDA电子琴的结构、功能键及操作方法,使学生了解电子琴的基本构成和演奏方式。

- 教材章节:第一章 电子琴概述- 内容列举:电子琴结构、功能键、演奏操作2. 音乐理论基础:学习基本的音乐符号、音阶、和弦等知识,为演奏和创作打下基础。

- 教材章节:第二章 音乐理论基础- 内容列举:五线谱、音符、音阶、和弦3. 电子琴演奏技巧:教授基本演奏技巧,如指法、音色选择、节奏控制等,提高学生的演奏能力。

- 教材章节:第三章 电子琴演奏技巧- 内容列举:指法、音色、节奏、动态4. 简单曲目演奏:选取适合学生程度的曲目,指导学生进行演奏练习,巩固所学知识。

EDA_电子琴课程设计 2(1).

EDA_电子琴课程设计 2(1).

《EDA技术实用教程》课程设计课程设计报告课题: EDA电子琴课程名称: EDA技术实用教程学院名称:物理电气信息学院班级: 2011级通信工程(1)班学生姓名:安昱学号: 12011243986 指导教师:杨泽林2013年12月26日EDA技术实用教程课程设计EDA电子琴摘要:本课程设计主要采用EDA技术设计一个简易的八音符电子琴,它可通过按键输入来控制音响从而演奏出已存入的乐曲。

在课程设计中,系统开发平台为Windows XP,程序设计采用VHDL语言,程序运行平台为Quartus II。

然后编写程序实现电子琴的各项功能,使不同的音阶对应不同频率的正弦波,按下不同的键时发出对应频率的声音。

程序通过调试运行,时序仿真,电路功能验证,顺利地实现了设计目标。

关键词:电子琴;EDA;VHDL;音阶;频率1、引言随着信息科学的进步,现代电子产品的性能越来越高,复杂度越来越大,更新步伐也越来越快,电子技术的发展进入了划时代的阶段。

其中电子技术的核心便是电子设计自动化EDA(Electronic Design Automatic)技术。

EDA是指以计算机为工作平台,融合了应用电子技术、计算机技术、智能化技术的最新成果而开发出的电子CAD 通用软件包,它根据硬件描述语言VHDL完成的设计文件,自动完成逻辑编译、化简、分割、综合、优化、布局布线及仿真,直至完成对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。

本课程设计就是采用EDA技术描述语言VHDL编程实现简易电子琴的各项功能,是EDA技术应用于实际的一个很好的例子。

1.1 课程设计目的本课程设计主要是基于VHDL文本输入法设计乐曲演奏电路,该系统基于计算机中时钟分频器的原理,采用自顶向下的设计方法来实现,通过按键输入来控制音响或者自动演奏已存入的歌曲。

系统由乐曲自动演奏模块、音调发生模块和数控分频模块三个部分组成。

系统实现是用硬件描述语言VHDL按模块化方式进行设计,然后进行编程、时序仿真、电路功能验证,奏出美妙的乐曲。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

合肥工业大学电子科学与技术专业《集成电路课程设计》简易电子琴设计一、 实验目的使用VerilogHDL 语言进行前端设计,并使用Quaruts 软件在GW48-PK2实验上实现仿真,实现硬件电子琴。

电子琴要求有8个音阶,使用外部时钟信号3MHz ,能同步显示音阶。

二、设计要求1、 设计一个简易电子琴。

要求能演奏的音域为D 调的do 到E 调do 。

2、 用GW48-PK2中的8个按键作为琴键。

3、 GW48-PK2中有蜂鸣器。

4、 可以使用GW48-PK2上的12MHz 作为输入时钟信号三、设计思路通过可编程逻辑器件(PLD )和VHDL 硬件描述语言来实现电子琴的基本要求。

设计的主体是数控分频器,对输入的频率按照与每个音阶对应的分频系数进行分频,得到各个音阶对应的频率分别在蜂鸣器和数码管上以声音和频率数值的形式作为输出。

四、设计组成与原理下图为系统的工作原理框图。

分频置 数按 键分 频器12MHZ蜂 鸣 器数码管显示五、模块设计1.音名与频率的关系音乐的12平均率规定:每2个八度音(如简谱中的中音1与高音1)之间的频率相差1倍。

在2个八度音之间,又可分为12个半音。

灵位,音符A(简谱中的低音6)的频率为440HZ,音符B到C之间、E到F之间为半音,其余为全音。

由此可以计算出简谱中所有的音符的频率,在这我们只需计算出中音1到高音1的频率即可。

如下所示:表一简谱音名与频率的对应关系由于各音符对应的频率多为非整数,而分频系数又不能为小数,故必须将计算得到的分频数四舍五入取整。

若分频器时钟频率过低,则由于分频系数过小,四舍五入取整后的误差较大;若时钟频率过高,虽然误差变小,但分频数将变大。

实际的设计应综合考虑两方面的因素,在尽量减少频率误差的前提下取合适的时钟频率。

本实验要求用12MHZ的时钟脉冲信号,所以不必考虑这方面的因素。

实际上,只要各个音符间的相对频率关系不变,弹奏出来的音调听起来是不会走调的。

2.分频系数与初始值(预置数)本例设计的音乐电子琴选取12MHZ的系统时钟频率。

在数控分频器模块中,由于数控分频器输出的波形是脉宽极窄的脉冲波,为了更好地驱动扬声器发生,减少输出的偶次谐波分量,在到达扬声器之前需要均衡占空比,从而生成各音符对应频率的对称方波输出。

这个过程实际上进行了一次二分频,频率变为原来的二分之一,即6MHZ。

因此,分频系数的计算可以按照下面的方法进行。

以中音1为例,对应的频率值为523.3HZ,它的分频系数应该为:Divider=6MHz/523.3=6*106 /523.3=11466至于其他音符,同样由上式求出对应的分频系数,这样利用程序可以轻松地得到相应的乐声。

各音名对应的分频系数如下表:表二各音名对应的分频系数由于最大的分频系数为11466,故采用14位二进制计数器已能满足分频要求。

将分频系数设为0,其初始值为16383(214 -1 )即可,此时扬声器不会发声。

对于不同的分频系数,加载不同的初始值即可。

本实验参考王金明:《Verilog HDL程序设计教程》,采用差值法进行分频。

把差值作为初始值,为不同音阶的发声的来源。

各音名对应的初始值如下表:表三各音名对应的初始值3.数控分频器数控分频器是对基准频率进行分频,得到与各个音阶对应的频率输出。

数控分频模块是由一个初始值可变的14位加法计数器构成,该计数器的模为214=16384,当计数器记满时,产生一个进位信号,该信号就是用作发音的频率信号。

其分为预分频和脉冲展宽两部分。

a)预分频assign preclk=(divider==16383)?1:0;always@(posedge clk)beginif(preclk)divider=origin;elsedivider=divider+1;endb) 脉冲展宽(二分频)always@(posedge preclk)beginspeaker=~speaker;目的是将预分频产生的占空比很小的波形进行拓宽,使得波形有足够长的高电平来驱动扬声器。

六、实验仿真(一)测试使用的仪器与软件仪器康芯GW48系列EDA设备-----GW48-PK2实验电路图和适用范围:本实验适用模式3,其结构图如下1.Altera 公司的Cyclone 系列的EP2C5T144C8芯片2.康芯教学实验箱 软件 Quartus IIQuartus II 是Altera 公司的综合性PLD 开发软件,支持原理图、VHDL 、VerilogHDL 以及AHDL (Altera Hardware Description Language )等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD 设计流程 以下为使用Quartus II 软件得到的RTL 级视图CLOCK9CLOCK5CLOCK2CLOCK0实验电路结构图NO.3译码器译码器译码器译码器译码器译码器译码器译码器D9D16D15D14D13D12D11D10D8D7D6D5D4D3D2D1PIO8PIO9PIO10PIO11PIO12PIO13PIO14PIO15S P E A K E R扬声器12345678目标芯片FPGA/CPLD PIO0PIO1PIO2PIO3PIO4PIO5PIO6PIO7键1键2键3键4键5键6键7键8PIO15-PIO8PIO47-PIO44PIO43-PIO40PIO39-PIO36PIO35-PIO32PIO31-PIO28PIO27-PIO24PIO23-PIO20PIO19-PIO16(二) 测试方法注:选择模式3,此模式下按键为琴键式,适合本实验演奏。

1.打开QuartusⅡ软件,file-NewProjectWizard-选择程序e_piano2.2.Assignment-Device-设置芯片为CycloneⅡ系列的EP2C5T144C83.定义管脚如下下图为管脚定义界面4.定义完成后再次编译,再执行Programmer,选中e_piano.sof,开始下载。

下图为编译下载界面5.下载完成后控制按键,观察音调准确,声音清晰,数码管能够正常显示音调。

七、实验总结根据老师的要求,我们先一起通过所学知识讨论了设计原理,不懂的问了下其他同学,最后定制出了大致计划。

在具体设计过程中,我们根据步骤逐次检验,查阅了有关资料,主要包括王金明:《Verilog HDL程序设计教程》以及潘松,黄继业,潘明的《EDA技术实用教程》在初次编写分频模块时候,使用的是比较基本的计数器分频法,编写程序后在modelsim软件中进行了仿真,发现无法观察到分频情况。

经过分析,原因是由于分频比过大,因此在波形图中很难观察到。

而且由于预分频的占空比很小,更难以观察到高电平。

在原因找到后,为了考察程序的性能,我们将输入频率减小。

同时适当缩小分频比,这样就得到了模块仿真中的分频波形。

通过此次实验,我们不仅学会了Quartus II软件的使用方法,还对集成电路设计有了更深的认识,对专业知识得到了加强。

同时认识到了自己的不足,比如有些知识已经模糊,所以有待于复习,所谓“温故而知新”,我们要学习的东西还很多。

这次的学习将对自己以后的研究生学习和将来的工作有很大的帮助,也是一次实践的锻炼!参考文献1.王金明:《Verilog HDL程序设计教程》2.潘松,黄继业,潘明《EDA技术实用教程》3.其他网上资料附录:程序源代码//信号定义与说明://clk:用于产生各种音阶频率的基准频率;//key:电子琴音符输入端口;//speaker:用于激励扬声器的输出信号,本例中为方波信号;//med,high:分别用于显示中音,高音音符,各驱动一个数码显示管和LED来显示;//origin:为数控分频模块提供音符频率的初始值;module dianziqin(clk,key,speaker,med,high);input clk; //12MHZ input [7:0] key;output speaker;output high; //高音显示 output [3:0] med; //中音显示 reg [13:0] divider; //分频系数和初始值 reg [13:0] origin;reg speaker;reg high;reg [3:0] med;wire preclk;assign preclk=(divider==16383)?1:0; //14位,对时钟频率进行预分频always@(posedge clk)beginif(preclk)divider=origin;elsedivider=divider+1;endalways@(posedge preclk)beginspeaker=~speaker;//进行2分频,拓宽波形,产生方波信号endparameter do=8'b00000001,re=8'b00000010,mi=8'b00000100,fa=8'b00001000,so=8'b00010000,la=8'b00100000,xi=8'b01000000,do_=8'b10000000;//状态编码,采用独热码编码方式always@(key) //分频比预置case(key)do: beginorigin=4917;med=1;high=0;endre: beginorigin=6167;med=2;high=0;endmi: beginorigin=7282;med=3;high=0;endfa: beginorigin=7793;med=4;high=0;endso: beginorigin=8730;med=5;high=0;endla: beginorigin=9565;med=6;high=0;endxi: beginorigin=10309;med=7;high=0;enddo_: beginorigin=10650;med=1;high=1;enddefault:beginorigin=16383; high=0;endendcaseendmodule。

相关文档
最新文档