mp3的设计与应用毕业设计论文.doc

上传人:文库蛋蛋多 文档编号:2326234 上传时间:2023-02-11 格式:DOC 页数:35 大小:774.50KB
返回 下载 相关 举报
mp3的设计与应用毕业设计论文.doc_第1页
第1页 / 共35页
mp3的设计与应用毕业设计论文.doc_第2页
第2页 / 共35页
mp3的设计与应用毕业设计论文.doc_第3页
第3页 / 共35页
mp3的设计与应用毕业设计论文.doc_第4页
第4页 / 共35页
mp3的设计与应用毕业设计论文.doc_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《mp3的设计与应用毕业设计论文.doc》由会员分享,可在线阅读,更多相关《mp3的设计与应用毕业设计论文.doc(35页珍藏版)》请在三一办公上搜索。

1、 本科毕业设计(论文)题 目 mp3的设计与应用 部 系 地方生部 专 业 电子信息工程 学 员 王傈 指导教员 张力 中国人民解放军海军航空工程学院2010 年 7 月 前 言 MP3的全称应为MPEG1 Layer-3音频文件,MPEG(Moving Picture Experts Group)在汉语中译为活动图像专家组,特指活动影音压缩标准,MPEG音频文件是MPEG1标准中的声音部分,也叫MPEG音频层,它根据压缩质量和编码复杂程度划分为三层,即Layer-1、Layer2、Layer3,且分别对应MP1、MP2、MP3这三种声音文件,并根据不同的用途,使用不同层次的编码。MPEG音频

2、编码的层次越高,编码器越复杂,压缩率也越高,MP1和MP2的压缩率分别为4:1和6:1-8:1,而MP3的压缩率则高达10:1-12:1,也就是说,一分钟CD音质的音乐,未经压缩需要10MB的存储空间,而经过MP3压缩编码后只有1MB左右。不过MP3对音频信号采用的是有损压缩方式,为了降低声音失真度,MP3采取了“感官编码技术”,即编码时先对音频文件进行频谱分析,然后用过滤器滤掉噪音电平,接着通过量化的方式将剩下的每一位打散排列,最后形成具有较高压缩比的MP3文件,并使压缩后的文件在回放时能够达到比较接近原音源的声音效果。 MP3播放机要分几个部分:中央处理器、解码器、存储设备、主机通讯端口、

3、音频DAC和功放、显示界面和控制键。其中中央处理器和解码器是整个系统的核心。这里的中央处理器我们通常称为MCU(单片微处理器),简称单片机。它运行MP3的整个控制程序,也称为fireware(或者固件程序)。控制MP3的各个部件的工作:从存储设备读取数据送到解码器解码;与主机连接时完成与主机的数据交换;接收控制按键的操作,显示系统运行状态等任务。解码器是芯片中的一个硬件模块,或者说是硬件解码(有的MP3播放机是软件解码,由高速中央处理器完成)。它可以直接完成各种格式MP3数据流的解码操作,并输出PCM或I2S格式的数字音频信号。 存储设备是MP3播放机的重要部分,通常的MP3随身听都是采用半导

4、体存储器(FLASH MEMORY)或者硬盘(HDD)作为储存设备的。它通过接受储存主机通讯端口传来的数据(通常以文件形式),回放的时候MCU读取存储器中的数据并送到解码器。数据的存储是要有一定格式的,众所周知,PC管理磁盘数据是以文件形式,MP3也不例外,最常用的办法就是直接利用PC的文件系统来管理存储器,微软操作系统采用的是FAT文件系统,这也是最广泛使用的一帧呕?渲幸桓鋈挝窬褪且?迪諪AT文件系统,即可以从FAT文件系统的磁盘中按文件名访问并读出其中的数据。 主机通讯端口是MP3播放机与PC机交换数据的途径,PC通过该端口操作MP3播放机存储设备中的数据,拷贝、删除、复制文件等操作。目前

