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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

专用集成电路设计报告周训文组讲解.docx

1、专用集成电路设计报告周训文组讲解专用集成电路设计 专业:电子信息工程 (集成电路设计与系统方向) 班级:集成09003 成员:09160500324 周训文 09160500322 隋天犀 09160500307 孙梓恒 日期:2012.8.202010.11.21 1绪论1.概述 本次项目所设计的是一个由数字电路组成的,并通过EDA工具混合仿真、逻辑综合、布局布线后的乐曲演奏芯片,该芯片的主要功能是对三首歌曲进行演奏,有快进,暂停,回放,随机播放、单曲播放、循环播放和刷新等功能。 主要原理是分频,我们运用Verilog语言对数字模块进行了描述,并复用了RAM的IP核来存储音乐数据以及如何产生

2、2Mhz的频率时钟。2.项目的设计目的 通过乐曲播放芯片的设计、仿真(前、后)、测试与实现,掌握数字集成电路正向设计的完整流程、典型方法及相关技术,学会撰写相应的技术文档以及掌握在做中学,学中做的道理。最后为毕业设计及就业做准备。 3.项目设计环境 本次项目的编写采用的是Verilog语言,首先使用Xilinx ISE 8.2i软件对各个数字模块进行功能仿真并进行逻辑综合和布局布线;然后使用Questa sim对每个子模块进行仿真断言;最后使用Hspice生成网表进行仿真产生2Mhz的时钟频率。二关键技术介绍1.专有名词介绍(1)音乐演奏芯片:能进行音乐播放的集成电路; (2)基准频率:时钟发

3、生器提供给数字模块的时钟频率,本设计的基准频率为2MHZ;(3)最小节拍时长:存储在RAM中的乐谱的最高音符的时值长短;(4)分频系数:基本频率除以音符频率所得的数值,用来确定分频所需的初始值。2.关键技术介绍(1)分频:使用数字分频模块将基准时钟的频率分频成相应的音符频率;(2)数字电路功能仿真:功能仿真也称前仿真(区分综合后仿真)是在RTL层进行的仿真,其特点是不考虑构成电路的逻辑和门的时间延迟,着重考虑电路在理想环境下的行为和设计构想的一致性;(3)模拟电路仿真:调用相关器件模型对网表所描述的电路进行物理级仿真;(4)逻辑综合:用硬件描述语言(Verilog或VHDL)设计电路,需要将语

4、言描述转换为电路图描述,即用芯片制造商提供的基本电路单元(综合库)实现用硬件描述语言描述的RTL级电路的功能,这个过程就称为综合;(5)布局布线:自动布局布线是目前普遍采用的芯片后端设计方法。设计者使用EDA工具,快速、自动地完成逻辑门的放置和门间电路的连接;(6)System verilog断言:使用system verilog语言对数字电路进行断言,看它是否满足我们设计所定指标。三系统分析1. 项目功能描述全局循环功能:对十个小印第安人,梁祝和天空之城三首乐曲按顺序进行全局循环播放。顺序播放功能:对三首歌曲按顺序播放一遍。单曲循环功能:对三首歌中的任意一首歌曲进行重复播放。快跳功能:对音乐

5、进行往前跳几个字节或上一首或上一句播放。暂停功能:对正在播放中的音乐进行暂停播放。随机播放功能:对三首歌曲进行随机播放。歌曲刷新功能:把ram表中的所有歌曲进行刷新,亦把ram表中已有的歌曲全部擦除换上新歌曲。 2. 系统组成(1)音乐硬件演奏电路基本原理 硬件电路的发声原理:声音的频谱范围约在几十到几千赫兹,若能将基准时钟信号分频,使芯片输出一定频率的矩形波,接上扬声器就能发出相应频率的声音。乐曲中的每一音符对应着一个确定的频率,要使芯片发出不同音符的音调,实际上只要控制它输出相应音符的频率即可。乐曲都是由一连串的音符组成,因此按照乐曲的乐谱依次输出这些音符所对应的频率,就可以在扬声器上连续

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

7、频后的输出信号是一些脉宽极窄的尖脉冲信号(占空比=1/分频系数)。为提高输出信号的驱动能力,以使扬声器有足够的功率发音,需要再通过一个分频器将原来的分频器的输出脉冲均衡为对称方波(占空比=1/2),但这时的频率将是原来的1/2。下表中各音符的分频系数就是从4MHz的基准频率二分频得到的2MHz频率基础上计算得到的。由于最大分频系数是8191,故分频器采用13位二进制计数器能满足要求,乐曲中的休止符,只要将分频系数设为0,即,此时扬声器不会发声。 (表1 音符频率编码表)(3) 乐曲节奏的控制 本设计中存储的乐谱为梁祝,十个小印第安人和天空之城,最小的节拍为1/4拍,若将1拍的时间定为1秒,则只

