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

上传人:b****6 文档编号:5814509 上传时间:2023-01-01 格式:DOCX 页数:30 大小:712.47KB
下载 相关 举报
专用集成电路设计报告周训文组讲解.docx_第1页
第1页 / 共30页
专用集成电路设计报告周训文组讲解.docx_第2页
第2页 / 共30页
专用集成电路设计报告周训文组讲解.docx_第3页
第3页 / 共30页
专用集成电路设计报告周训文组讲解.docx_第4页
第4页 / 共30页
专用集成电路设计报告周训文组讲解.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

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

《专用集成电路设计报告周训文组讲解.docx》由会员分享,可在线阅读,更多相关《专用集成电路设计报告周训文组讲解.docx(30页珍藏版)》请在冰豆网上搜索。

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

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

 

专用集成电路设计

专业:

电子信息工程

(集成电路设计与系统方向)

班级:

集成09003

成员:

09160500324周训文

09160500322隋天犀

09160500307孙梓恒

日期:

2012.8.20—2010.11.21

 

 

 

 

1.绪论

1.概述

本次项目所设计的是一个由数字电路组成的,并通过EDA工具混合仿真、逻辑综合、布局布线后的乐曲演奏芯片,该芯片的主要功能是对三首歌曲进行演奏,有快进,暂停,回放,随机播放、单曲播放、循环播放和刷新等功能。

主要原理是分频,我们运用Verilog语言对数字模块进行了描述,并复用了RAM的IP核来存储音乐数据以及如何产生2Mhz的频率时钟。

2.项目的设计目的

通过乐曲播放芯片的设计、仿真(前、后)、测试与实现,掌握数字集成电路正向设计的完整流程、典型方法及相关技术,学会撰写相应的技术文档以及掌握在做中学,学中做的道理。

最后为毕业设计及就业做准备。

3.项目设计环境

本次项目的编写采用的是Verilog语言,首先使用XilinxISE8.2i软件对各个数字模块进行功能仿真并进行逻辑综合和布局布线;然后使用Questasim对每个子模块进行仿真断言;最后使用Hspice生成网表进行仿真产生2Mhz的时钟频率。

二.关键技术介绍

1.专有名词介绍

(1)音乐演奏芯片:

能进行音乐播放的集成电路;

(2)基准频率:

时钟发生器提供给数字模块的时钟频率,本设计的基准频率为2MHZ;

(3)最小节拍时长:

存储在RAM中的乐谱的最高音符的时值长短;

(4)分频系数:

基本频率除以音符频率所得的数值,用来确定分频所需的初始值。

2.关键技术介绍

(1)分频:

使用数字分频模块将基准时钟的频率分频成相应的音符频率;

(2)数字电路功能仿真:

功能仿真也称前仿真(区分综合后仿真)是在RTL层进行的仿真,其特点是不考虑构成电路的逻辑和门的时间延迟,着重考虑电路在理想环境下的行为和设计构想的一致性;

(3)模拟电路仿真:

调用相关器件模型对网表所描述的电路进行物理级仿真;

(4)逻辑综合:

用硬件描述语言(Verilog或VHDL)设计电路,需要将语言描述转换为电路图描述,即用芯片制造商提供的基本电路单元(综合库)实现用硬件描述语言描述的RTL级电路的功能,这个过程就称为综合;

(5)布局布线:

自动布局布线是目前普遍采用的芯片后端设计方法。

设计者使用EDA工具,快速、自动地完成逻辑门的放置和门间电路的连接;

(6)Systemverilog断言:

使用systemverilog语言对数字电路进行断言,看它是否满足我们设计所定指标。

三.系统分析

1.项目功能描述

全局循环功能:

对《十个小印第安人》,《梁祝》和《天空之城》三首乐曲按顺序进行全局循环播放。

顺序播放功能:

对三首歌曲按顺序播放一遍。

单曲循环功能:

对三首歌中的任意一首歌曲进行重复播放。

快跳功能:

对音乐进行往前跳几个字节或上一首或上一句播放。