5、最广泛使用的是USB总线,并且遵循微软定义的大容量移动存储协议规范,将MP3播放机作为主机的一个移动存储设备。这里需要遵循几个规范:USB通信协议、大容量移动存储器规范和SCSI协议。 音频DAC是将数字音频信号转换成模拟音频信号,以推动耳机、功放等模拟音响设备。这里要介绍一下数字音频信号。数字音频信号是相对模拟音频信号来说的。我们知道声音的本质是波,人说能听到的声音的频率在20Hz到20kHz之间,称为声波。模拟信号对波的表示是连续的函数特性,基本的原理是不同频率和振幅的波叠加在一起。数字音频信号是对模拟信号的一种量化,典型方法是对时间坐标按相等的时间间隔做采样,对振幅做量化。单位时间内的采

6、样次数称为采样频率。这样一段声波就可以被数字化后变成一串数值,每个数值对应相应抽样点的振幅值,按顺序将这些数字排列起来就是数字音频信号了。这是ADC(模拟-数字转换)过程,DAC(数字-模拟转换)过程相反,将连续的数字按采样时候的频率顺序转换成对应的电压。MP3解码器解码后的信息属于数字音频信号(数字音频信号有不同的格式,最常用的是PCM和I2S两种),需要通过DAC转换器变成模拟信号才能推动功放,被人耳所识别。MP3播放机的显示设备通常采用LCD或者OLED等来显示系统的工作状态。控制键盘通常是按钮开关。键盘和显示设备合起来构成了MP3播放机的人机交互界面。 MP3播放机的软件结构跟硬件是相

7、对应的,即每一个硬件部分都有相应的软件代码,这是因为大多数的硬件部分都是数字可编程控制的。 看了上面的介绍是不是已经被单片机原理,编程,信号与系统,电子线路以及诸多协议标准的单词轰炸得晕头转向了。其实这只不过是让大家了解,MP3虽然简单但也很复杂。 总结起来工作流程为读取贮体上的信号-到解码芯片对信号进行解码(或解压缩)-通过数模转换器将解出来的数字信号转换成模拟信号-再把转换后的模拟音频放大-低通滤波后到耳机输出口。第一章 编码与解码 本文先介绍符合ISO/IEC 11172-3(MPEG 1 Audio codec Layer I, Layer II and Layer III audio

8、 specifications) 或 ISO/IEC 13818-3(BC Audio Codec)的音频编码原理。通过madlib解码库进行实现。1.1 程序系统结构 mp3解码流程图其中同步及差错检查包括了头解码模块在主控模块开始运行后,主控模块将比特流的数据缓冲区交给同步及差错检查模块,此模块包含两个功能,即头信息解码及帧边信息解码,根据它们的信息进行尺度因子解码及哈夫曼解码,得出的结果经过逆量化,立体声解码,混淆缩减,IMDCT,频率反转,合成多相滤波这几个模块之后,得出左右声道的PCM码流,再由主控模块将其放入输出缓冲区输出到声音播放设备。1.2 主控模块主控模块的主要任务是操作输入

9、输出缓冲区,调用其它各模块协同工作。其中,输入输出缓冲区均由DSP控制模块提供接口。输入缓冲区中放的数据为原始mp3压缩数据流,DSP控制模块每次给出大于最大可能帧长度的一块缓冲区,这块缓冲区与上次解帧完后的数据(必然小于一帧)连接在一起,构成新的缓冲区。输出缓冲区中将存放的数据为解码出来的PCM数据,代表了声音的振幅。它由一块固定长度的缓冲区构成,通过调用DSP控制模块的接口函数,得到头指针,在完成输出缓冲区的填充后,调用中断处理输出至I2S接口所连接的音频ADC芯片(立体声音频DAC和DirectDrive耳机放大器)输出模拟声音。1.3 同步及差错检测同步及差错检测模块主要用于找出数据帧

10、在比特流中的位置,并对以此位置开始的帧头、CRC校验码及帧边信息进行解码,这些解码的结果用于后继的尺度因子解码模块和哈夫曼解码模块。Mpeg1 layer 3的流的主数据格式见下图:主数据的组织结构图其中granule0和granule1表示在一帧里面的粒度组1和粒度组2,channel0和channel1表示在一个粒度组里面的两个通道,scalefactor为尺度因子quantized value为量化后的哈夫曼编码值,它分为big values大值区和count1 1值区CRC校验:表达式为X16+X15+X2+11.3.1帧同步帧同步目的在于找出帧头在比特流中的位置,ISO 1172-3

