ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:204.32KB ,
资源ID:21757500      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/21757500.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(EDA课程综述Word格式文档下载.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

EDA课程综述Word格式文档下载.docx

1、实现方法有许多种,随着FPGA集成度的提高,价格下降,EDA设计工具更新换代,功能日益普及与流行,使这种方案的应用越来越多。如今的数字逻辑设计者面临日益缩短的上市时间的压力,不得不进行上万门的设计,同时设计者不允许以牺牲硅的效率达到保持结构的独特性。使用现今的EDA软件工具来应付这些问题,并不是一件简单的事情。FPGA预装了很多已构造好的参数化库单元LPM器件。通过引入支持LPM的EDA软件工具,设计者可以设计出结构独立而且硅片的使用效率非常高的产品。 本课设在EDA开发平台上利用VHDL语言设计数控分频器电路,利用数控分频的原理设计乐曲硬件演奏电路,并定制LPM-ROM存储音乐数据,以“梁祝

2、”乐曲为例,将音乐数据存储到LPM-ROM,就达到了以纯硬件的手段来实现乐曲的演奏效果。只要修改LPM-ROM所存储的音乐数据,将其换成其他乐曲的音乐数据,再重新定制LPM-ROM,连接到程序中就可以实现其它乐曲的演奏。第2章 乐曲演奏电路原理2.1 音乐演奏电路原理先介绍一下硬件电路的发声原理。声音的频谱范围约在几十到几千赫兹,若能利用程序来控制FPGA某个引脚输出一定频率的矩形波,接上扬声器就能发出相应频率的声音。乐曲中的每一音符对应着一个确定的频率,要想FPGA发出不同音符的音调,实际上只要控制它输出相应音符的频率即可。乐曲都是由一连串的音符组成,因此按照乐曲的乐谱依次输出这些音符所对应

3、的频,就可以在扬声器上连续地发出各个音符的音调。而要准确地演奏出一首乐曲,仅仅让扬声器能够发生是不够的,还必须准确地控制乐曲的节奏,即乐曲中每个音符的发生频率及其持续时间是乐曲能够连续演奏的两个关键因素。2.2 音符频率的获得 多个不同频率的信号可通过对某个基准频率进行分频器获得。由于各个音符的频率多为非整数,而分频系数又不能为小数,故必须将计算机得到的分频系数四舍五入取整。若基准频率过低,则分频系数过小,四舍五入取整后的误差较大。若基准频率过高,虽然可以减少频率的相对误差,但分频结构将变大。实际上应该综合考虑这两个方面的因素,在尽量减少误差的前提下,选取合适的基准频率。本文中选取750KHz

4、的基准频率。由于现有的高频时钟脉冲信号的频率为12MHz,故需先对其进行16分频,才能获得750KHz的基准频率。对基准频率分频后的输出信号是一些脉宽极窄的尖脉冲信号(占空比=1/分频系数)。为提高输出信号的驱动能力,以使扬声器有足够的功率发音,需要再通过一个分频器将原来的分频器的输出脉冲均衡为对称方波(占空比=1/2),但这时的频率将是原来的1/2。由于最大分频系数是1274,故分频器采用11位二进制计数器能满足要求,乐曲中的休止符,只要将分频系数设为0,即初始值=211-1=2047,此时扬声器不会发声。2.3 乐曲节奏的控制 本课设的梁祝乐曲,最小的节拍为1/4拍,若将1拍的时间定为1秒

5、,则只需要提供一个4Hz的时钟频率即可产生1/4拍的时长(0.25秒),对于其它占用时间较长的节拍(必为1/4拍的整数倍)则只需要将该音符连续输出相应的次数即可。 计数时钟信号作为输出音符快慢的控制信号,时钟快时输出节拍速度就快,演奏的速度也就快,时钟慢时输出节拍的速度就慢,演奏的速度自然降低。第3章 总体程序设计3.1 顶层模块设计流程图 图31 乐曲演奏电路结构框图图32 顶层模块设计流程图3.2顶层电路VHDL程序设计Library ieee; -硬件演奏电路顶层设计port ( CLK12MHZ : in std_logic; -音调频率信号 CLK8HZ : -节拍频率用于控制节拍的

6、时钟频率 sel : -音乐选择键 Rst : -复位键 code1 : out std_logic_vector (3 downto 0); -简谱码输出显示 high1 : out std_logic; -高8度指示 spkout : out std_logic); -声音输出end;architecture one of songer iscomponent NoteTabs -元件u1例换化port( clk : rst : ToneIndex : out std_logic_vector (3 downto 0); end component; component ToneTaba

7、-元件u2例换化 port( Index : in std_logic_vector(3 downto 0); code : out std_logic_vector(3 downto 0);high16 :Tone : out std_logic_vector(10 downto 0);end component;component speakera -元件u3例换化 Tone : in std_logic_vector(10 downto 0); Spks :Signal Tone : std_logic_vector(10 downto 0);Signal ToneIndex : std

8、_logic_vector(3 downto 0);beginu1: NoteTabs port map (clk = CLK8HZ,rst=rst,sel=sel,ToneIndex = ToneIndex);u2:ToneTaba port map (Index = ToneIndex,Tone = Tone, code = code1, high16 = high1);u3:speakera port map (clk = CLK12MHZ, Tone = Spks = spkout);3.3 硬件乐曲演奏电路顶层文件模块的仿真 将所编写的顶层文件模块 songer 的程序设为工程,选用

9、Altera公司的Cyclone系列中的EPIC3T144C8为目标芯片进行仿真。仿真结果如图33所示。图 33 顶层文件电路仿真波形第4章 单元模块程序设计 根据顶层原理图,共分为music模块,地址发生器模块,分频预置数模块,十六进制模块,数控分频模块这五个模块。Music模块存放乐曲中的音符数据,地址发生器模块作为music模块中所定制的音符数据ROM的地址发生器,分频预置数模块提供分频预置数即给数控分频模块提供技术初值,十六进制模块对12MHZ的时钟脉冲进行16分频,得到750KHZ的频率,给数控分频模块提供时钟脉冲。数控分频模块根据分频预置数输出各个音符所对应的频率。4.1音乐节拍和

10、音调发生器模块图41 NoteTabs 模块4.1.1音乐节拍和音调发生器模块VHDL的源程序Use ieee.std_logic_1164.all;Use ieee.std_logic_unsigned.all;entity NoteTabs isport(clk: sel:in std_logic; rst:ToneIndex: out std_logic_vector(3 downto 0);Architecture one of NoteTabs isComponent musicport ( address : in std_logic_vector (7 downto 0); in

11、clock : q : end component ; signal counter : std_logic_vector (7 downto 0); begin cnt8 : process(clk, counter, sel, rst) if ( clkevent and clk=1 ) and (counter=256 or rst=0) then counter = 00000000;= counter+1; end if;) and (sel=) ) then counter counter,q = ToneIndex, inclock=clk); end ;4.1.2地址发生器模块

12、 地址发生器模块设置了一个8位二进制计数器(计数器最大值为256),作为音符数据ROM的地址发生器。每来一个时钟脉冲信号(CLK),8位二进制计数器就计数一次,ROM文件中的地址也就随着递减,音符数据ROM中的音符也就一个接一个连续的取出来了。在地址发生器的VHDL设计中,这个计数器的技术频率选为4HZ,即每一个计数值的停留时间为0.25秒,恰为当全音符设为1秒,四四拍的4分音符持续时间。例如,地址发生器在以下的VHDL逻辑描述中,“梁祝”乐曲的第一个音符为“3”,此音在逻辑中停留了4个时钟节拍,即1秒时间。那么相应随着程序中的计数器按4HZ的时钟频率作加法计数时,即随地址递增时,将从音符数据

13、ROM中将连续取出4个音符“3”通过toneindex3.0端口输向分频预置数模块。这样梁祝乐曲中的音符就一个接一个得通过toneindex3.0端口输向分频预置数模块。 4.1.3波形仿真将所编写的音乐节拍和音调模块NoteTabs的程序设为工程,选用Altera公司的Cyclone系列中的EPIC3T144C8为目标芯片进行仿真。仿真结果如图42所示。从图中可以看到,当CLK第一个时钟脉冲到达时,输出相应地址上的音符3,地址值递增1,接下来的三个时钟脉冲到来时,输出也是音符3,地址连续递增3次,第4个脉冲来到时,输出为5,这些都符合模块音符数据文件中的地址/数据表。图42 音乐节拍和音调发

14、生器仿真波形4.2 音乐谱对应分频预置数查表电路模块4.2.1音乐谱分频预置数模块图43 ToneTaba模块4.2.2音乐谱对应分频预置数查表电路VHDL程序设计 音乐谱分频预置数模块是乐曲简码对应分频预置数查表电路。它提供了每个音符所对应的分频预置数,即给数控分频模块提供计数初值,这里以“梁祝”乐曲为例,列出了在这个乐曲中所用到的13个音符的分频预置数。分频预置数模块的VHDL设计程序如下: Use ieee.std_logic_1164.all; Entity ToneTaba is Port ( Index : in std_logic_vector (3 downto 0 ); Co

15、de : High16: out std_logic_vector (10 downto 0); End; Architecture one of ToneTaba is Begin Search : process (Index) Case Index is When 0000 = Tone 11111111111 code = high16 null; end case;4.2.3波形仿真 将所编写的分频预置数查表模块ToneTaba 的程序设为工程,选用Altera公司的Cyclone系列中的EPIC3T144C8为目标芯片进行仿真。仿真结果如图44所示。从图中可以看到,当Index是“

16、0000”,Tone输出为2047,即休止符的分频预置数,当Index是“0010”时,Tone输出为912,即低音2的分频预置数,当Index为其他状态时,Tone分别输出相应音符的分频预置数。图44 音乐谱对应分频预置数查表电路仿真波形4.3 音乐符数控11分频电路模块4.3.1音乐符数控11分频电路模块图45 Speakera 模块4.3.2音乐符数控分频模块VHDL程序 Use ieee.std_logic_unsigned.all; Entity Speakera is Port ( clk : in std_logic_vector (10 downto 0 ); Architec

17、ture one of Speakera is Signal PreCLK ,FullSpks : std_logic; divideCLK : process(clk) Variable count4: std_logic_vector (3 downto 0); PreCLK 11 then PreCLK count4 : Elsif clkevent and clk = then count4 := count4+1; End if; End process; genSpks : process ( PreCLK,Tone) Variable count11: std_logic_vec

18、tor (10 downto 0); If PreCLKevent and PreCLK = then If count11 =16#7FF# then count11 :=Tone ; FullSpks Else count11:=count11+1 ; delaySpks : process ( FullSpks ) Variable count2 : std_logic ; If FullSpksevent and FullSpks = then count2 := not count2; If count2 = then Spks Else Spks 4.3.3 仿真波形 将所编写的音

19、乐符数控分频模块 Speakera 的程序设为工程,选用选用Altera公司的Cyclone系列中的EPIC3T144C8为目标芯片进行仿真。仿真结果如图46所示。图46 音乐数控11分频电路仿真波形4.4 乐曲演奏音符数据文件图47 音乐乐谱3 3 3 3 5 5 5 68 8 8 9 6 8 5 5 12 12 12 15 13 12 10 12 9 9 9 9 9 9 9 09 9 9 10 7 7 6 6 5 5 5 6 8 8 9 9 3 3 8 8 6 5 6 8 5 5 5 5 5 5 5 5 10 10 10 12 7 7 9 9 6 8 5 5 5 5 5 5 3 5 3 3

20、 5 6 7 9 6 6 6 6 6 6 5 6 8 8 8 9 12 12 12 10 9 9 10 9 8 8 6 5 3 3 3 3 8 8 8 8 6 8 6 5 3 5 6 8 5 5 5 5 5 5 5 50 0 0 0 0 0 0 00 5 1 3 5 1 7 3 5 0 5 0 6 7 1 66 5 5 0 0 3 2 1 1 1 3 2 1 1 1 23 2 1 1 6 2 3 2 1 6 2 3 2 0 0 0 5 2 6 7 1 2 1 0 0 3 5 3 2 1 5 7 0 0 6 7 1 1 1 23 2 0 0 0 5 1 35 1 7 3 5 5 6 7 1 6

21、6 5 5 0 3 2 1 1 1 3 2 1 1 12 3 0 2 6 7 1 2 其中WIDTH=4,表示数据输出宽度为4;DPTH=256,表示共有256个4位数据点;ADDRESS-RADIX=DEC,表示地址信号用十进制;DATA-RADIX=DEC,表示输出数据是十进制数据。4.5 定制音符数据的ROM文件定制好的ROM文件VHDL程序如下: LIBRARY ieee;USE ieee.std_logic_1164.all;LIBRARY altera_mf;USE altera_mf.all;ENTITY music IS PORT ( address : IN STD_LOGI

22、C_VECTOR (7 DOWNTO 0); inclock : IN STD_LOGIC ; q : OUT STD_LOGIC_VECTOR (3 DOWNTO 0) );END music;ARCHITECTURE SYN OF music IS SIGNAL sub_wire0 : STD_LOGIC_VECTOR (3 DOWNTO 0); COMPONENT altsyncram GENERIC ( address_aclr_a : STRING; init_file : intended_device_family : lpm_hint : lpm_type : numwords_a : NATURAL; operation_mode : outdata_aclr_a : outdata_reg_a : widthad_a : width_a : width_byteena_a : NATURAL PORT ( clock0 : address_a : q_a : END COMPONENT;BEGIN q NONE, init_file =singer.mif intended_device_fami

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1