基于VHDL的简易音乐播放器

合集下载

用VHDL实现乐曲播放与音乐键盘功能

用VHDL实现乐曲播放与音乐键盘功能

用VHDL实现乐曲播放与音乐键盘功能附有VHDL程序摘要本设计目的是用VHDL实现乐曲播放与音乐键盘两用的系统。

该系统有两种工作模式:一个是作为音乐按键使用;一个是播放乐曲。

作为音乐键盘,首先系统要能播放每个音符的声音,我们知道声音的高低由声音的频率来决定,实现每个音符不同的发音频率值,主要是通过一个可预置数的分频器,将时钟信号进行分频,分频后得到不同的发音频率。

音乐播放是该系统的附加功能。

作为音乐键盘,系统已经实现每个音符不同的发音频率值,要使系统能够实现演奏音乐的功能还需要确定每个音符的发声持续时间,通过将时钟信号适当分频,即每个节拍的持续时间,还需要按顺序存储乐曲的每个音符,每个节拍向蜂鸣器输出一个音符的声音。

正文2.1. 系统设计设计要求:本设计目的是用VHDL实现乐曲播放与音乐键盘两用的系统。

该系统有两种工作模式:一个是作为音乐键盘使用;一个是播放乐曲。

设计方案:本设计由三个模块构成:(1)模块NOTETABS模块NOTETABS有两种工作模式。

其中设置了全部音符对应的分频预置数,当系统作为音乐键盘时当有键盘按下时,模块TONETABA向当Tone输出一个与键盘对应的分频预置数;当系统作为音乐播放使用时模块,该模块是置了一个8位二进制计数器,这个计数器的计数频率为4HZ,即每一个计数值的停留时间为0.25秒,恰为当全音符设为1秒时,四四拍的4分音符持续时间,每个音符的停留时间由音乐节拍和音调发生器模块NOTETABS的clk的出入频率决定。

这个分频预置数的输出由对应于TONETABA中的Index[3..0]确定。

输向TONETABA中Index[3..0]的值ToneIndex[3..0]的输出值与持续时间由模块NOTETABS决定。

(2)模块TONETABA模块TONETABA是乐曲简谱码对应的分频预置数查表电路,模块TONETABA接收模块NOTETABS发出的所要发生的音符的信息,然后查表,找出该音符所对应的分频预置数,并通过Tone端口向模块SREAKERA输出该预置数。

(完整word版)基于VHDL的简易音乐播放器

(完整word版)基于VHDL的简易音乐播放器

EDA技术实用教程课程设计简易音乐播放器电子12-11206040124简易音乐播放器设计1.MIDI概述MIDI(Musical Instrument Digital Interface)乐器数字接口,是20 世纪80 年代初为解决电声乐器之间的通信问题而提出的。

MIDI是编曲界最广泛的音乐标准格式,可称为“计算机能理解的乐谱”。

它用音符的数字控制信号来记录音乐.一首完整的MIDI音乐只有几十KB大,而能包含数十条音乐轨道。

MIDI应用也比较广泛,电视晚会的音乐编导可以用MIDI功能辅助音乐创作,或按MIDI标准生成音乐数据传播媒介,或直接进行乐曲演奏.如果在计算机上装备了高级的MIDI软件库,可将音乐的创作、乐谱的打印、节目编排、音乐的调整、音响的幅度、节奏的速度、各声部之间的协调、混响由MIDI来控制完成.利用MIDI技术将电子合成器、电子节奏机(电子鼓机)和其他电子音源与序列器连接在一起即可演奏模拟出气势雄伟、音色变化万千的音响效果,又可将演奏中的多种按键数据存储起来,极大的改善了音乐演奏的能力和条件。

2.工作原理MIDI 音乐是Windows下的一种合成音乐,由于它通过记谱的方式来记录一段音乐.因此与wave音乐相比,它可以极大的减少存储容量。

MIDI 音乐的基本原理为:组成乐曲的每一个音符的频率值(音调)及其持续的时间(音长)是乐曲能连续演奏的两个基本数据,因此只要控制输出到扬声器的激励信号频率的高低和每一个频率信号持续时间,就可以使扬声器发生连续的乐曲。

图1 是歌曲《生日快乐歌》开头一句的简谱。

由图1 可知,该乐典涉及:中音5,6 ,7 ;高音1,2,3,4,5 .以此为例下面介绍在本音乐发生器芯片中音乐的形成过程。

前两个音符为中音5 ,1/16 音符,它对应的编码为1000 ,所占的脉冲个数为2 ,这样逐个将以上的简谱翻译成代码如下:|1000 1000 1001 1001 1000 1000 |1011 1011 1010 1010 1010 1010||1000 1000 1001 1001 1000 1000 |1100 1100 1011 1011 1011 1011||1000 1000 1111 1111 1101 1101 |1011 1011 1010 1010 1001 1001||1110 1110 1101 1101 1011 1011 |1100 1100 1011 1011 1011 1011|图1 《生日快乐歌》歌谱在节奏时钟脉冲的控制下,将每个代码所对应的分频系数逐一赋给基频,得到对应的音调,这样连续起来就形成一段美妙的音乐。

数电实验报告-音乐播放器

数电实验报告-音乐播放器

实验课题:简易乐曲播放器学院:班级:姓名:学号:班内序号:一、设计课题要求 (2)二、设计思路和总体框图 (2)三、分块电路设计 (4)四、仿真波形 (6)五、源程序 (7)六、功能说明 (20)七、所用元器件情况 (20)八、故障及问题分析 (21)九、总结和结论 (22)十、参考文献 (22)一设计课题的任务要求设计制作一个简易乐曲播放器:1. 播放器内预存3 首乐曲;2. 播放模式:顺序播放、随机播放,并用数码管或LED 显示当前播放模式;顺序播放:按内部给定的顺序依次播放3 首乐曲;随机播放:随机产生一个顺序播放3 首乐曲;3. 用数码管显示当前播放乐曲的顺序号;4. 设置开始/暂停键,乐曲播放过程中按该键则暂停播放,再按则继续播放;5. 设置Next 和Previous 键,按Next 键可以听下一首,按Previous 键回到本首开始;6. 选做:用户可以自行设定播放顺序,设置完成后,播放器按该顺序依次播放乐曲;7. 选做:自拟其它功能。

二设计思路和总体框图设计思路:组成乐曲的每个音符的发音频率值及其持续的时间是乐曲能连续演奏所需的2个基本要素。

乐曲的12平均律规定:每2个八度音之间的频率相差1倍。

在2个八度音之间,又可分为12个半音,每两个半音的频率比为2开12次方。

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

由此可以计算出简谱中从低音1至高音1之间每个音符的频率,如下表所示。

产生各音符所需的频率可用分频器实现。

本次实验使用的是MAXⅡ实验板,时钟频率为50MHz,计算出各个音符对应的分频系数,进行50%占空比的分频,即可得到各音符对应的频率。

对于节拍,如果将一拍的长度定为1秒,则1/4拍的时间为1/4秒,为其提供一个4Hz的时钟频率即可产生出1/4拍的效果了。

若需要半拍,只需将该音符记录两次就可以了。

产生节拍时钟也用分频器实现,本次实验中时钟频率为5Hz。

VHDL音乐播放器

VHDL音乐播放器

