用于对视频数字数据流进行解码的系统和方法与流程

文档序号:12183666阅读:367来源:国知局
用于对视频数字数据流进行解码的系统和方法与流程

本披露涉及对数据进行解码,并且更具体地涉及对视频数字数据流的许多仓进行解码。



背景技术:

音频和视频编码标准(AVS,也包括AVS+)规定了用于音频和视频编码的新标准及其传输协议。AVS使用基于块的编码过程,其中,图像或帧被划分为块(通常为4x4或8x8块),并且这些块被变换为系数、被量化并且被熵编码。熵H(X)是可以无损地对具有字母表{x1,x2,……,xN}的离散源X进行编码的最小速率。熵定义了代码C,该代码允许以近似熵速率对源字母表进行编码。在使用可变长度码(VLC)的情况下,这是可能的。先决条件是整数比特分配,即,用整数个比特对每个符号进行编码。这种约束通过算术编码得到了克服,算术编码将代码分配给整条消息而不是源符号。用一小部分比特对这条消息的每个符号进行编码,因而实现了更接近于熵的最终速率。

变换的数据不是实际的像素数据,而是在预测操作之后在帧内的残差数据,即,帧或图像内的块到块。这也被称为运动预测。在AVS中,对量化的变换系数的编码利用了变换的特征的优点来改善压缩。使用被称为级别(Level)、运行(Run)、符号(Sign)和块结束(EOB)标志位的序列来对这些系数进行编码。级别和运行对应于视频像素的数值。例如,编码在相反的之字形方向上进行并且针对变换的块按照之字形扫描顺序从最后一个非零系数开始。这要求EOB标志位。使用一元二进制化对级别减一(Level-minus-one)和运行数据进行二进制化,并且使用用于变换的系数数据的基于上 下文的熵算术编码对各个仓进行编码。

AVS中的高级熵编码具有三个主要过程:1)二进制化、2)上下文建模、以及3)二进制算术编码(BAC)。二进制算术编码是对数域和原始域的混合。AVS使用域算术编码并且具有大约为10的较高的仓比特比率,不像诸如大约为3.5的H264/H265的其他标准。这种较高比率源自用于变换的系数的一元二进制化。由于较高的仓比特比率,每个周期一个仓不足以实现要求高达每秒2G个仓的规范。



技术实现要素:

提供本概述以引入在以下详细描述中进一步描述的一系列概念。本概述并不旨在标识所要求保护的主题的关键或必要特征,也不旨在用于帮助限制所要求保护的主题的范围。

一种视频解码器包括输入端,该输入端被配置成用于接收有待解码的视频数字数据流的多个仓。处理器和存储器与该输入端相关联,并且被配置成用于基于包含多个增量范围值和多个概率符号的表格在给定的处理周期中进行对该多个仓中的许多仓的并行解码。相应地,有可能以显著更低的时钟来维持较高的每秒仓数要求,并且还使得作为视频熵解码器一部分的硬件在功耗方面更高效。

概率符号各自可以包括符号的对数概率,并且给定的处理周期可以包括单个时钟周期。处理器可以被配置成用于为每个符号计算增量范围值并且将其存储在存储器中。处理器还可以被配置成用于计算这些概率符号并且将所计算的这些概率符号存储在存储器中。表格可以包括多列或多行,每列或每行与对应的仓相对应并且存放增量范围值和概率符号,其中,处理器被配置成用于对每行或每列进行迭代并且更新增量范围值和概率符号。表格可以包括两级表格,该两级表格具有:包含许多增量范围值和概率符号的第一粗糙级别;以及包含任何其余增量范围值和概率符号的第二精细级别。处理器可以被配置成用于在并行解码之后进行逆二进制化以便形成多个已 经被编码的原始符号。

一种对视频数字数据流进行解码的方法包括:在具有与其相关联的处理器和存储器的解码器内接收有待解码的视频数字数据流的多个仓。基于存储在存储器中的包含多个增量范围值和多个概率符号的表格在给定处理周期内并行地处理所述多个仓中的许多仓以便对所述许多仓进行解码。

这些概率符号可以各自包括符号的对数概率。在给定处理周期期间的处理可以包括在单个时钟周期内处理该许多仓。每个符号的增量范围值被计算并存储在存储器中。这些概率符号被计算并存储在存储器中。