11、规定,MPEG1 的帧头为12比特的“1111 1111 1111”,且相邻的两个帧头隔有等间距的字节数,这个字节数可由下式算出:N= 144 * 比特率 / 采样率如果这个式子的结果不是整数,那么就需要用到一个叫填充位的参数,表示间距为N +1。1.3.2头信息解码头信息解码目的是找出这一帧的特征信息,如采样率,是否受保护,是否有填充位等。头信息见下图:帧头信息结构图其长度为4 字节,数据结构如下:typedef struct tagHeader unsigned int sync : 11 ; / / 同步信息unsigned int version : 2 ; / / 版本unsigne

12、d int layer : 2 ; / / 层unsigned int error2protection : 1 ; / / CRC校正unsigned int bit2rate2index : 4 ; / / 位率索引unsigned int sample2rate2index : 2 ; / / 采样率索引unsigned int padding : 1 ; / / 空白字unsigned int extension : 1 ; / / 私有标志unsigned int channel2mode : 2 ; / / 立体声模式unsigned int mode extension : 2

13、; / / 保留unsigned int copyright : 1 ; / / 版权标志unsigned int original : 1 ; / / 原始媒体unsigned int emphasis : 2 ; / / 强调方式 HEADER1.3.3帧边信息解码帧边信息解码的主要目的在于找出解这帧的各个参数,包括主数据开始位置,尺度因子长等。帧边信息如下图所示:帧边信息(side_infomation)表1.3.4main_data_beginmain_data_begin(主数据开始)是一个偏移值,指出主数据是在同步字之前多少个字节开始。需要注意的是,1.帧头不一定是一帧的开始,帧头

14、CRC校验字和帧边信息在帧数据中是滑动的。2.这个数值忽略帧头和帧边信息的存在,如果main_data_begin = 0, 则主数据从帧边信息的下一个字节开始。 参见下图:同步示意图1.3.5block_typeblock_type指出如下三种块类型:block_type = 0 长块block_type = 1 开始块block_type = 3 结束块block_type = 2 短块在编码过程中进行IMDCT 变换时,针对不同信号为同时得到较好的时域和频域分辨率定义了两种不同的块长:长块的块长为18个样本,短块的块长为6个样本。这使得长块对于平稳的声音信号可以得到更高的频率分辨率,而短

15、块对跳变信号可以得到更高的时域分辨率。由于在短块模式下,3 个短块代替1个长块,而短块的大小恰好是一个长块的1/3,所以IMDCT的样本数不受块长的影响。对于给定的一帧声音信号,IMDCT 可以全部使用长块或全部使用短块,也可以长短块混合使用。因为低频区的频域分辨率对音质有重大影响,所以在混合块模式下,IMDCT对最低频的2个子带使用长块,而对其余的30个子带使用短块。这样,既能保证低频区的频域分辨率,又不会牺牲高频区的时域分辨率。长块和短块之间的切换有一个过程,一般用一个带特殊长转短(即,起始块block_type = 1)或短转长(即终止块,block_type = 3)数据窗口的长块来完

16、成这个长短块之间的切换。因此长块也就是包括正常窗,起始块和终止块数据窗口的数据块;短块也包含18个数据,但是是由6个数据独立加窗后在经过连接计算得到的。1.3.6 big_values, count1每一个粒度组的频谱都是用不同的哈夫曼表来进行编码的。编码时,把整个从0 到奈奎斯特频率的频率范围(共576个频率线)分成几个区域,然后再用不同的表编码。划分过程是根据最大的量化值来完成的,它假设较高频率的值有较低的幅度或者根本不需要编码。从高频开始,一对一对的计算量化值等于“0”的数目,此数目记为“rzero”。然后4个一组地计算绝对值不超过“1”的量化值(也就是说,其中只可能有-1,0 和+1共

17、3 个可能的量化级别)的数目,记为“count1”,在此区域只应用了4 个哈夫曼编码表。最后,剩下的偶数个值的对数记为“big values”, 在此区域只应用了32 个哈夫曼编码表。在此范围里的最大绝对值限制为8191。此后,为增强哈夫曼编码性能,进一步划分了频谱。也就是说,对big values的区域(姑且称为大值区)再细化,目的是为了得到更好的错误顽健性和更好的编码效率。在不同的区域内应用了不同的哈夫曼编码表。具体使用哪一个表由table_select给出。从帧边信息表中可以看到:当window_switch_flag = 0时,只将大值区在细分为2个区,此时region1_count无