洛阳理工学院课程设计报告课程名称 EDA技术与VHDL设计题目音乐播放器的设计与仿真专业通信工程班级 B1105学号 B1105姓名完成日期 2014年12月22日前言随着科学技术的进步,电子器件和电子系统设计方法日新月异,电子设计自动化(Electronics Design Automation,EDA)技术正是适应了现代电子产品设计的要求,吸收了多学科最新成果而形成的一门新技术。

现如今掌握EDA技术是电子信息类专业的学生、工程技术人员所必备的基本能力和技能。

传统电子电路的设计,首先要对系统进行分析,然后按功能对系统进行划分,接下来就要选择特定芯片,焊接成PCB电路板,最后对成品PCB电路板进行调试。

这样的设计没有灵活性可言,搭成的系统需要的芯片种类多且数目大,而且对于电路图的设计和电路板的设计都需要很大的工作量,工作难度也很高。

随着可编程器件和EDA技术的发展,传统设计的劣势被克服,采用可编程逻辑器件基于芯片的设计方法,期间的内部逻辑和引脚可以由设计者自行决定,提高了设计的灵活性和工作效率;同时,将系统集成在一个芯片上的设计,使系统具有体积小、功耗低、可靠性高等特点。

EDA技术即电子设计自动化技术,它是以可编程逻辑器件(PLD)为载体,以硬件描述语言(HDL)为主要的描述方式,以EDA软件为主要的开发软件的电子设计过程。

它主要采用“自顶向下”的设计方法,设计流程主要包括:设计输入、综合、仿真、适配、下载。

EDA技术主要有以下特征:(1)高层综合的理论和方法取得进展,从而将EDA设计层次由RT级提高到了系统级,并推出了系统级综合优化工具,缩短了复杂ASIC的设计周期。

(2)采用硬件描述语言来描述10万门以上的设计,并形成了VHDL和Verilog-HDL两种标准硬件描述语言。

(3)采用平面规划技术对逻辑综合和物理版图设计联合管理,做到在逻辑设计综合早期阶段就考虑到物理设计信息的影响。

(4)可测性综合设计。

第4章应用VHDL设计数字系统-电子琴和音乐播放器的设计

第4章应用VHDL设计数字系统-电子琴和音乐播放器的设计

CLK
IF EN = '1' THEN
--检测是否允许计数(同步使能)
IF CNTI < 9 THEN --检测是否小于9
RST
CNTI := CNTI + 1; --小于9,允许加1计数
EN
ELSE
CNTI := (OTHERS =>‘0’); --大于等于9,计数值清零 END IF;
inst
END IF;
END IF;
IF CNTI = 9 THEN COUT <= ‘1’; --计数等于9,输出进位信号
ELSE COUT <= '0';
END IF;
CNT <= CNTI; --将计数值向端口输出
END PROCESS;
END behav;
CNT[3..0] COUT
项目1:电子琴的设计
仿真结果:10进制计数器设计
结论: 计数器就可以完成分频器的任务!
项目1:电子琴的设计
设计关键:N进制计数器设计——可变分频器
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL;
CNT_N CLK
RST
ENTITY CNT_N IS PORT (
CNT[11..0] COUT
项目1:电子琴的设计
设计关键:N进制计数器设计——可变分频器
ARCHITECTURE behav OF CNT_N IS
BEGIN
PROCESS(CLK, RST, EN)
VARIABLE CNTI : STD_LOGIC_VECTOR(11 DOWNTO 0);

简易音乐播放器数电实验

简易音乐播放器数电实验

数字电路与逻辑设计综合设计实验报告实验名称:简易音乐播放器姓名:班级:班班内序号:27一、设计任务要求设计制作一个简易乐曲播放器。

1)播放器内预存3首乐曲;2)播放模式:顺序播放、随机播放,并用数码管或LED显示当前播放模式;3)顺序播放:按内部给定的顺序依次播放3首乐曲;4)随机播放:随机产生一个顺序播放3首乐曲;5)用数码管显示当前播放乐曲的顺序号;6)设置开始/暂停键,乐曲播放过程中按该键则暂停播放,再按则继续播放;7)设置Next和Previous键,按Next键可以听下一首,按Previous键回到本首开始;8)选做:用户可以自行设定播放顺序,设置完成后,播放器按该顺序依次播放乐曲;9)选做:自拟其它功能。

二、系统设计1)设计思路首先音乐有音高和节拍两个因素。

音高可以通过对时钟信号不同的分频得到不同频率的信号进而发出不同的音,节拍可以定义一个音符计数器,计数器的每一个值对应一个音高。

对播放的控制包括播放/暂停、复位、上一首、下一首、本首重放、顺序播放/随机播放,用一个状态机,共播放和暂停两个状态,另外歌曲的切换以和暂停都是利用音符计数器赋不同的值或保持不变来实现。

音高的显示是通过不同的音符对应不同的点阵row和col的值来实现的。

歌曲号是通过音符计数器的值来得出并送到数码管显示的。

播放、暂停、顺序、随机这些的显示是通过对状态和模式变量的判别进而送到LED显示的。

2)总体框图50M3)分块设计共分为9个模块。

Div1,div2,div3都是用来分频的,分别是将50mhz变为1mhz,将1mhz变为4hz,将1mhz变为2hz。

Rand模块用来产生随机数,用于随机播放模式。

Keycontrol是核心模块,用来实现顺序播放、随机播放、播放/暂停、上一首、下一首、本首重放、复位、显示顺序或随机播放状态、显示播放/暂停态。

Melody模块是将音符计数器的每一个值与一个音高相对应,即记录曲谱。

Index模块是用melody模块传来的音高信号通过查表得到它所对应的音高的分频数,然后将这个分频数送给speaker模块,以发出不同的音,另外对应不同的音它还对点阵进行不同的输出,进而显示出音高。

简易乐曲播放器-数字电路与逻辑设计报告

简易乐曲播放器-数字电路与逻辑设计报告

数字电路与逻辑设计实验报告简易乐曲播放器一、设计课题的任务要求基本任务:设计制作一个简易乐曲播放器。

1. 播放器内预存3 首乐曲;2. 播放模式:顺序播放、随机播放,并用数码管或LED 显示当前播放模式;顺序播放:按内部给定的顺序依次播放3 首乐曲;随机播放:随机产生一个顺序播放3 首乐曲;3. 用数码管显示当前播放乐曲的顺序号;4. 设置开始/暂停键,乐曲播放过程中按该键则暂停播放,再按则继续播放;5. 设置Next 和Previous 键,按Next 键可以听下一首,按Previous 键回到本首开始;提高要求:1.用户可以自行设定播放顺序,设置完成后,播放器按该顺序依次播放乐曲;2.自拟其它功能。

二、系统设计(设计思路、总体框图、分块设计)设计思路:由于一般乐曲最短音符为四分音符,则总体设计思路为每次播放一个四分音符,持续时间1/4秒(分频),并依次循环播放每个四分音符,每个四分音符对应音调利用1M分频器分频产生,播放功能则利用蜂鸣器播放当前音调对应频率值即可。

主题设计完成后,加入各控制功能,显示功能。

总体框图:结构框图:方框图:ASM图:暂停暂停MDS图:分块设计:1.分频模块(1)音调:在声乐中,每个音调对应一个频率,而本次实验即应用1M的时钟分频为各个音调所对应的频率,由于每次输出仅有一个频率,则可以在某个四分音符播放时选择分频为哪个音调对应的频率。