表格可以包括多列和多行,每列和每行与对应的仓相对应并且存放增量范围值和概率符号。该方法进一步包括:对每列或每行进行迭代并且更新增量范围值和概率符号。表格可以包括两级表格,该两级表格具有:包含许多增量范围值和概率符号的第一粗糙级别;以及包含任何其余增量范围值和概率符号的第二精细级别。该方法可以包括:在并行解码之后进行逆二进制化以便形成多个已经被编码的原始符号。

附图说明

其他目的、特征和优势将从下面结合附图给出的详细说明中变得显而易见,在附图中:

图1是流程图,描绘了根据非限制性示例的解码过程。

图2是根据非限制性示例的视频解码器的基本组件的高级框图。

图3是根据非限制性示例的视频解码器操作的高级框图。

图4是根据非限制性示例的视频解码器的更详细框图。

图5是逻辑图,示出了根据非限制性示例的解码器操作的伪代码。

图6是根据非限制性示例的级联多仓解码器的高级图示。

图7A和图7B是框图,示出了根据非限制性示例的图6的级联 多仓解码器的更详细细节。

图8是表格,示出了根据非限制性示例的一元二进制化的示例。

图9是根据非限制性示例的基于表格的多仓解码器的高级图示。

图10是根据非限制性示例的在多仓解码器中使用的两级表格的高级图示。

图11A和图11B是示出根据非限制性示例的基于表格的多仓解码器的更详细细节的框图。

图12是图表,示出了根据非限制性示例的用于仓/周期的多仓处理的结果。

图13是图表,示出了根据非限制性示例的用于比特/周期的多仓处理的结果。

具体实施方式

现在将参照附图在下文中更为全面地描述不同的实施例,在附图中示出了优选实施例。可以对许多不同的形式进行阐述,并且所描述的实施例不应被解释为被限制到在此所阐述的实施例。相反,提供这些实施例以使得本披露将是全面和完整的,并且将向本领域技术人员完全传达范围。

在以下描述中,参照用于视频编码的AVS标准和正在开发中的AVS2标准和AVS+描述各实施例。然而,本披露不限于AVS、AVS+或AVS2,而是可应用于与AVS有关的其他视频编码和解码标准,包括可能的未来标准。贯穿本说明书,术语AVS将用于总体上对应于AVS的这些不同版本。

在AVS中,帧可以包含一个或多个切片,并且编码和解码可以在逐帧、逐切片、逐画面或逐分块的基础上发生。可能的是,帧可以被划分为用于屏幕内容的一个区域和用于自然视频的另一个区域,有时被称为分区屏幕。可以使用多视图编解码器。

现在接着对AVS编码和解码进行总体描述,以便根据非限制性示例获得AVS多仓解码的更好理解。

AVS编码器使用熵编码,这种熵编码无损地对不仅包括作为变换量化系数的直接反映的数据而且还包括与当前块以及允许跳过零值数据的标志位有关的数据(诸如帧内预测模式)的符号进行压缩。由于普遍都是零值系数,对量化的系数进行“级别运行”编码。这涉及生成级别运行排序的对,其中,每个对具有其后是按照反向扫描排序的多个连续零值系数的非零系数的幅值。对表示经变换量化系数和与当前块相关的其他数据的符号进行一元二进制化和熵编码。

这种级别运行编码涉及按照反向之字形扫描顺序扫描经量化变换的系数并且生成作为“级别”(即,非零系数的幅值)和作为多个连续零值系数在下一个非零系数之前按照反向之字形顺序在非零系数之后的数量的“运行”的多个对。级别运行对以一元代码进行二进制化并且被熵编码,通常是通过算术熵编码。在AVS中,解码器接收兼容比特流并且产生经重构的视频。熵解码器采用经量化变换的系数的熵解码块并且对其进行去量化从而将在编码时进行的量化反向。

AEC(高级熵编码)算法提供了较高的编码效率。编码和解码两者在AEC中均发生在仓水平上。二进制化将数字(例如,对应于视频像素值的“五”)的值例如改变为二进制形式。指向该值的这个特定的二进制字符串序列被称为二进制化,即,仓。每个仓被编码以便获得压缩输出。