18、意义,此时的region0_count的值是标准默认的;但当window_switch_flag = 1时再将大值区细分为3 个区。但是由于region0_count 和region1_count是根据从576个频率线划分的, 因此有可能超出了big_values *2的范围,此时以big_values *2 为准. region0_count 和region1_count表示的只是一个索引值,具体频带要根据标准中的缩放因子频带表来查得.参见下图:缩放因子、大值区、1值区和零值区分布图1.3.7 处理流程1.4 缩放因子(scale factor)解码缩放因子用于对哈夫曼解码数据进行逆量化的样

19、点重构。根据帧边信息中的scalefactor_compress 和标准中的对应表格来确定的slen1和slen2 对缩放因子进行解码,即直接从主数据块中读取缩放因子信息并存入表scalefac_lgrchsfb和scalefac_sgrchsfb中。对第2 粒度组解码时,若为长块,则必须考虑尺度因子选择信息。1.4.1 尺度因子带(scalefactor-band)在mpeg layer 3中576条频率线根据人耳的听觉特性被分成多个组,每个组对应若干个尺度因子,这些组就叫做尺度因子带,每个长窗有21个尺度因子带而每个短窗有12个尺度因子带。1.4.2 scfsiscfsi(尺度因子选择信息

20、)用于指出是否将粒度组1的尺度因子用于粒度组2。如果为0表示不用,则在比特流中需读取粒度组2的尺度因子。1.4.3 处理流程缩放因子解码流程图1.5 哈夫曼解码哈夫曼编码是一种变长编码,在mp3哈夫曼编码中,高频的一串零值不编码,不超过1的下一个区域使用四维哈夫曼编码,其余的大值区域采用二维哈夫曼编码,而且可选择地分为三个亚区,每个有独立选择的哈夫曼码表。通过每个亚区单独的自适应码表,增强编码效率,而且同时降低了对传输误码的敏感度。在程序实现上,哈夫曼表逻辑存储采用了广义表结构,物理存储上使用数组结构。查表时,先读入4bit数据,以这4bit数据作为索引,其指向的元素有两种类型,一种是值结构,

21、另一种是链表指针式结构,在链表指针式结构中给出了还需要读取的bit数,及一个偏移值。如果索引指向的是一个值结构,则这个值结构就包含了要查找的数据。如果索引指向的是一个链表指针式结构,则还需再读取其中指定的比特数,再把读取出的比特数同偏移值相加,递归的找下去,直到找到值结构为止。1.5.1 处理流程1.6 逆量化1.6.1 逆量化公式逆量化由下面公式算出:短窗模式:长窗模式:其中:isi :由huffman编码构造的频率线sbg :subblock_gainscalefac_multiplier := (scalefac_scale + 1) / 2其它值均可在帧边信息中找到。1.7 联合立体声

22、转换1.7.1 强度立体声转换在强度立体声模式中,左声道传的是幅值,右声道的scalefactor传的是立体声的位置is_pos。需要转换的频率线有一个低边界,这个低边界是由右声道的zero_part决定的,并且使用右声道的尺度因子来作为is_pos。强度立体声比左声道:右声道:1.7.2 M_S立体声转换在M_S立体声模式中,传送的是规格化的中间/旁边声道的信息左声道 右声道其中Mi是channel0的值,Si是channel1的值1.7.3 处理流程强度立体声模式:MS_STEREO因公式单一,较易理解,故流程图略去。1.7.4 数据帧 PCM信号进行MP3压缩时,以1152个PCM采样值

23、为单位,封装成具有固定长度的MP3数据帧,帧是MP3文件的最小组成单位。在解码时,利用数据帧里的信息就可以恢复出1152个PCM采样值。这1152个采样值被分为2个粒度组,每个粒度组包含576个采样值。一个MP3数据帧分为5个部分:帧头、CRC校验值、边信息、主数据、附加数据。 数据流的同步以及帧头信息的读取MP3数据流的同步以帧为单位,每一帧的帧头都包含同步信息。这个同步信息是连续的12比特的1组成。MP3音频解码过程中的第一步就是使解码器与输入数据流同步。在启动解码器后,可以通过搜索数据流中的12比特长的同步字来完成。在取得同步以后跟着的数据就是帧头信息,包括采样率、填充位、比特率等信息。