由于宏单元使用不够,改为先将1M时钟4分频,再利用4分频后的时钟分为各个音调对应的频率以减小计数器最大计数值。

(2)音长:由于一般乐曲中最短音长为四分音符,并设定全音符音长为1s,四分音符音长为4s,利用每次播放一个四分音符的思路依次播放每个音符(全音符播放4次,半分音符2次)直至有其他控制。

即需对1MHz分频为4Hz。

2.控制模块(1)模式控制A.顺序模式:依次播放每个四分音符,播完3首歌曲后循环B.随机模式:利用异或产生随机数并在播完歌曲后(或按下一首)利用所产生的随机数播放另两首歌曲中的一首C.用户自定义模式:a.顺序播放:依次按1、2、3的顺序播放歌曲并循环b.倒序播放:依次按3、2、1的顺序播放歌曲并循环(2)按键控制A.暂停:在任意播放时刻按下即暂停播放,并记下断点处,蜂鸣器消声,所有彩灯数码管熄灭,一切功能键失效,释放时即从断点处恢复B.下一首:在任意播放时刻按下即按当前模式播放下一首歌曲C.本首重放:在任意播放时刻按下即从播放当前播放乐曲的第一个四分音符处开始播放D.上一首:在任意播放时刻按下即按当前模式播放上一首歌曲3.显示模块(1)彩灯播放某个四个分音符时,根据当前播放音调按七个简谱显示在七个彩灯上(2)数码管第一个数码管显示播放模式:顺序显示0,随机显示8,用户自定义正序显示1,用户自定义倒序显示2第二个数码管显示当前播放曲目序号需要控制两个数码管显示时的时钟分配问题(利用视觉暂留控制1M时钟二分频依次点亮两个数码管)(3)蜂鸣器依次播放所需播放的四分音符三、仿真波形及波形分析本实验仿真着实不易。

课程设计(论文)基于vhdl的简易乐曲演奏器的设计

课程设计(论文)基于vhdl的简易乐曲演奏器的设计

1 引言VHDL是一种硬件描述语言,它可以对电子电路和系统的行为进行描述,基于这种描述,结合相关的软件工具,可以得到所期望的实际电路与系统。

使用VHDL语言描述的电路,可以进行综合和仿真。

然而,值得注意的是,尽管所有VHDL代码都是可仿真的,但并不是所有代码都能综合。

VHDL被广泛使用的基本原因在于它是一种标准语言,是与工具和工艺无关的,从而可以方便地进行移植和重用。

VHDL两个最直接的应用领域是可编程逻辑器件(PLD)和专用集成电路(ASIC),其中可编程逻辑器件包括复杂可编程逻辑器件(CPLD)和现场可编程门阵列(FPGA)。

关于VHDL最后要说明的是:与常规的顺序执行的计算机程序不同,VHDL 从根本上讲是并发执行的。

在VHDL中,只有在进程(PROCESS)、函数(FUNCTION)和过程(PROCEDURE)内部的语句才是顺序执行的。

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

系统实现是用硬件描述语言VHDL按模块化方式进行设计,然后进行编程、时序仿真、电路功能验证,奏出美妙的乐曲(当然由于条件限制,暂不进行功能验证,只进行编程和时序仿真)。

该设计最重要的一点就是通过按键控制不同的音调发生,每一个音调对应不同的频率,从而输出对应频率的声音。

我们知道,与利用单片机来实现乐曲演奏相比,以纯硬件完成乐曲演奏电路的逻辑要复杂得多,如果不借助于功能强大的EDA工具与硬件描述语言,仅凭传统的数字逻辑技术,即使最简单的演奏电路也难以实现。

2 整体功能介绍2.1准备知识在本次设计中采用了铃声《北京欢迎你》作为要播放的乐曲,它的旋律如下:3 5 3 2 3 2 3 3 2 6 1 3 2 22 1 6 1 23 5 2 3 6 5 6 2 1 12 1 6 1 23 5 2 3 6 5 5 3 -2 3 2 1 5 6 2 5 3 3 2 3 (加粗表示低音,其他为中音)根据声乐知识,组成乐曲的每个音符的发音频率值及其持续的时间是乐曲能连续演奏所需的两个基本要素,获取这两个要素所对应的数值以及通过纯硬件的手段来利用这些数值实现所希望乐曲的演奏效果是本实验的关键。

六、音乐播放器

六、音乐播放器

实验报告学生姓名: 学 号: 专业班级: 通信081实验类型:□ 验证 □ 综合 □ 设计 □ 创新 实验日期:2010.11.26 实验成绩:实验六 音乐播放器设计一、实验目的(1) 进一步掌握QuartusII 的使用全过程;(2) 学习多层次的设计方法,掌握基本的VHDL 语言的设计方法; (3) 进一步熟悉和掌握VHDL 语言。

二、实验内容与要求使用层次化设计方法,实现乐曲播放器的设计。

产生各个音符所需的频率可用一分频器实现,由于各音符对应的频率多为非整数,而分频系数又不能为小数,故必须将计数得到的分频数四舍五入取整。

本音乐播放器选取6MHz 的基准频率。

三、实验器材PC 机,Quartu e ⅱ软件,实验箱 四、设计思路\原理通过产生不同频率的输出脉冲及持续时间产生各个音符的声音。

由于各个音符频率的产生都是通过基准频率为6M 的脉冲产生的,所以只需得到各个音符对应的分频系数即可得到音符对应的频率从而产生音乐。