一元二进制化用于在AVS中对系数进行编码。在对每个仓进行编码之前选择特定的上下文。在对每个仓进行编码之后,保存所产生的上下文以便使得能够进行后续编码。与上下文一起,对范围(被称为s1和t1)进行修改,并且在后续编码中使用这个范围。在解码时遵循反向过程。为了对仓进行解码,已知范围和相关上下文。因为是在对仓进行解码之后对上下文选择和范围进行标识,由于数据相关性,对新的仓的后续解码必须等待。在更通用的AVS系统中,可能的是应用前瞻方法以避免后续仓解码作为每个仓一个周期的方 法的一部分。经常前瞻方法形成树分支,其中,预先计算可能的组合。基于当前计算的仓的结果,直接选择后续预先计算的仓。这些树分支取决于已经被作为目标的深度(仓的数量)。这导致更大的硬件成本,硬件成本以指数方式随着每个附加深度增加。

针对常规的AVS解码器,当在200MHz运行试验时,获得对应于每个周期一个仓方法的样本流的结果(表1):

表1

每秒比特数和每秒仓数的流性能分析

通过常规的AVS解码器,这个系统可以实现一个仓/周期275MHz。为了实现更新和更令人期望的大约200Mbps、2Gbin/s4K@60fps的AVS目标,时钟要求必须约为1,000MHz从而满足在表1中示出的那些流要求。期望使用更高的时钟,以便解码每秒多个仓并且用更高的速率消耗比特。于是,可能令人期望的是改善系数的解码时间以及实现以上所标识的那些目标。

常规的AVS解码器接收编码比特流作为帧序列,每个帧对应于不同的时间点。该解码器在逐块的基础上一次处理一个帧(或切片)。在包括去量化器和逆频谱变换器的反馈回路中使用时间预测。残差数据在空间域中被输入到频谱变换器中并且该数据对应于以几何行 和列安排的像素。输出数据包含有关可以从其对像素进行重构的像素的频率信息。AVS使用变换编码并且在块上操作,例如,包括四个8x8变换块的16x16宏块。

变换系数指示AVS处理中存在三个优点,这三个优点可以用于实现以下目标:(1)当仓的解码值等于一时,对系数进行一元编码并且终止句法元素;(2)当存在LPS(最小概率符号)时,发生再归一化;以及(3)Cwr(快速自适应因数)具有三个值。在初始解码之后,这个值获得固定值,并且因此,其帮助减少可能的树分支。然而,直到获得固定值时才发生任何多仓解码处理,因为其可能限制性能。以上所标识的前两个算法优点允许系统移除树分支并且实现单个硬件管道以便一次计算多个仓。

现在参照图1,在20示出了根据非限制性示例用于对视频数字数据流进行解码的过程的高级流程图。该过程开始(框22)并且该过程接收有待解码的视频数字数据流的多个仓(框24)。在一个示例中,对应于最高概率符号的对数概率的增量范围值和概率符号被计算并被存储在存储器中(框26)。该方法对表格的每一行进行迭代并且更新范围值和概率符号(框28)。该方法在并行解码之后继续逆二进制化以便形成多个已经被编码的原始符号(框30)并且然后结束(框32)。

现在参照图2,根据非限制性示例,通过AVS解码器40的数据流被示出并且示出了进入AVS预处理器44的视频比特流42,其后是缓冲器46中的中间缓冲和解码控制器48中的进一步处理。输出帧50。解码器40还将使用解析、熵解码和逆变换。主机处理器52对帧水平进行编程和控制。解码器控制器48控制帧水平以下的解码。在中间缓冲器46中,数据被提供给解码器控制器48以便完成解码。中间缓冲器46可以包括被熵解码的数据。

视频数字数据流是形成编码图片的表示的比特序列,这些编码图片形成一个或多个编码视频序列。起始码是嵌入在比特流中的32比特的唯一码字。有时被称为反仿真的仿真阻止允许形成视频数字 数据流的字节具有所丢弃的目标字节的两个较低有效位。AVS使用无损数据压缩,诸如Golomb编码和基于上下文的自适应二进制算术编码(CBAC)。切片是在光栅扫描中连续地排序的整数数量的宏块。宏块是16x16亮度样本块和两个相应的色度样本块。处理器包括起始码检测(SCD)和仿真阻止代码移除或反仿真代码移除(ECR,也被称为AECR)。系统包括用于片上系统(SOC)应用的互连作为总线/NOC的一部分。