暂停功能:

对正在播放中的音乐进行暂停播放。

随机播放功能:

对三首歌曲进行随机播放。

歌曲刷新功能:

把ram表中的所有歌曲进行刷新,亦把ram表中已有的歌曲全部擦除换上新歌曲。

2.系统组成

(1)音乐硬件演奏电路基本原理

硬件电路的发声原理:

声音的频谱范围约在几十到几千赫兹,若能将基准时钟信号分频,使芯片输出一定频率的矩形波,接上扬声器就能发出相应频率的声音。

乐曲中的每一音符对应着一个确定的频率,要使芯片发出不同音符的音调,实际上只要控制它输出相应音符的频率即可。

乐曲都是由一连串的音符组成,因此按照乐曲的乐谱依次输出这些音符所对应的频率,就可以在扬声器上连续地发出各个音符的音调。

然而要准确地演奏出一首乐曲,仅仅让扬声器能够发生是不够的,还必须准确地控制乐曲的节奏,即乐曲中每个音符的发生频率及其持续时间,这两个因素是乐曲能够连续演奏的关键。

(2)音符频率的获得

多个不同频率的信号可通过对某个基准频率进行分频器获得。

由于各个音符的频率多为非整数,而分频系数又不能为小数,故必须将计算机得到的分频系数四舍五入取整。

若基准频率过低,则分频系数过小,四舍五入取整后的误差较大;若基准频率过高,虽然可以减少频率的相对误差,但分频结构将变大。

实际上应该综合考虑这两个方面的因素,即在尽量减少误差的前提下,选取合适的基准频率。

本设计中选取2MHz的基准频率。

对基准频率分频后的输出信号是一些脉宽极窄的尖脉冲信号(占空比=1/分频系数)。

为提高输出信号的驱动能力,以使扬声器有足够的功率发音,需要再通过一个分频器将原来的分频器的输出脉冲均衡为对称方波(占空比=1/2),但这时的频率将是原来的1/2。

下表中各音符的分频系数就是从4MHz的基准频率二分频得到的2MHz频率基础上计算得到的。

由于最大分频系数是8191,故分频器采用13位二进制计数器能满足要求,乐曲中的休止符,只要将分频系数设为0,即

,此时扬声器不会发声。

(表1音符频率编码表)

(3)乐曲节奏的控制

本设计中存储的乐谱为《梁祝》,《十个小印第安人》和《天空之城》,最小的节拍为1/4拍,若将1拍的时间定为1秒,则只需要提供一个4Hz的时钟频率即可产生1/4拍的时长(0.25秒),对于其它占用时间较长的节拍(必为1/4拍的整数倍)则只需要将该音符连续输出相应的次数即可。

计数时钟信号作为输出音符快慢的控制信号,时钟快时输出节拍速度就快,演奏的速度也就快,时钟慢时输出节拍的速度就慢,演奏的速度自然降低。

(4)音乐节拍的产生

本设计将乐谱中的音符数据存储在RAM中,如《美丽的神话》中的第一个音符为“6”,此音在逻辑中停留了2个时钟节拍,即0.5秒的时间,相应地,音符“6”就要在RAM中连续地存储两个地址,当碰到一个4Hz的时钟上升沿,相应地就从RAM中输出一个音符数据。

(5)音乐硬件演奏电路总体设计流程

当一个4Hz的时钟脉冲来到时,音乐节拍发生器模块输出一个音符数据给音符译码模块,音符译码模块输出此音符相应的分频系数,将分频系数送给分频模块,当2MHz的时钟脉冲来到时,分频模块就根据分频系数输出相应的频率(即此音符所对应的发生频率)给扬声器,扬声器就可发出对应音符的声音来。

连续的4Hz的时钟脉冲就将音乐节拍发生器里所存储的音符数据一个接一个的送给了分频系数模块,再经过分频模块,最后扬声器一个接一个的发出音符数据所对应的声音来。

曲子也就流畅的播放出来了,当乐曲完成一遍演奏后,乐曲发生器能自动从头开始循环演奏。