Clk4分频系数输出 speakout五、实验程序(程序来源:独立编写) LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY yyq ISPORT(clk4,clk6M:IN STD_LOGIC; --节拍脉冲和基准脉冲输入 button,res:IN STD_LOGIC; --乐曲切换和复位键 SEG:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); --音符显示输出g,z,d:OUT STD_LOGIC; --高、中、低音显示 speakout:BUFFER STD_LOGIC); --蜂鸣器输出端音频代码得到分频系数通过6M 基准频率分频蜂鸣器发声END ENTITY yyq ;ARCHITECTURE one OF yyq ISSIGNAL addr1,addr2:INTEGER RANGE 0 TO 255;SIGNAL num:STD_LOGIC_VECTOR(1 DOWNTO 0);SIGNAl fenpin,count:INTEGER RANGE 0 TO 9110;SIGNAL yf1,yf2,yf:STD_LOGIC_VECTOR(4 DOWNTO 0);SIGNAL yinfu:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL tout:STD_LOgIC;BEGINp1:PROCESS(button,num) --乐曲切换,num=“00”放第一首,num=“01”时放第二首BEGINif (button'event and button='1') thenif num<"01" then num<=num+1 ;else num<="00";end if;end if;END PROCESS p1;p2:PROCESS(addr1,addr2,clk4,yf1,yf2,res,num)BEGINIF(res='1') THEN addr2<=0;addr1<=0;ELSIF(clk4'EVENT AND clk4='1') THENIF num = "00" then -- 第一首乐曲的音符播放控制yf<=yf1;IF(addr1<138)THEN addr1<=addr1+1;ELSE addr1<=0;END IF;CASE addr1 IS --第一首歌的乐谱,为节省篇幅这里只写出部分音符WHEN 0=>yf1<="00011";WHEN 1 => yf1<="00011";WHEN 2 => yf1<="00011";WHEN 3 => yf1<="00011";WHEN 4 => yf1<="00101";WHEN 138 => yf1<="00110";………………………………………………………………WHEN OTHERS =>yf1<="00000";END CASE;elsIF num="01" then -- 第二首乐曲的音符播放控制yf<=yf2;IF(addr2<33) THEN addr2<=addr2+1;ELSE addr2<=0;END IF;CASE addr2 IS --第二首歌的乐谱,为节省篇幅这里只写出部分音符WHEN 0=> yf2<="00011";WHEN 1=> yf2<="00111";WHEN 2 => yf2<="00111";WHEN 3=>yf2<="00011";WHEN 4=>yf2<="00011";WHEN 5 => yf2<="00011";……………………………………………………………………………………WHEN OTHERS =>yf2<="00000";END CASE;end IF;end if;END PROCESS p2;p3:PROCESS(clk6M) --通过6M基准频率分频得到各个音符频率BEGINIF(clk6M'EVENT AND clk6M='1') THENIF(count<fenpin) THEN count<=count+1;tout<='0';ELSE count<=0;tout<='1';END IF;END IF;END PROCESS p3;p4:PROCESS(tout) --音频输出给蜂鸣器端口控制BEGINIF(tout'EVENT AND tout='1') THEN speakout<=NOT speakout;END IF;END PROCESS p4;p5:PROCESS(yf) --通过各个音符得到对应的分频系数,BEGIN --d,z,g分别为低、中、高音显示CASE yf ISWHEN "00011" =>fenpin<=9101;d<='1';z<='0';g<='0';WHEN "00101" =>fenpin<=7653;d<='1';z<='0';g<='0';WHEN "00110" =>fenpin<=6818;d<='1';z<='0';g<='0';WHEN "00111" =>fenpin<=6074;d<='1';z<='0';g<='0';WHEN "01001" =>fenpin<=5733;d<='0';z<='1';g<='0';WHEN "01010" =>fenpin<=5107;d<='0';z<='1';g<='0';WHEN "01011" =>fenpin<=4549;d<='0';z<='1';g<='0';WHEN "01101" =>fenpin<=3827;d<='0';z<='1';g<='0';WHEN "01110" =>fenpin<=3409;d<='0';z<='1';g<='0';WHEN "10001" =>fenpin<=2867;d<='0';z<='0';g<='1';WHEN OTHERS =>fenpin<=0;d<='0';z<='0';g<='0';END CASE;END PROCESS p5;yinfu<='0'&yf(2)&yf(1)&yf(0); SEG<=yinfu; --显示音符输出END one;六、实验步骤(1)、为工程新建一个文件夹(2)、启动quartus II - >new ->new quartus project ->next,选择刚新建的文件夹为工程储位置,工程名命为yyq选next,设置family中对应EP1K100Q208-3芯片并保存。

基于FPGA的脉冲型音乐播放器的设计

基于FPGA的脉冲型音乐播放器的设计

基于FPGA/CPLD的脉冲信号型乐曲播放器的设计摘要用纯硬件来完成乐曲演奏电路的逻辑非常复杂,仅凭传统的数字逻辑技术,即使最简单的电路也难以实现。

但是借助于功能强大的EDA工具和硬件描述语言,就可以轻松的实现设计。

本设计利用可编程逻辑器件设计一个控制器让不同频率的脉冲信号有序的输出并驱动扬声器发声,最终完成一首乐曲的演奏。

设计以《世上只有妈妈好》为例,分析了硬件电路发声的基本原理,探讨了可以实现设计的方案,利用VHDL语言在QuartusⅡ上编程设计了节拍发生器、分频器、顺序控制、音高控制等模块的功能。

最后,运用原理图编辑器调出已经设计好的各个模块,根据设计的要求进行连线、加输入输出脚,得到了总体设计的仿真实体。

并对总体设计进行了功能仿真和下载。

本设计完成了乐曲《世上只有妈妈好》的32个音符64个节拍的播放,每个节拍0.5秒,整曲播放时长为32秒。

基于FPGA,利用Quartus Ⅱ和VHDL语言完成的脉冲型乐曲播放器,其特点是设计简单、灵活、设计周期短;缺陷是实现播放的乐曲种类单一,播放时间长度较短,若想要实现较长的乐曲播放,则需要很长的源程序。

关键词:FPGA,EDA,VHDL,QuartusⅡ,乐曲播放器The design of the pulse-type music player based on FPGA / CPLDAbstractIt is very complex to complete the music playing logic circuit using pure hardware. Only depend on the traditional digital logic technology, it is difficult to achieve even the simple circuit. However, it is very ease to achieve by using the EDA tools and hardware description language. The design finished a controller that output a series of orderly pulse signal with different frequencies and driven speaker with, by using the programmable logic device ,and finally complete the concert of a music.The music <shi shang zhi you ma ma hao> was used as an example. The basic principal of the hardware circuit sing was analyzed. How could achieve the player’s faction was also discussed. Following functional module was designed in Quartus II by using VHDL language: pulse generator, frequencies divider, sequence control, pitch control and so on. Finally, simulate entity was build in the Block Editor of the Quartus II , using all of the module which has been designed and according to the design’s requirements to connect, and plus input and output pin. Following these, the player’s entity was simulated and downloaded. The <shi shang zhi you ma ma hao>’s note 32 of the 64 players beat was completed in this design. One beat was sat as 0.5 seconds long, and the whole song was played within 32 seconds。

EDA课程设计—音乐播放器

EDA课程设计—音乐播放器

基于VHDL的音乐播放器的设计目前以硬件描述语言(Verilog 或VHDL)所完成的电路设计,可以经过简单的综合与布局,快速的烧录至FPGA 上进行测试,是现代IC 设计验证的技术主流。

这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式。

在大多数的FPGA里面,这些可编辑的元件里也包含记忆元件例如触发器(Flip-flop)或者其他更加完整的记忆块。

系统设计师可以根据需要通过可编辑的连接把FPGA内部的逻辑块连接起来,就好像一个电路试验板被放在了一个芯片里。

一个出厂后的成品FPGA的逻辑块和连接可以按照设计者而改变,所以FPGA可以完成所需要的逻辑功能。

本设计是一种采用FPGA芯片进行音乐播放,主要由分频器、乐谱存储模块和音乐选择模块组成,利用FPGA的可编程性,简洁又多变的设计方法,缩短了研发周期。

主要采用了FPGA芯片,使用VHDL语言进行编程,使其具有了更强的移植性,更加利于产品的升级。

一、设计任务与要求(1)能够播放音乐并进行切换选择用VHDL语言设计乐音的节拍与音符产生电路;用VHDL语言设计可控分频器电路;用存储模块ROM来存放乐曲,最后能够采用FPGA芯片进行音乐播放,并通过手动拨换开关来切换不同音乐。

(2)能够显示播音音乐的次序用VHDL语言进行译码转换,最后在实验板上用数码管显示数字,以此来确定正在播放音乐的顺序,即当播放第一首音乐时,数码管显示数字1,依次类推。