现在参照图3,示出了根据非限制性示例的图2的预处理器44的高级框图。在AVS解码器40中,预处理器44位于存放编码比特流的比特缓冲器54与经由总线55向解码控制器48输入数据的中间缓冲器46之间。预处理器包括分别与桶式移位器60和输出级62进行互操作的总线读插件56和总线写插件58。解析器70针对句法元素解析、算术协处理和输出数据格式化而操作。预处理器44提供对处于上下文自适应熵编码形式的高级熵编码(AEC)符号进行解码的硬件能力。预处理器44从输入比特缓冲器54接收数据,比特流与解析比特流中的头部所需的那些参数一起存储在该缓冲器中。输出存储在中间缓冲器46中。预处理器在帧水平上对用于解码控制器48的数据进行预处理。

现在参照图4,示出了根据非限制性示例的在解码器40中使用的预处理器44的更详细框图。比特缓冲器54和中间缓冲器46连接到对应的读和写总线插件56、58。数据经由解多路复用器76从读总线插件56流过起始码检测和仿真代码移除(ECR)电路74到桶式移位器(BSH)60进入具有各种协处理器的解析器70。这些各种协处理器包括获取比特80、CBAC解码器82、I-bin 84(逆二进制化)和Golomb 86协处理器。每个协处理器与句法元素解码器(SED)90互操作,该解码器进而与配置和状态寄存器92进行互操作。来自句法元素解码器90、获取比特协处理器80、I-bin协处理器84和Golomb协处理器86的数据被多路复用88到被示出为输出数据流(ODF)模块的输出级62,该模块包括逆二进制化模块94和运行/ 级别(RL)对重排序96。输出级62可以被形成为直接存储器存取(DMA)单元。在这个解码器40中,以下更加详细描述的多仓表格处理发生在CBAC解码器协处理器82中。

比特缓冲器54是存放压缩基本流(ES)数据的环形缓冲器。预处理器44使用比特流处置来读取比特缓冲器、检测起始码、移除ECR74中的仿真阻止代码,并且使用桶式移位器60进行比特对准操作。解析器70读取并分析AVS句法并且用这些各种协处理器对CBAC句法进行解码。比特缓冲器54还包含形成编码图片的表示的比特序列以及形成由起始码分隔开的一个或多个编码视频序列的相关联数据,这些可以在比特缓冲器中被字节对准。每个起始码包括起始码前缀,其后是起始码值。起始码前缀是具有0值的23个比特的字符串,其后是具有值1的单个比特。所有起始码被字节对准。

某些“句法元素”(即,符号)可以包含与起始码前缀中相同的比特流结构并且被称为起始码仿真。这种比特流结构包括视频流,具有“N”个序列并且每个序列包括高达“N”个帧的不同帧,并且每个帧包括头部和“N”个切片。该序列包括序列头部,该序列头部包括有关性能分析、级别、分辨率、格式、帧速率和比特率以及其他细节的信息。

视频帧还包括I或PB头部,其中,I头部包括有关G图片、图片结构和字段信息的信息。PB头部包括有关S图片、图片编码类型、图片结构和字段信息的信息。预处理器44将解析并预处理数据。预处理器44忽略大多数其他起始码。

在解码期间,读取目标字节,并且预处理器44检查目标字节之前的两个字节。如果三个字节形成比特流“0000 0000 0000 0000 0000 0010”,则丢弃目标字节的两个最低有效位(LSB)。任何用户数据和扩展数据不形成具有多于21个连续“0”的字符串。

预处理器44解析该数据并且使用配置寄存器92绕过其他句法元素分段。在AVS规范中发现作为符号的基本句法元素。在AVS中,RS1是针对高级熵编码定义的一个8比特变量。对于RS1,AVS 工作组将在编码器中添加限制以便避免输出连续0>255并且将RS1改变为解码器中的16比特并且确保不存在解码异常。在图4中示出的读和写总线插件56、58读取比特流并且写入分离的缓冲器54、46。写总线插件58将用于多个直接存储器存取电路(DMA)(诸如用于ODF 62)的数据交织到单个总线接口中。使用在发布实际解码开始命令之前完成的配置阶段完成插件56、58的编程。通过端口对配置和状态寄存器92进行编程。桶式移位器60操纵比特对准数据并且包括在解析器70中检测并标记由句法元素解码器90所使用的起始码的起始码检测和标记(SCD)的子功能以便取决于起始码和从比特流移除反仿真的反仿真代码而开始操作。