8、需要提供一个4Hz的时钟频率即可产生1/4拍的时长(0.25秒),对于其它占用时间较长的节拍(必为1/4拍的整数倍)则只需要将该音符连续输出相应的次数即可。 计数时钟信号作为输出音符快慢的控制信号,时钟快时输出节拍速度就快,演奏的速度也就快,时钟慢时输出节拍的速度就慢,演奏的速度自然降低。(4) 音乐节拍的产生 本设计将乐谱中的音符数据存储在RAM中,如美丽的神话中的第一个音符为“6”,此音在逻辑中停留了2个时钟节拍,即0.5秒的时间,相应地,音符“6”就要在RAM中连续地存储两个地址,当碰到一个4Hz的时钟上升沿,相应地就从RAM中输出一个音符数据。(5)音乐硬件演奏电路总体设计流程 当一个

9、4Hz的时钟脉冲来到时,音乐节拍发生器模块输出一个音符数据给音符译码模块,音符译码模块输出此音符相应的分频系数,将分频系数送给分频模块,当2MHz的时钟脉冲来到时,分频模块就根据分频系数输出相应的频率(即此音符所对应的发生频率)给扬声器,扬声器就可发出对应音符的声音来。连续的4Hz的时钟脉冲就将音乐节拍发生器里所存储的音符数据一个接一个的送给了分频系数模块,再经过分频模块,最后扬声器一个接一个的发出音符数据所对应的声音来。曲子也就流畅的播放出来了,当乐曲完成一遍演奏后,乐曲发生器能自动从头开始循环演奏。四系统设计数字模块详细划分4.1 时钟节拍发生器图1时钟节拍发生器 图1所示为时钟节拍发生器

10、,其实质为一个分频计数器,在正常播放模式下,它将2MHz时钟分频成2hz时钟信号;在快速播放模式下,它将2MHz时钟分频成4hz时钟。表1 节拍发生器端口描述信号I/O宽度 功能描述resetI1全局异步复位信号(高电平有效)clk2mhzI12MHz时钟信号fastI1快进信号(高电平有效)clkO12hz或4hz的时钟输出信号clkko1给刷新模块所用的时钟haltI1暂停信号 4.2 地址计数模块图2 地址计数器模块图2所示为地址计数器模块,它的功能是按照音乐节拍输出相应音符地址。在正常播放模式下,该计数器的时钟频率为2Hz,快速播放模式为4Hz。当EN为高电平时,LD为低电平时,每来一

11、个时钟上升沿,地址计数器加1,输出给乐曲数据存储器RAM,根据相应地址将从RAM的输出口输向音符译码电路Tonetaba,所存储的乐曲就开始连续自然的演奏起来。二进制计数器的位数将根据所存放乐曲简谱基本节拍数来决定,对乐曲十个小印第安人,梁祝和天空之城片段其最小节拍数为75,最大节拍数为105,然而ram表中药存储三首歌,总地址达到329,所以选择计数器的位数为9位。表2 地址计数器端口信号描述信号I/O宽度 功能描述RSTI1异步复位信号(高电平有效)clkI1节拍发生器产生的2Hz或4hz时钟信号LDI1置数信号(高电平有效)ENI1计数器使能信号(高电平有效)data_inI9置数数据输

12、入端addr_outO9当前音符在RAM中的地址4.3 缓存模块地址计数器图3缓存模块地址 图3所示为缓存模块地址计数器,它的功能是为缓存乐谱数据开辟地址空间,当状态机需要进行对RAM空间中的歌曲刷新时,从缓存模块中相应的地址取出相应的数据存入到RAM相应的地址中,以备用来进行刷新歌曲。 表3 fifo端口信号描述信号I/O宽度 功能描述abI1在刷新歌曲时用的选择开关clkI1计数器所用的时钟周期cnt_enI1刷新歌曲时是计数器工作的时能端rstI1复位信号cntO7计数器的输出地址flagO1判断计数器是否为满4.4 音符译码模块图4 音符译码模块图4所示为音符译码模块,它的功能是将RA

13、M输出的音符数据转换成该音符所对应的初始值,输出给分频模块,分频模块根据该初始值对4MHz时钟进行分频。表4 音频译码端口信号描述信号I/O宽度 功能描述indexI5RAM输出的音符数据toneO13音符所对应的初始值4.5 分频模块图5 分频模块图5所示为分频模块,它的功能是根据不同音符的初始值对2MHz的时钟进行相应的分频,产生该音符所对应频率的波形。分频后所得波形由spks端口输出。如图6所示,分频模块由主分频模块和二分频模块组成。对2Mhz频率分频后的输出信号是一些脉宽极窄的尖脉冲信号。为提高输出信号的驱动能力,使扬声器有足够的功率发音,输出信号需要通过一个二分频模块,将原来的主分频