四.系统设计

数字模块详细划分

4.1时钟节拍发生器

图1时钟节拍发生器

图1所示为时钟节拍发生器,其实质为一个分频计数器,在正常播放模式下,它将2MHz时钟分频成2hz时钟信号;在快速播放模式下,它将2MHz时钟分频成4hz时钟。

表1节拍发生器端口描述

信号

I/O

宽度

功能描述

reset

I

1

全局异步复位信号(高电平有效)

clk2mhz

I

1

2MHz时钟信号

fast

I

1

快进信号(高电平有效)

clk

O

1

2hz或4hz的时钟输出信号

clkk

o

1

给刷新模块所用的时钟

halt

I

1

暂停信号

4.2地址计数模块

图2地址计数器模块

图2所示为地址计数器模块,它的功能是按照音乐节拍输出相应音符地址。

在正常播放模式下,该计数器的时钟频率为2Hz,快速播放模式为4Hz。

当EN为高电平时,LD为低电平时,每来一个时钟上升沿,地址计数器加1,输出给乐曲数据存储器RAM,根据相应地址将从RAM的输出口输向音符译码电路Tonetaba,所存储的乐曲就开始连续自然的演奏起来。

二进制计数器的位数将根据所存放乐曲简谱基本节拍数来决定,对乐曲《十个小印第安人》,《梁祝》和《天空之城》片段其最小节拍数为75,最大节拍数为105,然而ram表中药存储三首歌,总地址达到329,所以选择计数器的位数为9位。

 

表2地址计数器端口信号描述

信号

I/O

宽度

功能描述

RST

I

1

异步复位信号(高电平有效)

clk

I

1

节拍发生器产生的2Hz或4hz时钟信号

LD

I

1

置数信号(高电平有效)

EN

I

1

计数器使能信号(高电平有效)

data_in

I

9

置数数据输入端

addr_out

O

9

当前音符在RAM中的地址

4.3缓存模块地址计数器

图3缓存模块地址

图3所示为缓存模块地址计数器,它的功能是为缓存乐谱数据开辟地址空间,当状态机需要进行对RAM空间中的歌曲刷新时,从缓存模块中相应的地址取出相应的数据存入到RAM相应的地址中,以备用来进行刷新歌曲。

表3fifo端口信号描述

信号

I/O

宽度

功能描述

ab

I

1

在刷新歌曲时用的选择开关

clk

I

1

计数器所用的时钟周期

cnt_en

I

1

刷新歌曲时是计数器工作的时能端

rst

I

1

复位信号

cnt

O

7

计数器的输出地址

flag

O

1

判断计数器是否为满

4.4音符译码模块

图4音符译码模块

图4所示为音符译码模块,它的功能是将RAM输出的音符数据转换成该音符所对应的初始值,输出给分频模块,分频模块根据该初始值对4MHz时钟进行分频。

表4音频译码端口信号描述

信号

I/O

宽度

功能描述

index

I

5

RAM输出的音符数据

tone

O

13

音符所对应的初始值

4.5分频模块

图5分频模块

 

图5所示为分频模块,它的功能是根据不同音符的初始值对2MHz的时钟进行相应的分频,产生该音符所对应频率的波形。

分频后所得波形由spks端口输出。

如图6所示,分频模块由主分频模块和二分频模块组成。

对2Mhz频率分频后的输出信号是一些脉宽极窄的尖脉冲信号。

为提高输出信号的驱动能力,使扬声器有足够的功率发音,输出信号需要通过一个二分频模块,将原来的主分频器的输出脉冲均衡为占空比为1/2的对称方波,这时方波的频率正是音符所对应的频率。

 

图6分频模块组成

表6分频模块端口信号描述

信号

I/O

宽度

功能描述

tone

I

13

音频译码模块输出的音符所对应的初始值

Clk2mhz

I

1

节拍发生器模块提供的2mHz时钟信号

reset

I

1

全局异步复位信号

halt

I

1

音乐播放暂停信号(高电平时有效)