桶式移位器60由解析器70控制并且包括句法元素解码器90,其中,对比特流句法元素进行解析。当检测到起始码并且解析器70检查起始码的类型时,这个功能发生。如果起始码是切片起始码,其开始解析并且基于编码类型来控制协处理器80、82、84、86。

解码器40使用基于上下文的二进制算术编码(CBAC)解码器82,并且这些仓被解码以便制作仓字符串。如果通过二进制化匹配发现仓字符串有效,当前句法元素的解码完成并且通过解二进制化产生句法元素值。解码符号作为句法元素被输入到ODF 62中,这包括逆量化(IQ)94和RL对重排序96。ODF 62格式化并作为缓冲器操作。中间缓冲器(IB)46包含像素解码流水线对流进行解码所需的熵解码数据并且定义由其他电路块用于提取所需数据的数据格式。针对存储器使用来对这个中间缓冲器46进行优化。在熵解码之后,每个切片的任何切片状态和错误信息被存储在中间缓冲器的开始部分并且每个状态和错误信息字的存储量对于每个切片来说是相同的,并且按照与切片相同的顺序对区域进行安排。

图4中所示出的CBAC解码协处理器82可以包括用于如图6的示例中示出的多仓解码器处理或如图9和图10中示出的优选的基于表格的方法的级联架构。根据非限制性示例,解码算法包括上下文选择、仓解码和上下文更新。当在硬件中将上下文存储器作为寄存 器维护时,可以针对每个仓在单个周期中完成这些处理步骤。在一个周期的一小部分中尝试计算步骤并且这些计算步骤使用硬件复制来将输出一级联并馈送到另一个的输入。

用于解码元素的仓解码算法被分为三个部分以便尽可能并行地进行独立的计算。仓解码包括以下子部分:计算[CL]、检查[CK]以及更新[UP],针对以下解释的每个级联解码元素,在图5的示例源代码中示出了这些子部分并且在图6中示出的级联架构中使用这些子部分。在图5中示出的示例源代码对应于用于图6中示出的仓的解码元素110中的解码功能,示出了CBAC解码协处理器82。图6中的级联解码元素110各自以作为S1和T1的范围和概率符号操作,该概率符号在本示例中为最高概率符号的对数概率(LGPMPS)。每个解码元素110为图5的伪代码中示出的最高概率符号形成计算、检查和更新。来自每个解码元素110的结果被从检查序列传递到优先级编码器112中。在多路复用器电路114中对输出进行多路复用。针对如从每个解码元素110的更新部分到多路复用器114的箭头中指示的概率符号和范围,发生更新。输出N规定检查(CK)的哪一次迭代提供终止,而在上下文/全局范围中挑选并更新作为最高概率符号的对数概率的相应的概率符号以及作为S1和T1值的范围。每个级联解码元素110对应于如图7A和图7B中示出的二进制算术解码器(BAD)元素。在这些附图中,正常的二进制算术解码器元素具有首字母缩略词BAD。用首字母缩略词MPS引用最高概率符号并且用LPS引用最低概率符号。

因为涉及范围的s1和t1保持常量,所以无需像硬件那样的树分支。因为对句法元素或符号的终止基于等于1的仓值,一旦检查(CK)检测到仓值1,系统终止解码。结果被馈送到如图6所示的优先级编码器112,其中,优先级顺序从左到右。用信号通知仓值1的最前面的块被选择并且输出被选择。丢弃对后续块的所有计算。结果是,在逻辑序列的结束处,系统跳过多个仓并且输出N指示仓的数量并且还输出最终仓,当句法元素中的仓的数量超过级的数量时,这是 有必要的。系统继续在下一个周期中对相同的元素进行解码。

然而,图6中示出的这个级联电路不是可容易地扩展的。针对解码器元素110的每个级,消耗时钟周期的附加一小部分,导致随着多仓能力增加而更高的时间段。满足比特流的最小频率也是约束。增加级将影响最大可实现的比特率。

