CN102263562A - 一种码流数据的读取移除方法和装置 - Google Patents

一种码流数据的读取移除方法和装置 Download PDF

Info

Publication number
CN102263562A
CN102263562A CN2010101865621A CN201010186562A CN102263562A CN 102263562 A CN102263562 A CN 102263562A CN 2010101865621 A CN2010101865621 A CN 2010101865621A CN 201010186562 A CN201010186562 A CN 201010186562A CN 102263562 A CN102263562 A CN 102263562A
Authority
CN
China
Prior art keywords
byte
stream data
bit stream
index
offset
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN2010101865621A
Other languages
English (en)
Other versions
CN102263562B (zh
Inventor
冷永春
高展
蔡宁宁
胡胜发
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangzhou Ankai Microelectronics Co.,Ltd.
Original Assignee
Anyka Guangzhou Microelectronics Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Anyka Guangzhou Microelectronics Technology Co Ltd filed Critical Anyka Guangzhou Microelectronics Technology Co Ltd
Priority to CN201010186562.1A priority Critical patent/CN102263562B/zh
Publication of CN102263562A publication Critical patent/CN102263562A/zh
Application granted granted Critical
Publication of CN102263562B publication Critical patent/CN102263562B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

本发明适用于解码处理领域,提供了一种码流数据的读取移除方法和装置,该方法包括下述步骤:计算码流数据在存储单元中的起始字节位置byte_index和码流数据在起始字节内部的比特偏移量offset;多路选择器根据所述byte_index和offset,从存储单元中选择解码单元解码所需的码流宽度比特码流数据;将选择的码流数据输出至解码单元进行解码处理,并在解码处理完毕后,输出码流移除信号skip信号和码流移除长度length信号。本发明实施例通过采用byte_index和offset来对存储单元中的码流数据进行有效寻址的方式来代替码流数据移位操作,因此,可以极大的减少可能发生电平翻转的比特位数,极大的降低了硬件功耗。

Description

一种码流数据的读取移除方法和装置
技术领域
本发明属于解码处理领域,尤其涉及一种码流数据的读取移除方法和装置。
背景技术
在解码单元对内存中的码流数据进行解码处理时,由于受解码单元解码需要的码流宽度的限制,一般需要通过直接存储访问(Direct Memory Access,DMA)读取单元从内存中读取预设长度的码流数据,并将读取的码流数据暂存在存储单元中,解码单元对存储单元中的码流数据进行解码处理,并在解码处理完毕后,输出码流移除信号和码流移除长度,根据码流移除信号和码流移除长度移除存储单元中的码流数据,以便可以继续将内存中的码流数据写入存储单元,为解码单元做码流数据准备,解码单元的一次解码过程可能包含多次解码处理。
现有技术一般通过存储移位单元根据码流移除信号和码流移除长度移除存储单元中的码流数据,请参阅图1,为现有技术提供的码流数据读取移除方案的硬件结构框图。其中存储移位单元主要包括移位器、存储单元和码流结尾比特位序号计数器。其中:
码流结尾比特位序号计数器计算码流数据在存储单元的结尾位置,DMA读取单元在传递数据时,从码流结尾比特位序号后面的位置开始将码流数据写入存储单元中。
移位器将存储单元中的码流数据左移(8*start_bias+start_offset)位(时钟触发沿时刻dma_done和first_read都为高情况)或length位(时钟触发沿时刻skip为高情况)。其中start_bias表示码流起始偏移字节数。start_offset表示解码前码流在起始字节内部的比特偏移量。dma_done表示DMA完成一次读码流操作,高有效。first_read表示当前DMA读码流操作是否为本次解码的第一次DMA读码流操作,高电平表示是,否则表示不是。length表示码流移除长度。
现有技术由于采用移位器电路实现存储单元中的码流数据移位操作,从而导致电平翻转比较多,如当存储单元的大小为M比特时,采用移位器电路实现存储单元中的码流数据移位操作时,可能有M比特位发生电平翻转,从而极大的增加了硬件功耗。
发明内容
本发明实施例的目的在于提供一种码流数据的读取移除方法,旨在解决现有技术采用移位器电路移除码流数据时导致的发生电平翻转的比特位数多、增加硬件功耗的问题。
本发明实施例是这样实现的,一种码流数据的读取移除方法,所述方法包括下述步骤:
计算码流数据在存储单元中的起始字节位置byte_index和码流数据在起始字节内部的比特偏移量offset;
多路选择器根据所述byte_index和offset,从存储单元中选择解码单元解码所需的码流宽度比特码流数据;
将选择的码流数据输出至解码单元进行解码处理,并在解码处理完毕后,输出码流移除信号skip信号和码流移除长度length信号,以便根据所述skip信号和length信号更新所述byte_index和offset。
本发明实施例的另一目的在于提供一种码流数据的读取移除装置,所述装置包括:
存储单元,用于存储DMA读取单元从内存中读取的码流数据,为解码单元解码准备码流数据;
起始字节位置计算单元,用于计算码流数据在存储单元中的起始字节位置byte_index;
偏移量计算单元,用于计算码流数据在起始字节内部的比特偏移量offset;
多路选择器,用于根据所述起始字节位置计算单元计算得到的byte_index以及偏移量计算单元计算得到的offset,从存储单元中选择解码单元解码所需的码流宽度比特码流数据,并将选择的码流数据输出至解码单元。
在本发明实施例中,通过采用byte_index和offset来对存储单元中的码流数据进行有效寻址,从存储单元中选择解码单元解码所需的码流宽度比特码流数据,并将选择的码流数据输出至解码单元进行解码处理,相对于原有技术方案,本发明不对存储单元中的数据进行移位操作,因此,可以极大的减少可能发生电平翻转的比特位数,极大的降低了硬件功耗。
附图说明
图1是现有技术提供的码流数据读取移除方案的硬件结构框图;
图2是本发明第一实施例提供的码流数据的读取移除方法的实现流程图;
图3是本发明第二实施例提供的码流数据的读取移除方法的实现流程图;
图4是本发明第三实施例提供的码流数据的读取移除方法的实现流程图;
图5是本发明第四实施例提供的码流数据的读取移除方法的实现流程图;
图6是本发明实施例提供的码流数据的读取移除装置的结构框图;
图7是本发明另一实施例提供的码流数据的读取移除装置的结构框图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
在本发明实施例中,先计算码流数据在存储单元中的起始字节位置和码流数据在起始字节内部的比特偏移量,多路选择器根据码流数据在存储单元中的起始字节位置和码流数据在起始字节内部的比特偏移量,从存储单元中选择解码单元解码所需的码流宽度比特码流数据,将选择的码流数据输出至解码单元进行解码处理,本发明实施根据码流数据在存储单元中的起始字节位置和码流数据在起始字节内部的比特偏移量对存储单元中存储的码流数据进行寻址,选择解码单元解码所需的码流宽度比特码流数据,从而减少了电平翻转的比特数,降低了硬件功耗。
为了便于理解和说明,在此列出本发明实施例中使用到的各术语的含义。
start:表示解码开始信号,高有效;
start_addr:表示码流起始地址;
start_addr[0]:表示start_addr最低位;
start_addr[1:0]:表示start_addr低两位;
start_offset:表示解码前码流在起始字节内部的比特偏移,在整个解码过程中,该值不会发生改变;
start_bias:表示码流起始偏移字节数。由于DMA可以按照半字对齐方式或者字对齐方式传递码流数据,而start_addr是字节对齐方式,因此,会造成码流字节的偏移,所以,当DMA按照半字对齐方式传递数据时,start_bias=start_addr[0];当DMA按照字对齐方式传递数据时,start_bias=start_addr[1:0]。
skip:表示码流移除信号,高有效;
length:表示码流移除长度,其大于或者等于0,小于或者等于N,其中N为解码单元解码所需的码流数据宽度。
dma_done:表示DMA完成一次读码流操作,高有效;
first_read:表示当前DMA读码流操作是否为本次解码的第一次DMA读码流操作,高电平表示是,否则表示不是。在时钟触发沿时刻,如果start信号为高,则first_read更新为1;如果dma_done信号为高,则first_read更新为0。
data_buffer:表示存储单元;
存储单元的空闲区:存储单元共2*CNT字节大小,分为高CNT部分(高CNT字节)和低CNT部分(低CNT字节),当开始解码时高CNT部分为空闲区,之后byte_index确定的起始字节所在的部分不是空闲区,另外一个部分为空闲区;
byte_index:表示码流数据在存储单元中的起始字节位置;
byte_index[x-1:2]:表示byte_index右移两位后的值;
byte_index[1:0]:表示byte_index低两位的值;
offset:表示码流数据在起始字节内部的比特偏移量,其取值范围为0~7,因为一个字节包括8比特位,因此码流数据在字节内部的比特偏移的最小偏移量为0,最大偏移量为7,该offset值在解码过程中将发生改变;
new_addr:表示解码后的新的码流地址;
offset_and_length:表示offset与length之和;
offset_and_length[2:0]:表示offset_and_length的低3位值;
byte_shift:表示offset_and_length右移3位后的值,即byte_shift=offset_and_length>>3;
函数mint(x):若x为整数则mint(x)=x,否则mint(x)=[x]+1,其中[]表示取整操作。
max_index:表示存储单元中包含的字节数;
M:表示存储单元中包含的比特数,M=8*max_index;
CNT:表示DMA每次传送的字节数,按照DMA每次传送都是写一半的存储单元空间,因此,max_index=2*CNT;
N:表示解码单元解码需要的码流数据宽度;
A:表示存储单元中的可用码流字节数;
A0:表示为保证解码正确,存储单元中所存放码流的最小字节数,当A小于A0时,标志存储单元中的码流不可用。
A1:表示存储单元一半空间所包含的字节数,需设定A1大于A0,当A小于或者等于A1时,DMA读码流单元启动,从内存中读取码流数据,并把码流数据写入存储单元的空闲区中。
为了保证第一次DMA读码流完成后码流数据可用,在DMA按照半字对齐方式传送码流数据时,CNT-1≥A0;在DMA按照字对齐方式传送码流数据时,CNT-3≥A0。
由于offset最大为7,因此,存储单元中至少包含N+7比特位码流数据,才表示存储单元中的码流数据可用,所以A0=[((N+7)+7)/8],其中[]表示取整操作。
按照存储单元中码流数据的数量小于或者等于存储单元的存储空间的一半时即需从内存中读取码流数据的原则,需要A1=CNT。
综上所述,可以得到:
当DMA按照半字对齐方式传送码流数据时,
[((N+7)+7)/8]=A0≤CNT-1;......(1)
当DMA按照字对齐方式传送码流数据时,
[((N+7)+7)/8]=A0≤CNT-3;......(2)
A0<Al=CNT;......(3)
实施例一:
图2示出了本发明第一实施例提供的码流数据的读取移除方法的实现流程,详述如下:
在步骤S101中,计算码流数据在存储单元中的起始字节位置和码流数据在起始字节内部的比特偏移量。
其中码流数据在存储单元中的起始字节位置(byte_index)的具体计算过程如下:
当解码开始信号(start)为有效时,byte_index=start_bias;在本发明实施例中,当start信号为高电平时视为解码开始信号有效,如当启动解码时,start信号保持一个时钟周期的高电平,表示解码开始信号保持一个时钟周期有效。
当DMA按照半字对齐方式传送码流数据时,start_bias=start_addr[0];当DMA按照字对齐方式传送码流数据时,start_bias=start_addr[1:0]。。
当码流移除信号(skip)有效时,先判断byte_index+byte_shift-max_index≥0是否成立,如果成立,则byte_index=byte_index+byte_shift-max_index,否则byte_index=byte_index+byte_shift。
其中码流数据在起始字节内部的比特偏移量的具体计算过程如下:
当解码开始信号为有效时,offset=start_offset;
当码流移除信号(skip)有效时,offset=offset_and_length[2:0]。
在步骤S102中,多路选择器根据码流数据在存储单元中的起始字节位置和码流数据在起始字节内部的比特偏移量,从存储单元中选择解码单元解码所需的码流宽度比特码流数据。
其中多路选择器根据码流数据在存储单元中的起始字节位置和码流数据在起始字节内部的比特偏移量,从存储单元中选择解码单元解码所需的码流宽度比特码流数据的具体实现步骤可以采用现有技术提供的任意一种方式实现,本发明实施例提供了如下实现方法:
a、根据byte_index右移两位后的值(即为byte_index[x-1:2])确定码流数据在存储单元中的起始字,第一选择电路从该起始字的最高位开始按照从高到低的顺序选择N+31比特位的码流数据传递给第二选择电路。
其中x表示byte_index位数。由于byte_index是表示码流数据在存储单元中的起始字节位置的,而存储单元中的每一个字节都有可能成为码流数据在存储单元中的起始字节,因此,该byte_index必须可以标识存储单元中的每个字节,所以byte_index位数与存储单元的总内存空间有关,即存储单元为M比特大小,则byte_index为mint(log2 M/8)位。如当存储单元的总大小为512比特,即64字节时,该byte_index位数为6个比特,即x=6;当存储单元的总大小为1024比特,即128字节时,该byte_index位数为7个比特,即x=7,依次类推。
b、根据byte_index的低两位的值(即为byte_index[1:0])确定码流数据在上述起始字中的起始字节,第二选择电路从该起始字节的最高位开始按照从高到低的顺序选择N+7比特位的码流数据传递给第三选择电路。
其中根据byte_index的右移两位后的值(即为byte_index[x-1:2])确定码流数据在存储单元中的起始字,以及根据byte_index的低两位的值(即为byte_index[1:0])确定码流数据在上述起始字中的起始字节的原理如下:
由于存储单元中包含有2*CNT个字节,即包含mint(CNT/2)个字,把字从高到低编号为0~mint(CNT/2)-1。byte_index[x-1:2]确定的起始字为data_buffer中编号为byte_index[x-1:2]的字;每个字中包括4个字节,从高到低编号为0~3,byte_index[1:0]确定的起始字节为起始字中编号为byte_index[1:0]的字节。
c、根据offset确定码流数据在上述起始字节中的偏移位数,第三选择电路将从第二选择电路传递来的N+7比特位的码流数据的最高位起,由高到低顺序,从第(offset+1)位开始选定N比特位码流数据作为解码单元解码所需的码流宽度比特码流数据。
在本发明实施例中,在根据byte_index的右移两位后的值(即为byte_index[x-1:2])确定码流数据在存储单元中的起始字时,由于每个字包括4个字节,所以可能存在最多3字节(即24比特位)的数据偏移,在根据byte_index的低两位的值(即为byte_index[1:0])确定码流数据在上述起始字中的起始字节时,由于每个字节包括8比特位,所以可能存在最多7比特的数据偏移,所以为了保证根据上述步骤可以选择出解码单元解码所需的码流宽度比特码流数据,在第一选择电路从该起始字的最高位开始按照从高到低的顺序选择码流数据时,需要多选择31位(即24+7=31位)码流数据,在第二选择电路从该起始字节的最高位开始按照从高到低的顺序选择码流数据时,需要多选择7位码流数据。
在步骤S103中,将选择的码流数据输出至解码单元进行解码处理,并在解码处理完毕后,输出skip信号和length信号。以便根据输出的skip信号和length信号更新码流数据在存储单元中的起始字节位置和码流数据在起始字节内部的比特偏移量,再根据更新后的码流数据在存储单元中的起始字节位置和码流数据在起始字节内部的比特偏移量,从存储单元中选择下一次解码所需的码流数据,循环执行,直到解码结束。
在本发明实施例中,根据码流数据在存储单元中的起始字节位置和码流数据在起始字节内部的比特偏移量对存储单元中存储的码流数据进行寻址,选择解码单元解码所需的码流宽度比特码流数据,从而避免了采用移位器移除存储单元中的码流数据,显著减少了电平翻转的比特数,降低了硬件功耗。
实施例二:
由于当存储单元中的可用码流字节数小于A0时,则存储单元的码流数据被标记为不可用,为了解码单元可以正确的进行解码操作,图3示出了本发明第二实施例提供的码流数据的读取移除方法的实现流程,图3所示的码流数据的读取移除方法中的步骤S201至S203与图2所示的码流数据的读取移除方法中的步骤S101至S103相同,在此不再赘述,其不同之处仅在于,图3所示的码流数据的读取移除方法还包括下述步骤:
在步骤S204中,计算存储单元中可用码流的字节数。其具体计算过程如下所述,当然还可以采用现有技术提供其他计算方法计算,在此不再一一举例说明:
当start信号为高时,A=0;
当dma_done信号为高,skip信号为低时,判断当前DMA读码流操作是否为本次解码的第一次DMA读码流操作,即判断first_read为高还是低,如果为高,即当前DMA读码流操作为本次解码的第一次DMA读码流操作,则A=CNT-start_bias,如果为低,即当前DMA读码流操作不是本次解码的第一次DMA读码流操作,则A=A+CNT;
当dma_done信号为低,skip信号为高时,则A=A-byte_shift;
当dma_done信号为高,skip信号为高时,则A=A+CNT-byte_shift。
在步骤S205中,根据存储单元中可用码流的字节数标记存储单元中的码流数据是否可用。即判断A<A0是否成立,如成立,则标记存储单元中的码流数据不可用,否则标记存储单元中的码流数据可用。
可以理解,上述步骤S204和步骤S205可以在图3所示的步骤S201、S202、S203之前或者之后执行。
由于当存储单元中的可用码流字节数A小于或者等于A1时,表示存储单元中至少有一半的空间是空闲的,为了不中断此次解码操作,图4示出了本发明第三实施例提供的码流数据的读取移除方法的实现流程,图4所示的码流数据的读取移除方法中的步骤S301至S304与图3所示的码流数据的读取移除方法中的步骤S201至S204相同,在此不再赘述,其不同之处仅在于,图4所示的码流数据的读取移除方法还包括下述步骤:
在步骤S305中,判断存储单元中可用码流的字节是否小于或者等于A1,并在存储单元中可用码流的字节数小于或者等于A1时,启动DMA读取单元。DMA读取单元继续从内存中读取码流数据,并将读取的码流数据写入存储单元的空闲区。
可以理解,上述步骤S304、S305可以在图4所示的步骤S301、S302、S303之前或者之后执行。
在解码完成后,为了使其他单元获得解码完成后的码流地址,图5示出了本发明第四实施例提供的码流数据的读取移除方法的实现流程,图5所示的码流数据的读取移除方法中的步骤S401至S403与图2所示的码流数据的读取移除方法中的步骤S101至S103相同,在此不再赘述,其不同之处仅在于,图5所示的码流数据的读取移除方法还包括下述步骤:
在步骤S404中,计算解码后的新码流地址,并在整个解码过程结束后,将解码后的新码流地址传递至上层单元。其中解码后的新码流地址的具体计算步骤如下:
当解码开始信号为有效,即start信号为高时,解码后的新码流地址new_addr=start_addr;当码流移除信号为有效,即skip信号为高时,先判断offset_and_length是否大于7,如果是,解码后的新码流地址new_addr=new_addr+byte_shift,否则解码后的新码流地址new_addr保持不变。
在本发明实施例中,在解码单元对选择的码流数据解码处理完毕后,会输出skip信号和length信号,此时,原有的解码后的新码流地址可能被更新,因此,在整个解码过程完成后,解码后的新码流地址可以保持最新。
在本发明另一实施例中,该方法还包括下述步骤:
在解码结束后,将offset值传递至上层单元,以备上层单元使用。
图6示出了本发明实施例提供的码流数据的移除装置的结构,为了便于说明,仅示出了与本发明实施例相关的部分。该码流数据的移除装置可以是内置于解码器中的软件单元、硬件单元或者软硬件相结合的单元或者作为独立的挂件集成到解码器或者解码器的应用系统中。其中:
存储单元1存储DMA读取单元从内存中读取的码流数据,为解码单元解码准备码流数据。
起始字节位置计算单元2计算码流数据在存储单元中的起始字节位置。其具体计算过程如下:
当解码开始信号(start)为有效时,byte_index=start_bias;在本发明实施例中,当start信号为高电平时视为解码开始信号有效,如当启动解码时,start信号保持一个时钟周期的高电平,表示解码开始信号保持一个时钟周期有效。
当DMA按照半字对齐方式传送码流数据时,start_bias=start_addr[0];当DMA按照字对齐方式传送码流数据时,start_bias=start_addr[1:0]。
当码流移除信号(skip)有效时,先判断byte_index+byte_shift-max_index≥0是否成立,如果成立,则byte_index=byte_index+byte_shift-max_index,否则byte_index=byte_index+byte_shift。
偏移量计算单元3计算码流数据在起始字节内部的比特偏移量,并在解码结束时把该偏移量返回给上层单元。其具体计算过程如下:
当解码开始信号为有效时,offset=start_offset;
当码流移除信号(skip)有效时,offset=offset_and_length[2:0]。
多路选择器4根据码流数据在存储单元中的起始字节位置和码流数据在起始字节内部的比特偏移量,从存储单元中选择解码单元解码所需的码流宽度比特码流数据,并将选择的码流数据输出至解码单元。该多路选择器4包括第一选择电路41、第二选择电路42以及第三选择电路43。其中:
第一选择电路41根据byte_index右移两位后的值(即为byte_index[x-1:2])确定码流数据在存储单元中的起始字,并从该起始字的最高位开始按照从高到低的顺序选择N+31比特位的码流数据传递给第二选择电路42。
其中x表示byte_index位数。由于byte_index是表示码流数据在存储单元中的起始字节位置的,而存储单元中的每一个字节都有可能成为码流数据在存储单元中的起始字节,因此,该byte_index必须可以标识存储单元中的每个字节,所以byte_index位数与存储单元的总内存空间有关,即存储单元为M比特大小,则byte_index为mint(log2 M/8)位。如当存储单元的总大小为512比特,即64字节时,该byte_index位数为6个比特,即x=6;当存储单元的总大小为1024比特,即128字节时,该byte_index位数为7个比特,即x=7,依次类推。
第二选择电路42根据byte_index的低两位的值(即为byte_index[1:0])确定码流数据在上述起始字中的起始字节,并从该起始字节的最高位开始按照从高到低的顺序选择N+7比特位的码流数据传递给第三选择电路43。
其中根据byte_index的除低两位以外的其他位的值(即为byte_index[x-1:2])确定码流数据在存储单元中的起始字,以及根据byte_index的低两位的值(即为byte_index[1:0])确定码流数据在上述起始字中的起始字节的原理如上所述,在此不再赘述。
第三选择电路43根据offset确定码流数据在上述起始字节中的偏移位数,并从第二选择电路传递来的N+7比特位的码流数据的最高位起,由高到低顺序,从第(offset+1)位开始选定N比特位码流数据作为解码单元解码所需的码流宽度比特码流数据。
在本发明实施例中,解码单元对码流数据解码处理完毕后,输出skip信号和length信号,根据skip信号和length信号更新码流数据在存储单元中的起始字节位置和码流数据在起始字节内部的比特偏移量,再根据码流数据在存储单元中的起始字节位置和码流数据在起始字节内部的比特偏移量,从存储单元1中选择下一次解码所需的码流数据,循环执行,直到解码结束。
由于当存储单元中的可用码流字节数小于A0时,则存储单元的码流数据被标记为不可用,为了解码单元可以正确的进行解码操作,在本发明另一实施例中,该装置还包括可用码流字节数计算单元5和码流可用标记单元6。其中:
可用码流字节数计算单元5计算存储单元中可用码流的字节数。其具体计算过程如下:
当start信号为高时,A=0;
当dma_done信号为高,skip信号为低时,判断当前DMA读码流操作是否为本次解码的第一次DMA读码流操作,即判断first_read为高还是低,如果为高,即当前DMA读码流操作为本次解码的第一次DMA读码流操作,则A=CNT-start_bias,如果为低,即当前DMA读码流操作不是本次解码的第一次DMA读码流操作,则A=A+CNT;
当dma_done信号为低,skip信号为高时,则A=A-byte_shift;
当dma_done信号为高,skip信号为高时,则A=A+CNT-byte_shift。
码流可用标记单元6根据存储单元中可用码流的字节数标记存储单元中的码流数据是否可用,当存储单元中的可用码流的字节数小于A0时,标记存储单元中的码流数据不可用,否则标记存储单元中的码流数据可用。
由于当存储单元中的可用码流字节数A小于或者等于A1时,表示存储单元中至少有一半的空间是空闲的,为了不中断此次解码操作,在本发明另一实施例中,该装置还包括可用码流字节数判断单元7。该可用码流字节数判断单元7判断存储单元中可用码流的字节是否小于或者等于A1,即判断A≤A1是否成立,并在存储单元中可用码流的字节数小于或者等于A1时,启动DMA读取单元,以便继续从内存中读取码流数据,并将读取的码流数据写入存储单元l的空闲区。
在解码完成后,为了使其他单元获得解码完成后的码流地址,在本发明另一实施例中,该装置还包括码流新地址计算单元8。该码流新地址计算单元8计算解码后的新码流地址,并在解码结束后,将解码后的新码流地址传递至上层单元。其中解码后的新码流地址的具体计算步骤如下:
当解码开始信号为有效时,解码后的新码流地址new_addr=start_addr;当码流移除信号为有效时,先判断offset_and_length是否大于7,如果是,解码后的新码流地址new_addr=new_addr+byte_shift,否则解码后的新码流地址new_addr保持不变。
在本发明实施例中,在解码单元对选择的码流数据解码处理完毕后,会输出skip信号和length信号,此时,原有的解码后的新码流地址可能被更新。
图7示出了本发明另一实施例提供的码流数据的读取移除装置的结构,为了便于说明,仅示出了与本发明实施例相关的部分。其中:
DMA读取单元从内存中读取码流数据并将读取的码流数据写入存储单元的空闲区中。当码流数据的移除装置还包括可用码流字节数判断单元时,该DMA读取单元还与可用码流字节数判断单元连接,在DMA读取单元完成一次读码流操作时,向可用码流字节数判断单元输出有效的dma_done信号,并在可用码流字节数判断单元判定存储单元中码流数据的可用字节数小于或者等于A1时启动。
解码单元对多路选择器输出的码流数据进行解码处理,并在解码处理完毕后,返回码流移除信号和码流移除长度。码流数据的移除装置根据返回的码流移除信号和码流移除长度更新码流数据在存储单元中的起始字节位置和码流数据在起始字节内部的比特偏移量,以及解码后的新码流地址以及存储单元中的可用码流的字节数。
以下以一个具体的示例说明本发明实施例提供的解码器的工作原理:
假设解码单元解码需要的码流宽度为32比特,即N=32;存储单元的大小为512比特,即M=512,max_index=64;码流数据在存储单元中的起始字节位置byte_index共有mint(log2 512/8)=6比特,即x=6;由于max_index=2*CNT=64,因此,CNT=32;DMA数据宽度为32比特,即DMA按照字对齐方式传递码流数据;由于N=32,CNT=32,DMA按照字对齐方式传递码流数据,所以根据式(2),即[((N+7)+7)/8]=A0≤CNT-3,可以得到A0=5,根据式(3),即A0<A1=CNT,可以得到A1=32;在解码开始时,可以获取到码流起始地址start_addr和解码前码流在起始字节内部的比特偏移start_offset。
启动解码时,start信号保持一个时钟周期的高电平。此时byte_index=start_bias,offset=start_offset,A=0,new_addr=start_addr。由于DMA按照字对齐方式传递码流数据,因此,byte_index=start_bias=start_addr[1:0]。
由于A=0,A0=5,因此A<A0,所以标记存储单元中的码流数据不可用,由于A=0,A1=32,因此A<A1,所以启动DMA读取单元,DMA读取单元从内存中读取码流数据,并把读取的码流数据写入存储单元的空闲区,在读取码流数据时,按照每次读取写一半存储单元的原则。
当DMA读取单元完成读码流操作时,dma_done信号保持一个时钟周期的高电平,此时,A=CNT-start_bias=32-start_addr[1:0],start_addr[1:0]最大值为3,所以A最小值为29,因此此时满足A≥A0,所以此时标记存储单元中的码流数据可用。
根据byte_index[x-1:2]确定码流数据在存储单元中的起始字,第一选择电路从该起始字的最高位开始按照从高到低的顺序选择N+31比特位的码流数据传递给第二选择电路。由于x=6,N=32,所以,根据byte_index[5:2]确定码流数据在存储单元中的起始字,第一选择电路从该起始字的最高位开始按照从高到低的顺序选择63比特位的码流数据传递给第二选择电路。
根据byte_index[1:0]确定码流数据在上述起始字中的起始字节,第二选择电路从该起始字节的最高位开始按照从高到低的顺序选择39比特位的码流数据传递给第三选择电路。
根据offset确定码流数据在上述起始字节中的偏移位数,第三选择电路从第二选择电路传递来的39比特位的码流数据的最高位起,由高到低顺序,从第(offset+1)位开始选定32比特位码流数据作为解码单元解码所需的码流宽度比特码流数据。由于此时offset=start_offset,因此,根据start_offset确定码流数据在上述起始字节中的偏移位数,第三选择电路从第二选择电路传递来的39比特位的码流数据的最高位起,由高到低顺序,从第(offset+1)位开始选定32比特位码流数据作为解码单元解码所需的码流宽度比特码流数据。
解码单元对选择的码流数据进行解码处理,并返回skip信号和length信号,根据skip信号和length信号更新byte_index、offset、A以及new_addr。
在更新byte_index时,由于skip信号有效,因此,先判断byte_index+byte_shift-max_index≥0是否成立,如果成立,则byte_index=byte_index+byte_shift-max_index,否则,byte_index=byte_index+byte_shift。
在更新offset时,由于skip信号有效,因此,offset=offset_and_length[2:0]。
在更新A时,由于skip信号有效,即为高,判断dma_done信号是高还是低,如果dma_done信号为高,则A=A+CNT-byte_shift,如果dma_done信号为低,则A=A+CNT。
在更新new_addr时,由于skip信号有效,即为高,此时先判断offset_and_length>7是否成立,如果成立,new_addr=new_addr+byte_shift,否则new_shift保持不变。
在更新byte_index、offset、A以及new_addr后,多路选择器继续根据更新后的byte_index和offset从存储单元中选择解码单元解码所需的码流宽度比特码流数据,并将选择的码流数据传送至解码单元进行解码处理,循环执行,直到解码结束,在解码结束后,将最后的new_addr和offset传递至上层单元,以供上层单元使用。在上述过程中,当遇到A≤A1时,则启动DMA读取单元,DMA读取单元从内存中读取码流数据,并将读取的码流数据写入存储单元的空闲区中;当遇到A<A0时,则标记存储单元中的码流数据不可用。
在本发明实施例中,通过采用byte_index和offset来对存储单元中的码流数据进行有效寻址,从存储单元中选择解码单元解码所需的码流宽度比特码流数据,并将选择的码流数据输出至解码单元进行解码处理。对于偏移量计算单元、码流新地址计算单元、可用码流数计算单元等原技术方法和本发明都存在的单元,忽略这些单元内的电平翻转,只考虑对存储单元内码流数据进行移除操作造成的电平翻转问题。当存储单元的大小为M比特时,若采用原技术方法则移除操作时整个存储单元即M比特电平都可能发生翻转;而采用本发明提供的方法,移除操作时存储单元内M比特电平不会发生翻转,只有byte_index的位数即mint(log2 M/8)比特电平可能发生翻转,可能发生电平翻转的比特位数减少了(M-mint(log2 M/8))位,因此,本发明极大的减少了硬件电平翻转的比特数,降低了硬件功耗。”。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (11)

1.一种码流数据的读取移除方法,其特征在于,所述方法包括下述步骤:
计算码流数据在存储单元中的起始字节位置byte_index和码流数据在起始字节内部的比特偏移量offset;
多路选择器根据所述byte_index和offset,从存储单元中选择解码单元解码所需的码流宽度比特码流数据;
将选择的码流数据输出至解码单元进行解码处理,并在解码处理完毕后,输出码流移除信号skip信号和码流移除长度length信号,以便根据所述skip信号和length信号更新所述byte_index和offset。
2.如权利要求1所述的方法,其特征在于,所述计算码流数据在存储单元中的起始字节位置byte_index的步骤具体为:
当解码开始信号start信号为有效时,byte_index=start_bias,其中start_bias表示码流起始偏移字节数,当直接存储访问DMA按照半字对齐方式传送码流数据时,start_bias=start_addr[0];当DMA按照字对齐方式传送码流数据时,start_bias=start_addr[1∶0],其中start_addr表示码流起始地址,start_addr[0]表示码流起始地址的最低位,start_addr[1∶0]表示码流起始地址的低两位;
当码流移除信号skip信号有效时,先判断byte_index+byte_shift-max_index≥0是否成立,如果成立,则byte_index=byte_index+byte_shift-max_index,否则byte_index=byte_index+byte_shift,其中byte_shift表示offset_and_length右移3位后的值,offset_and_length表示offset与length之和,max_index表示存储单元中包含的字节数。
3.如权利要求1所述的方法,其特征在于,所述计算码流数据在起始字节内部的比特偏移量offset的步骤具体为:
当解码开始信号start信号为有效时,offset=start_offset,其中start_offset表示解码前码流在起始字节内部的比特偏移;
当码流移除信号skip信号有效时,offset=offset_and_length[2∶0],其中offset_and_length表示offset与length之和,offset_and_length[2∶0]表示offset_and_length的低3位。
4.如权利要求1所述的方法,其特征在于,所述多路选择器根据所述byte_index和offset,从存储单元中选择解码单元解码所需的码流宽度比特码流数据的步骤具体为:
根据byte_index[x-1∶2]确定码流数据在存储单元中的起始字,第一选择电路从该起始字的最高位开始按照从高到低的顺序选择N+31比特位的码流数据传递给第二选择电路,其中x表示byte_index位数,N表示解码单元解码所需的码流宽度,byte_index[x-1∶2]表示byte_index右移两位后的值;
根据byte_index[1∶0]确定码流数据在上述起始字中的起始字节,第二选择电路从该起始字节的最高位开始按照从高到低的顺序选择N+7比特位的码流数据传递给第三选择电路,其中byte_index[1∶0]表示byte_index低两位;
根据offset确定码流数据在上述起始字节中的偏移位数,第三选择电路从第二选择电路传递来的N+7比特位的码流数据的最高位起,由高到低顺序,从第(offset+1)位开始选定N比特位码流数据作为解码单元解码所需的码流宽度比特码流数据。
5.如权利要求1至4任一权利要求所述的方法,其特征在于,所述方法还包括下述步骤:
计算存储单元中可用码流的字节数A;
当A<A0时,标记存储单元中的码流数据不可用,否则标记存储单元中的码流数据可用,其中A0表示为保证解码正确,存储单元中所存放码流的最小字节数。
6.如权利要求5所述的方法,其特征在于,所述方法还包括下述步骤:
判断A≤A1是否成立,并在A≤A1成立时,启动DMA读取单元,DMA读取单元从内存中读取码流数据,并将读取的码流数据写入存储单元的空闲区,其中A1表示存储单元一半空间所包含的字节数。
7.如权利要求5所述的方法,其特征在于,所述计算存储单元中可用码流的字节数A的步骤具体为:
当start信号为高时,A=0;
当dma_done信号为高,skip信号为低时,判断first_read为高还是低,如果为高,则A=CNT-start_bias,如果为低,则A=A+CNT,其中dma_done信号为DMA完成一次读码流操作的标志,first_read为高标志当前读码流操作为本次解码的第一次DMA读码流操作,CNT为DMA每次传送的字节数;
当dma_done信号为低,skip信号为高时,则A=A-byte_shift;
当dma_done信号为高,skip信号为高时,则A=A+CNT-byte_shift。
8.一种码流数据的读取移除装置,其特征在于,所述装置包括:
存储单元,用于存储DMA读取单元从内存中读取的码流数据,为解码单元解码准备码流数据;
起始字节位置计算单元,用于计算码流数据在存储单元中的起始字节位置byte_index;偏移量计算单元,用于计算码流数据在起始字节内部的比特偏移量offset;
多路选择器,用于根据所述起始字节位置计算单元计算得到的byte_index以及偏移量计算单元计算得到的offset,从存储单元中选择解码单元解码所需的码流宽度比特码流数据,并将选择的码流数据输出至解码单元。
9.如权利要求8所述的装置,其特征在于,所述多路选择器包括:
第一选择电路,用于根据byte_index[x-1∶2]确定码流数据在存储单元中的起始字,第一选择电路从该起始字的最高位开始按照从高到低的顺序选择N+31比特位的码流数据传递给第二选择电路,其中x表示byte_index位数,N表示解码单元解码所需的码流宽度,其中byte_index[x-1∶2]表示byte_index右移两位后的值;
第二选择电路,用于根据byte_index[1∶0]确定码流数据在上述起始字中的起始字节,第二选择电路从该起始字节的最高位开始按照从高到低的顺序选择N+7比特位的码流数据传递给第三选择电路,其中byte_index[1∶0]表示byte_index低两位;
第三选择电路,用于根据offset确定码流数据在上述起始字节中的偏移位数,第三选择电路从第二选择电路传递来的N+7比特位的码流数据的最高位起,由高到低顺序,从第(offset+1)位开始选定N比特位码流数据作为解码单元解码所需的码流宽度比特码流数据。
10.如权利要求8或9所述的装置,其特征在于,所述装置还包括:
可用码流字节数计算单元,用于计算存储单元中可用码流的字节数A;
码流可用标记单元,用于根据存储单元中可用码流的字节数标记存储单元中的码流数据是否可用,当A<A0时,标记存储单元中的码流数据不可用,否则标记存储单元中的码流数据可用,其中A0表示为保证解码正确,存储单元中所存放码流的最小字节数。
11.如权利要求10所述的装置,其特征在于,所述装置还包括:
可用码流字节数判断单元,用于判断A≤A1是否成立,并在A≤A1成立时,启动DMA读取单元,DMA读取单元从内存中读取码流数据,并将读取的码流数据写入存储单元的空闲区,其中A1表示存储单元一半空间所包含的字节数。
CN201010186562.1A 2010-05-28 2010-05-28 一种码流数据的读取移除方法和装置 Active CN102263562B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201010186562.1A CN102263562B (zh) 2010-05-28 2010-05-28 一种码流数据的读取移除方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201010186562.1A CN102263562B (zh) 2010-05-28 2010-05-28 一种码流数据的读取移除方法和装置

Publications (2)

Publication Number Publication Date
CN102263562A true CN102263562A (zh) 2011-11-30
CN102263562B CN102263562B (zh) 2014-02-05

Family

ID=45010052

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201010186562.1A Active CN102263562B (zh) 2010-05-28 2010-05-28 一种码流数据的读取移除方法和装置

Country Status (1)

Country Link
CN (1) CN102263562B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111080508A (zh) * 2019-11-21 2020-04-28 中国航空工业集团公司西安航空计算技术研究所 一种基于dma的gpu子图像处理方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101189585A (zh) * 2005-05-31 2008-05-28 爱特梅尔公司 字节可寻址存储器的提取索引寻址

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101189585A (zh) * 2005-05-31 2008-05-28 爱特梅尔公司 字节可寻址存储器的提取索引寻址

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111080508A (zh) * 2019-11-21 2020-04-28 中国航空工业集团公司西安航空计算技术研究所 一种基于dma的gpu子图像处理方法
CN111080508B (zh) * 2019-11-21 2023-06-13 中国航空工业集团公司西安航空计算技术研究所 一种基于dma的gpu子图像处理方法

Also Published As

Publication number Publication date
CN102263562B (zh) 2014-02-05

Similar Documents

Publication Publication Date Title
CN101079322B (zh) 多位存储装置和存储系统
CN101162449B (zh) Nand flash控制器及其与nand flash芯片的数据交互方法
KR101503554B1 (ko) 에일리어스 어드레싱을 이용한 가변 길이 인스트럭션 인코딩의 구현
CN104794067A (zh) 堆栈存储的变量值预测
CN102339641A (zh) 检错/纠错校验模块及该模块读写数据的方法
CN101419841A (zh) 一种flash存储器擦写方法
CN103701458A (zh) 电子计数器以及用于电子计数的方法
CN104299637A (zh) 快闪存储器装置及其运作方法
US7779241B1 (en) History based pipelined branch prediction
CN100492279C (zh) 对复杂指令译码生成微码的译码装置和方法
US5619514A (en) In-place present state/next state registers
CN101251793B (zh) 信息处理设备
CN100508604C (zh) 算术编码电路和算术编码控制方法
CN105843700A (zh) 一种控制器
US20140181621A1 (en) Method of arranging data in a non-volatile memory and a memory control system thereof
CN105242904A (zh) 用于处理器指令缓冲与循环缓冲的装置及其操作方法
CN102263562B (zh) 一种码流数据的读取移除方法和装置
CN101477494B (zh) 一种写入数据的方法和存储系统
CN110827902A (zh) 一种随机编码方法及固态硬盘
CN100365592C (zh) 基于mcs-51架构的16m字节程序存储器寻址空间扩充方法
CN101699391B (zh) 提高Java处理器取指令带宽的字节码缓冲装置及使用方法
CN101340191B (zh) 一种解码器和解码方法
CN110554886A (zh) 数据拆分结构、方法及其片上实现
CN109471813A (zh) 一种数据插入方法及相关装置
CN201548950U (zh) 用于提高Java处理器取指令带宽的字节码缓冲装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: Method for reading and removing code stream data and apparatus thereof

Effective date of registration: 20171102

Granted publication date: 20140205

Pledgee: China Co truction Bank Corp Guangzhou economic and Technological Development Zone sub branch

Pledgor: Anyka (Guangzhou) Microelectronics Technology Co., Ltd.

Registration number: 2017990001008

PE01 Entry into force of the registration of the contract for pledge of patent right
PC01 Cancellation of the registration of the contract for pledge of patent right
PC01 Cancellation of the registration of the contract for pledge of patent right

Date of cancellation: 20181227

Granted publication date: 20140205

Pledgee: China Co truction Bank Corp Guangzhou economic and Technological Development Zone sub branch

Pledgor: Anyka (Guangzhou) Microelectronics Technology Co., Ltd.

Registration number: 2017990001008

PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: Method for reading and removing code stream data and apparatus thereof

Effective date of registration: 20190130

Granted publication date: 20140205

Pledgee: China Co truction Bank Corp Guangzhou economic and Technological Development Zone sub branch

Pledgor: Anyka (Guangzhou) Microelectronics Technology Co., Ltd.

Registration number: 2019440000051

PE01 Entry into force of the registration of the contract for pledge of patent right
PC01 Cancellation of the registration of the contract for pledge of patent right

Date of cancellation: 20200320

Granted publication date: 20140205

Pledgee: China Co truction Bank Corp Guangzhou economic and Technological Development Zone sub branch

Pledgor: ANYKA (GUANGZHOU) MICROELECTRONICS TECHNOLOGY Co.,Ltd.

Registration number: 2019440000051

PC01 Cancellation of the registration of the contract for pledge of patent right
CP01 Change in the name or title of a patent holder

Address after: 3 / F, C1 area, innovation building, 182 science Avenue, Science City, Guangzhou, Guangdong 510000

Patentee after: Guangzhou Ankai Microelectronics Co.,Ltd.

Address before: 3 / F, C1 area, innovation building, 182 science Avenue, Science City, Guangzhou, Guangdong 510000

Patentee before: ANYKA (GUANGZHOU) MICROELECTRONICS TECHNOLOGY Co.,Ltd.

CP01 Change in the name or title of a patent holder
CP02 Change in the address of a patent holder

Address after: 510555 No. 107 Bowen Road, Huangpu District, Guangzhou, Guangdong

Patentee after: Guangzhou Ankai Microelectronics Co.,Ltd.

Address before: 3 / F, C1 area, innovation building, 182 science Avenue, Science City, Guangzhou, Guangdong 510000

Patentee before: Guangzhou Ankai Microelectronics Co.,Ltd.

CP02 Change in the address of a patent holder