spks

O

1

音符所对应的频率的输出方波

eno

O

1

使能信号

4.6tm模块

图7音符存储模块

图7为判断缓存和转存是否为满,它的基本功能是在起内部组建一个计数器,如果复位信号有效,那么计数器的值为零;如果在缓存或者转存模块,此时的计数器值也为零;当toven有效,那么计数器就自动加1,当计数器的值全为1时,tov就为1。

表7RAM模块端口信号描述

信号

I/O

宽度

功能描述

Cs0

I

1

缓存模块的使能选择信号

Cs1

I

1

转存模块的使能选择信号

clkk

I

1

时钟信号的四分频信号

rst

I

1

复位信号

toven

I

1

状态机给出的判断缓存或者转存模块是否为满的标志

tov

O

1

判断转存,缓存为满的标志

 

4.7RANDOM模块

图8随机模块

图8为随机模块,其基本原理是当需要随机播放一首歌曲时,按照自己所约定的随机数,由状态机给出随机数,最后达到随机播放功能。

信号

I/O

宽度

功能描述

clk

I

1

全局时钟

rst

I

1

复位信号

random

O

3

输出的随机数,给状态机

表8随机模块端口信号描述

4.8memory模块

图9记忆模块

如图9所示,memo记忆模块的作用是记忆当前播放哪一首歌曲。

比如在顺序播放模式下第一首歌曲到第二首歌曲,那么此时cnum就记录第二首歌曲的所有地址。

Cnumdly就是cnum的一个时钟延迟,而pnum是记录上一首歌曲的所有地址,例如当播放第三首歌时,pnum就为第二首歌曲的所有地址。

表9记忆模块端口信号描述

信号

I/O

宽度

功能描述

rst

I

1

全局异步复位信号(高电平有效)

Clk

I

1

节拍发生器产生的4Hz或8hz时钟信号

addr

I

9

地址计数器所产生的地址

cnum

O

2

记录当前曲目编码

pnum

0

2

记录过去曲目编码

cnumdly

O

2

当前曲目编码的一个延时,其效果与pnum等同

4.9zo3模块

图10zo3模块

如图10所示,zo3的作用是当连续探测到三个零时,那么表示这首歌曲结束,例如,在第一首歌曲后面连续探测到三个零,播放顺序为顺序播放,那么它就立刻播放第二首歌曲。

表10zo3模块端口信号描述

信号

I/O

宽度

功能描述

din

I

5

22个音符

Clk

I

1

节拍发生器产生的4Hz或8hz时钟信号

rst

I

9

全局异步复位信号(高电平有效)

Zo3

O

2

歌曲结束标志

Zo3pos

0

2

歌曲结束标志

4.9状态机

Idle:

初始化状态

S0:

置数状态

S1:

顺序播放状态

S2:

判断状态(随机,单曲循环,全局循环,快跳,回放上一首,回放上一句)

S3:

缓存状态

S4:

转存状态

S5:

转存是否结束状态

五.仿真波形

验证规划:

测试点

验证项目

顺序播放

mode=000时,是否正常顺序播放三首,最后停在末地址。

随机播放

mode为010时,是否能随机播放歌曲。

单曲循环播放

mode为001时,能否正常单曲循环播放。

前跳播放

mode为011时,能否进行前跳播放。

全曲循环播放

mode为111时,能否进行全曲循环播放。

顺序播放模式下的前跳

当mode=000时,突然将mode的值变为011,看其是否能完成顺序播放下进行前跳功能

随机模式下的前跳

当mode=010时,突然将mode的值变为011,看其是否能完成随机播放下进行前跳功能

单曲循环模式下的前跳

当mode=001时,突然将mode的值变为011,看其是否能完成单曲循环播放下进行前跳功能

顺序播放变随机播放

mode=000时进行顺序播放,当mode变为010时看能否变成随机播放。

顺序播放变单曲循环

mode=000时进行顺序播放,当mode变为001时看能否变成单曲循环播放。

随机播放变顺序播放