在图7A和图7B中示出了级联解码元素110的更加详细的链,示出了级联解码元素110,每个元素被形成为针对单个时钟周期的正常二进制算术解码器(BAD)元素但是级联在一起,并且示出了优先级编码器112和多路复用器114。以下图例有助于理解流程:

-RVNX复合地表示来自LPS-部分(LPS-PART)硬件(用于最低概率符号的解码元素)的范围(RANGE)、值(VALUE)和N B_BITS_CONSUMED。

-下标变量(VARIABLES)(X)在由级联硬件块处理之后用信号通知经修改的值VARIABLES。

-RX表示来自MPS(最高概率符号)情况(CASE)硬件的针对解码元素110的范围。

-TVX表示来自MPS-应用(MPS-APPLICATION)硬件解码元素110的TMP_RANGE和其他时间变量。

-CKOX表示来自MPS-CASE硬件解码元素110的仓决策输出(来自CK子分离)。

X是来自集合[E,L0,L1,L2...Lm]的仓。

每个变换系数(ELSR)是以下四个值(顺序地)的一部分:

-可选块结束(EOB)

-级别值(LEVEL)

-级别符号(SIGN)

-运行值(RUN)

图7A和图7B中所示出的解码元素110的级联硬件能够在单个 周期中解码来自EL仓字符串(LEVEL值)的所有仓。优先级编码器112输出(LEVEL)还用于选择有待用于后续仓解码的RVN和上下文的正确输出。

图6、图7A和图7B中示出的级联方法不形成如一个仓/一个周期前瞻方法中实现的树状结构。这是节省硬件成本的单个级联和硬件块链(不具有树分支)。为了在单个周期内完全地解码EL(来自ELSR),有必要具有深度级联硬件解码元素110的2048个级。该设计中的任何可实现的频率都将较低。对于如之前所描述的要求,这是在大约0.8MHz[1/(2047*0.6ns+1.1ns)],其中,0.6ns负责一个级所需的时间,而1.1ns是固定开销,并且不能存在实现目标的折中点,并且因此,本发明提出了一种在硬件中用于消除这些级的新颖的基于表格的多仓解码器。这被称为基于表格的多仓算术解码。

为了使得这种级联方法可扩展,可能的是采用另一个算术变量作为lgpmp(最高概率符号的对数概率),这个变量具有从0到1023的范围。因为在被馈送给下一个的每一个解码器元素级中存在固定的计算,可以对其进行预计算并将其保持在ROM表格中或者用带有导线的多路复用器对其进行管理。可以借助于表格帮助来分解这个级联串行数据。基于lgpmp,如果有待使用N级多仓过程,有可能为中间变量(lgpmp、t1和s1)创建具有值的带有N列(或行)的表格。一次访问一列(或一行)。每个都包括与1、2、...N个仓相对应的预先计算的值。每个值被预先计算,假设CK(检查)导致错误(FALSE)。在图5的伪代码步骤之后用以下步骤的计算(CL)、检查(CK)和更新(UP)序列计算有效值:

{CL,CK=FALSE,UP}x N

并行CK步骤硬件就位用于每N个仓。来自每个CK步骤的输出将一次到达。其分解级联并且允许在不降低频率的情况下用多仓计 算进行扩展。并行CK步骤的输出被馈送到如在以上的分级或级联多仓处理中所解释的优先级编码器112。该过程的其余部分是相同的。可以用表格方法使得多仓处理可扩展。

SIGN和EOB是单个的仓,而可以基于其值在多个仓中对RUN和LEVEL进行编码。为了对EOB仓进行解码,需要两个上下文。为了对SIGN进行解码,不需要上下文。为了对RUN或LEVEL的仓进行解码,基于表格的系统需要取决于仓的最多两个上下文。除了RUN或LEVEL的第一个仓之外,用于后续仓的上下文保持相同。LEVEL和RUN如图8的示例中所示的那样被一元编码。

可能的是使用涉及具有基于有限前瞻树分支方法的多仓处理和分级结合多仓处理和表格方法。用表格查找和仓终止(BIN-TERM)示出了仓、Sign和EOB的基本组成。不是分开地对SIGN和EOB进行解码,可以如下对着两个仓进行分组:

*[EOB,LEVEL]=>EL

*[SIGN,RUN]=>SR