14、器的输出脉冲均衡为占空比为1/2的对称方波,这时方波的频率正是音符所对应的频率。图6 分频模块组成表6 分频模块端口信号描述信号I/O宽度 功能描述toneI13音频译码模块输出的音符所对应的初始值Clk2mhzI1节拍发生器模块提供的2mHz时钟信号resetI1全局异步复位信号haltI1音乐播放暂停信号(高电平时有效)spksO1音符所对应的频率的输出方波enoO1使能信号4.6 tm模块 图7 音符存储模块 图7为判断缓存和转存是否为满,它的基本功能是在起内部组建一个计数器,如果复位信号有效,那么计数器的值为零;如果在缓存或者转存模块,此时的计数器值也为零;当toven有效,那么计数器

15、就自动加1,当计数器的值全为1时,tov就为1。表7 RAM模块端口信号描述信号I/O宽度 功能描述Cs0I1缓存模块的使能选择信号Cs1I1转存模块的使能选择信号clkkI1时钟信号的四分频信号rstI1复位信号tovenI1状态机给出的判断缓存或者转存模块是否为满的标志tovO1判断转存,缓存为满的标志4.7 RANDOM模块图8 随机模块图8为随机模块,其基本原理是当需要随机播放一首歌曲时,按照自己所约定的随机数,由状态机给出随机数,最后达到随机播放功能。信号I/O宽度 功能描述clkI1全局时钟rstI1复位信号randomO3输出的随机数,给状态机表8 随机模块端口信号描述4.8 m

16、emory模块图9 记忆模块 如图9所示,memo记忆模块的作用是记忆当前播放哪一首歌曲。比如在顺序播放模式下第一首歌曲到第二首歌曲,那么此时cnum就记录第二首歌曲的所有地址。Cnumdly就是cnum的一个时钟延迟,而pnum是记录上一首歌曲的所有地址,例如当播放第三首歌时,pnum就为第二首歌曲的所有地址。表9 记忆模块端口信号描述信号I/O宽度 功能描述rstI1全局异步复位信号(高电平有效)ClkI1节拍发生器产生的4Hz或8hz时钟信号addrI9地址计数器所产生的地址cnumO2记录当前曲目编码pnum02记录过去曲目编码cnumdlyO2当前曲目编码的一个延时,其效果与pnum

17、等同4.9 zo3模块图10 zo3模块 如图10 所示,zo3的作用是当连续探测到三个零时,那么表示这首歌曲结束,例如,在第一首歌曲后面连续探测到三个零,播放顺序为顺序播放,那么它就立刻播放第二首歌曲。表10 zo3模块端口信号描述信号I/O宽度 功能描述dinI522个音符ClkI1节拍发生器产生的4Hz或8hz时钟信号rstI9全局异步复位信号(高电平有效)Zo3O2歌曲结束标志Zo3pos02歌曲结束标志4.9 状态机 Idle:初始化状态S0:置数状态S1:顺序播放状态S2:判断状态(随机,单曲循环,全局循环,快跳,回放上一首,回放上一句)S3:缓存状态S4:转存状态S5:转存是否结

18、束状态五. 仿真波形验证规划:测试点验证项目顺序播放mode=000时,是否正常顺序播放三首,最后停在末地址。随机播放mode为010时,是否能随机播放歌曲。单曲循环播放mode为001时,能否正常单曲循环播放。 前跳播放mode为011时,能否进行前跳播放。全曲循环播放mode为111时,能否进行全曲循环播放。顺序播放模式下的前跳当mode=000时,突然将mode的值变为011,看其是否能完成顺序播放下进行前跳功能随机模式下的前跳当mode=010时,突然将mode的值变为011,看其是否能完成随机播放下进行前跳功能单曲循环模式下的前跳当mode=001时,突然将mode的值变为011,看

19、其是否能完成单曲循环播放下进行前跳功能顺序播放变随机播放mode=000时进行顺序播放,当mode变为010时看能否变成随机播放。顺序播放变单曲循环mode=000时进行顺序播放,当mode变为001时看能否变成单曲循环播放。随机播放变顺序播放mode=010时进行随机播放,当mode变为000时看能否变成顺序播放。随机播放变单曲循环播放mode=010时进行随机播放,当mode变为001时看能否变成单曲循环播放。单曲循环变顺序播放mode=001时进行单曲循环播放,当mode变为000时看能否变成顺序播放。单曲循环变随机播放mode=001时进行单曲循环播放,当mode变为010时看能否变成

