连续提取和包装比特数据流的方法及相关装置的制作方法

文档序号:6480203阅读:332来源:国知局
专利名称:连续提取和包装比特数据流的方法及相关装置的制作方法
技术领域
本发明涉及一种处理比特数据流的方法及相关装置,尤其涉及一种有效提取和包
装比特数据流的方法及相关装置。
背景技术
比特数据流(bitstream)可被应用于许多不同种类的领域,例如多媒体文件串流 (multimedia file streaming)或网络串流(network streaming)。比特数据流的传统操 作包含提取(extraction)和包装(packing)。举例来说,比特数据流提取可用来播放一串 流声音文件,而比特数据流包装可用来编码串流声音文件。 如果要从一存储器内的一比特数据流中连续地提取比特,需要依据提取条件来 执行一系列的操作/指令。欲提取的比特存储于一比特数据流存储寄存器(bitstream storage register, BSR),提取后的比特则存储于一 目标寄存器(destination register, DR)。 一旦比特数据流存储寄存器BSR中所有比特已被提取,存储器将会将新的比特(例 如32个位)写入比特数据流存储寄存器BSR内腾空的空间。位置寄存器(position register)内存的起始位置(starting position, SP)标示出比特提取的开始点,而长度寄 存器(lengthregister)内存的提取长度(length of extraction, LE)则标示出从BSR所 提取出的比特数目。举例来说,起始位置SP的值可介于1 32,而提取长度LE的值可介于 1 32。依据起始位置SP和提取长度LE之间的大小关系,会有出现三种不同情形"SP > LE"、"SP = LE"禾卩"SP < LE"。 图13说明了先前技术在第一种情形"SP〉LE"时提取比特的方式。当起始位置SP 大于提取长度LE时,此时比特数据流存储寄存器BSR内包含所有欲提取的比特,且在提取 后比特数据流存储寄存器BSR内仍存有未提取的比特。在此种情形下,比特数据流存储寄 存器BSR会被向左平移(32-SP)个比特,并将过程中结果暂时存入目标寄存器DR。接着,目 标寄存器DR内存的过程中结果会被向右平移(32-LE)个比特,并将最终提取结果写入目标 寄存器DR。最后,位置寄存器的值会被更新为起始位置SP减去提取长度LE的值(SP-LE)。 图13所示的范例指令程序1300说明了在"SP > LE"时的运作情形。 图14说明了先前技术在第二种情形"SP = LE"时提取比特的方式。当起始位置 SP等于提取长度LE时,此时比特数据流存储寄存器BSR内包含所有欲提取的比特,且在提 取后比特数据流存储寄存器BSR内并无其它未提取的比特数据。在此种情形下,比特数据 流存储寄存器BSR会被向左平移(32-SP)个比特,并将过程中结果暂时存入目标寄存器DR。 接着,目标寄存器DR内存的过程中结果会被向右平移(32-SP)个比特,并将最终结果写入 目标寄存器DR。同时,位置寄存器的值会被更新至32。由于比特数据流存储寄存器BSR内 的比特已全部被提取,存储器将会将新的32个位写入比特数据流存储寄存器BSR。图14所 示的范例指令程序1400在"SP = LE"时的运作情形。 图15说明了先前技术在第三种情形"SP < LE"时提取比特的方式。当起始位置 SP小于提取长度LE时,此时比特数据流存储寄存器BSR内并未包含所有欲提取的比特。此种边界条件称为「数据欠位」(underflow)。在此种情形下,比特数据流存储寄存器BSR会 被向左平移(32-SP)个比特,并将过程中结果暂时存入目标寄存器DR。接着,目标寄存器 DR内存的过程中结果会被平移(32-LE)个比特,并将新的过程中结果暂时存入目标寄存器 DR。同时,位置寄存器的值会被更新至32,而位置寄存器的值会被更新为提取长度LE减去 起始位置SP的值(LE-SP)。由于寄存器BSR内的比特已全部被提取,存储器将会将新的32 个位写入比特数据流存储寄存器BSR内。接着,剩余的比特会被提取至一临时寄存器TR。 在对目标寄存器DR和临时寄存器TR内存的数据执行逻辑或(logic OR)运算后,最终提取 结果会被写入目标寄存器DR。图15所示的范例指示程序1500说明了在"SP〈LE"时的运 作情形。 如果要将比特连续地包装至一存储器内的一 比特数据流中,需要依据包装条件来 执行一系列的操作/指令。 一来源寄存器(source register, SR)的包装数据纪录于一比 特数据流存储寄存器BSR,当比特数据流存储寄存器BSR的空间已满,比特数据流存储寄存 器BSR其内存数据会被存入存储器内。位置寄存器(position register)内存有一起始位 置SP,而长度寄存器内存有一包装长度(length of packing,LE)。举例来说,起始位置SP 的值可介于1 32,而包装长度LE的值可介于1 32。依据起始位置SP和包装长度LE 之间的大小关系,会有出现三种不同情形"SP > LE"、"SP = LE"和"SP < LE"。
图16说明了先前技术在第一种情形"SP > LE"时包装比特数据流的方式。当起 始位置SP大于包装长度LE时,此时比特数据流存储寄存器BSR内可包含所有欲包装的比 特,且在包装后比特数据流存储寄存器BSR内仍可包装其它更多比特。在此种情形下,来源 寄存器SR会被向左平移(SP-LE)个比特,并将过程中结果暂时存入来源寄存器SR。接着, 在对比特数据流存储寄存器BSR和来源寄存器SR内存的数据执行逻辑或运算后,最终包装 结果会被写入比特数据流存储寄存器BSR。另一方面,位置寄存器的值会被更新为起始位置 SP减去包装长度LE的值(SP-LE)。图16所示的范例指令程序1600说明了在"SP > LE" 时的运作情形。 图17说明了先前技术在第二种情形"SP = LE"时包装比特数据流的方式。当起 始位置SP等于包装长度LE时,此时比特数据流存储寄存器BSR内可包含所有欲包装的比 特,而且在包装后比特数据流存储寄存器BSR内并无多出的位置可以再包装。在此种情形 下,首先对比特数据流存储寄存器BSR和来源寄存器SR内存的数据执行逻辑或运算后,再 将最终包装结果写入比特数据流存储寄存器BSR。另一方面,位置寄存器的值会被更新至 32 。在将比特数据流存储寄存器BSR的数据存入存储器后,比特数据流存储寄存器BSR的值 会被更新为0以为后续包装作准备。图17所示的范例指示程序1700说明了在"SP = LE" 时的运作情形。 图18说明了先前技术在第三种情形"SP < LE"时包装比特数据流的方式。当起 始位置SP小于包装长度LE时,此时比特数据流存储寄存器BSR内并未有足够的空间可以 包含所有欲包装的比特,因此包装过程需要分成两阶段来进行,此种边界条件称为「数据溢 位」(overflow)。在此种情形下,来源寄存器SR会被向右平移(LE-SP)个比特,并将过程 中结果暂时存入一临时寄存器(temporary register,TR)。接着对比特数据流存储寄存器 BSR和临时寄存器TR内存的数据执行逻辑或运算后,再将最终结果写入比特数据流存储寄 存器BSR。在比特数据流存储寄存器BSR的数据被存入存储器后,来源寄存器SR会被向右平移(32-LE+SP)个比特,再将最终结果写入比特数据流存储寄存器BSR。另一方面,位置 寄存器的值会被更新至(32-LE+SP)。图18所示的范例指令程序1800说明了在"SP < LE" 时的运作情形。 如图8所示,一MIPS DSP特定应用延伸技术提供从一64比特的寄存器内提取1 32个位的指令,但却未提供当提取数据的比特数超过64比特时的处理方式。另一方面,美 国专利号7,334, 116 B2(在后述内容简称为116前案)使用一64比特的缓冲器和个别左向 /右向平移的操作,以从一存储器内的一比特数据流中提取一特定数目的比特。然而,iie 前案无法有效地处理「数据欠位」和「数据溢位」等边界条件,而且缓冲器的比特长度需要 大于存储器的位置边界长度。先前技术无法有效地处理比特数据流提取/包装的「数据欠 位」和「数据溢位」等边界条件,因此会降低系统效率。