EL和SR的这种分组允许在单个周期中对EOB+LEVEL进行组合解码和在单个周期中对SIGN+RUN进行组合解码。EOB+L0是与L(1...N-1)+LN近似相同的持续时间。同样,SIGN+R0是与R(1...N-1)+RN近似相同的持续时间。EOB+L0或SIGN+R0可以被称为ELSR-顶部(ELSR-TOP)并且L(1...N-1)+LN或R(1...N-1)+RN可以被称为ELSR-底部(ELSR-BOTTOM)。为了增加频率(以便满足比特率),可能的是在一个周期中对ELSR-TOP进行解码并且在另一个周期中对ELSR-BOTTOM进行解码。

除了图7A中的E和L0之外的级从一个MPS-CASE HW级110级联到另一个。RANGE(RX)也以相同的方式级联。基于多仓表格的方法中的表格被构建为跳过那些多个级并且消除硬件操作员。为了尽可能地将表格大小保持较小,系统尽可能地在不具有对可实 现的性能的显著影响的情况下消除变量参与。如果表格是在CK(CKOX)的结果永远为假的基础上构建的,大部分变量被消除。不进行参与的变量是比特(BITS)、值(VALUE)(VIN)、TVE、CX(LPS)、RVNX。假设CWR=5,lgpmp计算被减少。有效地,系统消除了CYCNO(周期数量)的变量参与。MPS(来自上下文(CONTEXT))也可以被消除。假设MPS为0,表格被构建为。系统采用一元二进制化。如果MPS=1并且CKOX为0,解码终止。

留下用于表格的以下三个变量:RANGE,其实际上是1)s1(16比特)和2)t1(8比特)以及3)在本示例中对应于最高概率符号的对数概率的符号的概率,LGPMPS(10比特)。给定LGPMPS的当前值,在跳过MPS-CASE的N个级之后,RANGEN(s1N,t1N)可以被计算为:

RANGEN=RANGE+DELTA_RANGEN

这个等式可在项s1和t1中被分割:

t1N=t1+DETLA_t1N

s1N=s1+DELTA_s1N

并且如果t1N溢流(>=256):

t1N=t1N–256

s1N=s1N-1

类似地,LGPMPSN可以被迭代地计算:

LGPMPSN=UP子分割的第N次迭代。

使用迭代CK和UP计算,可以基于LGPMPS(31-1023)为第N次迭代形成表格。LGPMPS不能低于31。示出示例表格格式:

表2-具有LGPMPS作为索引的多仓表格

图9示出CBAC解码器协处理器82及其表格120的高级图,其中,表格的每一行包含对应于从第一个仓到第N个仓的N个组合。解码针对多仓处理对每个仓并行地发生,该多仓处理具有范围计算、其后是检查(CK)功能和优先级编码器112中的优先级编码。处理器使用最高概率符号的对数概率(LGPMPS)的数据值和数据值S1和T1。输出N规定检查CK的哪一次迭代提供终止。在上下文/全局范围中挑选并更新相应的LGPMPS、S1和T1值。处理在单个时钟周期中发生。为了将表格大小维持为最小,可能的是如果表格是在其中CK的结果为假的基础上构建的则消除变量。例如,假设CWR=5,来自UP的LGPMPS计算具有MPS-case硬件的子分割并且被减少。符号以仓1终止并且为假设MPS大约等于0而设计表格。MPS等于大约1,假设1将永远是最后一个仓。最后留下的变量是作为S1和T1的范围以及LGPMPS。

存在具有域级别的附加性质并且不可能的是添加两个变量,这两个变量中的一个是对数域而另一个是正常域。确定附加性质并且用静态值作为范围形成表格。取决于概率的当前上下文,可能的是直接跳到下一个仓并且更新“N”个仓。一次访问一行。因为概率的 当前值作为LGPMPS是已知的,访问各行并且针对这些仓计算T1的数据和S1的数据。为一个仓、两个仓和三个仓以及所有后续仓计算解码范围,并且访问所有数据值。完成所有仓的加和并且移除级联。

在图10中示出用于多仓处理的两级表格120’。将存在某种程度的频率降低并且与级联硬件方法相比这将增加时钟周期。示出粗糙级和精细级122’、124’。粗糙级表格124’被设定为0、64和128个仓以此类推,并且在级2表格124’中,确定其余的仓。使用两级方法的时钟周期略微更高。