24、 主数据的读取在MP3编码过程中使用了比特池技术,所以当前帧的主数据不一定全部都在当前帧中,在解码过程中,必须结合主数据开始指针的值来确定主数据的开始位置。主数据包含的数据有缩放因子、哈夫曼数据及附加数据。这些字段在主数据中有固定的格式。1.7.5 哈弗曼解码流程 哈夫曼解码和反量化在MP3编码过程中,根据心理声学模型的输出,对离散余弦变换的输出样本以粒度为单位进行的量化和分配,再对量化的结果进行哈夫曼编码。量化和编码主要是通过循环迭代完成的,循环模块分为三层来描述,最高层为帧循环,它调用外层迭代循环,而外层迭代循环又调用内层迭代循环。但在解码过程中,哈夫曼解码和反量化过程是分开实现的。每个粒

25、度组的频率线都是用不同的哈夫曼表来进行编码的,因此在解码过程中,需要采用不同的解码方法。反量化频谱过程就是基于所得到的哈夫曼解码数据,根据逆量化全缩放公式和帧边信息,对于不同的窗类型采用不同的公式以恢复576个频率线的真实值。1.7.6 立体声处理 反量化过程中得出的频谱值不是按相同顺序排列的。在编码的MDCT过程中,对于长窗产生的频谱值先按子带然后按频率排列;对于短窗,产生的频谱值按子带、窗、频率的顺序排列。为了提供哈夫曼编码效率,短窗中的数据被重新排列,按照子带、频率、窗的顺序排列。解码时,重排序及时将短窗中的频谱值重新排列。同样,在编码的MDCT过程中,为了得到更好的频域特性,对长窗对应

26、每个子带进行了去混叠处理,为了得到正确的音频信号,在解码时必须对长窗对应的子带进行混叠重建。 逆向离散余弦变换逆向离散余弦变换主要是使用逆向离散余弦变换的公式,对反量化得出的信号进行变换。逆向离散余弦变换的计算十分复杂,为了提高效率,可以对计算做一些优化。 频率反转和子带合成频率反转是对逆向离散余弦变换的输出值中的奇数号子带(0到31号子带中的1,3,5,.,31)中的奇数号样本值(每个子带中的0到17号样本值的1,3,5,.,17号样本值)进行反相处理,用来补偿编码时为提高离散余弦变换效率而进行的频率反转。子带合成滤波器将32个带宽相等的子带中的频域信号反变换成时域信号。子带合成是逆向离散余

27、弦变换后的一个通道中32个子带的样值,经过一系列的计算还原出32个PCM数字音频信号的过程。子带合成过程先将32个子带样值进行逆向离散余弦变换,生成64个中间值,将这64个中间值转入到一个长为1024点的类似先进先出FIFO的缓存,再在这1024个值中抽取一半,构成一个512个值的矢量,再进行加窗运算,最后将加窗结果进行叠加生成32个时域输出。1.8 重排序重排序的目的在于把哈夫曼解码之后的短块的每个尺度因子带3个窗,每个窗sfbwidth(尺度因子带宽度)个采样的顺序整理成为每个子带三个窗,每个窗六个采样xrsbwindowfreq_line的顺序。1.8.1 处理流程重排序处理流程图1.8

28、.2 混淆缩减对于长块,在进入IMDCT之前应当先进行混淆缩减。其算法思想是用蝶形算法进行相邻块相邻频率线的调整。如图:混淆缩减算法图其计算公式如下: 其中ci可由ISO 1172.3 table B.9查得计算流程如下(pascal描述):For sb = 1 to 32 do For i = 0 to 7 do Xar18sb- i -1 = xr18sb i - 1csi xr18sb + icai Xar18sb+i = xr18sb +icsi + xr18sb -i- 1cai End forEnd for1.9 IMDCT覆盖叠加MDCT的目的在于进行时域到频域的转换,减少信号的