20、随机播放全曲循环模式下变顺序播放再变全曲mode=111时进行全曲循环播放,当mode=000时,看能否进行顺序播放,如果能再让mode=111,变回全曲循环模式全曲循环变随机播放再变全曲mode=111时进行全曲循环播放,当mode变为010时,看能否进行随机播放,如果能再让mode=111,变回全曲循环模式全曲循环变单曲循环再变全曲mode=111时进行全曲循环播放,当mode变为001时,看能否进行单曲循环播放,如果能再让mode=111,变回全曲循环模式顺序播放模式下由第二首跳转到第一首mode=000时进行顺序模式,当mode变为100且128=addr256时,看能否跳到第一首歌。

21、顺序播放模式下由第三跳转到第二首mode=000时进行顺序模式,当256=addr384且mode=100时,看能否跳到第二首歌。顺序播放模式下由第一首跳转到第一首mode=000时进行顺序模式,当0=addr128且mode=100时,看能否跳转到第一首歌的首地址。单曲循环模式下由第三首跳到第二首mode=001时进行单曲循环模式,当256=addr384时,看能否跳到第二首歌。单曲循环模式下由第二首跳到第一首mode=001时进行单曲循环模式,当128=addr256时,看能否跳到第一首歌。随机模式下由当前歌曲跳到上一首mode=010时进行随机模式,当0=addr (addr_out =

22、 0)】。(2)当置数端有效把data_in的值给地址计数器【a_syn_load: assert_clk( ld |= ($past(data_in)= addr_out) )】。(3)当置数端无效并且地址使能端无效,那么地址计数器的值不变【a_syn_hold: assert_clk( ld & en |= addr_out =$past(addr_out,1) )】。(4)当置数端无效并且地址使能端有效,那么地址计数器完成自动加1【a_syn_add_norm: assert_clk( ld & en & (&addr_out) |= addr_out =( $past(addr_out

23、,1) + 1 ) )】。(5)当置数端无效,使能端有效并且地址计数器的地址全为1,那么地址溢出【a_syn_add_overflow: assert_clk( ld & en & (&addr_out) |= (addr_out = 0) )】。 仿真波形如下图:图(1)仿真概况图(2)计数器自加和溢出 1ns的时候rst通过;11ns的时候保持被激活,12ns的时候通过;23ns的时候计数器自加功被启动,24ns的时候测试通过;65ns的时候,计数器的置数段被激活,66ns的时候测试通过;77ns的时候,计数器的溢出被激活,78ns的时候测试通过。2 刷新地址计数器 (1)当复位信号有效地

24、址计数器就清零【a_syn_rst:assert property (posedge clk) rst |- (cnt=0)】。 (2)当计数器全为1,flag为1【a_syn_flag:assert_clk ( $rose(&cnt) |- (flag=1)】。 (3)当状态不是在缓存和转存模块时,计数器自动清零【a_syn_clear:assert_clk (ab) |-(cnt=0)】。 (4)当状态在缓存和转存模块并且计数器时能端有效并且计数器的值不全为1时,计数器自动加1【a_syn_norm:assert_clk (ab) & (cnt_en)& (cnt) |= cnt=($pa

25、st(cnt,1) + 1)】。 (5)当状态在缓存和转存模块并且地址计数器使能端无效时,计数器保持不变【a_syn_hold:assert_clk (ab) & (cnt_en) |= cnt = ($past(cnt,1)】。 (6)当状态在缓存和转存模块,使能端有效并且地址计数器的地址全为1【a_syn_overflow:assert_clk (ab) & cnt_en & (&cnt) |= (cnt = 0)】。图(3)刷新地址总体概况图(4)flag和地址溢出 287ns的时候,地址计数器的值全为1,此时flag测试通过;287ns的时候,溢出被激活,288ns的时候测试通过。3

26、capa (1)当复位信号有效pa,ca就清零【a_syn_rst1:assert property (posedge clk) rst |- (pa=0) | (ca=0) )】。 (2)当dout有效,posdout的值为1【a_syn_posdout:assert_clk ($rose(dout) |= (posdout=1)】。 (3)当doutdly有效,negdout的值为【a_syn_negdout:assert_clk ($rose(doutdly) |= (negdout=1)】。 (4)只要dout有效,那么doutdly的值为上一个dout的值【a_syn_doutdly:assert_clk (doutdly=($past(dout)】。 (5)只要pa有效,那么padly的值为pa的值【a_syn_padly:assert_clk (padly=($past(pa)】。 (6)当pald有效,那么pa的值为上一个pa_data的值【a_syn_pa1:assert_clk (pald |=(pa=$past(pa_data)】。 (7)当pald无效并且negdout有效时,那么pa的值为上一个ca的值【a_syn_pa2:assert_cl

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

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