在硬件中,在ROM中维护表格120并且作为“导线+多路复用器”系统。通过使用用于符号LGPMPS的概率值作为索引来访问一行。系统获得DELTA_s1/t1和DELTA_s1/t1的N次输入。系统计算{s11,t11,LGPMPS1}、{s12,t12,LGPMPS2}、…、{s1N,t1N,LGPMPSN}、s1/t1X、TMP_RANGEX,在每个CK子分割对其与VALUE进行比较。在图11A中,从L1并向前移除分级要求。

在图11A和图11B中,DRX是DELTA_RANGE(s1,t1)并且从表格120针对第X次迭代对其进行读取并且TRX是TMP_RANGE。图11A和图11B示出具有逻辑解码元素110和多路复用器114而且可使用比较单元130和表格120可操作的基于表格的方法。在图11B中示出的优先级解码器112、多路复用器114和其他组件类似于图7A和图7B的那些但是使用表格120是可操作的。

在E和L0级之后,通过表格访问对从L1向前的其他仓进行解码。并行地计算在TRX和CKLX中涉及的计算。通过表格方法,系统直接跳到LEVEL的倒数第二个仓。最终,最后一个级LN进行终止并且完成其他变量的清除。表格方法的益处在SE中的仓的数量大于4时变得活跃。表格访问(多路复用器和导线形式)以及计算直到LN级的开始针对具有8列的多仓表格采用大约0.8ns(在28nm BULK上)。系统实现了与级联硬件中近乎相似的功能。基于表格的硬件输出等效于在图6、图7A和图7B中示出的级联硬件,除以下之外:

a)CYCNO(周期数量)限制。可以仅在CL具有使得CWR为5的CYCNO时才完成基于表格的多仓解码。

b)MPS限制。当CL具有等于0的MPS时完成基于表格的多仓解码。因为CL是已知的,系统切换到3级级联硬件的后退路径。如果CKO为假,解码终止,除非在其他周期中对其余的仓进行解码。性能损失由MPS(最高概率符号)的分辨率限制。

如果尝试使用全表来跳过所有2048个可能的仓,级别、表格大小、优先级编码器112(引导一个发现器)和多路复用器114输入的数量增加。为了进一步优化硬件,可以使用两级表格120将L0级和LN级之间的逻辑分解为两个部分。在第一级122’中,在例如64个仓的步骤中执行粗糙跳跃。在第二级124’中,系统执行精细跳跃。粗糙表格(C-表)122’需要32个列而精细表格(F-表)124’需要64个列以便处置LEVEL的可能仓。C-表122’中的第一列存放具有64仓深度的DELTA_s1、DELTA_t1和LGPMPS的预先计算的值。类似地,第二列存放128仓深度,以此类推。相反,F-表124’是在单个仓深度(即,1、2、3等等)存放这些参数。为了跳过N个仓(LEVEL+1),其中,N=64*NCT+NFT,作为第一部分,使用C-表122’完成NCT。系统为X=NCT*64执行OUT_BINL:NCT计算,其中,NCT是1、2、3、4...32。优先级编码器112按顺序查找具有值1的OUT_BINL:NCT

CL:NCT-1与RL:NCT-1一起选择。此时,系统已经解码(NCT-1)*64个仓并且更新范围和上下文。为了找到在(NCT-1)*64和NCT*64之间的精确数量的仓,变量RL:NCT-1和CL:NCT-1被级联到多仓表格(F-表)124’的第二级。其中CL:NCT-1是LGPMPS,并且F-表被访问。为了找到NFT,流程的其余部分与以前解释的基于单级表格的多仓方法类似。

图12是示出各种多仓解决方案的图表,其中,每个周期用仓所实现的仓/周期结果在竖直轴上扩展而列长度在水平轴上扩展。图13是示出各种多仓解决方案vs.每个周期用在竖直轴上实现的比特实现 的比特/周期结果的图表。

本发明的许多修改和其他实施例对于受益于前面的描述和相关附图中呈现的教导的本领域技术人员来说将是显而易见的。因此,应当理解本发明不限于所披露的具体实施例,并且那些修改及实施例旨在被包括于所附权利要求书的范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1