发明内容
本发明提供一种从一比特数据流寄存器中提取比特的方法,其包含当一预定起始 位置大于一预定提取长度时,从该比特数据流寄存器中的该预定起始位置开始提取一预定 数目的比特,其中该预定数目和该预定提取长度具相同值;将这些比特存入一目标寄存器 内的一最低位部分;当未数据欠位时,将该目标寄存器内未存储比特的一高位部分设为一 预定值;清除一空标志及一数据欠位标志的设定;以及使用该预定起始位置减去该预定数 目的值来更新该预定起始位置。 本发明还提供一种从一比特数据流寄存器中提取比特的方法,其包含当一预定起 始位置等于一预定提取长度时,从该比特数据流寄存器中的该预定起始位置开始提取一预 定数目的比特,其中该预定数目和该预定提取长度具相同值;将这些比特存入一目标寄存 器内的一最低位部分;当未数据欠位时,将该目标寄存器内未存储比特的一高位部分设为 一预定值;设定一空标志以标示该比特数据流寄存器内所有比特数据已被提取,并清除一 数据欠位标志;以及将该预定起始位置更新为该比特数据流寄存器内的一预定比特以为下 次提取作准备。 本发明还提供一种从一比特数据流寄存器中提取比特的方法,其包含当一预定起 始位置小于一预定提取长度时,从该比特数据流寄存器中的该预定起始位置开始提取一 预定数目的比特,其中该预定数目和该预定起始位置具相同值;在从该比特数据流寄存器 中所提取的这些比特后加入一预定数目的多个缓冲比特以增加至该预定提取长度的比特 数;从和该预定提取长度相同的一位置开始,将这些比特存入一目标寄存器内的一最低位 部分;当一数据欠位标志未被设定时,将该目标寄存器内未存储比特的一高位部分设为一 预定值;将该预定起始位置更新为该比特数据流寄存器内的一预定比特以为下次提取作准 备;使用该预定提取长度减去该预定起始位置的值来更新该预定提取长度;以及设定该数 据欠位标志和一空标志。 本发明还提供一种从一比特数据流寄存器中提取比特的方法,其包含当一数据欠 位标志已被设定时,从该比特数据流寄存器中的一最高有效位开始提取一预定数目的比 特,其中该预定数目的值等于前次提取该先前预定提取长度减去一先前起始位置的值;将 这些比特存入一目标寄存器内的一最低位部分;以及清除该数据欠位标志及一空标志的设 定。
10
本发明还提供一种从一比特数据流寄存器中提取比特的方法,其包含当一预定起 始位置大于一预定提取长度时,从该比特数据流寄存器中的该预定起始位置开始提取一预 定数目的比特,其中该预定数目和该预定提取长度具相同值;将这些比特存入一目标寄存 器内的一最低位部分;当未数据欠位时,将该目标寄存器内未存储比特的一高位部分设为 一预定值;清除一空标志及一数据欠位标志的设定;使用该预定起始位置减去该预定数目 的值来更新该预定起始位置;当该预定起始位置等于该预定提取长度时,从该比特数据流 寄存器中的该预定起始位置开始提取该预定数目的比特,其中该预定数目和该预定提取长 度具相同值;将这些比特存入该目标寄存器内的该最低位部分;当未数据欠位时,将该目 标寄存器内未存储比特的该高位部分设为该预定值;设定一空标志以标示该比特数据流寄 存器内所有比特数据已被提取,并清除一数据欠位标志;将该预定起始位置更新为该比特 数据流寄存器内的一预定比特以为下次提取作准备;当该预定起始位置小于该预定提取 长度时,从该比特数据流寄存器中的该预定起始位置开始提取一预定数目的比特,其中该 预定数目和该预定起始位置具相同值;在从该比特数据流寄存器中所提取的这些比特后加 入一预定数目的多个缓冲比特以增加至该预定提取长度的比特数;从和该预定提取长度相 同的一位置开始,将这些比特存入该目标寄存器内的该最低位部分;当一数据欠位标志未 被设定时,将该目标寄存器内未存储比特的该高位部分设为该预定值;将该预定起始位置 更新为该比特数据流寄存器内的该预定比特以为下次提取作准备;使用该预定提取长度减 去该预定起始位置的值来更新该预定提取长度;设定一空标志以及该数据欠位标志;当该 数据欠位标志已被设定时,从该比特数据流寄存器中的一最高有效位开始提取该预定数目 的比特,其中该预定数目的值等于前次提取该先前预定提取减去一先前起始位置的值;将 这些比特存入该目标寄存器内的该最低位部分;以及清除该数据欠位标志及一空标志的设 定。 本发明还提供一种将比特包装至一比特数据流寄存器内的方法,其包含当一预定 起始位置大于一预定包装长度时,从一来源寄存器的一最低位部分开始包装一预定数目的 比特,其中该预定数目和该预定包装长度具相同值;从该预定起始位置开始,将这些比特存 入该比特数据流寄存器内;清除一满标志和一数据溢位标志;以及使用该预定起始位置减 去该预定包装长度的值来更新该预定起始位置。 本发明还提供一种将比特包装至一比特数据流寄存器内的方法,其包含当一预定 起始位置等于一预定包装长度时,从一来源寄存器的一最低位部分开始包装一预定数目的 比特,其中该预定数目和该预定包装长度具相同值;从该预定起始位置开始,将这些比特存 入该比特数据流寄存器内;设定一满标志以及清除一数据溢位标志;以及将该预定起始位 置更新为该比特数据流寄存器的一最高有效位。 本发明还提供一种将比特包装至一比特数据流寄存器内的方法,其包含当一预定 起始位置小于一预定包装长度时,从一来源寄存器的一最低位部分开始包装一预定数目的 比特,其中该预定数目和该预定起始位置具相同值;从该预定起始位置开始,将这些比特存 入该比特数据流寄存器内;设定一满标志和一数据溢位标志;将该预定起始位置更新为该 比特数据流寄存器的一最高有效位;以及使用该预定包装长度减去该预定起始位置的值来 更新该预定包装长度。 本发明还提供一种将比特包装至一比特数据流寄存器内的方法,其包含当一预定起始位置大于一预定包装长度时,从一来源寄存器的一最低位部分开始包装一预定数目的 比特,其中该预定数目和该预定包装长度具相同值;从该预定起始位置开始,将这些比特存 入该比特数据流寄存器内;清除一满标志和一数据溢位标志;使用该预定起始位置减去该 预定包装长度的值来更新该预定起始位置;当该预定起始位置等于该预定包装长度时,从 该来源寄存器的一最低位部分开始包装该预定数目的比特,其中该预定数目和该预定包装 长度具相同值;从该预定起始位置开始,将这些比特存入该比特数据流寄存器内;设定该 满标志以及清除该数据溢位标志;将该预定起始位置更新为该比特数据流寄存器的一最高 有效位;当该预定起始位置小于该预定包装长度时,从该来源寄存器的该最低位部分开始 包装该预定数目的比特,其中该预定数目和该预定起始位置具相同值;从该预定起始位置 开始,将这些比特存入该比特数据流寄存器内;设定该满标志和该数据溢位标志;将该预 定起始位置更新为该比特数据流寄存器的该最高有效位;以及使用该预定包装长度减去该 预定起始位置的值来更新该预定包装长度。 本发明还提供一种比特数据流提取装置,其包含一比特数据流寄存器,用来存储 提取数据;一移位器,会依据一差异结果来对从该比特数据流寄存器提取出的数据进行移 位处理;一目标寄存器,用来存储被该移位器移位后的数据;一起始位置寄存器,用来存储 一起始位置;一提取长度寄存器,用来存储一提取长度;一算术逻辑单元,用来比较该起始 位置和该提取长度以产生一比较结果,以及用来依据该起始位置和该提取长度来产生该差 异结果;以及一控制逻辑,用来依据该比较结果来更新该起始位置、更新该提取长度,以及 控制该移位器的左向/右向移位方向。 本发明还提供一种比特数据流包装装置,其包含一来源寄存器,用来存储包装数 据;一移位器,会依据一差异结果来对从该来源寄存器包装出的数据进行移位处理;一比 特数据流寄存器,用来存储被该移位器移位后的数据;一起始位置寄存器,用来存储一起 始位置;一包装长度寄存器,用来存储一包装长度;一算术逻辑单元,用来比较该起始位置 和该包装长度以产生一比较结果,以及用来依据该起始位置和该包装长度来产生该差异结 果;以及一控制逻辑,用来依据该比较结果来更新该包装长度、更新该起始位置,以及控制 该移位器的左向/右向移位方向。