29、相关性,使得信号的压缩可以更加高效地完成,而它的反变换IMDCT的目的在于将信号还原为没有变换之前的数值,使频域值向时域值过渡。其公式如下:在进行了IMDCT变换之后,需对频率信号进行加窗、覆盖、叠加。1.9.1 加窗:长块:开始块:结束块:短块的每个窗口分别计算:1.9.2 叠加:将每一块变换出来的值的前半部分与前一块的后半部分相加,并把后半部分保留来和下一块的前半部分相加。如下公式:resulti = zi + si for i = 0 to 17si = zi+18 for i = 0 to 171.9.3 Szu-Wei Lee的快速算法Szu-Wei Lee的IMDCT快速算法是针对

30、非2的n次幂个点的IMDCT快速算法。他的主要步骤如下:1 将N点MDCT化为N/2点DCT-IV2 将N/2点DCT-IV化为N/2点SDCT-II3 将N/2点SDCT-II化为2个相同的N/4点SDCT-II4 计算SDCT-II(9点)在本程序中,因为对短块使用这个快速算法并没有带来较大的速度改善,故只对长块使用此快速算法,相较于直接运算的648次乘和612次加来,它只用43次乘和115次加。1.10 频率反转在IMDCT之后,进入合成多相滤波之前必须进行频率反转补偿以校正多相滤波器组的频率反转。方法是将奇数号子带的奇数个采样值乘以-1.1.11 合成多相滤波合成多相滤波的目的是将频域

31、信号转化为时域信号。其原理流程如下:合成多相滤波算法图上图流程可简述如下:5 将从32个子带抽来的32个sample值通过一个矩阵运算算出64个中间值6 将这64个中间值放入一个长度为1024的FIFO缓冲区(这个缓冲区初始化为0)。7 从这个缓冲区中每连续的128个值中取头尾各32个值,合为64个值。完成后组成512值的向量U8 加窗,即将Ui与窗口系数Di相乘,得到另一512值向量W9 最后将这512值向量W每连续的32个值中顺次取一个值,一次共取得512/32 = 16个值相加。完成后一共取得32个最终的时域信号值。1.1.2 Byeong Gi Lee的dct快速算法Byeong Gi

32、 Lee的DCT快速算法是用于2的n次幂个点的dct快速算法。它用于N点的DCT时仅需(N/2) * log2N次乘法和小于3*(N/2)*log2 N ) 次加法。 其基本思想是,将N个点的DCT转化为两个N/2个点的DCT的和。进一步分解,即重复这个过程,减少乘法数量。由于向量Vi的运算是一个类似于DCT的变换,故使用了此快速算法。32点运算共使用了80次乘法和80次加法119次减法。第二章 存储器设计 摘要:是三星公司生产的大容量闪存芯片,它的单片容量可高达。文中主要介绍了的特性、管脚功能和操作指令,重点说明了闪存的各种工作状态,并给出了它们的工作时序。 关键词:闪存;大容量 Flash

33、闪存( 闪烁存储器)是一种可以进行电擦写,并在掉电后信息不丢失的存储器,同时该存储器还具有不挥发、功耗低、擦写速度快等特点,因而可广泛应用于外部存储领域,如个人计算机和、数码照相机等。但随着闪存应用的逐渐广泛,对闪存芯片容量的要求也越来越高,原来、的单片容量已经不能再满足人们的要求了。而 的出现则恰好弥补了这一不足。是三星公司开发的目前单片容量最大的闪存芯片,它的单片容量高达,同时还提供有额外容量。该闪存芯片是通过与非单元结构来增大容量的。芯片容量的提高并没有削弱的功能,它可以在内完成一页个字节的编程操作,还可以在内完成 字节的擦除操作,同时数据区内的数据能以的速度读出。大容量闪存芯片的口既可

34、以作为地址的输入端,也可以作为数据的输入输出端,同时还可以作为指令的输入端。芯片上的写控制器能自动控制所有编程和擦除操作,包括提供必要的重复脉冲、内部确认和数据空间等。2.的性能参数的主要特点如下:采用电源;芯片内部的存储单元阵列为(),数据寄存器和缓冲存储器均为();具有指令地址数据复用的口;在电源转换过程中,其编程和擦除指令均可暂停;由于采用可靠的移动门技术,使得芯片最大可实现编程擦除循环,该技术可以保证数据保存年而不丢失。表所列是闪存芯片的编程和擦除特性参数。表中的的最长时间取决于内部编程完成和数据存入之间的间隔。表1 K9K2GXXU0M的编程和擦除特性参 数符 号最 短典 型最 长单