二、设计原理产生音乐的两个因素是音乐频率和音乐的持续时间,以纯硬件完成演奏电路比利用微处理器(CPU)来实现乐曲演奏要复杂的多,如果不借助于功能强大的EDA工具和硬件描述语言,凭借传统的数字逻辑技术,即使最简单的演奏电路也难以实现。

根据设计要求,乐曲硬件演奏电路系统主要由数控分频器和乐曲存储模块组成。

数控分频器对FPGA的基准频率进行分频,得到与各个音阶对应的频率输出。

硬件课程设计-基于FPGA的MP3音乐播放器设计

硬件课程设计-基于FPGA的MP3音乐播放器设计

基于FPGA的MP3音乐播放器设计——预置乐曲播放器设计摘要:本次课程设计的主题是‘基于FPGA的MP3播放器’,这是一个发展空间很大的课题,研究者可以根据自己的能力水平和兴趣爱好自由发展。

我们组实现的功能是‘预置乐曲的播放’。

本次设计是在BASYS2实验开发板上实现,使用xinlinx13.1软件,利用VHDL硬件描述言语设计数控分频器电路,利用数控分频原理设计音乐硬件播放数字电路,将音乐数据存放在程序中,利用时钟驱动音符输出,通过集成运放调节音量,达到了乐曲播放的效果。

程序中存放的音符数据易修改,只要修改程序中所放的的音符数据,将其转换为其他乐曲的音符数据,就可以实现不同乐曲的播放。

关键字:FPGA;xilinx;VHDL;预置音符;音乐播放目录摘要............................................................................................................................- 0 -一、绪论....................................................................................................................- 2 -1.1研究背景......................................................................................................- 2 -1.2基本技术简介..............................................................................................- 2 -1.2.1可编程逻辑器件FPGA .....................................................................- 2 -1.2.2硬件描述语言VHDL.........................................................................- 3 -1.2.3开发软件xilinx .................................................................................- 3 -二、需求分析和研究思路........................................................................................- 4 -2.1需求分析......................................................................................................- 4 -2.2研究思路......................................................................................................- 4 -三、系统设计............................................................................................................- 4 -3.1系统原理......................................................................................................- 4 -3.1.1音调控制...........................................................................................- 5 -3.1.2音长控制...........................................................................................- 6 -3.1.3乐谱发生器.....................................................................................- 6 -3.1.4音量控制...........................................................................................- 6 -3.2系统结构......................................................................................................- 7 -3.2.1各功能模块概述...............................................................................- 7 -3.2.2系统整体原理框图...........................................................................- 8 -四、详细的程序实现和仿真分析............................................................................- 8 -4.1时钟分频模块..............................................................................................- 8 -4.2乐谱码发生模块..........................................................................................- 9 -4.3乐谱码查表模块........................................................................................- 10 -4.4数控分频模块............................................................................................- 10 -4.5音量放大模块............................................................................................- 11 -4.6顶层模块....................................................................................................- 11 -五、结论..................................................................................................................- 11 -六、个人感想..........................................................................................................- 12 -一、绪论1.1研究背景在电子技术的飞速发展的今天,电子产品的种类越来越多,功能越来越强大,体积越来越小,功耗越来越低。

用VHDL设计乐曲发生器

用VHDL设计乐曲发生器

1 概述随着EDA 技术的进展,基于可编程ASIC 的数字电子系统设计的完整方案越来越受到人们的重视,并且以EDA 技术为核心的能在可编程ASIC 上进行系统芯片集成的新设计方法,也正在快速地取代基于P CB板的传统设计方式。

与利用微处理器(CPU 或MCU)来实现乐曲演奏相比,以纯硬件完成乐曲演奏电路的逻辑要复杂得多,如果不借助于功能强大的EDA 工具和硬件描述语言,仅凭传统的数字逻辑技术,即使最简单的演奏电路也难以实现。

如何使用EDA工具设计电子系统是人们普遍关心的问题,本设计在美国ALTERA公司MA X + plusⅡ的EDA 软件平台上,使用层次化设计方法,实现了乐曲发生器的设计。

乐曲选取《梁祝》中化蝶部分,其简谱如图1所示。

2 音符与频率的关系我们知道,组成乐曲的每个音符的发音频率值及其持续的时间是乐曲能连续演奏所需的2个基本要素,首先让我们来了解音符与频率的关系。

乐曲的12平均率规定:每2 个八度音(如简谱中的中音1 与高音1)之间的频率相差1 倍。

在2 个八度音之间,又可分为12个半音,每2个半音的频率比为12√2。

另外,音符A(简谱中的低音6)的频率为4 40Hz,音符B 到C之间、E 到F之间为半音,其余为全音。

由此可以计算出简谱中从低音l 至高音1 之间每个音符的频率,如表 1 所示。

产生各音符所需的频率可用一分频器实现,由于各音符对应的频率多为非整数,而分频系数又不能为小数,故必须将计算得到的分频数四舍五入取整。

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

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

本文设计的乐曲发生器选取6MHz 的基准频率。

若无6MHz 的时钟频率,则可以先分频得到6MHz 或换一个新的基准频率。

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

基于VHDL的音乐播放器的设计

基于VHDL的音乐播放器的设计

摘要摘要在EDA开发工具Quartus II 6.0平台上,采用VHDL语言层次化和模块化的设计方法,通过音符编码的设计思想,预先定制乐曲,实现动态显示乐曲演奏电路的设计,并在此基础上,基于同一原理,使此电路同时具备了简易电子琴的功能,使基于CPLD/FPGA芯片的乐曲播放数字电路得到了更好的优化,提高了设计的灵活性和可扩展性。

关键字:EDA;Quartus II;VHDL;CPLD/FPGA;乐曲演奏电路;简易电子琴ABSTRACTABSTRACTBased on the QuartusII-the EDA development tool, this design has adopted the method of classification and modularization of VHDL level. Through the concept of note coding, the design of dynamic music-displaying circuit is realized after the musical composition has been made in advance. On the basis of the above and the same principle, this electric circuit has the same function of a simple electronic organ. The design of CPLD/FPGA chip-based music-displaying digital circuit is greatly improved, and the flexibility and expansibility of the design are improved as well.Key Words: EDA;Quartus II;VHDL;CPLD/FPGA;music-displaying circuit;simple electronic organ目录第1章绪论 (1)1.1 研究背景 (1)1.2 电子设计自动化发展史 (2)1.2.1 EDA技术的涵义 (2)1.2.2 EDA技术的发展史 (2)1.3 EDA技术发展动态 (3)1.4 研究思路及主要工作 (4)第2章可编程技术简介 (5)2.1 可编程逻辑器件FPGA/CPLD (5)2.2 硬件描述语言VHDL (7)2.3 开发软件QUARTUS Ⅱ (9)第3章系统设计 (13)3.1 系统原理 (13)3.1.1 音调的控制 (14)3.1.2 音长的控制 (14)3.2系统结构 (15)3.3 各模块分析与设计 (16)3.3.1 定制《万水千山总是情》音符数据ROM (16)3.3.2 音符数据地址发生器模块NOTETABS (17)3.3.3 预置数查表电路电路模块TONETABA (17)3.3.4 发声频率产生模块SPEAKERA (17)3.3.5 简易电子琴功能模块ELECLOCK (18)第4章系统程序实现与仿真分析 (19)4.1 各部分程序实现 (19)4.1.1 在QUARTUSII 6.0下定制的LPM_ROM (19)4.1.2 乐曲硬件演奏电路顶层设计VHDL实现 (19)4.1.3 音符数据地址发生器模块NOTETABS程序与说明错误!未定义书签。

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