图1 4为本发明第一实施例中从一比特数据流寄存器中提取比特方法的示意 图。 图5 7为本发明第二实施例中将比特从一来源寄存器包装至一比特数据流寄存 器方法的示意图。 图8为先前技术中一提取比特方法的示意图。 图9为本发明第一实施例中从一比特数据流寄存器中提取比特方法的流程图。
图10为本发明第二实施例中将比特从一来源寄存器包装至一比特数据流寄存器 方法的流程图。 图11为本发明实施例中一比特数据流提取装置的示意图。
图12为本发明实施例中一比特数据流包装装置的示意图。
图13 15为先前技术中一提取比特方法的示意图。
图16 18为先前技术中-
主要元件符号说明
11 23触发器(寄存器) 41 控制逻辑 45 遮罩产生器 1300 1800 Ra、Rb、Rt
包装比特数据流方法的示意图。
31 39 多工器 43 ALU/比较器
49 、57 移位器
范例指令程序 寄存器
具体实施例方式
图1 4和图9说明了本发明第一实施例中从一比特数据流寄存器(BSR)Ra中提 取比特的方法。如图l 4所示,比特数据流寄存器Ra可包含32位,如0 31。比特数据 流寄存器Ra的位可被提取且存储至一目标寄存器(DR)Rt。 一结构寄存器(configuration register) Rb可将一预定提取长度(LE)存入Rb (4, 0)、将一预定起始位置(SP)存入Rb(9, 5)、将一空标志(empty flag)存入Rb(13),以及将一数据欠位标志(underflow flag)存入 Rb(31)。当然,预定提取长度LE、预定起始位置SP、空标志和数据欠位标志可存入结构寄存 器Rb内其它位置,甚至存入其它寄存器。图9的流程图说明了本发明第一实施例中从一比 特数据流寄存器Ra中提取比特的方法。 在图9中,如果起始位置SP大于提取长度LE,会从比特数据流寄存器Ra中提取 LE个比特至目标寄存器Rt。 SP〉LE时提取比特的过程如图l所示,从比特数据流寄存器 Ra中提取出的LE个比特(例如BSR(SP-1,SP-LE))会被存入目标寄存器Rt的最低位部分 (例如DR (LE-1 , 0))。由于起始位置SP大于提取长度LE,提取后比特数据流寄存器Ra内仍 存有一些比特,因此不会造成「数据欠位」的情形。此时,目标寄存器Rt的较高位部分(例 如DR(31, LE))会依数据欠位标志的初始设定写入一预定值(例如0)或维持不变,再将起 始位置SP的值更新为(SP-LE)。如果空标志已有初始设定,此时会清除空标志的值。如果 数据欠位标志已有初始设定,会将提取长度LE的值回复至前一提取长度LE的值,然后再清 除数据欠位标志的值。 再次参考图9,如果起始位置SP等于提取长度LE,此时候会产生空乏情形,因此会 设定空标志,并将目标寄存器Rt的DR(MSB,LE)设为0。接着,从比特数据流寄存器Ra中提 取LE个比特至目标寄存器Rt。 SP = LE时提取比特的过程如图2所示,从比特数据流寄存 器Ra中提取出的LE个比特(例如BSR(LE-l,O))会被存入目标寄存器Rt的最低部分(例 如DR(LE-l,O))。由于起始位置SP等于提取长度LE,因此不会造成「数据欠位」的情形,此 时目标寄存器Rt的较高位部分(例如DR(31,LE))会存入一预定值(例如O),再清除数据 欠位标志的值。起始位置SP的值会被更新为比特数据流寄存器Ra的最高有效位(例如 32),以为后续比特提取来作准备。 如果起始位置SP小于提取长度LE,此时亦会因为空乏情形而设定空标志,并将目 标寄存器Rt的DR(MSB,LE)设为0。接着,从比特数据流寄存器Ra中提取SP个比特(例如 BSR (SP-1 , 0))至目标寄存器Rt中从位置LE-1开始的最低位部分(例如DR (LE-1 , LE-SP))。 SP < LE时提取比特的过程如图3所示,此时会加入对应于起始位置SP和提取长度LE差值 (SP-LE)的缓冲比特,以增加至提取长度LE的比特数目。由于起始位置SP小于提取长度
13LE,此时会造成「数据欠位」的情形,因此会设定Rb(31)内的数据欠位标志(例如Rb(31) =l),并将目标寄存器Rt的较高部分设为预定值(例如DR(32,LE) =0)。起始位置SP的 值会被更新为比特数据流寄存器Ra的最高有效位(例如32)以为后续比特提取来作准备, 而提取长度LE的值会更新为(LE-SP)。在更新提取长度LE之前,原始提取长度LE的值会 存入一先前提取长度寄存器prev_LE。 请参考图4,图4说明了在执行图3的比特提取运作后从比特数据流寄存器Ra中 提取比特的方法,亦即在设定Rb(31)的数据欠位标志后从比特数据流寄存器Ra中提取比 特的方法。此时,欲提取的比特数目等于前一次提取后的剩余比特数目,亦即等于前一次比 特提取的提取长度LE减去前一次比特提取的起始位置SP的值。换而言之,在前一次提取 中进行一完整提取长度的比特提取后,未完成的部分即为此次欲提取的比特。这些欲提取 的比特会被存入目标寄存器Rt的最低位部分(例如DR (LE-SP-1 , 0)),也就是在前一次提取 中增加缓冲比特的位置。由于Rb(31)中的数据欠位标志已被设定,目标寄存器Rt的高位 部分维持不变,因此能保留从前一次提取中所得到的SP个比特。因此,在起始位置SP小于 提取长度LE时,通过数据欠位标志和图2和图3中所述的实施例,本发明可有效率地提取 全部LE个比特。 图5 7和图10说明了本发明第二实施例中将比特从一来源寄存器(SR)Ra包装 至一比特数据流寄存器Rt的方法。如图5 7所示,比特数据流寄存器Rt可包含32个位, 如0 31。来源寄存器Ra的比特可被包装且存储至比特数据流寄存器Rt。 一结构寄存器 Rb可将一预定包装长度(LE)存入Rb(4,0)、将一预定起始位置(SP)存入Rb (9, 5)、将一满 标志(full flag)存入Rb(13),以及将一数据溢位标志(overflow flag)存入Rb(31)。当 然,预定包装长度LE、预定起始位置SP、满标志和数据溢位标志可存入结构寄存器Rb内其 它位置,甚至存入其它寄存器。图10的流程图说明了本发明第二实施例中将比特从来源寄 存器Ra包装至比特数据流寄存器Rt的方法。 在图10中,如果起始位置SP大于包装长度LE,此时会从来源寄存器Ra中包装 LE个比特至比特数据流寄存器Rt。 SP > LE时包装比特数据流的过程如图5所示,从来 源寄存器Ra中包装的LE个比特(例如SR(LE-l,O))会被存入比特数据流寄存器Rt中从 位置(SP-1)开始的最低位部分(例如BSR(SP-1, SP-LE))。起始位置SP的值会被更新为 (SP-LE),并清除满标志的值。如果数据溢位标志已有初始设定(例如Rb(31) = l),此时会 清除数据溢位标志的值,并将包装长度LE的值回复至前一包装长度的值prev_LE。
再次参考图10,如果起始位置SP等于包装长度LE,此时候会设定满标志的值,并 从来源寄存器Ra中包装LE个比特至比特数据流寄存器Rt。 SP = LE时包装比特数据流 的过程如图6所示,来源寄存器Ra内LE个最低位(例如SR(LE-l,O))会被包装且从位置 (LE-1)开始存入比特数据流寄存器Rt中(例如BSR(LE-l,O))。由于起始位置SP等于包装 长度LE,所以不会造成「数据溢位」的情形,因此会清除数据溢位标志的值且不加以设定。 起始位置SP的值会被更新为比特数据流寄存器Rt的最高有效位(例如32),以为后续比特 包装来作准备。 如果起始位置SP小于包装长度LE,此时会设定满标志和数据溢位标志的值,并从 来源寄存器Ra中包装SP个比特至比特数据流寄存器Rt。 SP < LE时包装比特数据流的过 程如图7所示,来源寄存器Ra内从LE位置开始往下SP个最低位(例如SR(LE-1,LE-SP))会被包装且从位置(SP-1)开始存入比特数据流寄存器Rt中(例如BSR(SP-l,O))。存储包 装长度LE的寄存器首先存入一先前包装长度寄存器previous—LE,然后再更新为(LE-SP), 而起始位置SP的值会被更新为比特数据流寄存器Rt的最高有效位(例如32)。先前包装 长度寄存器preVi0US_LE可纪录更新前的原始包装长度LE,在数据溢位时进行第二次包装 程序后,可用来回复原始包装长度LE的值。 值得注意的是,本发明可分别使用图1 4所示的方法来提取比特,或是将图1 4所示的方法部分/全部整合至比特提取软件或硬件。同理,本发明也可分别使用图5 7 所示的方法来包装比特数据流,或是将图5 7所示的方法部分/全部整合至比特包装软 件或硬件。 请参考图11和图12,图11为本发明实施例中一比特数据流提取(BSE)装置的示 意图,可用来实现图9所示的比特数据流提取方法;而图12为本发明实施例中一比特数据 流包装(BSP)装置的示意图,可用来实现图IO所示的比特数据流包装方法。首先说明图 ll所示的BSE装置,BSE装置包含多个触发器(flip-flop, FF,也可称寄存器)11、13、15、 17U9、21和23,一用来产生选择控制信号的控制逻辑41,多个能依据选择控制信号来选择 输入信号的多工器(multiplexer) 31、33、35、37和39, 一算术逻辑单元(arithmetic logic unit, ALU) /比较器43,以及一遮罩产生器(mask generator)45。多个触发器11 23包 含一空标志(e—f)ll、一数据欠位标志(u—f)13、用来存储起始位置的一起始位置寄存器 (SP) 15、用来存储先前提取长度的一先前提取长度寄存器(Prev_LE) 17、一用来存储提取长 度的提取长度寄存器(LE)19、用来存储提取数据的一比特数据流寄存器(BSR)21,以及一 目标寄存器(DR)23。在多个多工器31 39中,空标志多工器31耦接至空标志11、数据欠 位标志多工器33耦接至数据欠位标志13、起始位置多工器35耦接至起始位置寄存器15和 ALU/比较器43、先前提取长度多工器37耦接至先前提取长度寄存器17和提取长度寄存器 19,而提取长度标志多工器39耦接至提取长度触发器19和ALU/比较器43。 BSE装置还包 含一左向/右向移位器49,可依据ALU/比较器43所产生的差异结果|A-B|的值来对从比 特数据流寄存器21中提取出的数据进行移位处理。在图11中,信号值51、53和55仅用来 说明本实施例,并不限定本发明的范围。 在运作时,ALU/比较器43接收起始位置触发器15和提取长度触发器19,并将比 较结果(例如"SP > LE"、"SP = LE"或"SP < LE")传送至控制逻辑41。依据起始位置和 提取长度,算术逻辑单元43也可产生差异结果|A-B|。依据比较结果,控制逻辑41可输出 控制信号至多工器31和33以分别设定或清除空标志和数据欠位标志的值,同时也可输出 控制信号至多工器35、37和39以分别更新起始位置触发器15、先前提取长度触发器17和 提取长度触发器19的值。在依据控制逻辑41传送的控制信号来决定移位方向,以及依据 ALU/比较器43所产生的|A-B|来决定移位量后,左向/右向移位器49可对从比特数据流 寄存器21中提取出的数据进行移位处理,再将移位后的数据传送至目标寄存器23。遮罩产 生器45可产生一遮罩信号,用来将目标寄存器23的高位部分设为一预定值,例如将DR (32, LE)设为0。遮罩产生器45、左向/右向移位器49和目标寄存器23可耦接至一第一逻辑单 元63,如此能对遮罩信号和移位后的数据执行逻辑与(logic AND)运算。
综上所述,图11所示的BSE装置的控制逻辑41可实现
(l)更新提取长度;[OO52] (2)更新起始位置; (3)控制左向/右向移位器49的移位方向; (4)控制起始位置多工器以从最高有效位和差异结果中选取起始位置; (5)控制数据欠位标志多工器以设定或清除数据欠位标志的值; (6)控制先前提取长度多工器以选择维持先前提取长度或更新先前提取长度的
值; (7)控制提取长度多工器以选择维持提取长度,或将提取长度的值更新为先前提 取长度寄存器的值或差异结果;以及 (8)控制空标志多工器以依据比较结果设定或清除空标志的值。
图12所示的BSE装置,BSP装置包含多个触发器(也可称为寄存器)11、13、15、 17、19、21和23,一用来产生选择控制信号的控制逻辑41,多个能依据选择控制信号来选择 输入信号的多工器31、33、35、37和39, 一 ALU/比较器43、一遮罩产生器45、一第一左向/ 右向移位器49,以及一第二左向/右向移位器57。在多个触发器11 23中,满标志(f_ f) 11可存储满标志的值、数据溢位标志(o_f) 13可存储数据溢位标志的值、起始位置寄存 器(SP)可存储起始位置的值、先前包装长度寄存器(Prev—LE)17可存储先前包装长度的 值、包装长度寄存器(LE)19可来存储包装长度的值、来源寄存器(SR)21可存储包装数据, 以及一目标比特数据流寄存器(BSR)23。在多个多工器31 39中,满标志多工器31耦接 至控制逻辑41和满标志ll,数据溢位标志多工器33耦接至控制逻辑41和数据溢位标志 13、起始位置多工器35耦接至起始位置寄存器15、 ALU/比较器43和控制逻辑41,先前包 装长度多工器37耦接至控制逻辑41、先前包装长度触发器17和包装长度触发器19,而包 装长度多工器39耦接至ALU/比较器43、提取长度触发器19、先前包装长度触发器17和控 制逻辑41。在图12中,信号值51、53和55仅用来说明本实施例,并不限定本发明的范围。
在运作时,ALU/比较器43接收起始位置触发器15和包装长度触发器19,并将比 较结果(例如"SP > LE"、"SP = LE"或"SP < LE")传送至控制逻辑41。依据起始位置和 提取长度,算术逻辑单元43也可产生差异结果|A-B|。依据比较结果,控制逻辑41可输出 控制信号至多工器31和33以分别设定或清除满标志和数据溢位标志的值,同时也可输出 控制信号至多工器35、37和39以分别更新起始位置触发器15、先前包装长度触发器17和 包装长度触发器19的值。在依据控制逻辑41传送的控制信号来决定移位方向,以及依据 ALU/比较器43所产生的|A-B|来决定移位量后,左向/右向移位器49和57可对从来源寄 存器21中提取出的数据和遮罩产生器45所产生的遮罩信号53进行移位处理,再将移位后 的数据传送至目标比特数据流寄存器23,以及将移位后的遮罩信号53传送至一逻辑与门 单元61 。遮罩产生器45可产生遮罩信号,在比特包装前后,遮罩信号可保持目标比特数据 流寄存器23的高位部分的原始值。 综上所述,图12所示的BSP装置的控制逻辑41可实现
(1)更新包装长度;
(2)更新起始位置; (3)控制左向/右向移位器49和57的移位方向; (4)控制起始位置多工器以从最高有效位和差异结果中选取起始位置;
(5)控制数据溢位标志多工器以设定或清除数据溢位标志的值;
16
(6)控制先前包装长度多工器以选择维持先前包装长度或更新先前包装长度的 值; (7)控制包装长度多工器以选择维持包装长度,或将包装长度的值更新为先前包 装长度寄存器的值或差异结果;以及 (8)控制满标志多工器以依据比较结果设定或清除满标志的值。 在前述提取和包装比特数据流方法的实施例以及BSE/BSP装置中,当连续提取或
包装比特数据流时,本发明使用空标志、满标志、数据欠位标志和数据溢位标志来处理「数
据欠位」和「数据溢位」等边界条件。在「数据欠位」进行提取时,本发明会自动地调整比特
数据流来源寄存器的起始位置和配置寄存器内的提取长度,进而连续执行两次提取运作,
而在第二次提取时并不改变目标寄存器的高位,因此能更有效率地处理在「数据欠位」时的
提取运作。在「数据溢位」进行包装时,本发明会自动地调整比特数据流目标寄存器的起始
位置和配置寄存器内的包装长度,进而连续执行两次包装运作,因此能更有效率地处理在
「数据溢位」时的包装运作。综上所述,本发明使用起始位置自动更新,提取/包装长度自动
更新与回复,来增加工作的平行度,因此会提高系统效率。 以上所述仅为本发明的优选实施例,凡依本发明权利要求书所做的均等变化与修 饰,皆应属本发明的涵盖范围。
1权利要求
一种从一比特数据流寄存器中提取比特的方法,其包含当一预定起始位置大于一预定提取长度时,从该比特数据流寄存器中的该预定起始位置开始提取一预定数目的比特,其中该预定数目和该预定提取长度具相同值;将这些比特存入一目标寄存器内的一最低位部分;当未数据欠位时,将该目标寄存器内未存储比特的一高位部分设为一预定值;清除一空标志及一数据欠位标志的设定;以及使用该预定起始位置减去该预定数目的值来更新该预定起始位置。
2. 如权利要求1所述的方法,其中将该目标寄存器内未存储比特的该高位部分设为该预定值是将该目标寄存器内未存储比特的该高位部分设为零。
3. —种从一比特数据流寄存器中提取比特的方法,其包含当一预定起始位置等于一预定提取长度时,从该比特数据流寄存器中的该预定起始位置开始提取一预定数目的比特,其中该预定数目和该预定提取长度具相同值;将这些比特存入一目标寄存器内的一最低位部分;当未数据欠位时,将该目标寄存器内未存储比特的一高位部分设为一预定值;设定一空标志以标示该比特数据流寄存器内所有比特数据已被提取,并清除一数据欠位标志;以及将该预定起始位置更新为该比特数据流寄存器内的一预定比特以为下次提取作准备。
4. 如权利要求3所述的方法,其中将该目标寄存器内未存储比特的该高位部分设为该预定值是将该目标寄存器内未存储比特的该高位部分设为零。
5. 如权利要求3所述的方法,其中将该预定起始位置更新为该比特数据流寄存器内的该预定比特以为下次提取作准备是将该预定起始位置更新为该比特数据流寄存器内的一最高有效位以为下次提取作准备。
6. —种从一比特数据流寄存器中提取比特的方法,其包含当一预定起始位置小于一预定提取长度时,从该比特数据流寄存器中的该预定起始位置开始提取一预定数目的比特,其中该预定数目和该预定起始位置具相同值;在从该比特数据流寄存器中所提取的这些比特后加入一预定数目的多个缓冲比特以增加至该预定提取长度的比特数;从和该预定提取长度相同的一位置开始,将这些比特存入一目标寄存器内的一最低位部分;当一数据欠位标志未被设定时,将该目标寄存器内未存储比特的一高位部分设为一预定值;将该预定起始位置更新为该比特数据流寄存器内的一预定比特以为下次提取作准备;使用该预定提取长度减去该预定起始位置的值来更新该预定提取长度;以及设定该数据欠位标志和一空标志。
7. 如权利要求6所述的方法,其中在从该比特数据流寄存器中所提取的这些比特后加入该预定数目的多个缓冲比特以增加至该预定提取长度的比特数系在从该比特数据流寄存器中所提取的这些比特后加入多个零以增加至该预定提取长度的比特数。
8. 如权利要求6所述的方法,其中将该目标寄存器内未存储比特的该高位部分设为该预定值是将该目标寄存器内未存储比特的该高位部分设为零。
9. 如权利要求6所述的方法,其中将该预定起始位置更新为该比特数据流寄存器内的 该预定比特以为下次提取作准备是将该预定起始位置更新为该比特数据流寄存器内的一 最高有效位以为下次提取作准备。
10. —种从一比特数据流寄存器中提取比特的方法,其包含当一数据欠位标志已被设定时,从该比特数据流寄存器中的一最高有效位开始提取一 预定数目的比特,其中该预定数目的值等于前次提取该前次预定提取长度减去一前次起始 位置的值;将这些比特存入一目标寄存器内的一最低位部分;以及 清除该数据欠位标志及一空标志的设定。
11. 一种从一比特数据流寄存器中提取比特的方法,其包含当一预定起始位置大于一预定提取长度时,从该比特数据流寄存器中的该预定起始位 置开始提取一预定数目的比特,其中该预定数目和该预定提取长度具相同值; 将这些比特存入一目标寄存器内的一最低位部分;当未数据欠位时,将该目标寄存器内未存储比特的一高位部分设为一预定值; 清除一空标志及一数据欠位标志的设定;使用该预定起始位置减去该预定数目的值来更新该预定起始位置; 当该预定起始位置等于该预定提取长度时,从该比特数据流寄存器中的该预定起始位 置开始提取该预定数目的比特,其中该预定数目和该预定提取长度具相同值; 将这些比特存入该目标寄存器内的该最低位部分;当未数据欠位时,将该目标寄存器内未存储比特的该高位部分设为该预定值; 设定一空标志以标示该比特数据流寄存器内所有比特数据已被提取,并清除一数据欠 位标志;将该预定起始位置更新为该比特数据流寄存器内的一预定比特以为下次提取作准备;当该预定起始位置小于该预定提取长度时,从该比特数据流寄存器中的该预定起始位 置开始提取一预定数目的比特,其中该预定数目和该预定起始位置具相同值;在从该比特数据流寄存器中所提取的这些比特后加入一预定数目的多个缓冲比特以 增加至该预定提取长度的比特数;从和该预定提取长度相同的一位置开始,将这些比特存入该目标寄存器内的该最低位 部分;当一数据欠位标志未被设定时,将该目标寄存器内未存储比特的该高位部分设为该预 定值;将该预定起始位置更新为该比特数据流寄存器内的该预定比特以为下次提取作准备;使用该预定提取长度减去该预定起始位置的值来更新该预定提取长度; 设定该数据欠位标志和一空标志;当该数据欠位标志已被设定时,从该比特数据流寄存器中的一最高有效位开始提取该 预定数目的比特,其中该预定数目的值等于前次提取该前次预定提取长度减去一前次起始位置的值;将这些比特存入该目标寄存器内的该最低位部分;以及 清除该数据欠位标志及一空标志的设定。
12. 如权利要求11所述的方法,其中将该目标寄存器内未存储比特的该高位部分设为该预定值是将该目标寄存器内未存储比特的该高位部分设为零。
13. 如权利要求11所述的方法,其中将该预定起始位置更新为该比特数据流寄存器内的该预定比特以为下次提取作准备是将该预定起始位置更新为该比特数据流寄存器内的一最高有效位以为下次提取作准备。
14. 如权利要求11所述的方法,其中在从该比特数据流寄存器中所提取的这些比特后加入该预定数目的多个缓冲比特以增加至该预定提取长度的比特数系在从该比特数据流寄存器中所提取的这些比特后加入多个零以增加至该预定提取长度的比特数。
15. —种将比特包装至一比特数据流寄存器内的方法,其包含当一预定起始位置大于一预定包装长度时,从一来源寄存器的一最低位部分开始包装一预定数目的比特,其中该预定数目和该预定包装长度具相同值;从该预定起始位置开始,将这些比特存入该比特数据流寄存器内分;清除一满标志和一数据溢位标志;以及使用该预定起始位置减去该预定包装长度的值来更新该预定起始位置。
16. —种将比特包装至一比特数据流寄存器内的方法,其包含当一预定起始位置等于一预定包装长度时,从一来源寄存器的一最低位部分开始包装一预定数目的比特,其中该预定数目和该预定包装长度具相同值;从该预定起始位置开始,将这些比特存入该比特数据流寄存器内;设定一满标志以及清除一数据溢位标志;以及将该预定起始位置更新为该比特数据流寄存器的一最高有效位。
17. —种将比特包装至一比特数据流寄存器内的方法,其包含当一预定起始位置小于一预定包装长度时,从一来源寄存器的一最低位部分开始包装一预定数目的比特,其中该预定数目和该预定起始位置具相同值;从该预定起始位置开始,将这些比特存入该比特数据流寄存器内;设定一满标志和一数据溢位标志;将该预定起始位置更新为该比特数据流寄存器的一最高有效位;以及使用该预定包装长度减去该预定起始位置的值来更新该预定包装长度。
18. —种将比特包装至一比特数据流寄存器内的方法,其包含当一预定起始位置大于一预定包装长度时,从一来源寄存器的一最低位部分开始包装一预定数目的比特,其中该预定数目和该预定包装长度具相同值;从该预定起始位置开始,将这些比特存入该比特数据流寄存器内;清除一满标志和一数据溢位标志;使用该预定起始位置减去该预定包装长度的值来更新该预定起始位置;当该预定起始位置等于该预定包装长度时,从该来源寄存器的一最低位部分开始包装该预定数目的比特,其中该预定数目和该预定包装长度具相同值;从该预定起始位置开始,将这些比特存入该比特数据流寄存器内;设定该满标志以及清除该数据溢位标志;将该预定起始位置更新为该比特数据流寄存器的一最高有效位;当该预定起始位置小于该预定包装长度时,从该来源寄存器的该最低位部分开始包装 该预定数目的比特,其中该预定数目和该预定起始位置具相同值;从该预定起始位置开始,将这些比特存入该比特数据流寄存器内; 设定该满标志和该数据溢位标志;将该预定起始位置更新为该比特数据流寄存器的该最高有效位;以及 使用该预定包装长度减去该预定起始位置的值来更新该预定包装长度。
19. 一种比特数据流提取装置,其包含 一比特数据流寄存器,用来存储提取数据;一移位器,会依据一差异结果来对从该比特数据流寄存器提取出的数据进行移位处理;一目标寄存器,用来存储被该移位器移位后的数据; 一起始位置寄存器,用来存储一起始位置; 一提取长度寄存器,用来存储一提取长度;一算术逻辑单元,用来比较该起始位置和该提取长度以产生一比较结果,以及用来依 据该起始位置和该提取长度来产生该差异结果;以及一控制逻辑,用来依据该比较结果来更新该起始位置、更新该提取长度,以及控制该移 位器的左向/右向移位方向。
20. 如权利要求19所述的比特数据流提取装置,其还包含一遮罩产生器,用来在未发生数据欠位时,依据该提取长度来将该目标寄存器内未存 储比特的一高位部分设为一预定值。
21. 如权利要求20所述的比特数据流提取装置,其还包含一第一逻辑单元,用来对该遮罩信号和被该移位器移位后的数据执行一逻辑与运算以 产生遮罩数据,其中该遮罩数据系存储于该目标寄存器内。
22. 如权利要求19所述的比特数据流提取装置,其还包含一起始位置多工器,耦接于该起始位置寄存器、该算术逻辑单元和该控制逻辑,其中该 控制逻辑还控制该起始位置多工器以依据该比较结果来从一最高有效位和该差异结果中 选取该起始位置。
23. 如权利要求19所述的比特数据流提取装置,其还包含 一数据欠位标志寄存器,耦接于该控制逻辑;以及一数据欠位标志多工器,耦接于该控制逻辑和该数据欠位标志寄存器,其中该控制逻 辑还控制该数据欠位标志多工器以依据该比较结果来选择设定该数据欠位标志或清除该 数据欠位标志。
24. 如权利要求23所述的比特数据流提取装置,其还包含 一先前提取长度寄存器,用来存储一先前提取长度;以及一先前提取长度多工器,耦接于该控制逻辑、该先前提取长度寄存器和该提取长度寄 存器,其中该控制逻辑还控制该先前提取长度多工器,进而依据该比较结果来选择维持该 先前提取长度或更新该先前提取长度。
25. 如权利要求24所述的比特数据流提取装置,其还包含一提取长度多工器,耦接于该算术逻辑单元、该提取长度寄存器、该先前提取长度寄存 器和该控制逻辑,其中该控制逻辑还控制该提取长度多工器,进而依据该比较结果来选择 维持该先前提取长度,或选择将该提取长度更新为该先前提取长度或该差异结果。
26. 如权利要求19所述的比特数据流提取装置,其还包含 一空标志寄存器,用来存储一空标志;以及一空标志多工器,耦接于该控制逻辑和该空标志寄存器,其中该控制逻辑还控制该空 标志多工器,进而依据该比较结果来选择设定该空标志或清除该空标志。
27. —种比特数据流包装装置,其包含 一来源寄存器,用来存储包装数据;一移位器,会依据一差异结果来对从该来源寄存器包装出的数据进行移位处理; 一目标比特数据流寄存器,用来存储被该移位器移位后的数据; 一起始位置寄存器,用来存储一起始位置; 一包装长度寄存器,用来存储一包装长度;一算术逻辑单元,用来比较该起始位置和该包装长度以产生一比较结果,以及用来依 据该起始位置和该包装长度来产生该差异结果;以及一控制逻辑,用来依据该比较结果来更新该包装长度、更新该起始位置,以及控制该移 位器的左向/右向移位方向。
28. 如权利要求27所述的比特数据流包装装置,其还包含一遮罩产生器,用来产生一遮罩信号以将该目标比特数据流寄存器内未存储现有包装 数据的一高位部分维持在先前已包装的值。
29. 如权利要求28所述的比特数据流包装装置,其还包含一第二移位器,耦接于该算术逻辑单元、该遮罩产生器和该控制逻辑,用来依据该差异 结果来对该遮罩信号进行移位处理以产生一移位遮罩信号;以及一第二逻辑单元,用来对该移位遮罩信号和存储于该目标比特数据流寄存器内的数据 执行一逻辑与运算,其中该控制逻辑还控制该第二移位器的移位方向。
30. 如权利要求27所述的比特数据流包装装置,其还包含一起始位置多工器,耦接于该起始位置寄存器、该算术逻辑单元和该控制逻辑,其中该 控制逻辑还控制该起始位置多工器以依据该比较结果来从一最高有效位和该差异结果中 选取该起始位置。
31. 如权利要求27所述的比特数据流包装装置,其还包含 一数据溢位标志寄存器,耦接于该控制逻辑,用来输出一数据溢位标志;以及 一数据溢位标志多工器,耦接于该控制逻辑和该数据溢位标志寄存器,其中该控制逻辑还控制该数据溢位标志多工器以依据该比较结果来选择设定该数据溢位标志或清除该 数据溢位标志。
32. 如权利要求31所述的比特数据流包装装置,其还包含 一先前包装长度寄存器,用来存储一先前包装长度;以及一先前包装长度多工器,耦接于该控制逻辑、该先前包装长度寄存器和该包装长度寄 存器,其中该控制逻辑还控制该先前包装长度多工器,进而依据该比较结果来选择维持该先前包装长度或更新该先前包装长度。
33. 如权利要求32所述的比特数据流包装装置,其还包含一包装长度多工器,耦接于该算术逻辑单元、该包装长度寄存器、该先前包装长度寄存器和该控制逻辑,其中该控制逻辑还控制该包装长度多工器,进而依据该比较结果来选择维持该先前包装长度,或选择将该包装长度更新为该先前包装长度或该差异结果。
34. 如权利要求27所述的比特数据流包装装置,其还包含一满标志寄存器,用来存储一满标志;以及一满标志多工器,耦接于该控制逻辑和该满标志寄存器,其中该控制逻辑还控制该满标志多工器,进而依据该比较结果来选择设定该满标志或清除该满标志。
全文摘要
连续提取和包装比特数据流的方法及相关装置。为了在边界条件时有效地处理比特数据流的提取,当一数据欠位标志已被设定时,从一比特数据流寄存器的一最高有效位开始提取一预定数目的比特。预定数目的值等于前一次提取的一预定提取长度减去一前一次起始位置的值。提取出的比特会被存入一目标寄存器的一低位部分,并清除数据欠位标志。
文档编号G06F9/308GK101739239SQ20091000143
公开日2010年6月16日 申请日期2009年1月5日 优先权日2008年11月16日
发明者张传华, 苏泓萌 申请人:晶心科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1