35、 位编程时间tPROG300700s缓存编程的虚拟忙时间tCBSY3700s在同一页中的局部编程循环主列NOP4周期空列4周期块擦除时间tBERS23ms2.的管脚说明有个引脚,其引脚排列如图所示。具体功能如下:数据输入输出口,口常用于指令和地址的输入以及数据的输入输出,其中数据在读的过程中输入。当芯片没有被选中或不能输出时,口处于高阻态。 :指令锁存端,用于激活指令到指令寄存器的路径,并在上升沿且为高电平时将指令锁存。:地址锁存端用于激活地址到内部地址寄存器的路径,并在上升沿且为高电平时,地址锁存。:片选端用于控制设备的选择。当设备忙时为高电平而被忽略,此时设备不能回到备用状态。:读使能端,

36、用于控制数据的连续输出,并将数据送到总线。只有在的下降沿时,输出数据才有效,同时,它还可以对内部数据地址进行累加。:写使能控制端,用于控制口的指令写入,同时,通过该端口可以在脉冲的上升沿将指令、地址和数据进行锁存。:写保护端,通过端可在电源变换中进行写保护。当为低电平时,其内部高电平发生器将复位。 :就绪忙输出, 的输出能够显示设备的操作状态。 处于低电平时,表示有编程、擦除或随机读操作正在进行。操作完成后, 会自动返回高电平。由于该端是漏极开路输出,所以即使当芯片没有被选中或输出被禁止时,它也不会处于高阻态。:通电读操作,用于控制通电时的自动读操作,端接到可实现通电自动读操作。 :芯片电源端

37、。 :芯片接地端。 :悬空。2.的坏块闪存同其它固体存储器一样都会产生坏块。坏块是包含一位或多位无效位的块。在中坏块并不影响正常部分的工作,这是因为在中,各块之间是隔离的。坏块均可以通过地址的布置系统找到,而在中地址为的第一块一定应当是正常的。坏块在大多数情况下也是可擦写的,并且一旦被擦掉就不可能恢复。因此,系统必须能根据坏块信息来识别坏块,并通过流程图建立坏块信息表,以防止坏块信息被擦除。在闪存的使用中,可能会产生新的坏块,从而使正常工作出现一些错误。在擦除和编程操作后,如果出现读失败,应当进行块置换。块置换是由容量为一页的缓冲器来执行的,可以通过发现一个可擦的空块和重新对当前数据对象进行编

38、程来复制块中的剩余部分。为了提高存储空间的使用效率,当由单个字节错误而引起的读或确认错误时,应由收回而不要进行任何块置换。2. 的工作状态2. 按页读操作的默认状态为读状态。读操作是以通过个地址周期将地址写到指令寄存器为开始指令,一旦该指令被锁存,就不能在下页中写入读操作了。当地址变化时,随机读操作可以将选定页中的字节数据在内存入数据寄存器中。系统可以通过分析 脚的输出来判断数据转移是否完成。而存入数据寄存器的数据可以很快地被读出,如一页的数据通过连续的脉冲可以在内读出。可以通过写入随机数据输出指令来从一页中随机地输出数据。数据地址可以从将要输出的数据地址中通过随机输出指令自动找到下一个地址。

39、随机数据输出操作可以多次使用。图给出了读操作的时序图。2. 页编程的编程是按页进行的,但它在单页编程周期中支持多个部分页编程,而部分页的连续字节数为。写入页编程确认指令()即可开始编程操作,但写入指令()前还必须输入连续数据。连续装载数据在写入连续数据输入指令()后,将开始个周期的地址输入和数据装载,而字却不同于编程的数据,它不需要装载。芯片支持在页中随机输入数据,并可根据随机数据输入指令()自动变换地址。随机数据输入也可以多次使用。图为其编程操作时序图。2. 缓存编程缓存编程是页编程的一种,可以由字节的数据寄存器执行,并只在一个块中有效。因为有一页缓存,所以当数据寄存器被编入记忆单元中时它便