EDA技术实用教程课程设计简易音乐播放器电子12-11206040124简易音乐播放器设计1.MIDI概述MIDI(Musical Instrument Digital Interface)乐器数字接口,是20 世纪80 年代初为解决电声乐器之间的通信问题而提出的。

MIDI是编曲界最广泛的音乐标准格式,可称为“计算机能理解的乐谱”。

它用音符的数字控制信号来记录音乐。

一首完整的MIDI音乐只有几十KB大,而能包含数十条音乐轨道。

MIDI 应用也比较广泛,电视晚会的音乐编导可以用MIDI功能辅助音乐创作,或按MIDI 标准生成音乐数据传播媒介,或直接进行乐曲演奏。

如果在计算机上装备了高级的MIDI软件库,可将音乐的创作、乐谱的打印、节目编排、音乐的调整、音响的幅度、节奏的速度、各声部之间的协调、混响由MIDI来控制完成。

利用MIDI 技术将电子合成器、电子节奏机(电子鼓机)和其他电子音源与序列器连接在一起即可演奏模拟出气势雄伟、音色变化万千的音响效果,又可将演奏中的多种按键数据存储起来,极大的改善了音乐演奏的能力和条件。

2.工作原理MIDI 音乐是Windows下的一种合成音乐,由于它通过记谱的方式来记录一段音乐。

因此与wave音乐相比,它可以极大的减少存储容量。

MIDI 音乐的基本原理为:组成乐曲的每一个音符的频率值(音调)及其持续的时间(音长)是乐曲能连续演奏的两个基本数据,因此只要控制输出到扬声器的激励信号频率的高低和每一个频率信号持续时间,就可以使扬声器发生连续的乐曲。

图 1 是歌曲《生日快乐歌》开头一句的简谱。

由图 1 可知,该乐典涉及:中音5,6 ,7 ;高音1,2,3,4,5 。

以此为例下面介绍在本音乐发生器芯片中音乐的形成过程。

前两个音符为中音 5 ,1/16 音符,它对应的编码为1000 ,所占的脉冲个数为2 ,这样逐个将以上的简谱翻译成代码如下:|1000 1000 1001 1001 1000 1000 |1011 1011 1010 1010 1010 1010| |1000 1000 1001 1001 1000 1000 |1100 1100 1011 1011 1011 1011| |1000 1000 1111 1111 1101 1101 |1011 1011 1010 1010 1001 1001| |1110 1110 1101 1101 1011 1011 |1100 1100 1011 1011 1011 1011|图1 《生日快乐歌》歌谱在节奏时钟脉冲的控制下,将每个代码所对应的分频系数逐一赋给基频,得到对应的音调,这样连续起来就形成一段美妙的音乐。

本设计的关键是要准确地产生音乐中各音符所对应的频率信号,并根据乐曲要求按节拍输出。

为了减少系统复杂性,本设计根据可变模值计数器的原理,按照乐曲要求定时改变计数器的预置数,即可产生乐曲所需要的频率信号。

芯片原理框图如图2 所示。

图2 中节拍控制电路产生节拍定时信号;音符产生电路按节拍要求产生乐曲所需要的音符;预值数产生电路受音符控制,产生该音符频率相对应的预置数,送计数器的置入数据输入端。

音符频率发生器根据不同的预置数产生相应的频率信号,从而完成乐曲的演奏功能。

图2 播放器原理3.音乐编码模块此模块包括节拍控制电路和音符产生电路。

节拍控制电路以乐曲中最短音符的节拍为基准,产生乐曲所需要的全部节拍。

因为乐曲《生日快乐歌》中最短音符为1/4 节拍,全曲共有48 个1/4 节拍,故节拍控制器至少需要产生48 个有效状态。

考虑到一遍演奏完需要间隔时间,所以选定节拍控制计数器CNT1 的计数状态为48 + 4 个,其中间隔时间为4个有效状态。

本例要求演奏时能循环进行,因此需要另外设置一个时长计数器,当乐曲演奏完成时,保证能自动从头开始演奏。

音符产生电路采用查找表形式.在节拍控制产生电路的节拍信号作用下,按乐曲中音符持续时间的长短输出相应音符名称。

以乐曲中前两个音节为例,其音符输出查找表如表1 所示。

4.音调发生模块此模块包括预值数产生电路和频率发生器。

预值数产生电路设计采用查找表形式,按照音符的频率要求产生相应的预置数。

根据可变模值计数器的设计原理及音符的分频系数,可计算出乐曲《生日快乐歌》中各音符的预置数如表 2 所示。

表2 音频的分频和预置数频率发生器由可变模值计数器实现.由于系统要求产出的信号频率较高,因此选用2 MHz 高频脉冲信号作为可变模值计数器的计数脉冲。

此片段内各音阶频率及相应的分频如表 3 所示。

为了减少输出的偶次谐波分量,最后输出到扬声器的波形应为对称方波,考虑到输出信号是脉冲极窄的脉冲式信号,为了有利于驱动扬声器,可以在到达扬声器之前,有一个二分的分频器,或在计数器输出端外加一个D触发器也可以均衡占空比。

当然,如果输出到扬声器的信号采用正弦波代替对称方波将会有更好的效果。

表3 音符与频率对照表由于最大的分频系数为5102,故采用13 位十二进制计数器已能满足分频要求。

在表 3 中除给出了分频比以外,还给出了相应于各个音节频率时计数器不同的初始值。

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

采用加载初始值而不将分频输出译码反馈,一个常用技巧。

表中“0”表示休止符。

对于乐曲的休止符。

只要将分频系数设为0,即初始值为213-1=8191,此时扬声器将不会发声。

5.顶层文件设计顶层文件采用原理图设计,根据图1所示原理框图,可设计出MIDI 音乐,发生器顶层原理如图3所示。

为了方便设计,图3中将节拍控制电路和音符产生电路设计在同一模块中,称为TONE 模块。

音调发生器电路称为FPQ模块,彩灯控制电路称为LIGH模块。

图3 顶层远离6.底层文件TONE 模块中的CLK 为4Hz 信号输入端,SEL[3 …0]为音符输出端,其输出用于驱动FPQ 和LIGHT模块。

图4为其时序仿真,其中SEL为各个音符的二进制编码。

从图4 可以看出,仿真结果和设计要求一致。

前两个脉冲SEL输出为1000,即为中音5的二进制编码,第三第四个脉冲下SEL 为1001,对应中音6,依次下去,第五第六个脉冲下SEL为1000,对应中音5,第七第八个脉冲下SEL 为1011,对应高音1,后面四个脉冲下SEL为1010对应中音7。

COUNT为节拍控制计数器。

图4 音乐编码器仿真FPQ模块中的CLKM为2 MHz输入端,MUS为音调输出端。

图5为其时序仿真,在这里只对音符中音5仿真,此时其编码为1000,NUM为其分频系数1276。

当CT 计数到1276时,MUS就输出计数脉冲,其效果就是频率784 的信号。