mode=010时进行随机播放,当mode变为000时看能否变成顺序播放。

随机播放变单曲循环播放

mode=010时进行随机播放,当mode变为001时看能否变成单曲循环播放。

单曲循环变顺序播放

mode=001时进行单曲循环播放,当mode变为000时看能否变成顺序播放。

单曲循环变随机播放

mode=001时进行单曲循环播放,当mode变为010时看能否变成随机播放

全曲循环模式下变顺序播放再变全曲

mode=111时进行全曲循环播放,当mode=000时,看能否进行顺序播放,如果能再让mode=111,变回全曲循环模式

全曲循环变随机播放再变全曲

mode=111时进行全曲循环播放,当mode变为010时,看能否进行随机播放,如果能再让mode=111,变回全曲循环模式

全曲循环变单曲循环再变全曲

mode=111时进行全曲循环播放,当mode变为001时,看能否进行单曲循环播放,如果能再让mode=111,变回全曲循环模式

顺序播放模式下由第二首跳转到第一首

mode=000时进行顺序模式,当mode变为100且128<=addr<256时,看能否跳到第一首歌。

顺序播放模式下由第三跳转到第二首

mode=000时进行顺序模式,当256<=addr<384且mode=100时,看能否跳到第二首歌。

顺序播放模式下由第一首跳转到第一首

mode=000时进行顺序模式,当0<=addr<128且mode=100时,看能否跳转到第一首歌的首地址。

单曲循环模式下由第三首跳到第二首

mode=001时进行单曲循环模式,当256<=addr<384时,看能否跳到第二首歌。

单曲循环模式下由第二首跳到第一首

mode=001时进行单曲循环模式,当128<=addr<256时,看能否跳到第一首歌。

随机模式下由当前歌曲跳到上一首

mode=010时进行随机模式,当0<=addr<384时,看能否跳到上一首歌。

全曲循环模式由当前句跳到上一句

mode=111时进行全曲循环模式,当mode变为101时看能否由当前句跳到上一句。

顺序模式下由当前句跳到上一句

mode=000时进行顺序模式,当mode变为101时看能否由当前句跳到上一句。

随机模式下由当前句跳到上一句

mode=010时进行随机模式,当mode变为101时看能否由当前句跳到上一句。

全曲循环播放下前跳

当mode=111时,突然将mode的值变为011,看其是否能完成全曲播放下进行前跳功能。

顺序播放下进行刷新

mode=000,突然将mode的值变为110,看在顺序播放下能否进行刷新。

单曲循环播放下进行刷新

mode=001,突然将mode的值变为110,看在单曲循环播放下能否进行刷新。

随机播放模式下进行刷新

mode=010,突然将mode的值变为110,看在随机模式播放下能否进行刷新。

全曲循环播放模式下进行刷新

mode=111,突然将mode的值变为110,看在全曲循环播放下能否进行刷新。

具体验证项目:

1.1顺序播放下刷新

当mode为000时,进行顺序播放,当前地址从0开。

当mode发生变化时,即mode为6。

当mode为6时,数据先存入到缓冲区,然后在进入到ram中。

1.2单曲循环播放下进行刷新

Mode为1时,进行单曲循环(第一首)播放

当mode发生变化时,进行歌曲刷新

1.3随机播放模式下进行刷新

Mode=2时,进行随机(第二首)播放

当mode发生变化时,进行刷新歌曲(顺序刷新,即先刷第一首,然后第二首,最后第三首)

1.4全曲循环播放模式下进行刷新

Mode为7时,进行全曲循环播放

当mode发生变化时,进行刷新歌曲

六.断言部分

1地址计数器:

(1)当复位信号有效地址计数器就清零【a_asyn_rst:

assertproperty(@(posedgeclk)rst|->(addr_out==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,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)当复位信号有效地址计数器就清零【a_syn_rst:

assertproperty(@(posedgeclk)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==($past(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的时候测试通过。

3capa

(1)当复位信号有效pa,ca就清零【a_syn_rst1:

assertproperty(@(posedgeclk)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