40、可以执行连续数据输入。缓存编程只有在未完成的编程周期结束且数据寄存器从缓存中传数后才能开始。通过 脚可以判断内部编程是否完成。如果系统只用 来监控程序的进程,那么,最后一页目标程序的次序则必须由当前页编程指令来安排。如果由缓存编程指令来安排,状态位必须在最后一个程序执行完和下一个操作开始前确定。图为缓存编程操作时序图。2. 存储单元复录该功能可以快速有效地改写一页中的数据而不需要访问外部存储器。因为消耗在连续访问和重新装载上的时间被缩短,因而系统的执行能力会提高。尤其当块的一部分被升级而剩下的部分需要复制到新的块中去时,它的优势就明显显示出来了。该操作是一个连续执行的读指令,但不用连续地到目的

41、地址访问和复制程序。一个原始页地址指令为“的读操作,就可以把整个字节的数据转移到内部数据缓冲器中。当芯片返回就绪状态时,带有目的地址循环的页复制数据输入指令就会写入。而该操作中的错误程序会由“通过失败”状态给出。但是,如果该操作的运行时间过长,将会由于数据丢失而引起位操作错误,从而导致外部错误“检查纠正”设备检查失效。由于这个原因,该操作应使用两位错误纠正。图给出了存储单元复录操作的时序图。2. 块擦除的擦除操作是以块为基础进行的。块地址装载将从一个块擦除指令开始,并在两个循环内完成。实际上,当地址线悬空时,只有地址线可用。装入擦除确认指令和块地址即可开始擦除。该操作必须按此顺序进行,以免存储

42、器中的内容受到外部噪声的影响而出现擦除错误。图为块擦除操作的时序图。2. 读状态内的状态寄存器可以确认编程和擦除操作是否成功完成。在写入指令()到指令寄存器后,读循环会把状态寄存器的内容在或的下降沿输出到。而在新的指令到达前,指令寄存器将保持读状态,因此如果状态寄存器在一个随机读循环中处于读状态,那么在读循环开始前应给出一个读指令。2.结束语由于闪存具有非易失性、可电擦写、掉电后数据不丢失等特点,所以得到越来越广泛的应用。同时随着闪存使用的广泛,对它容量的要求也越来越高。而的出现则填补了大容量闪存芯片的空白。除具有容量大的优点外,也可以在内完成一页的编程操作,并可在内完成 的擦除操作,因此是目

43、前外部存储的领域的一种非常好的存储芯片。第三章 电源控制VCH:充电电压输入端;SNS :电流捡测电阻连接端;VIN:电池电压检测输入;VDD:芯片电源端;VSS:地端;DQ:数据输入/输出端;3.1 主要特点DS2770是Dallas Semiconductor公司生产的一款电池电量计和锂/镍化学电池充电器集成器件,它可以通过1-Wire接口与主系统进行通信,以读取电压、温度等测量信息,同时读写EEPROM存储器,因而可广泛应用于便携式设备中.DS2770电池管理IC可完成多种功能,它可利用简单的限流型电源给电池充电,也可作为一个高精度电量计.在通过1-Wire通信接口与主系统连接时,DS2

44、770可以提供充电、剩余电量估计、安全管理、非易失性参数存储等功能,DS2770的主要特点如下:可由用户选择锂脉冲充电或镍电池充电(dT/dt充电终止方式)带有实时失调纠正的高精度电流测量功能,可选择内部集成的25m检测电阻带有32字节可锁定的EEPROM和16字节SRAM 具有Dallas 1-Wire 数字通信接口和唯一的64位ID.3.2 引脚功能DS2770为16脚TSSOP封装,图1为其引脚排列图,各引脚的功能如下:UV :电池电压检测端,当检测到电池电压为较低值时,该端输出低电平;CC:充电控制输出端低电平有效;LS1与LS2:电流检测输入端.3.3 DS2770的结构原理DS2770为锂离子电池充电器时采用脉冲充电方式,该方法在充电源和充电终止方式上与线性充电有所不同.脉冲充电器需要一个限制电流等于期望充电率的电源;在脉冲充电占空比降低到一定程度(如低于5%至10%)时,脉冲充电终止.实际上,DS2770还具有辅助的充电终止控制方式,即在电池温度超过+50或用户设定的最大充电时间用尽时可终止充电.DS2770作为电量计时,其最低分辨率为62.5A,DS2770内部的EEPROM可使

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号