图5 音调发生器仿真7.部分代码library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity zy4668_music1 isport(clk:instd_logic;huifang: in std_logic;qiege: in std_logic;xuhuan: in std_logic;zanti: in std_logic;xuan: in std_logic_vector(1 downto 0);index:outstd_logic_vector(3 downto 0));end zy4668_music1;architecture behav of zy4668_music1 issubtype word is integer range 0 to 15;type memory is array(0 to 565) of word;signal rom:memory;signal clk_4Hz:std_logic;signal clk_cnt:integer range 0 to 249;signal adr:integer range 0 to 600;signal sar:integer range 0 to 600;signal sar1:integer range 0 to 600;beginprocess(clk,zanti)beginif zanti='1' thenif clk'event and clk='1' thenif clk_cnt=249 thenclk_cnt<=0;clk_4Hz<='1';elseclk_cnt<=clk_cnt+1;clk_4Hz<='0';end if;end if;end if;end process;process(clk_4Hz,xuan,zanti,xuhuan,qiege,huifang) beginif zanti='1' thenif xuan="00" and qiege='0' thenadr<=416;sar<=558;sar1<=416;elsifxuan="01" and qiege='0' thenadr<=0;sar<=138;sar1<=0;elsifxuan="10" and qiege='0' thenadr<=139;sar<=279;sar1<=139;elsifxuan="11" and qiege='0' thenadr<=280;sar<=415;sar1<=280;elseif clk_4hz'event and clk_4hz='1' thenif huifang='1' thenif xuhuan='1' thenif adr=sar then adr<=sar1;else adr<=adr+1;end if;elseif adr=558 then adr<=0;else adr<=adr+1;end if;if adr>415 then sar<=558;sar1<=416; elsifadr>279 then sar<=415;sar1<=279;elsifadr>138 then sar<=279;sar1<=139;else sar<=138;sar1<=0;end if;end if;elseif adr=sar1 then adr<=sar1;else adr<=adr-1;end if;end if;end if;end if;end if;end process;index<=conv_std_logic_vector(rom(adr),4);rom(0)<=3;rom(1)<=3;rom(2)<=3;rom(3)<=3;rom(4)<=5;rom(5)<=5;rom(6)<=5;rom(7)<=6;rom(8)<=8;rom(9)<=8;rom(10)<=8;rom(11)<=9;rom(12)<=6;rom(13)<=8;rom(14)<=5;rom(15)<=5; rom(16)<=12;rom(17)<=12;rom(18)<=12;rom(19)<=15; rom(20)<=13;rom(21)<=12;rom(22)<=10;rom(23)<=12; rom(24)<=9;rom(25)<=9;rom(26)<=9;rom(27)<=9; rom(28)<=9;rom(29)<=9;rom(30)<=9;rom(31)<=0; rom(32)<=9;rom(33)<=9;rom(34)<=9;rom(35)<=10; rom(36)<=7;rom(37)<=7;rom(38)<=6;rom(39)<=6; rom(40)<=5;rom(41)<=5;rom(42)<=5;rom(43)<=6; rom(44)<=8;rom(45)<=8;rom(46)<=9;rom(47)<=9; rom(48)<=3;rom(49)<=3;rom(50)<=8;rom(51)<=8; rom(52)<=6;rom(53)<=5;rom(54)<=6;rom(55)<=8; rom(56)<=5;rom(57)<=5;rom(58)<=5;rom(59)<=5; rom(60)<=5;rom(61)<=5;rom(62)<=5;rom(63)<=5; rom(64)<=10;rom(65)<=10;rom(66)<=10;rom(67)<=12; rom(68)<=7;rom(69)<=7;rom(70)<=9;rom(71)<=9; rom(72)<=6;rom(73)<=8;rom(74)<=5;rom(75)<=5; rom(76)<=5;rom(77)<=5;rom(78)<=5;rom(79)<=5; rom(80)<=3;rom(81)<=5;rom(82)<=3;rom(83)<=3; rom(84)<=5;rom(85)<=6;rom(86)<=7;rom(87)<=9; rom(88)<=6;rom(89)<=6;rom(90)<=6;rom(91)<=6; rom(92)<=6;rom(93)<=6;rom(94)<=5;rom(95)<=6;rom(96)<=8;rom(97)<=8;rom(98)<=8;rom(99)<=9;rom(100)<=12;rom(101)<=12;rom(102)<=12;rom(103)<=10;rom(104)<=9;rom(105)<=9;rom(106)<=10;rom(107)<=9;rom(108)<=8;rom(109)<=8;rom(110)<=6;rom(111)<=5;rom(112)<=3;rom(113)<=3;rom(114)<=3;rom(115)<=3;rom(116)<=8;rom(117)<=8;rom(118)<=8;rom(119)<=8;rom(120)<=6;rom(121)<=8;rom(122)<=6;rom(123)<=5;rom(124)<=3;rom(125)<=5;rom(126)<=6;rom(127)<=8;rom(128)<=5;rom(129)<=5;rom(130)<=5;rom(131)<=5;rom(132)<=5;rom(133)<=5;rom(134)<=5;rom(135)<=5;rom(136)<=0;rom(137)<=0;rom(138)<=0;rom(139)<=10;rom(140)<=10;rom(141)<=11;rom(142)<=12;rom(143)<=12;rom(144)<=11;rom(145)<=10;rom(146)<=9;rom(147)<=8;rom(148)<=8;rom(149)<=9;rom(150)<=10;rom(151)<=10;rom(152)<=9;rom(153)<=9;rom(154)<=9;rom(155)<=10;rom(156)<=10;rom(157)<=11;rom(158)<=12;rom(159)<=12;rom(160)<=11;rom(161)<=10;rom(162)<=9;rom(163)<=8;rom(164)<=8;rom(165)<=9;rom(166)<=10;rom(167)<=9;rom(168)<=8;rom(169)<=8;rom(170)<=8;rom(171)<=9; rom(172)<=9;rom(173)<=10;rom(174)<=8;rom(175)<=9;rom(176)<=10;rom(177)<=11;rom(178)<=10;rom(179)<=8;rom(180)<=9;rom(181)<=10;rom(182)<=11;rom(183)<=10;rom(184)<=9;rom(185)<=8;rom(186)<=9;rom(187)<=5;rom(188)<=10;rom(189)<=10;rom(190)<=10;rom(191)<=11;rom(192)<=12;rom(193)<=12;rom(194)<=11;rom(195)<=10;rom(196)<=9;rom(197)<=8;rom(198)<=8;rom(199)<=9;rom(200)<=10;rom(201)<=9;rom(202)<=8;rom(203)<=8;rom(204)<=8;rom(205)<=10;rom(206)<=10;rom(207)<=11;rom(208)<=12;rom(209)<=12;rom(210)<=11;rom(211)<=10;rom(212)<=9;rom(213)<=8;rom(214)<=8;rom(215)<=9;rom(216)<=10;rom(217)<=10;rom(218)<=9;rom(219)<=9;rom(220)<=9;rom(221)<=10;rom(222)<=10;rom(223)<=11;rom(224)<=12;rom(225)<=12;rom(226)<=11;rom(227)<=10;rom(228)<=9;rom(229)<=8;rom(230)<=8;rom(231)<=9;rom(232)<=10;rom(233)<=9;rom(234)<=8;rom(235)<=8;rom(236)<=8;rom(237)<=9;rom(238)<=9;rom(239)<=10;rom(240)<=8;rom(241)<=9;rom(242)<=10;rom(243)<=11;rom(244)<=10; rom(245)<=8;rom(246)<=9;rom(247)<=10;rom(248)<=11;rom(249)<=10;rom(250)<=9;rom(251)<=8;rom(252)<=9;rom(253)<=5;rom(254)<=10;rom(255)<=10;rom(256)<=10;rom(257)<=11;rom(258)<=12;rom(259)<=12;rom(260)<=11;rom(261)<=10;rom(262)<=9;rom(263)<=8;rom(264)<=8;rom(265)<=9;rom(266)<=10;rom(267)<=9;rom(268)<=8;rom(269)<=8;rom(270)<=8;rom(271)<=8;rom(272)<=8;rom(273)<=8;rom(274)<=9;rom(275)<=10;rom(276)<=9;rom(277)<=8;rom(278)<=8;rom(279)<=8;rom(280)<=6;rom(281)<=6;rom(282)<=6;rom(283)<=7;rom(284)<=8;rom(285)<=8;rom(286)<=8;rom(287)<=6;rom(288)<=8;rom(289)<=8;rom(290)<=7;rom(291)<=6;rom(292)<=7;rom(293)<=7;rom(294)<=3;rom(295)<=0;rom(296)<=7;rom(297)<=7;rom(298)<=7;rom(299)<=8;rom(300)<=9;rom(301)<=9;rom(302)<=9;rom(303)<=7;rom(304)<=9;rom(305)<=9;rom(306)<=8;rom(307)<=7;rom(308)<=6;rom(309)<=6;rom(310)<=6;rom(311)<=6;rom(312)<=10;rom(313)<=10;rom(314)<=13;rom(315)<=13;rom(316)<=12;rom(317)<=12;rom(318)<=13;rom(319)<=12;rom(320)<=11;rom(321)<=11;rom(322)<=10;rom(323)<=9;rom(324)<=10;rom(325)<=10;rom(326)<=6;rom(327)<=6;rom(328)<=0;rom(329)<=11;rom(330)<=11;rom(331)<=9;rom(332)<=10;rom(333)<=10;rom(334)<=10;rom(335)<=8;rom(336)<=7;rom(337)<=3;rom(338)<=8;rom(339)<=7;rom(340)<=6;rom(341)<=6;rom(342)<=6;rom(343)<=6;rom(344)<=0;rom(345)<=0;rom(346)<=0;rom(347)<=0;rom(348)<=6;rom(349)<=6;rom(350)<=6;rom(351)<=7;rom(352)<=8;rom(353)<=8;rom(354)<=8;rom(355)<=6;rom(356)<=8;rom(357)<=8;rom(358)<=7;rom(359)<=6;rom(360)<=7;rom(361)<=7;rom(362)<=3;rom(363)<=0;rom(364)<=7;rom(365)<=7;rom(366)<=7;rom(367)<=8;rom(368)<=9;rom(369)<=9;rom(370)<=9;rom(371)<=7;rom(372)<=9;rom(373)<=9;rom(374)<=8;rom(375)<=7;rom(376)<=6;rom(377)<=6;rom(378)<=6;rom(379)<=6;rom(380)<=10;rom(381)<=10;rom(382)<=13;rom(383)<=13;rom(384)<=12;rom(385)<=12;rom(386)<=13;rom(387)<=12;rom(388)<=11;rom(389)<=11;rom(390)<=10;rom(391)<=9;rom(392)<=10;rom(393)<=10;rom(394)<=6;rom(395)<=6;rom(396)<=0;rom(397)<=11;rom(398)<=11;rom(399)<=9;rom(400)<=10;rom(401)<=10;rom(402)<=10;rom(403)<=8;rom(404)<=7;rom(405)<=3;rom(406)<=8;rom(407)<=7;rom(408)<=6;rom(409)<=6;rom(410)<=6;rom(411)<=6;rom(412)<=0;rom(413)<=0;rom(414)<=0;rom(415)<=0;rom( 416)<=6;rom( 417)<=7;rom(418)<=8;rom( 419)<=8;rom(420) <=9; rom( 421)<=8;rom( 422)<=7;rom( 423)<=5;rom( 424)<=3;rom( 425)<=6;rom(426)<=6;rom(427)<=6;rom( 428) <=6;rom( 429)<=6;rom( 430)<=7;rom( 431)<=8;rom( 432)<=8;rom( 433)<=9;rom( 434)<=8;rom( 435)<=7;rom( 436)<=5;rom( 437)<=3;rom(438)<=10;rom( 439)<=10;rom( 440)<=10;rom(441)<=10;rom(442)<=10;rom( 443)<=10;rom( 444)<=13; rom( 445)<=13;rom( 446)<=13;rom(447)<=12;rom( 448)<=10; rom(449)<=0;rom( 450)<=9;rom( 451)<=8;rom( 452)<=9; rom( 453)<=9;rom( 454)<=9;rom( 455)<=8;rom( 456)<=6; rom( 457)<=6;rom(458)<=0;rom( 459)<=6;rom( 460)<=7; rom( 461)<=8;rom( 462)<=8;rom( 463)<=9;rom(464)<=8; rom( 465)<=9;rom(466)<=10;rom(467)<=5;rom( 468)<=6; rom( 469)<=6;rom( 470)<=6;rom( 471)<=6;rom( 472)<=15; rom(473)<=14;rom(474)<=13;rom(475)<=13;rom(476)<=10; rom(477)<=9;rom(478)<=10;rom(479)<=0;rom(480)<=10;rom(481)<=13;rom(482)<=12;rom(483)<=12;rom(484)<=12; rom(485)<=12;rom(486)<=12;rom(487)<=10;rom(488)<=12; rom(489)<=12;rom(490)<=15;rom(491)<=14;rom(492)<=13; rom(493)<=13;rom(494)<=10;rom(495)<=9;rom(496)<=8;rom(497)<=8;rom(498)<=8;rom(499)<=8;rom(500)<=9;rom(501)<=10;rom(502)<=10;rom(503)<=12;rom(504)<=10; rom(505)<=9;rom(506)<=10;rom(507)<=10;rom(508)<=15; rom(509)<=14;rom(510)<=13;rom(511)<=13;rom(512)<=10; rom(513)<=9;rom(514)<=10;rom(515)<=10;rom(516)<=10; rom(517)<=13;rom(518)<=12;rom(519)<=12;rom(520)<=12; rom(521)<=12;rom(522)<=10;rom(523)<=12;rom(524)<=13; rom(525)<=13;rom(526)<=6;rom(527)<=7;rom(528)<=8;rom(529)<=8;rom(530)<=8;rom(531)<=10;rom(532)<=9;rom(533)<=9;rom(534)<=12;rom(535)<=14;rom(536)<=13; rom(537)<=12;rom(538)<=13;rom(539)<=13;rom(540)<=13; rom(541)<=13;rom(542)<=6;rom(543)<=7;rom(544)<=8;rom(545)<=8;rom(546)<=8;rom(547)<=10;rom(548)<=12;rom(549)<=12;rom(550)<=12;rom(551)<=14;rom(552)<=13; rom(553)<=12;rom(554)<=12;rom(555)<=13;rom(556)<=13; rom(557)<=13;rom(558)<=13;end behav;。

相关文档
最新文档