视频解压缩方法和装置的制作方法

文档序号:5115661阅读:789来源:国知局
专利名称:视频解压缩方法和装置的制作方法
本申请已在英国申请专利,申请号NO.9415413.5,申请日期为1994年7月29日,要求优先权。
序言本发明全面地涉及一种用于对众多音频和视频信号解码的新颖改进系统,特别涉及一种用于对众多的MPEG音频和视频信号解码的新颖改进系统。
本发明的串行流水线处理系统由单一的双线总线组成,该总线用于将形式为控制令牌及数据令牌的独特和专门化的交互接口令牌传送到配置成可重新配置的流水线处理器的众多自适应解压缩之类的电路。
现有技术美国专利5,111,292公开了一种用于例如陆上传输的HDTV信号编码/解码装置,它包含有一个优先级选择处理器,用来分析高优先级传输通道和低优先级传输通道合用的压缩视频码字。对高清晰度视频源信号作出响应的压缩电路产生按等级分层的码字CW(它表示压缩的视频数据),和产生用来定义码字CW所代表的数字类型的伴随码字T。对码字CW和T作出响应的优先级选择处理器计算预定的数据块中的位数,并确定待分配到各相应通道中的每个数据块中的位数。此后处理器把码字CW分析成高、低优先级码字序列,其中高、低优先级码字序列分别对应于重现图象相对重要和相对次要的压缩视频数据。
在美国专利NO.5,216,724中描述了一个先有技术系统。该装置由许多计算模块构成,在一个优先实施例中,总共有四个计算模块并行地联接在一起。每个计算模块有一个处理器、双端口存储器、便笺式(Scratch-pad memory)存储器和一个仲裁装置。第一总线把各计算模块和一个主处理器联接在一起。此装置有一个和主机联接及通过第二总线和各计算模块联接的共享存储器。
美国专利NO.4.785,349公开了一种全活动彩色数字视频信号,该信号经压缩和格式化以便于传输,被记录在光盘介质上并以通常的电视帧速率被解码。在压缩时,对一帧的各区域分别进行分析,以选择对每个区域有特效的最佳填码(fill coding)方法。对区域解码时间进行估算以使压缩阈值为最佳。表示传送区域大小和位置的区域描述码集合在一起,放在数据流的第一数据段中。传送各区域像素幅度指示(amplitude indications)的区域填充码(regionfill codes),按填充码的类型集合在一起,放在数据流的其它各数据段中。数据流各段长度可以各自改变,按照它们各自的统计分布进行编码并进行格式化以形成数据帧。由于加进了辅助数据,每帧的字节数减少了。辅助数据由反向的帧序分析确定,以产生一个平均数,选用这个平均数使光盘放像时暂停最短,因此避开了光盘的不可预知的寻找等待期的特性。解码器中有一个对码流中统计信息作出响应的可变长度解码器,用于对数据流中各数据段进行分别的可变长度的解码。由区域描述数据可导出区域位置数据,它和区域填充码一起送到许多区域特定的解码器,后者可由填充码类型(例如相对码,绝对码,二分码(dyad)和DPCM码)的检测来选择,解码后的区域像素储存在位图中供后继显示。
美国专利NO.4,922,341公开了为数字电视信号减少图象数据的场景模型辅助法(method for scene-model-assisted),靠这种方法在时刻t提供的图像信号有待编码,靠这种方法在t-1时刻早已编码好的场景组成的前帧被送到图像存储器(image store)中作为参考,靠这种方法由一帧到另一帧的信息由放大系数,转移系数(shift factor)和一个自适应获得的四元树分离结构所组成。一旦系统初始初始化,一个均匀的、已规定的灰度级值或表示成确定亮度值的图像中间灰度被写进发送机编码器的图像存储器中和接收机解码器的图像存储器中,所有图像元素都照此方法存储。在编码器中的图像存储器以及在解码器中的图像存储器在运行时反馈回自身,所采用的反馈方式使在编码器和解码器中的图像存储器的内容可以变长的数据块为单位读出,可以用大于或小于1的亮度因子进行变换并可用转移地址写回图像存储器,而不同大小的数据块是按照一已知的四元树数据结构组织起来的。
美国专利NO.5,122,875公开了一种用编码/解码HDTV信号的装置。这种装置包含一个对高清晰度视频源信号作出响应的压缩电路,以产生按等级分层的码字CW(它表示压缩的视频数据)和定义码字CW所代表的数字类型的伴随码字T。对码字CW和T作出响应的优先级选择电路把码字CW分析成高、低优先级码字序列,其中高、低优先级码字序列分别和重现图像相对重要和相对次重要的压缩视频数据相对应。一个对高、低优先级码字序列作出响应的传输处理器分别形成高、低优先级码字的高、低优先级传输数据块。每个传输数据块包含有一个头,一些码字CW和出错检测检验位。各传输数据块送到一个前向出错检验电路以加进进一步的出错检验数据。此后高、低优先级数据送到调制解调器,在那里对各自的传输载波进行正交幅度调制。
美国专利NO.5,146,325公开了一个对压缩图像数据解压缩的视频解压缩系统,在那里视频信号的奇场和偶场被独立地压缩成基帧和内帧(interframe)的压缩模式序列,然后交织在一起进行传输。奇场和偶场独立地进行解压缩。在有些时间段,当有效的解压缩奇/偶场数据不能得到时,用偶/奇场数据替代不能得到的奇/偶场数据。对奇、偶场数据独立地解压缩以及所采用的数据代替方法,在启动系统时和改变信道时可以有减少显像等待时间的优点。
美国专利NO.5,168,356公开了一个视频信号编码系统,该系统中的装置把编码视频数据分成用于信号传输的传输数据块。由于传输数据块格式提供特殊的数据头格式,增强了在接收机处恢复信号的能力,这是因为在出现发送数据丢失或出错时,接收机能由该数据头确定重新进入数据流的点。在各传输数据块的编码视频数据中提供嵌入的第二级传输头,可能的重入点就可增至最多。
美国专利NO.5,168,375公开了一种方法,它对一场图像数据样本进行处理,得到一种或多种下述功能抽取(decimation),内插和轮廓增强。这是靠矩阵变换处理器来实现的,处理器可以是JPEG压缩系统中使用的那种。在进行抽取和内插处理时,数据样本块都进行离散偶余弦变换(DECT),变换后再改变谱线的数目。在抽取时谱线的数目减小了,接着进行反变换以产生一个尺寸减小了的能代表原始数据块的样本点的矩阵。在内插时额外的零值谱线被插入频率分量矩阵,此后反变换产生一个增大的数据采样集而不增加频谱宽度。在轮廓增强时,由卷积或滤波操作来实现,这种操作涉及数据变换和滤波核(fiter kernel)在频域相乘,那里还提供反变换,结果得到一组经过处理的数据样本块。数据块被重叠,然后保留指定的样本,和从重叠区清除多余的样本。对于线性相位滤波器,用减少分量数目的方法改变核的空间表示,并用零填补使等于数据块样本的数目,接着对填补后的核矩阵进行离散奇余弦变换。
美国专利NO.5,175,617公开了一种通过电话线有限带宽的模拟信道来发送记录(logmap)视频图像的系统和方法。在记录图像中的像素组织被设计成和人眼敏感轮廓(sensor geometry)相匹配,像素在图像中心较密集。发送机把频带分成许多信道,给每个信道分配一个或二个像素,例如把3KHz音频质量的电话线分成相隔约3.9Hz的768个信道。每个信道由二个正交载波组成,因此每个信道能传送二个像素。有些信道留给特殊的校准信号(calibration sign-als),它使接收机能检测接收信号的相位和幅度。如果传感器及像素和一排振荡器直接联在一起,接收机能连续地接收每一个信道,这时接收机不必和发送机同步。在连续(模拟信号)传送中,接收机和第一帧同步,然后每隔一个帧周期得到以后各帧,FFT算法对连续情形实施快速离散近似。和取样周期相比,帧周期是相对低的,因此接收机一旦检测到第一帧就不大会失去帧同步。一种实验性的可视电话曾经每秒传送4帧,对1440个像素的记录图像加以正交编码,得到的有效数据传送率超过了40000位/秒。
美国专利NO.5,185,819公开了一种具有奇场和偶场视频信号的视频压缩系统,它们依次地按基帧和内帧压缩模式独立地进行压缩。独立压缩数据的奇场和偶场为了进行传输被交织在一起,使基帧偶场压缩数据处于接连两基帧奇场压缩数据中间。这个交织序列能够在不增加传输数据总数的情况下给接收机提供二倍数目的解码信号进入点。
美国专利NO.5,212,742公开了一种实时压缩/解压缩视频信号数据的装置和处理方法。这种装置有许多计算模块,在一个优先实施例中总共有四个并行地联接在一起的计算模块。每个计算模块有一个处理器,双端口存储器,便笺式(scratch-pad memory)存储器和一个仲裁装置。第一总线把计算模块和主机联接在一起。最后,此装置有一个共享存储器,它和主处理器相联,它也用第二总线和各计算机模块相联。此方法能把图像的各部分分配给各处理器去运行。
美国专利NO.5,231,484公开了一种系统和方法,它能实现适合使用推荐的ISO/IEC MPEG标准的编码器。里边有三个互相配合的部件或子系统,它们对输入的数字活动图像序列进行各种各样的自适应预处理,依次给各图像配置位数,并且按图像顺序在图像的不同区域自适应地量化变换系数,从而在给定图像的位数下产生最佳视觉质量。
美国专利NO.5,267,334公开了一种计算机系统中对一串活动图像去除帧冗余度的方法。此方法检测一串活动图像的第一次场景变化并产生第一关键帧(keyframe),它包含第一图像的完整场景信息。在优先实施例中这第一关键帧被称为“前向”(forward-facing)关键帧或基帧(intraframe),它通常代表CCITT压缩视频数据。下面的过程包括产生至少一幅中间压缩帧,这至少一幅的中间压缩帧包含两幅图像的差别信息,其中一幅是活动图像序列在时间上的第一幅,另一幅是至少一幅图像中的第一幅。这至少一帧被称为内帧(interframe)。过程的最后是检测活动图像序列中的第二场景变化并产生第二关键帧。它被称为“后向”(backward-facing)的关键帧,它包含紧接在第二次场景变化前显示的最后一幅图像的完整的场景信息。第一关键帧和至少一幅中间压缩帧联在一起作为正向显示用,第二关键帧和各中间压缩帧按反过来的次序联在一起作为反向显示用。正向显示图像时,基帧也可以用来产生完整的场景信息。当反向显示该序列时,后向关键帧用来产生完整的场景信息。
美国专利NO.5,276,513公开了一种由给定数目的先有技术图像金字塔级(image-pyramid stages)组成的第一电路装置和由同样给定数目的新颖的活动矢量(motion-vector)级组成的第二电路装置,以最小的系统处理延迟和/或占用最小系统处理延迟和/或占用最小硬件结构的特点来实现成本合算的分等级的实时运动分析。具体说,第一和第二电路装置对由相对高的帧速(例如每秒30帧)的相继给定像素密度的一系列不断输入的图像数据帧组成的、相对高分辨率的图像数据作出响应后,经过一些处理系统的延迟,产生相同给定帧速的一系列不断输出的相继给定像数密度的矢量数据帧。每个矢量数据帧表示出在相邻一对图像帧之间发生图像移动的特征。
美国专利NO.5,283,646公开了一种能每帧精确地发出希望位数的实时视频编码系统的方法和装置,它只对图像编码一次,它能更新用于对系数量化的量化步长,这些系数描述,例如,通过通信信道发送的一个图像。数据分割成若干区段,每个区段包括许多数据块。数据块用象DCT这样的方法进行编码,以对每个数据块产生一系列系数。系数可以被量化,描写数据所需的位数会变化很大,这取决于量化步长。对于和特定数据群相关的选定数目的区段,在发送完每个数据区段的时候,累积用去的实际位数和累积用去的希望位数进行比较。然后系统重新调整量化步长,使得象描写一幅图像所需用的许多区段达到最终希望的位数。用于更新量化步长和确定希望的位配置的各种方法也被说明。
美国专利NO.5,287,420公开了适用于个人计算机应用的图像压缩的方法和装置,它分两步压缩和储存数据。一幅图像被实时捕获,用一种有效的方法对它压缩,然后将它储存到硬盘中。隔些时候采用能得到更高的压缩比而计算量更大的算法对数据进行非实时的进一步的压缩。二步法可以得到高度先进的压缩算法带来的减少存储容量的好处而不要求计算资源实时实现这种算法。本专利还描述了适用于在个人计算机主处理器上执行第一步压缩的压缩算法。第一压缩阶段接收从视频数字化器中来的422YCrCb数据。对两个色度分量进行平均,一个伪随机数被加到所有各分量中。最后得到的数值被量化并被放入到一个代表2×2像素矩阵的单个32位字中。伪随机数的种子被记住,使得在实施第二压缩阶段前可以清除掉伪随机噪声。
美国专利NO.5,289,577公开了一种连续处理的流水线的方法和装置。该连续处理流水线有一个第一处理级,它通过多缓存器和CODEC联接,包括一个图像数据输入缓存器,一个图像数据输出缓存器和一个地址缓存器。地址缓存器存地址,其中每个地址标记图像存储器中一个地址块的初始地址。图像存储器中每个地址块存储了一个压缩的图像数据块。一个局部控制器负责把一个地址写入地址缓存器去初始化CODEC以执行一个离散余弦变换和一个离散余弦变换量化处理。
Chong,Yong M.的文章,数字图像处理用的数据流结构AData-Flow Architecture for Digital Image Processing WesconTechnical PapersNO.2 Oct/NoV.1984,公开了一个特地为图像处理设计的实时信号处理系统。更详细说,它公开了一种以令牌为基础的数据流结构,在那里各令牌是固定的一个字节宽,有固定宽度的地址字段。系统含有多个连成环形的完全相同的流处理器。令牌含有一个数据字段,一个控制字段和一个标签。令牌标签字段进一步细分为一个处理器地址字段和一个标识符字段。处理器地址字段用来把令牌引导到正确的数据流处理器,标识符字段用来标明数据使数据流处理器知道用数据做什么事。因此,标识符字段相当于数据流处理器的指令。利用模块(MN),系统把每个令牌引导到特定的数据流处理器。如果这个模块(MN)号和特定级的模块(MN)号相符,就对数据实施适当的操作。如果令牌未被识别,就把它送到输出数据总线上。
Kimori,S.等的文章,“采用自定时电路的灵活的流水线机构”(An Elastic Pipeline Mechanism by Self-Timed Circuits,IEEE J.of Solid-State Circuits,Vol.23,NO.1 February 1988,)公开了一种具有自定时电路的灵活的流水线。异步流水线由许多流水线级组成。每一流水线级由许多后接组合逻辑电路的输入数据锁存器所组成。组合逻辑电路实现流水线级特有的逻辑运算。各数据寄存器同时接受与该级有关的数字转移控制电路所产生的触发信号。数据转移控制电路互相连接形成一个链,通过该链,各发送和应答信号线管理相邻流水线级之间数据转移的握手方式。此外,每一级中通常还有一个解码器,以选择在这一级中对运算对象要做什么运算。为了对复杂的解码过程进行预解码以及减轻逻辑电路中的临界路径问题,把解码器放在前一级中也是可能的。流水线的灵活性消除了任何集中控制,因为子模块之间的所有相互间配合完全可局部判决,此外,每个子模块能自主地同时实现数据缓存和自定时的数据转移控制。最后,为了增加流水线的灵活性,在占有级之间插入空级以保证级间可靠的数据转移。
因此,熟悉本行的人已认识到早就需要有一个新的和改进的视频压缩系统,它能避免已有技术系统的缺点。本发明明显地满足这个要求。
发明的简要说明简单地说,这个发明提出了一种新的,改进的方法和装置,特别适用于一个具有很多控制和数据令牌的双线流水线系统,这个系统主要包括一个起始码检测器,一个具有Huffman解码器和微可编程状态机(MSM)的视频处理部件,一个离散余弦逆变换(IDCT),一个具有关联地址发生单元的同步DRAM控制器和包括过采样及视频定时发生器在内的合适的预测电路和显示电路。
更重要的是,这个发明中的很多实施例都包括了MPEG视频解压缩方法和装置,该装置是使用多个二线接口实现多级互联的流水式处理机。控制令牌和数据令牌通过双线接口来传送令牌格式的控制命令和数据。一个令牌解码电路设在一些流水级之中,以使该流水级具有能将本身不可识别的控制令牌,并从流水线上传递下去的能力。重构处理电路被有选择地放在一些级中,来识别那些控制令牌,对这一级进行重构以便于处理一个被识别出的数据令牌。有很多特有的支持子系统电路和处理技术被公开实现这一系统,包括存贮器寻址,利用共用的处理块对数据进行变换,时间同步,异步交替缓存,视频信息的存贮,并行Huffman解码器等等。
通过例子,但并不一定有局限性,本发明在它的众多特点之中还包括一个用于同步时间的器件,这个器件具有一个用来确定出现时间的时间标记。一个用来初始化第一电路中系统时间的参考时钟。一个第一时间计数器,以用来同参考时钟进行通讯以保持第一电路中的系统时间,还有一个由第二电路中的参考时钟初始化的第二时间计数器(Second time counter),与第一时间计数器同步,第二时间计数器用来保持一份系统时间的拷贝并通过比较时记与第二时间计数器来确定系统时间局部拷贝(Local copy)和系统时间之间存在的计时误差,这个发明还包括一个装置来同步系统解码器和一个视频解码器,这个装置用一个时间标记来确定显示时间,用一个参考时钟来初始化系统解码器中的系统时间,用第一时间计数器与参考时钟进行通讯以保持系统解码器中的系统时间,用一个第二时间计数器来保存系统时间的局部拷贝,并通过比较时间标记与第二时间计数器来确定系统时间局部拷贝和系统时间之间的显示计时误差。这个第二时间计数器由与第一时间计数器同步的视频解码器的参考时钟来初始化。
这个发明的另一实施例还包括一个用来同步第一电路和第二电路的装置,这个装置用于一个参考时钟来初始化第一电路中的系统时间。第一电路中有一个时间计数器与参考时钟进行通讯以保持系统时间,第一电路中还有一个第一基本流时间计数器(elementarystreom time counter)来提供基本流时间,第一电路可以接收一个时间标记,然后将时间标记加到基本流时间上,再减去系统时间,以产生一个同步时间,第二电路接收从第一电路来的同步时间,并且有一个与第一基本流时间计数器同步的第二基本流时间计数器,来提供基本流时间的局部拷贝,并通过比较同步时间与基本流时间的局部拷贝来确定系统时间和时间标记间的计时误差。通过这种方式,不必为了确定计时误差而将参考时钟信号直接传送到第二电路。
在这个发明的另一实施例中,一个用来同步第一电路和第二电路的装置有一个参考时钟用以初始化第一电路中的系统时间。第一电路有一个时间计数器同参考时钟进行通讯,以保持系统时间,第一视频时间计数器来提供视频解码时间,第一电路可以接收一个视频时间标记,并减去系统时间,第二电路可以接收从第一电路来的同步时间,并且有一个第二视频时间计数器与第一视频时间计数器同步。用来提供视频解码时间的局部拷贝,而且,通过比较同步时间和视频解码时间的局部拷贝,可以确定系统时间和视频时记间的计时误差,因此,不必为了确定计时误差而将参考时钟信号直接传送到第二电路。
这个发明还包括一种提供定时信息的方法,它提供一种视频数据流,在这个视频数据流的头中包含有一个时间标记,在这里,时间标记指的是每个数据包中的第一帧图像,下一步中,一个寄存器中的一个标志位被用来指示从包头中取出并放在寄存器中的有效时间标记信息。接着,时间标记被从视频数据流中移走,并放在寄存器当中,下一步,这种方法遇到一图象的开始,并且紧接着检查寄存器的状态,即检查寄存器的标志状态,来确定寄存器中是否保存着有效的时间标记信息,如果寄存器中保存的是有效的时间标记信息,就产生一个时间标记信息,作为一图像开始的响应。然后,将这个时间标记信息放回到数据流中。
在这个发明的另一实施例中,有一个上述装置,在这个装置中,基本流时间计数器被限制在16位。与之类似,还有上述的装置,第二基本流时间计数器置于基本流解码器被限制在16位,而且还有一种上述装置,在那里同步时间被限制在16位以用来控制基本流解码器。
本发明还有一种用以进行视频解码并确定显示时间错误是否超过了某个阈值的处理,它将视频数据分析处理成令牌形式以备将来进一步处理。确定时间标记令牌是否被指出,比较时间标记令牌和视频时间,并产生比较后的结果来确定计时误差指示,然后,与阈值相比较,确定比较的结果是否可以接受,并指出什么时候比较的结果超出了可接受的范围。
这个发明的另一实施例还包括了一个使用系统解码器和视频解码器的装置,系统解码器适于接收MPEG系统流并且从流中多路分配视频数据和视频时间标记。系统解码器有一个第一时间计数器来代表系统时间。视频解码器接收视频数据和视频时间标记,并且有一个第二时间计数器与第一时间计数器同步,视频解码器还有一个解码缓冲区用来按照基本的固定速度接收视频数据,并按照不同速度输出视频数据及传递视频时间标记。视频解码器在解码视频为图象时,也将这图象数据的视频时间标记与第二时间计数器相比较,以确定适当的显示时间。还有一种方法可以用来确定第一电路与第二电路之间的定时误差。给第一电路一个系统时间(SY),一个时间标记(TS),一个基本流时间(ET),以公式X=ET+TS-SY用基本流时间(ET),时间标记(TS)及系统时间(SY),获得同步时间(X),将同步时间(X)送到第二电路,并产生一个同步基本流时间(ET2),然后根据公式(ET2-x用同步时间(x)获得定时误差,因此可以将第一电路和第二电路在时间上同步而不必将第一电路的系统时间传到第二电路。
也可以用另外方法,如下述步骤获得第一电路与第二电路之间的定时误差;给第一电路一个时间标记(TS)和一个初始时间(IT),通过所用时间标记(TS)和初始时间(IT)由公式X=TS-1得到同步时间(X),将同步时间(X)送到第二电路,产生同步基本流时间(ET),并根据公式ET-X用同步时间(x)得到定时误差,在这种方法中,不必将系统时间从第一电路送到第二电路,即可获得第一电路与第二电路的同步。
还有别的方法来获得第一电路和第二电路的定时误差,步骤如下给第一电路一个系统时间标记(SY),一个视频时间标记(VTS)及一个视频解码时间(VT)。通过视频解码时间(VT),视频时间标记(VTS)及系统时间(SY)得到同步时间(X)X=VT+VTS-SY将同步时间(x)送到第二电路,并产生一个与第一电路中视频解码时间(VT)同步的第二电路中的视频解码时间(VT2),利用同步时间(x)按照公式VT2-x得到定时误差,这样,也可以将第一电路与第二电路同步而不用将系统时间送到第二电路。
根据本发明,并行Huffman解码器块可以对按照MPEG Huffman方式编码的变长度码(VLCS)和固定长度码(FLCS)进行解码,并可以在分析微可编程状态机(MSM)的控制下,通过令牌,还可以保持较高的吞吐量。
在本发明的一个实施例中,采用了一种码查找技术。来解Huffman码以达到性能要求。并处理不规则或不标准的第二MPEG-2变换系数表,这个发明的实践还简化了在一个周期内不用外部控制器对流中的一些更复杂的成分的解码,这些复杂的成分例如换码系数(Escape-coded coefficients),内部DC值和运动矢量增量都作为复合的VLC/FLC成分出现在流中。
为了解码VLC,输入首先被放到两个分别处理最高位和最低位数据的输入数据寄存器中。一个选择器被用来把下一个VLC的开头和ROM输入定位,因此对于第一个VLC,选择器将其59位的输入中的最高的28位输出,其中的最高的16位被送到一个Huffman码ROM。对于后面的VLC,选择器有效地根据当前已解码的总位数对输入进行移位。这个总数可以通过将每个已被解码的VLC的大小加到一起而得到,各种不同的字宽度是可解码的最大编码大小和最大VLC的大小决定的,可解码的最大编码大小是28位MPEG-1换码系数。最大VLC的大小是16位(DCT系数表)。
“表选择”输入被用来选择由MPEG要求的各种不同的Huffman码表。
ROM有被选择器/移位器控制的地址,ROM先进行一个VLC表索引计算,然后再进行一个索引到数据操作,得到解码后的数据。
索引计算是一个内容可寻址存储器(CAM)操作,通过无关项(don′t care)有效的匹配实现从Huffman码到获得的码的操作,由于索引的产生是按一种查找方式进行的(而不是算法进行的),所以当处理规范的表时没有限制。
本发明中的ROM地址分为两个段。较大的段是将要被解码的位模式,较小的字段选择要检查的Huffman码表,除了完整的MPEG码表以外,ROM还有一些用于识别非法VLC模式的入口。这些非法VLC模式存在于一些码表中。
在本发明的另一个实施例中,采用了一个过程来提供固定宽度的字。具有的固定数目的位用来寻址变宽度数据。还有一个宽度定义段和地址段,还采用了一种过程使用固定长度的字来寻址存储器,这个过程具有固定数目的位用于寻址数据,并且有一个替换段和一个地址段,还有一个装置用于存储器寻址,包括一个状态机和一个运算核。
用于存储器寻址的过程有如下特点它可以提供一个固定宽度字,有预先确定寻址变宽度数据的固定位数,用一个宽度定义段和一个地址段定义固定宽度字,提供了至少一位的宽度定义段来作为终止标志,用定义数据地址的多个位来定义了地址段,按照与变宽度数据大小相反的关系变化地址段位数的大小,接照与变宽度数据大小直接的关系变化宽度定义段的位数的大小,在变化宽度定义段和地址段宽度的同时,保持固定宽度的字以寻址变宽度数据。
用于存储器寻址的过程还包括用定义数据地址的多个位来定义地址段,用至少一个替换位定义变宽度的替换段。替换段中至少有一位用于地址段和替换段间的终止位,用替换段来指示来自另一个地址源的替换过的位,在按照相反关系变化地址字段的宽度和替换字段的宽度的同时,保持固定宽度的字来寻址变宽度数据。
根据本发明,一个用于寻址存储器中变宽度数据的方法其特点在于,它提供了一个存储器,这个存储器有预先确定宽度的字,并且由部分字组成,它还可以循环位移(rotate)部分字使其可以按最低位对齐方式被存取,扩展字的剩余部分以使得被存取的字可以被识别成部分字,恢复字的剩余部分并且可以循环位移(rotate)这个字直到部分字被恢复到它的原始位置。
这个发明还包括寻址存储器的方法和装置,其中,字是按定宽提供的,它有固定数目的位用于寻址变宽数据,而且有宽度定义段和地址段。另外还有一种用固定宽字寻址存储器的过程。这个过程有固定数目的位用于寻址数据,还有一个替换字段和一个地址段可以使用。
本发明还包括一种方法可以从RAM中存取M个字,M比预先确定的RAM的固定突发长度要小,RAM有一根使能线,可以有选择地使能或禁止对RAM的读写操作,这个方法由以下步骤组成命令N个字向RAM中写或从RAM中读;确定何时从RAM中读完或写完M个字,M比N小;当已经从RAM中读完或写完M个字后,禁止RAM。
本发明还包括一种存取动态随机存储存储器(DRAM)的方法,用来存储或获取与二维图像相关的数据字。这个DRAM包括两个分离的存储体,每个存储体可用以一页方式来读写数据字,二维图像被组织成二维的栅格形式的单元,每个单元包括M×N的象素点阵列,与每个单元相关的字占据一页或者不到一存储体,这个方法包括以下步骤(a)、为每个单元分配两个存储体中的一个,以使得所有与那个特定单元有关的字都可以从特定存储体中的特定页中读出或写入。为每个单元分配的存储体应使得任何同一行或同一列中两个相临的单元均分配到不同的存储体中。
(b)、读入与一个单元有关的数据字。这个单元由一个象素点阵组成,并且没有和二维栅格模式对齐,但是它和二维栅格模式下的单元中的象素点对齐。
(c)、标识出二维栅格模式中哪些单元包含有与没对齐的单元有关的数据字;(d)、从DRAM的第一个存储体中,读出那些与已被识别出的,处于栅格模式中的,包含有与没对齐的单元有关的数据字的单元之一的数据字。
(e)、从DRAM的第二个存储中体,读出那些与另一个已被识别出的、处于栅格模式中的、包含有与没对齐的单元有关的数据字的另一单元的数据字。
(f)、重复步骤(d)和(e),直到所有与没对齐的单元有关的数据都被读出。
本发明还提供了一种RAM接口用以将一总线连接到RAM上。在这个RAM接口中,有一个单独的地址生成器来生成RAM接口所需寻址的存储器地址。地址生成器与RAM接口通过一双线接口进行通讯。
本发明还包括一种方法来控制存放按帧编码后的视频数据的缓冲区。这种方法确定每一个到来的解码后的帧序号,确定任何时间的期望的呈现序号,并在帧序号与呈现序号相同或帧序号在呈现序号之后时,将所有的缓冲区标记为待命状态。
因此,本发明的各种新的特点使得很多被认为是提高性能所必需的,考虑到如何设计、开发并利用系统来解码视频数据的问题得到了解决。这个发明的其它目的和优点将随着后面详细的描述和附图而变得显然了。
附图的简要说明

图1通过本发明的优选实施例来说明数据流。
图2显示了在64×32RAM中用来寻址8位数据的13位字的例子。
图3是本发明中寄存器组的功能块图。
图4说明图3中所示的寄存器文件的数据流。
图5是一方块图,该图根据本发明说明寄存器文件地址的解码。
图6是根据本发明的可编微码状态机的方块图。
图7显示了按照本发明的固定宽度字,它用作寻址,具有地址字段,替换字段和替换标头。
图8是按照本发明的运算核的一个例子的方块图。
图9说明一种方法的基本步骤,这个方法是根据本发明在输入数据上实现离散余弦逆变换IDCT。
图10是一方块图,它根据本发明说明了组合的,简化的二级结构的IDCT系统。
图11是一个集成电路的简要方块图,该图包含了图10中IDCT的主要系统部件。
图12a和图12b合起来是对应于主系统部件之一的预处理电路的方块图,为便于解释,这些图被统称作图12。
图13a、13b及13c描述了时序图,这些图说明了优选实施例的IDCT系统中时序和控制信号之间关系。
图14a和14b合起来是IDCT系统中通用处理电路的方块图,为了便于解释,这些图统称作图14。
图15a、15b、15c和15d合在一起是后处理电路的方块图,这电路相当于系统的另外的主要部件,这些图集体称作图15;图16是方块图,它根据本发明说明了具有双数据流,变换RAM和改进缓冲器的IDCT;图17是一方块图,它更详细的显示了图16中一维IDCT系统;图18是一方块图,它更详细的显示了如图17所示的变换系统;图19是一方块图,它更详细的显示了图18所示的输入缓冲器;图20显示了根据本发明的预处理电路“PREC”的简要方块图;图21是一方块图,它说明了在IDCT中的公共处理电路“CBLK”;图22是后处理电路“PosTC”的方块图;图23是图22所示的后处理电路的另一说明;图24是一方块图,它根据本发明描述了舍入及饱和块;图25是本发明中输出缓冲器的方块图;图26是本发明中控制移位寄存器的方块图;图27是本发明中控制移位寄存器解码的方块图;图28描述了一个控制移位寄存器及一个输入控制缓冲器;图29说明了T2数据流的控制电路;图30显示了T1数据流的计数器中的数据;图31描述了本发明中所用T2数据流的计数器中的数据;图32显示了IDCT初始化及有关电路的时序图;图33显示了T1和T2数据交错的时序图;图34说明了T2数据的延迟和恢复的时序图;图35是一时序图,它描述了本发明中IDCT的清除操作及有关电路的时序;图36说明了根据本发明的启动系统;
图37描述了在T1和T2数据交错早期的延迟和恢复;图38显示了图16到图37所示IDCT系统的另一优选实施例;图39显示了按本发明被多路分配的MPEG信息流,这些信息流分配到包含数据和时间标记信息的基本流中;图40描述了根据本发明的基本流时间标记错误判断及时间同步系统的第一实施例;图41说明了按照本发明的基本流时间标记错误判断及时间同步系统的第二实施例;图42显示了按照本发明的基本流时间标记错误判断及时间同步系统的第三实施例;图43描述了按本发明的视频时间标记错误判断及时间同步系统的第1实施例;图44说明了按本发明的视频时间标记错误判断和时间同步系统的第2实施例;图45显示了如图44所示的在30Hz工作的视频时间标记错误判断和时间同步系统的第二实施例;图46显示了本发明的系统的时间标记信息流;图47是一方块图,它说明了用可编程微状态机处理的同步时间信息;图48是一方块图,它说明了本发明的第一优选实施例;图49是另一个说明本发明的第一优先实施例的方块图;图50描述了本发明的第二个优先实施例;图51显示按本发明被第二优先实施例用的寻址的详细方法;图52是一方块图,它显示了按本发明来解码Huffman VLCS的装置;图53是一简图,它显示了本发明的并行Huffman解码器的总体结构;图54是说明用于解并行huffman码的ROM的原理图;图55说明用于解并行huffman码的ROM的第一实施例;图56说明用于解并行huffman码的ROM的第二实施例;图57描述用于解并行huffman码的ROM的第三实施例;图58是说明本发明一种实施例的基本系统部件的方框图;图59是描述本发明的起始码检测器的方框图;图60是说明本发明的分析器(parser)的方框图;图61是说明本发明的空间处理电路系统基本部件的方框图;图62是说明本发明显示电路系统的方框图;图63说明本发明时间标记(timestamp)管理的一个实施例;图64表示本发明时间标记管理的另一实施例;图65是描述本发明的系统硬件部件方框图;图66是提供本发明微控制器系统组成部分概貌的方框图;图67是说明本发明算术核心(Arithmetic core)的简图;图68说明本发明的ALU;图69根据本发明描述寄存器文件;图70说明对本发明各独立总线寄存器的写入;图71表示在vector[1]=0及vector
=0情况下以帧为基础的预测;图72描述在vector[1]=0及vector
=1情况下以帧为基础的预测;
图73表示在vector[1]=1及vector
=0情况下以帧为基础的预测;图74说明在vector[1]=1及vector
=1情况下以帧为基础的预测;图75描述在motion-vertical-field-select=0及vector
=0情况下以场为基础的预测;图76说明在motion-vertical-field-select=0及vector[1]=1情况下以场为基础的预测;图77类似地说明在motion-vertical-field-select=1及vector
=0情况下以场为基础的预测;图78表示在motion-vertical-field-select=1及vector
=1情况下以场为基础的预测;图79表示在帧图中motion-vertical-field-select=0及vector
=0情况下以场为基础的预测;图80说明在motion-vertical-field-select=0及vector
=1情况下图79的预测;图81表示在motion-vertical-field-select=1及vector
=0情况下图79的预测方式;图82表示在motion-vertical-field-select及vector
都等于1情况下的图79的预测方式;图83表示预测滤波的另一种方式;图84说明又一种预测方式;图85说明根据本发明的再一种预测方式;图86表示本发明的另一种预测方式;
图87是说明本发明显示系统各个系统部件组织情况的方框图;图88描述4∶3滤波操作;图89描述3∶2滤波操作;图90说明本发明的2∶1的滤波操作;图91表示本发明使用的三抽头滤波器;图92说明错误象素的重复;图93描述本发明的field-id信号;图94根据本发明表示各水平定时时刻(周期);图95根据本发明说明每场625线的PAL垂直定时关系;图96根据本发明说明每场525线的NTSC垂直定时关系;图97根据本发明表示一种水平计数装置;图98说明本发明的边界产生;图99根据本发明描述图象剪切(cropping);图100是作为芯片来说明本发明的方框图;图101说明本发明对系统时钟(sysclock)的要求;图102根据本发明描述在编码数据接口的双线协议;图103表示本发明的DATA令牌;图104表示本发明的FLUSH令牌;图105说明编码数据接口的定时关系;图106根据本发明描述非均恒脉冲序列CDCLOCK的使用;图107表示在本发明16位方式下的输出定时关系;图108说明在本发明8位方式下的输出定时关系;图109表示本发明视频输出接口的定时关系;图110描述本发明中的各个视频输出方式信号;
图111表示本发明中的水平定时关系;图112表示用于525行系统的垂直定时关系;图113描述用于625行系统的垂直定时关系;图114根据本发明表示用于525行系统的同步和消隐信号;图115根据本发明表示用于625行系统的同步和消隐信号;图116表示在本发明中的零个SDRAM连接的配置;图117表示在本发明中的一个SDRAM连接的配置;图118根据本发明描述两个SDRAM连接的配置;图119说明三个SDRAM连接的配置;图120根据本发明是描述flag-picture-end操作的流程图;图121根据本发明是表示start-code-search操作的流程图;图122根据本发明表示时间标记的修改(modification);图123说明微处理器接口的读定时关系;图124表示微处理器接口的写定时关系。
在本发明实施的随后描述中,经常用到以下词汇,用下面的词汇表对它们作概括性定义词汇表块一个8行乘8列的象素矩阵,或64个DCT系数(源,已量化的或去量化的)。色度(分量)一个矩阵,块或单个象素,它表示两个色差信号之一。色差信号按照位流中所定义的方式与各个基色有关。用于表示色差信号的符号为Cr和Cb。编号表示一个以其编码形式表示的数据元素。编码视频位流如在本说明中定义的一幅或多幅图象系列的编码表不。编码次序一些图象传送和解码的次序。这个次序不一定和显示次序一样。分量来自组成一幅图象的三个矩阵(亮度和两个色度)之一的矩阵、块或单个象素。压缩用于表示一个数据项的位数的减少。解码器一个解码过程的具体实施。解码(过程)在本技术说明中作出说明的过程,它读输入编码位流并产生解码的图象或声音样本。显示次序已解码的图象显示的次序。典型情况下这个次序与图象出现在编码器输入的次序相同。编码(过程)在本说明中未予说明的一个过程,它读一些输入图象或声音样本的流并产生如本说明所作出说明的一个有效的编码位流。基编码对一个宏块或图象的编码,它只利用从该宏块或图象得到的信息。亮度(分量)表示信号单色出现的一个矩阵、块或单个象素,它按照在位流中定义的方式和各个基色有关。用以表示亮度的符号为Y。宏块四个8×8亮度数据块和两个(对于4∶2∶0彩色信号格式)四个(对于4∶2∶2彩色信号格式)或八个(对于4∶4∶4彩色信号格式)相应8×8色度数据块,这些色度数据来自图象亮度分量的一个16×16区(section)。宏块被用来有时指象素数据,有时指象素值的编码表示和本说明这一部分中定义的语法的宏块头中定义的其他数据元素。对于具有本行一般技能的人,根据上下文其用法是清楚的。活动补偿用活动矢量改进象素值的预测效率。预测用活动矢量提供进入过去的和/或未来的参考图象的位移量。这些位移量包含以前已解码的象素值,它们用来形成预测误差信号。活动矢量一个两维矢量用于活动补偿,它提供当前图象中的座标位置到一幅参考图象中的座标的位移量。非基编码对一个宏块或图象进行编码,它既利用它本身的信息也利用发生在别的时间的宏块和图象的信息。PEL图象元素图象源的、编码的或重建的图象数据。一幅源的或重建的图象包含三个8位数的矩形矩阵表示亮度和两个色度信号。对于逐行显示,一幅图象等同一帧,而对于隔行显视,一幅图象可以指一帧或该帧的上场或下场,根据上下文来决定。预测用一个预测器提供当前正被解码的象素值或数据元素的估值。可重配置的处理级(RPS)响应一个已被识别的令牌,重配置它自已来完成各种操作的级。片一系列宏块。令牌一个交互连接信使包形式的通用适配单元,用于控制和/或数据操作。起始码[系统和视频]夹在编码位流中的32位码,它们是独特的。它们用于几个目的,包括识别编码语法中的某些结构。可变长编码VLC编码用的一个可逆过程,它为常发生事件指定较短的码字,为不常发生的事件指定较长的码字。视频序列一幅或多幅图象的一个序列。
详细说明下面的“发明详细说明”包括以下部分1)发明中存储器寻址的详细说明固定宽度字中的变长度字段用有变长度字段的固定宽度字实现地地替换固定宽度字用于变宽度数据寻址微可编码的状态机结构运算核2)发明中用共用处理块转换数据的详细说明发明的理论背景3)发明中时间同步的详细说明4)发明中异步交替缓存的详细说明5)发明中存储视频信息的详细说明6)发明中并行Huffman解码器的详细说明Huffman码ROM最大吞吐量FLC和令牌补充7)其它详细说明发明的详细说明作为说明此发明最一般性特点装置的介绍,优化装置200显示了数据流通过情况。详见附图中图1。此发明的实施例是用有多种控制和数据令牌的双线流水线系统来优先实现的。系统的主要部件包括起始码检测器201,视频Parser 202及与其结合的Huffman解码器203和微可编程状态机(MSM)204,离散余弦逆变换(IDCT)205,及具有关联地址发生单元的同步DRAM控制器206,包含过采样210、211和视频定时发生器212在内的适当预测电路208和显示电路209。
此项申请与英国专利申请号9405914.4公布的主题内容有关,后者题目为“视频解压缩”,由Discovision协会于1994年3月24日申请,并被本申请做为明确的参考。
根据上文,下面将更详细地提出本发明的具体方面、特点和子系统区域。在附图中,相同的参考数代表不同图中相同或相应的部分。发明中存储器寻址的详细说明根据此项发明,这里要描述一种存储器寻址的方法和装置。特别地,这项发明提供用固定宽度字对变宽位域进行延迟的方法。更进一步,它还提出一种用固定宽度字进行变宽度数据寻址的方法。在实施例的不同形式中,变位域在用固定宽度字为变宽度数据寻址时被用于标明被换入字的位或标明字中未用到的部分。而且本发明的系统还包括一个有运算核的微可编码状态机。
微可编码状态机指定用于解决有多种和/或复杂运算需要的设计问题。这种设计的实例包括地址生成,流分析和解码,滤波孔系数(filter tap coefficent)计算。在这方面,寻址必须解决两种不同特性(1)变长度地址以访问字的各种宽度区段,(2)地址替换。在此项发明中,一个64×32位配置的RAM能用64×32位,126×16位,256×8位,512×4位,1024×2位,或2048×1位格式的部分字寻址。定宽度字内的变长度字段在许多应用中,为如替换、变宽度数据寻址或压缩字的其它部分等操作定义字的可变部分(称为字段)是很有用的。传统的定义字的可变部分的方法是用另外一个字(或几个字)标明该字内字段(或几个字段)的宽度。根据此项发明,描述了一种在该字内为该信息编码的方法,这种方法对整个字的定义可节省位,简化被编码字的解码,以及提供被编码者更直观,景象的优点。而且这种编码方法在变宽度字段字内按最高位或最低位对齐时是有效的。
于是表1显示了两个字义在八位字上变宽度字段(称为“F”)按最低位对齐的例子。“W”代表这些字内其它潜在字段。
表1位号(十六进制) 7 6 5 4 3 2 1 0固定字 W W W F F F F FW W W W W W F F表2表示用传统方法为表1所示字段编码,传统方法以二进制为单位,用足够的附加位标明字段的最大宽度(标“X”的位意为“不管”,即它们的值没有影响)。这种方法在位数利用上是低效的,而且不如本发明所述的形式直观。
表2位号(十六进制)7 6 5 4 3 2 1 0 字段定义固定字W W W X X X X X 1 0 1W W W W W W X X 0 1 0按此项发明提出的新方法在字内定义了字段。这种方法用一个继续标记和一个终止标记定义字段。所标的字段一端是一系列继续标记,并跟随着一个终止标记。而在零长度字段情形下,仅在字的末端提供一个终止标记。继续标记和终止标记都是单位的,且必须互补。另外,字段必须和字的任一端对齐。因此,这项发明中字段编码的方法只需比原字宽多一个位的宽度。
如表3所示,描述了用新方法对表1所示的字段编码。在此例子中,继续标记是“1”,终止标记是“0”。例子中的字段是最低位对齐的。
表3位号(十六进制) 7 6 5 4 3 2 1 0固定字 W W W 0 1 1 1 1 1继续标记=1终止标记=0 W W W W W W 0 1 1
所以,根据这项发明,编码方法的优越性在于1、减少了编码中所需位数2、在编码过程中需要简化,因为通常所需的表1~2中所示的“字段字义”的解码的“X到1”是编码中固定性质,这种编码是以2x的1形式。
3、编码形式更为直观,使字段字义更容易识别而且,这项发明的编码方法也可被用于终止标记和继续标记互换的情况。变换后表3的编码与表4类似。因而在实际应用中“1”和“0”可交换使用。
表4位号(十六进制)7 6 5 4 3 2 1 0固定字W W W 1 0 0 0 0 0继续标记=1终止标记=0 W W W W W W 1 0 0正如前文指出的,被编码的字段须与字的任一端对齐。表5说明了最高位对齐字段,即除字段从最高位(下文后称MSB)向最低位(下文称LSB)直到并包括第一个终止标记为止外,字段编码方式与最低位对齐时相似。表5所示字段编码后见表6。
表5位号(十六进制)7 6 5 4 3 2 1 0固定字F F F F F W W WF F W W W W W W表6位号(十六进制)7 6 5 4 3 2 1 0固定字1 1 1 1 1 0 W W W继续标记=1终止标记=0 1 1 0 W W W W W W另外,字段可以同时从字的最高位端和最低位端进行编码。例如表7中两个字段编码后示于表8,比前面讲的每个字段仅多加一位。
表7位号(十六进制)7 6 5 4 3 2 1 0固定字F F F F W W F FW W W W F F F F表8位号(十六进制)7 6 5 4 3 2 1 0固定字1 1 1 1 0 W W 0 1 1继续标记=1终止标记=0 0 W W W W 0 1 1 1 1用变长度字段的固定宽度字实现地址替换用另一个值替换存储器地址的一部分有些情况下是有用的。这样可以建立与数据有关的地址。本发明的编码方法可应用到存储器的地址中,用以指定地址的哪一部分要被替换。若地址中采用最低位对齐变长度字段,就可以定义替换字段。比如,一个十二位地址0baaaaaaaaaaaa被编码,使得其最低5位被十二位值0bcccccccccccc替换,会有0baaaaaaa011111并产生地址0baaaaaaccccc。表示12位地址内替换的编码。
表9地址替换
用固定宽度字来寻址变宽度数据这项发明的实施例之一是用于寻址存储器,该存储器可以在它的全宽或在2n宽度至全宽上被访问(这些较短的字叫做部分字)。因而我们要讲述此项发明的变字段编码如何用于这种存储器的寻址及如何把这些地址编入存储器索引。
要访问需要不同地址长度,宽度为32、16、8、4、2和1位的64×32位寄存器组,即实施例的实现是一个可被64×32位、128×16位、256×8位、512×4位、1024×2位、或2048×1位访问的64×32位存储器。可以看到访问到64×32位的任一位置需要5位,而要访问到2048×1位的位置之一需12位,因而地址是变化长度的。且地址宽度实际上表明了存储器的地址格式。所以,地址可以用最高位对齐的限制地址并定义其宽度的变宽度字段来在一个固定字宽度内定义地址。表10对此做了说明。
表10变宽度寻址
为便于地址索引,可以用前文讲的地址替换方法替换地址的部分区段。地址的替换部分(或字段)可被一个最低位对齐的变长度字段字义(继续标记为“1”,终止标记为“0”),该字段被加到表10所示字段的顶部。用一个八位字地址为例,表11表明如何定义低位被替换的位数。加上的最低位是替换标志器(标为“W”)。固定宽度字用于替换的一般情况示于图2。
表11地址替换
实际中替换码被加到已被编码的地址顶部。从这种编码中可以发现有不合法地址,最明显的是0×0000和0×3fff。在这种情况下,底部9位里必须有“0”以防替换位数超过8,且顶部6位中的“1”标明允许的访问宽度。如果测试出这些错误时,存取未定义,而寄存器文件内容不受影响。
根据此项发明,下面讨论对寄存器组中部分字的寻址和访问。
传统的存储器电路规定了存储器必须在全宽度上被访问,为了达到变宽度访问,就要读入全宽度字(32)位。这个全宽字循环移位直到被访问的部分字以LSB对齐,再将其上部分扩为全宽后输出。扩展可用零或1或符号填充,其中符号填充是用符号大小号(sign-magn-itudenumber)的符号位作为新的MSB,还可以用其它类似的传统方法填充。扩展取决于操作模式。当部分字被输入并写回存储器时,部分字首先复合循环成全宽字,全宽字再循环并写入存储阵列图3显示了32位字的第四个4位部分字的访问过程。
为访问或读取部分字,象图3中第1行213中所示的四位字,全宽字必须循环到位于LSB部分的字,如第2行214所示。第3列215所示4位字扩展产生了一个全32位字,这个字此时就可被访问了。
如图3所示,一个被选中写回的全宽字被截成原始部分字的宽度区部分字,多路传输到第2行214所示字中。在LSB位置,上述特点显示于第4行216。结果字被循环回读入字的初始位置,参见第5行217。这时的全宽字便可写回寄存器组。
下表总结了图3中标号的步骤1、从存储器中读取全字;2、循环右移12位,使部分字位于LSB;3、扩展为全字,然后传递到输出;4、输入的部分字多路传输到(2)中的循环成的全字;5、循环左移12位使全字恢复原始被写状态。
上述存取认为存储器数据流结构如图4所示。结构中的号码对应上文和图3。
存储器地址必须被解码以控制上述结构。应该看到任意宽度地址的MSB相对于存储器来说都在同样重要性。解码地址的顶部6位是一个32位字地址,剩下部分是一个位地址。所以,解码阶段(与替换并行)是用测试最高有效终止标记的位置来解码定义的可变字段的地址宽度。这使得地址是MSB对齐的(在LSB用零移位)。顶部6位可被直接用作存储器的32位字行地址。底部5位可被直接用做控制两个桶状移位器(见图4),这是因为,象一个初始32位的地址总会有0b00000的移位(当地址是MSB对齐时移的位)。同样,16位地址总有0b×0000的移位,即0或16位位移和1位地址能有0b×0000的移位,也就是0到31位位移。扩展器和输入多路转接器由分别用于屏蔽输出字和传输输入字至合适位置的取宽度解码来控制。解码的块结构图参见图5。可以看出,为宽度和替换做的两可变宽度字段的解码可以并行独立地完成。
图2所示的例子是用13位的固定宽度字对变宽度数寻址,并做图示中底部两行的替换。对这些例子而言,一个8位字可在0b1101-ssss位置被寻址,而“ssss”是从另一个地址源替换过来的。
微可编码的状态机结构按照此项发明,存储器的地址替换和存储器的变宽度存取被结合实现于一个微可编码状态机,其结构如图6。这个结构是状态基218的一个,用一种叫微编码指令的宽控制信号字方法对运算核219提供控制,而运算核219反过来传递状态标识和某些数据到状态机218。
按照本发明,状态机218包括一个含一系列微编码指令的存储器。和传统微编码状态机一样,它或可连续执行这些微编码指令,或跳跃式的从一条指令转向另一条。跳跃地址形式如图7所示,替换值来自图6和图8所示的运算核219。这就在微编码程序中提供“跳跃表”的结构。因此,如果做一次3位替换的跳跃,将有8种可能的连续位置被达到,每种取决于运算核获取的值而定,即是一种可编程的跳跃。运算核图8所示的运算核219,包括一个叫寄存器组211的存储器,一个运算逻辑单元(ALU)222,一个输入口223和一个输出口224。这些部件通过总线和多路转换器连接。正如前文所讲,这些部件和定义它们连接的多种转接器都由状态机218发出的微编码指令控制。ALU222及通道223、224是通常的,而寄存器组221是允许变宽度变址访问的存储器,寄存器组221的地址直接被编码进微编码指令中。
用这种方法寻址寄存器组有许多优点。首先,应用中许多地址不必是存储器的全部宽度(在这里是32位)。而用全宽度地址它不会对装置操作产生影响,会非常浪费内存单元。存储器单元数目的最小化将使内存占据空间最小化,从而寄存器组中容性负载也最小。这可使寄存器组速度最大化。其次,与存储器存取的变宽度结合的索引允许穿过不同宽度的地址,对一位的情况,能精确实现多位除和乘。
总之,一种存储器寻址过程可描述为以下步骤(1)提了一个有预置固定位数的固定宽度字,用于变宽度数据寻址;(2)用宽度定义字段和地址字段的定义固定宽度字,其中地址字段为宽度定义字段提供至少一位终止标记;(3)用定义的数据地址的多位来定义地址字段;(4)变化的地址字段位数与变宽度数据大小有逆向关系,而变宽度数据在宽度定义字段中的位数与变宽度数据大小有正比关系,改变宽度定义字段和地址字段的宽度时为变宽度数据寻址保留一个固定宽度字。另外,存储器寻址过程有以下步骤(1)提供一个有预定的固定位数的固定宽度字用于数据寻址;(2)定义一个有地址字段和替换字段固定宽度字;(3)定义有多位定义数据地址的地址字段;(4)定义有至少一个替换位的替换字段;(5)替换字段至少有一位充当地址字段与替换字段之间的终止标记;(6)用替换字段从单独的寻址源中标识替换位,并在反过来变换地址字段的宽度和替换字段的宽度时为变宽度数据寻址保留一个固定宽度字。此外,所说明的存储器中变宽度数据寻址过程有以下步骤(1)提供一个有预置宽度且由部分字组成的字的存储器;(2)部分字循环至最低位对齐而被访问;(3)扩展字的剩余部分,使得被访问字被视为部分字;(4)恢复字的剩余部分并使之循环直至部分字恢复到它的原先位置。发明中用共用处理块转换数据的详细说明根据此项发明,本实施例涉及一种使信号由频域到时域的变换方法,同时也涉及实现这种转换的数字电路。
在远距离通讯领域中,共同目标是提高信息容量和传输速度。然而每种通讯媒介对传输速度加以限制,这是由必须对传送信号进行处理的发送端与接收端硬件造成的。象电报线是一种典型的比邮递快得多的信息发送媒介,虽然打印和阅读邮件的速度可能比用电报键敲击快。
对发送信息时编码的方法也会限制信息传送的速度。比如一条长线电报(Long-winded,telegraph)信息比包含同样信息内容的简要消息传送时间长。因而最大的发送和接收速度可以通过尽可能地压缩被传输数据的方法获得,然后利用高速传送媒介,并尽可能快地在两端处理数据,这常意味着系统‘瓶颈现象’的减小和消除。
必须为大量数据提供高速传送的应用之一是数字电视领域。传统电视系统是用模拟无线电及电信号控制电视屏幕上显示行的图象元素(‘象素’)亮度和颜色,而数字电视传送系统将模拟信号转换为对应于象素点亮度和颜色值的二进制“数字”,产生图象的数字表示。现代数字编码方案和硬件结构通常比传统模拟传送系统有更高的信息传输速率。正因如此,数字电视能够获取比传统模拟电视高得多的分辨率和逼真得多的图象。人们期望包括称作高清晰度电视(HDTV)系统在内的数字电视系统在下个年代时的工业化世界取代传统模拟电视技术。从传送到存储,由模拟向数字图象的转换与由模拟录音带向现在到处可见的压缩光盘(CD)转换相似。
为了增加数字图象技术的一般用途,数字图象编码的标准化方案已被采用,一种称为JPEG标准的这种标准化方案用于静止图象。对运动的图象,现在有两种标准MPEG和H.261,这两种标准对运动图象的连续帧采用似JPEG方法处理。为了优于重复使用JPEG,MPEG和H.261对连续帧之间的不同进行处理,利用了众所周知的事实,即帧之间的运动差是很小的。因此,化费较小时间和空间去传送或存储对应变化的信息,而不是去传送或存储相似的静止图象信息。好像连续的每帧完全不同于连续的最靠近它的帧上的信息。
为了方便,所有现行标准运作都基于将图象或画面分割为很多文件或块状,每块均由8象素点宽和8象素点高的一幅画面组成。每个象素由三个(或更多)被叫做该象素‘元素’的数字代表。有许多可以将颜色象素点分解为元素的方法,比如用标准符号,象YUV;YCr,Cb.RGB等等。所有传统的JPEG方法都分别处理每个元素。
众所周知,眼睛对图象的高频成分(或边界)不敏感。有关最高频率的信息经常被完全忽略,而人类观察者不会发现任何图象质量的明显降低。利用去除眼睛观察不到的高频信息,使图象信息内容得到减小,必须用某种形式将包含空间信息(如亮度的实际值)的8×8象素块转换得到频率信息。JPEG,MPEG和H.261标准均采用著名的离散余弦变换处理8×8空间矩阵以获得8×8频率矩阵。
象前面讲的那样,输入数据代表图的一个方区间。要把输入数据转换为频域表示,所用的转换必须是二维的,而二维变换很难有效计算。已知的二维离散余弦变换(DCT)和伴随的离散余弦逆变换(IDCT)却具有“可分离”的特性,这意味着不必对8×8象素块中64个象素点同时进行运算,可先将块按行转换出中间值,再将中间值按列转换出最终转换频率值。
一维N阶DCT在数学上相当于两个N×N矩阵相乘。为了对一个8×8象素块进行必要的矩阵乘法,需进行512次乘法和448次加法,因此在8×8象素块上做整个二维DCT,需要1024次乘法和896次加法。这些运算操作,尤其是乘法,既复杂又慢,因而限制了可达到的传送速度。它们同样需要考虑为实现DCT所用硅片的面积。
DCT方法可以被重新排列以减少所需的计算量。目前有两种减少DCT所需计算的方法,二者都用到“二分法(binary decimation)”。术语“二分法”意味着一个N×N变换可以用两个N2×N2变换计算,再加上一些安排计算时的计算性辅助操作。尽管8×8的变换需要进行512次乘法和448次加法,一个4×4的变换却只需进行64次乘法和48次加示。因而二分法节省了284次乘法运算和352次加法运算,而且实现二分法的辅加运算与减少的运算量相比,一般可以忽略。
目前,两种主要二分方法代表人是Eong GiLee和Wen-Hsiung-Chen Lee的方法利用了逆DCT定义里固有的对称,而且通过利用简单的余弦特点,该法定义了一种递归的二分方法。Lee的办法仅适用于IDCT。
Chen的方法用递归矩阵的特点,矩阵缩简为仅有对角阵。这种方法利用已知的对角阵特点提供了简单DCT的二分方法。
Lee和Chen方法中一个严重缺点是它们相对于乘法和加法必需进行的情况是不平衡的。实质上,两种方法需要许多加法后跟随着许多乘法,或反过来。因而,当用硬件实现Lee和Chen的方法时,不可能使加法器和乘法器并行运算。这会降低它们的速度和效率,因为硬件的最佳利用是当所有加法器和乘法器总被使用的情况。
此外,这些已知的用于DCT和IDCT计算的方法和装置还有一个缺点,就是难以处理叫做规范化系数(normaligation Coefficien-t)的问题,已知的构造需要在所有乘法器都在使用时加一个附加乘法运算时间。
这些应用前向和逆向DCT于视频数据的已知的方法对于不需考虑实现运算的半导体器件布局的软件设计人员来说是非常简便而高效的。但是这些方法对实现令人满意的、数字视频所需要的传送速度而言,在半导体结构和硬件内部连接关系上常常太慢或太复杂。
现有作用于视频数据的、实现DCT和IDCT的方法和硬件结构还有一个缺点,即需要数值的浮点内在表示。为了说明这个缺点,假定一个人有一个仅可处理三位数的计算器,三位数包括出现在小数点右边的数字(如果有的话)。进一步假设计算器要将12.3与4.56相加(注意小数点在这两个数字中相对数字的位置不是固定的。也就是说,小数点允许‘移动’)。由于计算器不能存储表示整个结果16.86需要的四位数,计算器必须或者舍掉最右端的‘6’来缩短结果,产生答案16.8,或者必须有必要的硬件把结果四舍五入到最接近的三位近似16.9,使结果减少为三位数字。
正如这个非常简单的例子所表明的,如果需要浮点运算,必需接受精度的损失,或者加a高复杂度和浪费空间的线路以减小舍入误差。即便使用了有效的舍入电路,舍入或截断误差的累积及扩展仍会导到视频信号内不可接受的失真。这个问题在处理视频信号的方法用到多次乘法时更加突出,因为一般乘法比加法引起的浮点舍入和截位误差更大。
一个更有效的DCT/IDCT方法和硬件结构必须保证方法中用到的数字可以用固定位置小数点表示,但这种方法中能够用到每个数字的全部可变范围。在这样的系统里,截断或舍入误差会消除,或至少大大减小。
在上面的例子中,如果硬件可以处理4位数,就不需要大于99.99的数,且每个数字有位于第二位和第三位之间的小数点,这样,小数点的出现根本不会影响所有计算。因此,可以仅将每个数视为整数进行运算,如1230+0456=1686的结果与12.30+4.56=16.86的结果一样明了,因为计算者一直知道‘1686’的中间‘6’和‘8’之间应该有一个小数点。换句话说,如果数字(常数或其它)被有选择地定标或校正,使它们落在相同的范围内,在该范围中的每个数字可以被准确单一地表示为一系列整数。
一种减少所需乘法器数目的方法是简单地用一个乘法器,它能够从不同途径接收输入数据。换言之,这个结构用一个乘法器进行DCT和IDCT计算中不同步骤内的乘法。虽然这种“纵横接线”可以减少所需乘法器个数,但它意味着需要采用大而复杂的多路转接器结构去选择乘法器的输入,其它与乘法器隔离,并把适当的信号从选择的信号源接入乘法器输入端。此外还需要大规模多路转接器,将大量的输出从共享的乘法器接到适当的下面的电路。所以,纵横接线或多路传输是复杂的,一般很慢(因为需要额外的存储),并且最终的半导体实现花费巨大。
现存包含“纵横接线”的结构的另一个缺点是它们需要通用目的的乘法器。即现有系统需要两个输入都可变的乘法器。正如众所周知的那样,数字乘法器的实现一般包括多行的加法器和移位器,如果一个乘数字的当前位是‘1’,被乘数的值就被加到局部的结果中,但若当前位是‘0’就不加。由于通用目的的乘法器必须能处理每一位都是‘1’的情况,所以必须提供一行加法器给乘数字的每一位。
举例来说,假设数据字8位宽,希望将单输入乘以5。数字5的9位表示为00000101。换句话说,乘5的数字乘法仅需要将输入值向左移两位(对应于乘4的乘法),再加到未移位前的值中。剩下6个系数位置位值为‘0’,所以它们不需要任何移位或附加步骤。
在这种情况下,固定常数乘法器指的是只能乘以5的乘法器,做这种乘法仅仅需要一个移位器和一个加法器(不考虑传送位的电路)。相反,一个通用目的的乘法器在八个位置的每一位上都需要移位器和加法器,虽然可能六个位置都不会被用到。如例子所示,固定系数能够简化乘法器,这是因为它们允许设计者减掉对应系数中零位的加法器行,从而节省硅片面积。
在IDCT方法中,根据此项发明,一个为N×N象素块的每N行和N列的一维IDCT被抽出,并且1-D的IDCT在N-2个序号为奇数的象素输入字和N-2个序号为偶数的象素输入字上分别工作。
在一个优选实施例中,按JPEG标准N=8。二维IDCT的结果便可以通过连续执行两个一维IDCT顺序操作而获得(用中间记录转换数据)。
在通常处理步骤中,当N=8,第一对输入值不需相乘就传递到输出加法器及减法器。第二对输入值的每一个要与对应于两个换算过的余弦值的两个常数系数的每一个相乘。在共用处理步骤中,不需要做其它乘法,只需一次减法和一次加法。第二对同第一对输入值双双相加或相减,以形成偶数或奇数个结果值。
在预先的共用处理阶段中,最低阶数的奇输入字预乘上2的平方根,并且奇输入字在一般处理块之前被成对相加。在共用处理之后的阶段,对应于处理过的奇输入字的中介值与预置恒常数相乘,形成奇结果值。
计算完偶和奇结果值后,用简单的从偶结果值减去奇结果值便形成了N/2个高阶输出,并用简单的奇结果值与偶结果值相加获得N/2个低阶输出。
对DCT(在视频处理系统的发送端)和IDCT(在接收端,该端包含本发明各种方式的一个或多个)来说,数值用简单的二进制右移,可很好地,故意地向下。这种故意的被平衡而向上换算消除了一些传统方法所需的乘法步骤。
按照此项发明的方法的另一方面,恒定常数或中介结果数据的选择位被预先设定的选定位‘1’或‘0’值舍入或校正。
象素数据的二维变换由第二个相同的1-D操作,从第一个1-DIDCT处理步骤的输出值上实现。
根据此发明的另一方面,一个IDCT系统包括一个预共用处理单元和一个对输入数据字进行预共用、共用、后共用处理计算的共用处理线路。一个监控控制器产生控制信号,去控制各种系统锁存器的负载;最好,去连续地时间复合N/2个奇数和N/2个偶数已编号输入字输到预共用块的输入锁存器,控制奇偶结果值的加法,并形成和锁存低阶(Low order)输出信号,并控制从偶结果值减去奇结果值,可形成并锁存高阶(High order)输出信号,并顺序控制内部多路转接器。
在这个发明中,偶数和奇数输入字通过不同路径同样的处理块更优化地被处理。输入数据字最好(但不必要)锁存,不必严格按递增或递减顺序,但是最好为数据路径提供一种能实现有效的“蝶形(butterfly)”结构的顺序。
进一步讲,至少共用处理电路可被设置为一个预逻辑电路,它的正常运作不需时钟和控制信号,按详细应用情况可以用其它处理块。
这里不需要通用目的的乘法器(有两个可变输入)。相反,恒定常数乘法器被这个优选实施例贯穿使用。另外,这项发明的优选实施例还包括固定点整数运算装置,可以为实现视频信号的IDCT变换提供方法和系统而设计。这种装置具备一条或几条以下特点1、所有费时的运算操作固定使用;2、为了减小实现IDCT所需的硅片面积,存储元件(如锁存器)数量是小的,以不超过有效的构成流水线的要求为好,并用少量恒定常数乘法器,而不用要用额外存储元件的通用目的乘法器。
3、要把运算过程安排得每个运算操作不需要复杂的设计,比如如果已知使用‘脉动加法器’,它们会有足够的时间去求‘解’(见下文)或产生它们的结果;如果运算安排方式使得其它设计优于重新安排的运算过程,使得避免延迟,且提供更大的吞吐量和效率;
4、可以通过自然顺序得到结果;5、不需要昂贵、复杂、交错地接线;6、结构能支持快得多的运算;7、控制数据流通过变换硬件的线路面积可以很小。发明的理论背景为了了解不同部件的目的和功能,了解根据此发明在IDCT系统中利用信号处理方法的优点,了解系统的理论基础是很有帮助的。二维IDCT的可分性对一N×N的象素块的二维前向离散余弦变换(DCT)的数学定义如下,其中U(j,k)是对应象素绝对值X(m,n)的象素频率值。
式1y(j,k)=2Nc(j)C(k)Σn=0N-1Σn=0N-1×(m,n)cos[(2m+1)jn2N]cos[(2n+1)kn2N]]]>j,k=0,1,...,N-1对j,k=0,c(j),c(k)=1/2;否则为12N项控制变换的dc级别,系数C(j),C(k)是已知归一化因子。对应的离散余弦逆变换,即IDCT,表达式如下式2x(m,n)=2nΣj=0N-1Σk=0N-1c(j)C(k)Y(j,k)cos[(2m+1)jn2N]cos[(2N+1)2N]]]>j,k=0,...,N-1,j,k=0时,c(j),c(k)=1/2;否则为1前向DCT是用来将空间值(无论直接表示象亮度一类的特性,还是象在MPEG标准中那样表示差别)变换为它们的频率表示。逆DCT正如它的名字所隐含的,向另一个‘方向’操作,即IDCT将频率值转换回空间值。在表达式2(E2)中,注意每个余弦函数仅与求和符号之一有关。因此,表达式E2可被重写为式3x(m,n)=2NΣj=0N-1c(j)cos[(2m+1)jn2N]Σk=0N-1c(k)Y(j,k)cos[(2n+1)kn2N]]]>这相当于先进行对依赖于k和n的所有项乘积的第一个一维IDCT,在一次直接的标准数据变换后,将第一个IDCT操作的输出做为输入,接着做第二个一维IDCT。一维IDCT定义一维N点IDCT(n是一个偶数)由下式定义。式4X(k)=Σn=0N-1c(n)·y(n)cos[π(2k+1)n2N]---k={0,1,...,N-1}]]>对n=0,c(n)=1/(2);否则为1式中y(n)是逆变换函数的N个输入,x(k)是它的N个输出。和2维情况一样,DCT公式在求和符号下有相同结构,但归一化常数在求和符号外,且x和y向量在式中交换了位置。一维IDCT的分解如上所讲,一个二维IDCT可以用变换分解为一系列一维IDCT的操作进行计算。根据一个实施例,这些一维运算反过来被分解为一些子过程,用来进一步减小半导体实现要求的大小和复杂度。系数的归一化正如上面讨论的那样,IDCT硬件的一个重要设计目标是减小必须包括进电路的乘法器数目。所以大多数计算DCT和IDCT的方法都试图减少所需乘法的次数。但是对于本实施例,全部输入值都用二的平方根因子向上故意换算。换句话说,用根据本发明的实施例的方法,IDCT表达式(E)的右端是与二的平方根故意相乘的。
根据这个实施例,两个一维IDCT运算顺序进行(具有一个中介变换),以产生最后的二维IDCT结果。每个一维运算包括一次与相同的二的平方根因子的乘法。因为中介变换不需要换算,连续做两次与二的平方根的乘法的结果是最终的二维结果会是向上乘因子2。要获取未经换算的值,电路就只需被2除。由于所有值都被数字表示,这种除法可以很简单地用右移数据的方式完成。下面要讲得更明白些,在每个一维IDCT阶段用到的以2的平方根向上换算及最后的以2向下换算,要通过都在系统硬件内的加法器、乘法器和移位器实现,这样,系统对可能与其相连接的其它装置不会设置换算输入的要求,因而系统与按JPEG或MPEG标准运作的其它传统装置兼容。所以,根据这项发明的实施例,归一化消除对IDCT半导体构造中硬件乘法器作至少两个2的平方根的乘法运算的需要。正如下文更详细解释的那样,在每个一维运算中输入数据的单步附加乘法(用2的平方根向上换算),可以消除用传统方法时必须的其它乘法步骤。一维IDCT向高和低阶输出的分离表达式E现在可以对N/2个低阶输出(k=0,1,......N/2-1)和N/2个高阶输出(K=N/2,k=N/2+1,......N)分别求值。对N=8,这意味着可以先变换输入,计算Y(0)、Y(1)、Y(2)和Y(3),然后变换输入去计算Y(4)、Y(5)、Y(6)和Y(7)。
将变量K′=(N-1-K)引入高阶输出(K=N/2+1,......N),这样当K′从(N/2+1)向N变化时,k′从(N/2-1)向N变化。对N=8,这意味着对k=(4、5、6、7),k′=(3、2、1、0)。然后就可以显示将表达式E分解成以下两个子表达式E5(与E除了求和间距外都相同)和E6。
低阶输出式5X(k)=Σn=0N-1c(n)·y(n)·cos[π(2k+1)n2N]]]>k={0,1,...,(N/2-1)};对n=0;c(n)=1/2;否则为1高阶输出式6x(k)=x(N-1-k″″)=Σn=0N-1y(n)(-1)ncos[π(2k′+1)2N]]]>k={N,...,(N/2+1)}→k′={0,1,...,(N/2-1)}(由于全部高阶项C(n)=1,C(n)不包含在此式中。)注意E5与E6在求和符号内结构相同,除了(-1)n项改变了求和符号下代表上层N2个输出值在奇号输入(n奇数)时乘积的符号,且除了Y项要和C(0)=1/√2相乘。一维IDCT向偶和奇输入的分离观察到一维IDCT表达式E4的一个求和也可以分解为两次求和一次对偶数序号的输入(对N=8,Y(0)、Y(2)、Y(4)和Y(6)),一次对奇数序号的输入(对n=8,Y(1)、Y(3)、Y(5)和Y(7))。令g(k)代表偶数序号输入的部分和,h(k)代表奇数序号输入的部分和。
因而有式7g(k)=Σn=0(N2)-1c(2n)y(2n)cos[π(2k-1)2n2N]=Σn=0(N2)-1c(2n)y(2n)cos[π(2k-1)n2(N2)]]]>k={0,1,...,(N/2-1)};式8h(k)=Σn=0(N2)-1y(2n+1)cos[π(2k+1)(2n+1)2N]]]>k={0,1,...,(N/2-1)}.
对N=8,可看到E7和E8的求和都被n={0,1,2,3}取代。
现在回忆起余弦特征2.cosA.cosB=cos(A+B)+cos(A-B),又令A=π(2k+1)/2N,B=π(2k+1)(2N+1)/2N于是可以在表达式E8两端同乘以2.CosA=1/{2cos[π(2k+1)/2N]}=Ck.
注意到由于Ck不依赖于求和序号n,它可以被移入求和符号。再假定定义Y(-1)=0,发现对输入Y(7)的余弦函数等于0。h(k)的表达式可以重写为以下形式。
式9h(k)=12cos(π(2k+1)2N)Σn=0N2-1[y(2n-1)-y(2n-1)]cos[π(2K+1)n2(N2)]]]>k=(0,1,...,(N/2-1)}.
注意到输入[Y(2n+1)=Y(2n-1)]表示计算h(k)时,奇输入项配对以形成N/2个成对输入P(n)=[Y(2n+1)=Y(2n-1)]。
对N=8,P(n)值如下
h(k)的表达式E9可以如下表示式10h(k)=CkΣn=0N2-1p(n)cos[π(2k-1)n2(N2)]]]>k=(0,1,...,(N/2-1)}.
现在可以看出,g(k)和h(k)求和符号内的余弦项相同,并且都具有1维IDCT的结构(与表达式E5相比较),但对奇数k项,即h(k)的IDCT结果需要乘上系数Ck=1/{2 COS[π(2K+1)/2N]}。
换句话说,g(k)是作用在偶输入Y(2n)上的n/2点IDCT,而h(k)是作用在[Y(2n+1)=Y(2n-1)]上的n/2点IDCT,这里定义Y(-1)=0。
现在介绍下面的特征yn=y(n);c1=cos(π8);c2=cos(2π8)=cos(π4)=12;c3=cos(3π8);d1=1[2.cos(π1610)];d3=1[2.cos(3π/16)];d5=1[2.cos(5π/16)];d7=1/[2.cos(97π/16)].进一步引入换算的余弦系数如下c1s=2.cos(π/8);c3s=2.cos(3π8);利用余弦函数对称性(COS(-φ)=COS(φ))和周期性(C0S(π-φ)=-COS(φ)),表达式E7和E8可被扩展到N=8(记住(0)是1/√2),产生g(0)=1/2.y0+y2c1+y4c2+y6c3=1/2.(y+y2.c/s+y4+y6.c3s)]]>g(1)=1/2.y0+y2c3-y4c2-y6c1=1/2.(y0+y2.c3s-y4-y6.c/s)]]>+y6.c/s)g(3)=1/2.y0-y2c1+y4c2-y6c3=1/2(y0-y2.c/s+y4-y6.c3s)]]>h(0)=d1{y1+(y1+y3)c1-(y3+y5)c2+(y5+y7)c3}=d1/2.{2.y1+(y1+y3).c/s+(y3+y5)+(y5+y7).c3s}]]>h(1)=d3.{y1+(y1+y3)c3-(y3+y5)c2+(y5+y7)c1=d3/2.]]>{2.y1+(y1+y3)c3s-(y3+y5)-(y5+y7)c1s}]]>h(2)=d5(y1+y3)c3-(y3+y5)c2+(y5+y7)c1}=d5/2]]>{2.y1-(y1-y3)c3ys-(y3--y5)-(y5+y7)c1s}]]>h(3)=d7.{y1-(y1+y3)c1+(y3+y5)c2-(y5+y7)c3}=d7/2]]>{2.y1-(y1+y3).c1s+(y3+y5)-(y5+y7).c3s}]]>
现在,根据本发明的实施例,回想到对DCT和IDCT运算,所有值都用因子2向上换算。换句话说,根据这个实施例,h(k)和g(k)都乘上了这个换算因子。g(k)和h(k)表达式就变为式11g(0)=y0+y2*c/s+y4+y6*c3sg(1)=y0+y2*c3s-y4-y6*c3sg(2)=y0-y2*c3s-y4+y6*c/sg(3)=y0-y2*c/s+y4-y6*c3s和式12h(0)=d1[2*y1+(y1+y3)*c1s-(y3+y5)+(y5+y7)*c3s]]]>h(1)=d3[2*y1+(y1+y3)*c3s-(y3+y5)-(y5+y7)*c1s]]]>h(2)=d5[2*y1-(y1+y3)*c3s-(y3+y5)+(y5+y7)*c1s]]]>h(3)=d7[2*y1-(y1+y3)*c1s(y3+y5)-(y5+y7)*c3s]]]>注意到由于C2=COS(π/4)=1/√2,用√2做乘法给出一个换算C2值=1。对这个实施例用表达式换算的方法(对应视频绝对值和频率值的向上换算),有可能消除对乘法及C3S的需要,它们是恒定常数,使得不需用一般用法的乘法器。这转过来又消除了IDCT运算的半导体实现中对相应硬件乘法器的需求。
g(k)与h(k)的相似之处可以用矩阵形式表示这一系列等式的方法体现出来。令c是4×4余弦系数矩阵,定义如下式13C=1c1s1c3s1c3s-1-c1s1-c3s-1c1s1-c1s1-c3s]]>式14g(0)f(1)g(2)g(3)=C*y0y2y4y6]]>式15h(0)h(1)h(2)h(3)=D*C*2*y1y1+y3y3+y5y5+y7]]>这里D=对角阵[d1、d3、d5、d7]=d1、d3、d5和d7在4×4矩阵的对角线上,矩阵其它元素等于0。如E14和E15表示,计算偶序号输入以得到g(k),和计算奇序号输入以得到h(k)的过程都有与余弦系数矩阵c相乘的共同步骤。但是,为了求出h(k),输入必须首先配对求和(记住定义Y(-1)=0),Y(1)必须预先乘以2,而与c相乘的结果必须乘以D。
上述表达式同时表示,N点一维IDCT(见E4)也可被分为两个N/2点,一维IDCT,每一个都涉及对N/2个奇输入值(被归类)和N/2个偶输入值的共同核的运算过程(在求和符号内)。上述表达式在这个实施例中实现了为IDCT产生如下的简单结构低阶输出(N=8,输出k={1、2、3})式16Y(k)=g(k)+h(k);高阶输出(N=8,输出k={4、5、6、7});
式17Y(k)=Y(N-1-k′)=g(k′)-h(k′)。
注意到g(k)直接作用到偶输入值上,以直接产生输出值,而h(k′)涉及到输入数据的归类以及与值d1、d3、d5和d7相乘。
和通常情况一样,IDCT电路的设计者面临着一些权衡,象电路尺寸与速度,提供更多的装置及减少连接复杂性。比如,常可能为了提高计算速度,在硅片上加入一些附加的或复杂的装置,但这显然使器具变大或变复杂。而且,IDCT片上能够或希望包括的东西会限制或阻碍使用尖端复杂的设计,如“超前”加法器。准确性标准假设所有计算有无限的精度和准确性,也就有无限制的存储空间和计算时间,用IDCT和DCT变换图象数据重新产生的图象会完美地再现原图象。当然,这种完美不会只用到现有技术。
但是,为了获得某种标准化,IDCT系统目前根据一个标准化方法测量,即由国际电报电话咨询委员会“Comite ConsultatifInternational Telegraphique et Telephonique(‘CCIT’)在‘CCITT推荐附录1 H261-逆变换准确性规定’中提出的方法。这个测试规定产生包括随机整数的10,000个8×8块的集合。对这些块做DCT和IDCT变换(预先或随后进行预定的舍入、省略和算术操作)用预定的精度,以产生10,000个8×8‘参考’IDCT输出数据集。
当测试一个IDCT实现方法时,用CCITT测试块作为输入。实际的IDCT变换输出随后与已知的‘参考’IDCT输出数据做统计比较。为IDCT以术语峰值、均值、均方值和块的平均均差,在整个或部分元素上规定最大值。而且,如果相应输入块包含全零,IDCT必须产生全零输出,且当所有输入数据的符号改变时,IDCT必须符合同样的标准。只有当运行这些测试时最大误差不超过规定的最大值,才可以说IDCT的实现有可接受的准确性。
其它有名的标准是电机与电子工程师学会(‘IEEE’)的标准,在‘IEEE对8×8离散余弦变换实现起草的标准规定’,P1180/D2,July 18,1990中;及‘8×8离散余弦逆变换’附录A中,ISO委员会草案CD 11172-2。这些标准本质上与上文描述的CCITT标准相同。
硬件实现图9是根据此项发明的实施例,说明IDCT方法的数据流的简化的方块图(虽然下面要说明和解释的硬件结构做得更小巧而有效)。在图9中,系统输入如Y
和Y[4]及系统输出如X[3]和X[6]被显示为单线传送。这应该被理解为图9中每条单划线代表以数据总线形式的几条导线,用以最好是并行地传送每个输入和输出对应的多位宽度数据字。
在图9中,大开口圆圈225和226代表二输入加法器,小圆圈227在输入到加法器的连接点处表示用到了对应输入字的补码,这种有补码输入的加法器从非求补的输入减去要求补的输入。比如,虽然左上加法器输出的T0等于Y
+Y[4],即T0=Y0+Y4,此具有输出T1的加法器形成值Y
+(-1)*Y4=Y0-Y4。因此有一个补码输入的加法器被视为做差分部件。
同样在图9中,常系数乘法器由数据路径中的实三角形230表示。比如,输入Y1在进入加法器以得到B0前要通过一个2的平方根乘法器。因此,中介值T3=Y2·c1s+Y6·c3s,中介值B2=Pl·c3s-P3·c1s=(Y1+Y3)c3s-(Y5+Y7)·c1s。通过执行所示加法、减法和乘法,可以看到图示结构对g(0)到g(3)及h(0)到h(3)实现了表达式E11和E2。
根据这项发明,图9说明了实施例的一个重要优点。如图9所示,该结构分为四个主要区域,前公共块PREC 231,它形成配对输入P(k),并将输入Y(1)乘以2的平方根;第一个后公共块POSTC 1 233,它包括对常数d1、d3、d5和d7的4个乘法器(见表达式E12);第二个后公共块POSTC 2 235,它把g0加到g3项和h0到h3项为低阶输出,并为高阶输出形成g0到g3项和h0到h3项的差(见表达式E16和E17),一个公共块CBLK 232,被包含在偶和奇数据通道中。在根据此项发明实施例的处理电路,对奇和偶序号输入进行的公共操作用一个结构来实现,而不重复图9所示的结构。
为了理解运算方法和实施例中某些数字结构的优点,理解“进位位”很有帮助。举一个简单的例子,做两个二进制数的加法如1+1=0,看到有一个进位“1”,这个1必须加到高序位以产生正确结果“10”(十进制数“2”的二进制表示)。换句话说,01+01=00(无进位的“和”)+10(进位字);将“和”与进位字相加便得到正确结果00+10=10。
举一个十进制的例子,假设要做数字‘436’和‘825’的加法。手算这两个数相加的普通过程一般如下进行1、个位‘6’加‘5’是‘1’,有一个到‘十’位置的进位‘1’-*和1,进位入0,进位出1。2、十位‘3’加‘2’是‘5’,加上前一次进位的‘1’,得‘6’且无进位一。
和5,进位入1,进位出0。3、百位‘4’加‘8’是2,有一个到千位的进位1,但从前一步没有要加入的进位位。
和2,进位入0,进位出14、千位‘0’加‘0’,加上百位给的进位‘1’,是‘1’和0,进位入1,进位出0。
因而答案‘1261’通过将每个位置的进位和加到同样位置和中形成,而每个位置的进位入是与之相临的低位位置的进位出。(注意到这意味着最低位的进位入总是‘0’)。当然,问题在于必须等十位确定了有无进位再进行百位‘4’和‘8’的加法。这就对必须如此计算的“脉动加法器”进行了说明,因而脉动加法器不需额外的存储单元就得到‘最终’结果,但比一些其它设计慢。
一种可替代的设计被称为‘进位保存’,这种设计用存储部分和及结果字(在此例中是0251)的方法形成每个位置的两个数的和,并用另一个字存储进位值(这里是1010),整个结果可用和与进位字用下面一步加法获得,即0251+1010=1261。注意到人们可以同时进行每一个位置的加法,只要被保存任何时候都不需等着决定是否可以将进位字加到部分结果上。
由于分解运算一般需要每个运算级中所需时间的最大部分,加速这些运算可能对整运算产生重要影响,而且仅需相对较小地增加变换规模。所以,保存进位的乘法器通常比每行用脉动加法器的乘法器快。但是,这种时间上的收益会导致更大复杂度的代价,这是由于乘法器里每步加法的进位字或存储或传递到下一步加法中。而且,为了获得最终的乘法结果,最后的部分和及最后的进位字不得不被解决,通常用一个脉冲加法器做加法。但是,看到只需要一个脉冲加法器,使得时间的节省通常与必需进行的乘法规模成比例。进一步,注意到进位字被视为与任何其它的数字同样处理,只要它在需要最终的乘法结果以前的任何时间被加入,实际的加法可能被延迟。
在本项发明的实施例中,这种延迟解决的可能性被用来简化设计,并增加IDCT电路的吞吐量。而且,预选的进位字的某些位在解决前被可选而仔细地置成预定值,以便本发明在标准测试数据集上,基于测试运行的统计分析,提供更大的IDCT结果期望准确度。
图10是解释一个根据此发明的优化结构的方块图。在这个发明的优选实施例中,偶和奇序号输入是时间多路的,且在公共块CBLK232中分别处理。输入可按不同顺序被处理。
在图10中,标记Y[1,0],Y[5,4],Y[3,2]和Y[7,6]用来表示奇序号输入Y1、Y3、Y5、Y7最好优先通过计算电路,然后是偶序号输入Y0、Y2、Y4、Y6。这个次序在本实例中不是必要的,尽管如此,正如下文所解释的,某些后序的算术操作仅对奇序号输入进行,首先输入奇序号输入值,这些后序操作可以在所有输入的共同运算在偶序号上向上操作的同时进行处理。这样削减了一些运算装置空闲的时间。
同样,标记X
、X[1,6]、X[3,4]、X[2,5]用于表示首先输出低阶输出X0、X1、X2、X3,然后是高阶输出X4、X5、X6、X7。如图9和图10所示,输入最好最初不按递增顺序分组,虽然这不是必需的,因为对奇序号输入是Y1、Y5、Y3和Y7。如此顺序安排输入信号使图9和图10所示的‘蝴蝶结’数据通道结构成为可能,并在硅半导体装置中大大增加了实现此项发明的内部连接效率。
如图10所示,加法器和减法器分别用圆圈内一个‘+’(加法器)235,或一个‘-’(减法器)236,即有一个补码输入的加法器,或‘±’(可以在加法和减法间切换的解算加法器/减法器237)来表示。公共块232中二个m位输入字的最左端的加法器和减法器是与m位或包含加法/减法的进位位的(m-1)位字并行的m位部分结果。换句话说,公共块(BLK 232中的开头的加法和减法最好不去解,意味着进位位的加法要拖延到随后的处理级。这个步骤的优点是由于用到不需要计算进位字与结果的最终和的进位位保存的加法器/减法器。但是解算加法器可能仍被用于在加法器输出处以减小总线宽度。
图10同时解释了此项发明优化实施例中的单和双输入锁存器的使用。图10中,锁存器被示为正方形238,并在前公共块PREC 231和后公共块POSTC 233中被用到。单输入锁存器用在乘法器D1、D3、D5、D7的输入处,并锁存解算加法器/减法器的输入,这些输入是对应从g
、.g[1,6]、g[3,4]、g[2.5]和h
、h[1,6]、h[3,4]、h[2,5]的分别输出计算出的g(k)和h(K)的值。这样,解算加法器/减法器可实现上文表达式E16和E17所示的加法或减法。
如前文所述,偶序号输入Y0、Y2、Y4和Y6在公共块CBLK 232中处理之前不必配对。但是,不但奇序号输入需要这种配对,而且输入Y12也必须与2的平方根相乘,以确保向公共块CBLK 232提供正确输入值。所以前公共块PREC 231对每个输入值包括一个二输入多路处理(‘mux’)锁存器C10,C54、C32和C76。2输入mux锁存器的一个输入从而直接接于未处理的输入值,另一个输入来自解算加法器,且对Y1,则来自解算2的平方根的乘法器。正确的配对及未配对的输入因而可以很简单地送入公共块CBLK 232,只需在多路锁存器的两个输入间简单转换。
如图10所示,2的平方根的乘法器D1、D3、D5和D7最好算出它们的输出,即它们产生加入了进位位的结果以输出完整的和。这保证此乘法器的输出有与对应并行数据通道中未乘的输入相同的总线宽度。
按照此项发明,公共块232的优化实施例也包含一个‘虚设’减法器240,分别在Y[1,0]和Y[5,4]的前向数据通道中。这种装置结合两个输入(在虚设减法器情况下,在对一个输入做2的补码),用并行输出的方式通过。在每种情形下,这一个输入被当作含进位位处理,其实进位位是在随后的处理级中被加入。虽然被延迟,相应的加法和减法还是被进行。
这种技巧由于不需为装置提供全域加法器/减法器,减少了上面两个数据通道所需的资源。所以,‘组合器’表现为加法器和减法器,可以为这些装置提供,并且既可简单连到下一装置(为加),也可作为一行反向器(为减)被操作。二者几乎或根本不需附加电路。
这些组合器的用法也意味着,公共块CBLK 232中从最初的加法器和减法器的输出都具有相同的宽度,并和两个数据通道底部中进位保存加法器/减法器的输出兼容,用这些输出可形成公共块CBLK232中随后的解算加法器和减法器的输入。
如前文所述,在这项发明的实施例中,偶序号输入是与奇序号输入分别处理的。进一步,假定奇序号输入首先被处理。监督控制电路(未示于图10中)将奇序号输入字应用到前公共块PREC中,并选择多路锁存器C10、C54、C32、C76的较低输入(如图10所示),它们随后存储成对值P0到P3(见图9和上面P(n)的定义),锁存器1h0、1h1、1h3和1h2再被触发,分别锁存H0、H1、H3和H2的值。
监督控制电路锁存并选择前公共块PREC 231中的二输入多路锁存器C10、C54、C32和C76的较高输入,并将偶序号输入字施加于这些锁存器。由于偶序号输入用于产生g0到g3的值,监督控制电路也在后公共块POSTC 233中打开锁存器Lg0到Lg3,以存储g(k)的值。
一旦g(k)和h(k)的值被锁存,后公共块POSTC 233用转换解算加法器减法器到减模式的方法输出高序信号X7、X6、X5和X4。低序输出信号X3、X2、X1和X0随后由转换解算加法器/减法器到加模式产生。注意到输出数据可被任意顺序表示,包括自然数序列。
按此项发明,优选的多路实施在图10中以很大的简化,图表化形式表示,与图9所示的非多路结构进行相同的计算。但公共块CBLK 232中加法器、减法器和乘法器数目减半,虚设加法器/减法器240的采用进一步减小了昂贵运算电路的复杂性。
图11图示了按此项发明的实施例,一个IDCT电路的实际实现方法的主要部件和数据线。主要部件包括前公共块电路PREC 231,公共块电路CBLK 232和后公共块电路POSTC 233、系统还包括一个控制器CNTL 241,它直接或间接地提供输入、定时和控制信号于前公共块PREC 231和后公共块POSTC 233。
在此项发明的优选实施例中,输入和输出信号(分别为Y0到Y7,X0到X7)是22位宽。测试表明,这是可能的用现有工业标准衡量,可接受准确性的最小宽度。下文将详细进述,这个最小宽度可以通过有意令选中的运算装置的某些进位字为‘1’或‘0’来部分获得。这种对应于对某些数据字调整的位操作,在这项发明中是作为对IDCT系统结果的统计分析结果而被执行,应用于以后对已知输入测试数据的IDCT变换。用指定某些位为预定值的方法,曾发现舍入和截尾误差的影响可以被削减,因而IDCT系统的空间输出数据可以被处理得与已知‘准确’空间数据偏差较小。不但如此,这项发明同样可以用于其它数据字长,这是由于根据本发明,电路用到的部件,用已知方法都能适应于不同的总线宽度。
虽然在一起处理的四个输入可以沿88个并行导线(4×22)同时输入前公共块PREC,一般一次从传送数据中转换一个象素字。根据此实施例。最好所有的输入数据字通过一单个22位输入总线串行传送,且每个输入字在数据通道中的适当输入点顺序锁存。如图11所示,22位输入数据总线被标为TIN[210]242。
在图和下文的讨论中,多位宽度信号用括号指示,高序位在冒号“”的左边,最低有效位(LSB)在冒号的右边。比如,输入信号T-IN[210]242是22位宽,位号由0到21。单独一位用方括号内一单个的数来识别,因而T-IN[1]表示信号T_IN紧挨最低有效位的一位。
随后的控制信号用来控制此项发明的实施例中前公共块PREC231的运算。
IN-CLK,OUT-CLK按照这个发明,系统最好使用一个无重叠的两相时钟。因此信号IN-CLK和OUT-CLK是锁存器列,它们保持输入、中介和输出信号值。
LATCH 10、LATCH 54、LATCH 32、LATCH 76一次向系统输入一个22位字是可取的。在另一方面,四个输入信号一次处理,所以每个输入信号必须锁存在此结构的适当位置,且在于其它三个输入信号被处理之前进行。这些锁存信号激活相应的输入锁存器。比如信号LATCH 54,首先用于锁存输入信号Y5,再锁存输入信号Y4,它与输入信号Y5进入前公共块PREC 231在相同的点(见图10),但是在其后的处理级上。
LATCH一旦四个偶或奇序号输入信号锁存到前公共块PREC231中,它们最好同时被移到随后一列寄存器。信号LATCH用于激活持有4个输入值的第二列输入寄存器,输入值用公共块PRCE 231中的运算装置进行操作处理。
SEL-BYP,SEL-P如图10所示,锁存在锁存器C10,C54、C32和C76中的偶序号输入信号应绕过加法器和2的平方根解算乘法器。但是,奇序号输入信号必须首先配对形成成对输入P(n),信号Y1必须乘以2的平方根,控制信号SEL-P为了选择成对输入信号被激活。所以,这些信号被用于控制作为多路器的门,以使正确的信号传到前公共块PREC 231的输出锁存器。
象前文讨论的那样,不必严格递增顺序地排列输入,可形成一种简化的‘蝴蝶结’总线结构,它具有高的连接效率。前文也讲到奇输入最好首先作为一组应用于前公共块,随后是偶序号输入,但任何次序都可能在每个奇或偶组里使用,即,可以利用各种顺序的输入,但需为处理奇序号输入分别提供锁存安排,或至少在电路的分别区域中提供锁存安排。
监督控制电路同样为后公共块POSTC 233产生定时和控制信号。控制信号如下EN-BH,EN-GH再参看图9,在对奇序号输入处理之后,公共块CBLK 232的输出被标示为H0、H1、H3和H2。这些信号随后送入系数乘法器,分别是后公共块中的d1、d3、d7和d5。信号EN-BH用于触发保持g0到g3值的锁存器,并在h0到h3的值在系数乘法器中乘过以后触发保持h0到h3值的锁存器。
ADD,SUB如图10所示,实施例包括一系列加总和差分(k)与h(k)值的解算加法器/减法器,以分别形成低序输出。信号ADD,SUB分别用于设置解算加法器/减法器于加模式和减模式。
EN-0这个信号用来触发锁存解算加法器/减法器结果的输出锁存器。
MUX-OUT 70,MUX-OUT 61,MUX-OUT 43,MUX-OUT 52;根据此项发明,系统的输出数据最好通过一单个22位输出总线传送,以使一次仅转换一组输出值(X0到X7)。这些信号顺序激活,以选择四组锁存的输出值中哪一组锁存到最后的输出锁存器。因此,这些信号用作对4对1多路器的控制信号。
T-OUT[210]这个标记表示后公共块POSTC 233的22位输出信号。
从预公共块PREC 231的输出信号被锁存以形成公共块CBLK 232的输入信号。如图11所示,预公共块PREC 231的输出信号表示为4个22位数据字CI10[210]、CI54[210]、CI32[210]、CI76[210],它们分别成为公共块CBLK 232的输入信号IN
、IN[1]、IN[3]、IN[2]。
如图11所示,公共块CBLK 232的四个22位结果并行转换为输出信号OUT0[210]、OUT1[210]、OUT3[210]、OUT2[210],而后它们作为后公共块POSTC 233的输入信号锁存为CO70[210]、CO61[210]、CO43[210],CO52[210]。
应该特别注意的是公共块CBLK不需任何控制信号。因为这个例子中IDCT系统的独特结构,系统操作的公共块可被处理为纯逻辑运算,无需时钟,定时或控制信号。这进一步减小了设备的复杂性。还应注意到在某些应用中(尤其是在有充足时间进行所有所需运算操作的应用中),预公共块PREC 231和后公共块POSTC 233也可以被安排成无时钟定时或控制信号的操作。
图12是此项发明的预公共块PREC 231的方块图。在这张图及以后的图中,标记‘S1[a]、S2[b]......SM[z]’表示从信号S1、S2......SM中选择的位a、b......z在同一总线上并行传输,最高位(MSB)是从信号S1中选择的位‘a’,最低位(LSB)是从信号SM中选择的位‘z’,这里S是任意的信号标签,a、b、......z是在信号总线宽度范围内的整数。所选的位不一定是一单独位,整个或部分多位字也可以和其它单独位或整个或部分多位字一同传送。在图中,符号S可以被相应信号标记替代。
例如,图12中一个2的平方根乘法器被示为R2MUL。这个非解算乘法器的‘保存’或‘非解算和’输出表示为21位字M5S[200],同样,乘法器R2MUL的‘进位’输出表示为22位字M5C[200],它在总线上被传送到一个进位保存的解算加法器M5A的‘b’输入。(记起‘0’插入到保存输出的最低有效21位作为最低有效位,但是,这是在提供给解算加法器M5A的‘a’输入之前完成。在图12中用标志GND.M5S[200]表示)。换句话说,对应MSB输入到M5A的导线被用接地GND的方式置为‘0’。
为了明白为何将‘和’的第22位插入‘0’,观察若乘法的部分和是n位宽。进位位左移一位到相对于部分和的左边。因而进位字扩展为n+1位有一个在n+1位置上的有效数据位和最低位的‘0’(由于这一位之前没有东西产生进到单元位置的进位位)。如果这两个字用作解算二进制加法器的输入,必须小心以保证进位字的位(数字)正确地与相应部分和的位对准。这还可以保证小数点(就算仅象在整数运算中隐含)保持在两个字中对齐。假设加法器的输入是n+1位宽,所有n位正部分和字都可以加入一个‘0’到最高序位,以提供一个与其它输入进位字对齐的n+1位输入。
如前文所述,在预公共块PREC 231中某个给定时间处理的四个输入被通过输入总线T-IN(210)传送。这个输入总线与四个输入锁存器IN10L,IN54L、IN32L、IN76L的输入相连。每个锁存器仅在各自输入时钟信号IN-CLK和相应锁存器选择信号LATCH 10、LATCH 54、LATCH 32、LATCH 76为高时分别使能。所以,四个输入可以通过顺序激活锁存器使能信号LATCH 10、LATCH 54、LATCH 32和LATCH 76,在IN-CLK信号的四个阶段中被锁存在它们各自的输入锁存器中。在这段时间内,LATCH信号应该是低(或在不同相位上),以使输入锁存器IN10L、IN54L、IN32L和IN76L能稳定并锁定四个输入值。
按照这项发明,一个锁存器定时的例子图示于图13。一旦四个输入信号按合适的顺序锁存它们被传到第二组锁存器L10L,L54L、L32L、L76L。这些第二组锁存器在信号OUT-CLK和LATCH是高时被使能。这个信号定时也示于图13。
注意到这项发明的系统不必延迟接收全部八个输入字。一旦所有偶和奇输入字被接收并锁存于IN10L、IN54L、IN32L和IN76L,就释放了输入锁存器,使之可以开始接收其它四个输入信号,不需延时到IN-CLK的下一个上升沿。
用在图示中作为不同部件的二位数字后缀标记[10、54、32、76]说明奇序号信号先被处理,然后是在结构随后的通道通过上的偶序号信号。和上文提到过的一样,这个顺序对此项发明不是必需的,且对此领域有一般性熟练的人另外的次序可以被采用。
一旦四个输入信号被顺序正确地锁存于第二集锁存器L10L、L54L、L32L、L76L,相应的值或者被当作输出锁存器C10L、C54L、C32L和C76L的输入传送,这些输出锁存器受到选择的旁路信号SEL-BYP的触发。或者受‘选择P’信号SEL-P触发,被当作相同输出锁存器的配对并乘过的输入传送。换句话说所有信号都直接和间接地通过运算设备传送到预公共块PREC 231的输出锁存器C10L、C54L、C32L、C76L,而正确的值是在‘选择旁路’信号SEL-BYP的触发下(对于偶序号输入Y0、Y2、Y4和Y6),或在‘选择P’信号SEL-P的触发下(对于奇序号输入Y1、Y3、Y5和Y7)装入这些锁存器的。正如熟悉此一般技术的人可以理解的那样,希望的定时和这些及其它控制信号的顺序可以在正确的配置与/或控制器CNTL 241的微可编程下以一种已知的方式很容易地实现。
在锁存器L10L输出的最上端的输入值首先通过2的平方根乘法器R2MUL,然后通过所讲的解算加法器M5A。解算加法器M5A的输出显示为锁存器L10L的输出与2的平方根的解算乘法值的等同值。其它三个锁存器L54L、L32L、L76L的输出也分别被传送到相应的输出锁存器C54L、C32L、C76L,并直接通过22位锁存器总线LCH54[210],LCH32[210],LCH76[210]和间接通过解算加法器P2A、P1A和P3A分别到输出锁存器。
在这项发明里,解算加法器P2A、P1A、P3A有两个输入“a”和“b”。对加法器P2A,一个输入来自锁存器L32L,另一个输入来自锁存器L54L。对输入值Y5(锁存于L54L中)和Y3(锁存于L32L中),P2A加法器的输出等于Y5+Y3,且如前文所述,也等于P(2)。因此,加法器为奇序号输入配对以形成成对输入值P(1)、P(2)和P(3)。当然,锁存在L54L、L32L和L76L中的偶序号输入信号也会分别通过解算加法器P2A、P1A和P3A,但结果P“值”不会传到输出锁存器C54L、C32L和C76L,因为‘选择P’信号SEL-P不会为偶序号输入激活。
锁存在由输入时钟信号IN-CLK触发的输出锁存器C10L、C54L、C32L和C76L中的值因而等于偶序号输入Y0、Y2、Y4、Y6,或等于为奇序号输入配对的输入值P0、P1、P2、P3。可以回忆起输入Y(1)与假定值为0的值U(-1)配对。如图12所示,这个假设由不加任何到值Y1来实现。而Y1仅仅如图9和图10所示乘以二的平方根。
图14说明了根据此项发明,公共块CBLK 232的优选结构。由于不同系统块中多种乘法和加法,必需或最好做各种计算前按比例缩小公共块的输入值。这保证了对应系统多种运算装置输入的小数点位置一致(小数点对整数运算被隐含)。
因此,输入值IN0[210]和IN1[210]用因子4按比例缩小,在数字运算中对应向右移两位。为了用二进制形式保留数的符号(保持正值正号且负值负号),最高位(MSB)必须被复制到右移字结果的两个最有效位上;这个过程称为“符号扩展”。所以,输入值INO带着符号扩展向下移2位,形成移位后输入值,表示为IN[21]、IN0[21]、IN0[212]。输入值IN1[210]与之相似,符号扩展两位。输入IN2也移位和扩展,以形成IN2[21]、IN2[211]。这些一个位置的移位对应除2的截尾除法。
如图10所示,输入IN2、IN3必须与换算因子C1S和C3S相乘。每个输入IN3和IN2必须乘以每个换算因子。如图14所示,这一点由四个常系数进位保存乘法器MULC 1S、MULNC 1S、MULC 3S3和MULC2S2实现。必须注意对IN2的最下端乘法器是一个反乘法器MULC 1S,即它的输出对应输入的负值与常数C1S的乘积。所以,C76中锁存的值要从C32中锁存的值中减去(在乘以C3S之后)。由于有了反乘法器MULNC 1S,减法由加上对应值的负实现,这等同于形成差值。使得可以对以后的加法器使用相同线路,而允许一个非反相乘法器与一相接的减法器也许被使用。
在所讲的此项发明的实施例中,包括四个余弦参数乘法器MULC1S、MULNC 1S、MULC 2S3和MULC 3S2。但如果安排信号分别通过乘法器,所需乘法可以仅用两个乘法器实现,一个为C1S系数,一个为C3S常数。
根据此项发明MULC 1S、MULNC 1S、MUL 3S3和MULC 3S2乘法器最好是进位保存型的,这意味着它们产生两个输出字,一个对应在硬件乘法器内运算的不同行的加法结果,另一个对应产生的进位位,乘法器的输出就可以作为两个4输入解算加法器BT2、BT3之一的输入连接。
仅为了图示简单,从乘法器连到对应的加法器输入总线上的五条输出总线未画出。熟悉本领域一般技术的人是可以理解这些连接,且可被解释为每个输出与输入分别具有相同标号的被连在一起。所以,乘法器MULC 1S的保存输出M1S[200]与加法器BT3的“保存a”低21位相连。
如图14所示,加法器BT2和BT3的5个输入显示被“分裂”。比如,加法器BT2的“ca”输入用MC3[200]上面有IN3[21]表示,MC3[200]作为输入的最低21位。同样,同一加法器的“sa”(“保存a”输入)表示为GND,GND在M3S[190]之上。这意味着增加两个零作为输入字的两位高有效位。这种增加位保证形成了正确的22位宽输入字,并带着正确符号。
进位保存加法器BT2和BT3将两个不同22位的进位和保存字相加,以形成22位输出保存字T3S[210]和21位输出进位字T3C[210]。因此,每个加法器的输入是88位宽,每个加法器的输出是43位宽。如图10所示,锁存器C10的输出在与进位保存加法器BT3的输出相加前,与最上面的数据通道中的锁存器C54的输出相结合。但这种“结合”直到到达上层数据通道中的下一个加法器才是有必要的。因此,如图14所示,移位和符号扩展的输入值IN0与上层进位输入相连。
加法器CS0的高阶进位输入与移位和符号扩展的输入值IN0相连,且移位和符号扩展输入IN1被连接为同一加法器的高位保存输入。换句话说,IN0和IN1在加法器CS0中以后被相加。
所以,图10中用到的标记“虚设”加法器/减法器240表示何种操作必须被执行,虽然不必在图10所示位置进行。同样,图10所示的低虚设减法器240需要从锁存器C10的输出中减去锁存器C54的输出。这与将C10的输出与C54输出的补码相加是一样的。
再次参照图14,输入IN1(对应图10中锁存器C54的输出)的补码由22位输入反相器IN1[210]实现(一位一位地产生它输入的每一位的逻辑反)。2N1值的补码-NIN1[210]-被传送到加法器CS1的上层“保存”输入,相应的高位“进位”输入是移位和符号扩展的IN0。所以,加法器CS1的高位部分实现对应IN0减IN1的减法。
在图10所示的两低位数据通道中,在公共块CBLK 232的输出端,解算减法器的用来代替了图示高位两个数据通道中的解算加法器。每个解算加法器或减法器与被其跟随的进位保存加法器或减法器是等同的。这点示于图14。按照图10所示的连接结构,减法器CS2和CS3把处理值IN0到IN3当作它们的输入。
每个加法器/减法器C20-CS3的22位进位和保存输出在解算加法器RES0-RES3中求解。正如具有本领域一般技术的人可以理解的那样,进位和保存输出的求解在数字设计技术中被很好了解,因而这里不再详述,如图14所示,进位保存加法器/减法器CS0-CS3的保存输出直接作为22位输入传送到相应解算加法器RES0-RES3的“a”输入。
还是按众所周知的技术,求一个二个进制数的2补码要将它的每一位取反(变所有“1”为“0”,反之亦然),再加上“1”。注意到“1”可以在位取反后立即加上,也可迟些。一个进位字的LSB总是“0”。它在图示的此项发明的实施例中,用在每个进位字O0C和O1C分别输入解算加法器RES0和RES1时将它们的LSB接地GND的方法实现。但是,将减法器CS2和CS3的进位输出加上“1”以形成2补码值是用把这些数据字02C和03C的LSB接到供电VDD来实现的,从而用“1”“取代”进位字的LSB“0”,这与加上“1”等效。
由于上述理由,一个“0”作为LSB增加到来自进位保存加法器CS0和CS1的21位进位字中(将LSB接地GND),且来自进位保存减法器CS2和CS3的进位字的LSB用将相应数据线接供电电压VDD的方法置为“1”。所以,解算加法器RES0-RES3计算从加法器/减法器CS0-CS3的输出,以形成22位输出信号OUT0[210]-OUT3[210]。
根据本发明的实施例,IDCT电路的两个优点如图14所示。首先,公共块CBLK 232不需控制和定时信号。相反,公共块的输入信号已经被处理成可以立即应用到公共块232的纯逻辑运算设备的方式。第二,用对数据字的正确换算,可以从始至终使用整数运算(或者者至少所有值的小数点是固定的)。这避免了浮点设备的复杂性和缓慢性,且不会不可取地牺牲精度。
如所示地排列输入与根据此项发明用均衡的优选法,这个发明的实施例的另一个优点是可以在硅片实现的许多部份用到相似的设计结构。比如在图14中,常系数乘法器MULC 1S、MULC 3S3、MULC3S2和MULNC 1S都有相似的结构并在数据通道的同一点接收数据,因而四个乘法器都可以同时工作。这消除了“瓶颈现象”,且半导体实现中能够利用重复、平行结构的全部优点。进位保存加法器BT2和BT3同样可以同时工作,随后的进位保存加法器和减法器也是如此。许多器件设计的对称和有效同时使用的在这项发明的实施例的整个结构中是普遍的。
图15表示按照这项发明,后公共块POSTC 233的优选排列。如图10所示,后公共块POSTC 233的主要功能是用将公共块的输出与参数d1、d3、d5和d7相乘形成h0到h3的值;将g(k)与h(k)相加形成低位输出;从相应g(k)值中减去h(k)的值形成高序输出。现在同时参看图10和图15,后公共块POSTC 233锁存相应公共块CBLK 232的输出到锁存器BH0L、BH1L、BH3L和BH2L。这是在当Bh锁存器被使能,控制电路置EN-BH信号为高,且输出时钟信号OUTC-CLK信号变高时完成的。当控制电路通过信号EN-GH和输入时钟信号IN-CLK的上升给锁存器G0L、G1L、G3L和G2L使能时,g(k)、g(0)到g(3)的值分别锁定在相应锁存器G0L、G1L、G3L和G2L中。
被处理的奇序号输入,即值h0到h3,通过常系数乘法器D1MUL、D3MUL、D5MUL、D7MUL,在EN-GH和IN-CLK信号为高时被锁存到锁存器H0L、H1L、H3L和H2L。这些乘法器分别乘以d1、d3、d5和d7。在优选的实施例中,这些常系数乘法器最好是进位保存乘法器,以便简化设计并提高运算速度。如图15所示,常系数乘法器的“进位”(“c”)输出连接到解算加法器H0A、H1A、H3A和H2A的一个输入端,其间的某些改变下文详述。常系数乘法器的“保存”(“S”)输出同样连到相应解算加法器的另外输入,其间的某些强制性改变也在下文描述。
图15进一步表明,H0信号的LSB最好用将相应对H0“保存”的输出置为0(接地GND),且第二位(对应H0S[1])置为“1”的方法强制为“1”。来自常系数乘法器D3MUL的进位和保存输出的数据字被同样处理并输入到解算加法器H1A。这些处理的优点和它们对解算加示器H1A的输入。
根据这项发明,系数乘法器D7MUL和D5MUL的进位输出的全部22位都直接连到对应解算加法器H3A和H2A的“a”输入。但每个乘法器的“保存”输出的MSB通过接对应数据线到地GND的方法置为“0”。
所讲的IDCT系统用前文描述的CCITT规定为依据进行了测试。由于换算及其它众所周知的数字加法器和乘法器的特性,在10,000个采样中一般损失一些精度,但强制前文描述的不同位为“0”或“1”的运行减小了数字变换的预期误差。作为数据字位运算的结果,这项发明的实施例仅用22位宽数据字就可达到CCITT标准下的可接受的准确度,而一般情况下需要24位以产生同等的准确度。
由于有限的精确度和截尾及舍入误差,一般在IDCT系统的每个数据字中有一些不准确性。但是,强制数据字的选中位,发现误差被系统地在硬件的特定点引入特定的数据字,统计上产生总体较好结果。位强制也可用在乘法中,比如有选择地强制一个或多个进位位为预定值。
在这项发明中,位强制方法不需要是静止的,即总让某些位有规定值,而一个动态方法也可被使用。比如,一个数据字的所选位可以被置为“1”或“0”,取决于这个字(或甚至其它数据)是偶或奇,正或负,大于或小于预定阈值之类。
一般改进全局统计性能只需小的系统变动。因此,按照这项发明的实施例,所选数据字的LSB(最好一次一位或一数据字,虽然不是必须的)被强制为“1”或“0”。运行CCITT测试,且对运行的CCITT统计被编译,这一位随即强制为“1”或“0”的另一个,重新运行测试。而后其它数据字的LSB(或多个LSB)被强制为“1”或“0”,并编译相似的统计。观察不同强制字中强制位的不同组合的统计,可以决定最优的统计操作。
但如果不需这种基于统计的改进,常系数乘法器D1MUL、D3MUL、D5MUL和D7MUL的输出可以用传统方式在解算加法器H0A-H3A中解。对应锁存器H0L-H3L的输入的低21位,与这些输入的LSB接到地。
H-锁存器(H0L-H3L)与G-锁存器(G0L-G3L)的输出成对形成a和b分别的输入,输到解算加法器-减法器S70A、S61A、S43A和S52A。如前文所讲,这些器件在ADD信号为高时加上它们的输入,当减法使能信号SUB高时从“a”输入中减去“b”输入。高层两组锁存器对H0L、G0L、H1L和G1L的第二位以如下所说方式通过多路安排进行处理。
解算加法器-减法器S70A、S61A、 S43A和S52A的输出被锁定在结果锁存器R70L、R61L、R43L、R52L中。
如图15b描绘的那样,按照此项发明,加法器/减法器S70A和S61A的输入字对每个输入字的第二位进行处理。比如,加法器/减法器S70A的对“a”输入的输入字第二位是G0[1M]、G0[1M]、G0
。换句话说,第二位被置为具有值G01M。加法器/减法器S70A和S61A的其它输入的第二位做相似的处理。位处理由四个21位多种器H01MUX,G01MUX,H11MUX和G11MUX完成(如图15b右侧所示)。这项发明中,多路器由ADD和SUB信号控制,使得第二位(H01M、G01M、H11M和G11M)在各自加法器减法器S70A、S61A置1时(ADD是高)也置1,且如果SUB信号置为高时,第二位置于它实际的锁存器输出值。用这种方式置单独位的值容易在高速操作下实现。因此,优选的实施例包括位强制安排,是由于上文讲到的大量测试象素字的统计分析已经表明那样可获得更准确的结果。但是虽然可使字具有宽度较小的优点,如此处理第二位并不是必须的。
四个高或低位结果锁存在输出锁存器R70L、R61L、R43L和R52L中。这些结果在多路信号MUX-OUT70,MUX-OUT61、MUX-OUT43、MUX-OUT52的控制下顺序锁存到最后输出锁存器OUTF中。因而结果信号的输出顺序可以通过简单地改变它们锁存的锁存器顺序来控制。
后公共块POST 233中的时钟和控制信号相互关系示于图13b和13c。
象前文讨论的那样,两个1维IDCT操作可以带一个插入数据转置来并行实现,以进行2维IDCT。因而根据这项发明的实施例,后公共块POSTC 233的输出信号被首先按已知方式按列排序(或按行)这是在象RAM存储电路(未画出)类的传统存储单元中进行的,然后按行(或按列)从存储单元中读取,以便作为随后的前公共块的输入,并在这块内做上文所述的处理而传送,及在公共块CBLK 232中,和在后公共块POSTC 233中的处理而传送。
按行(或列)存储并按列(或行)读出在第二个IDCT前实现了所需的转置操作。第二个POSTC 233的输出将是期望的2维IDCT的结果,并可用移位以补偿不同处理块中进行的换算移位,在传统方式下被换算。特别地,向右移一个位置可以除以2,作为1维IDCT运算中进行的两个2的平方根乘法所需的偏置。
依赖应用,第2个IDCT结构(最好与图11所示相同)最好分别用半导体实现。这会避免若两个变换用相同的电路而引起的速度降低,虽然这种分别的1维变换实现不是必要的,如果象素时钟速率现在足以使一单个的电路实现能够实时处理两次通过的话。
如图16到38所示,按照这项发明,第二优选实施例使用一单个一维变换。这个实施例不需要象前文讨论的象素时钟速率的降低。
现存的第一个优选实施例中的“解算加法器”变成了“快速解算加法器”。如图38所示,这些被标为“快速解算”。这种变化产生的影响是允许每个数据路径运算块有更多时间对它的数据输入起作用。现有的第一个优选实施例中的“锁存器”被改为2相位“触发器”或“寄存器”。
位于现有一维IDCT数据路径流水线前端和末端的锁存存贮元件被结合成独立块,如专门在图18中的特别表示。另外,第二个优选实施例的输入和输出中出现的存贮单元数目增加了,以使变化数目的T2数据被缓存。
如图16和图17所示,两个数据流,数据流“T1”(原始未被处理数据)和数据流“T2”(已通过一维IDCT一次并在TRAM中转置过的数据),以时间多路方式被引入到数据通道流水线。
在此项发明中,每个流轮流为数据通道流水线引入一组数据项。这些数据流在连续通过数据通道流水线时“交叉”,并在数据通道输出处“解交叉”,如图17、18和33所示。一个组的数可以不同,但在此例中,它们是八位。
根据此项发明,T1必须不能被阻塞。如果T2到达与T1交叉的点,但输入缓存不能将它的数据引入流水线,因为这样会和T1流冲突,然后T2提供额外的缓存以使T2不阻塞数据流,反而会从它的输入流中缓存数据,直到它能安全地与流T1交叉的时候为止。这显示于图19和33图中T1流的数据被用信号“Latch 1(0)‘到’Latch 1(7)”装入到第一个变换的锁存器0-7中。另外,来自T2的数据用图33所示信号被装入“Latch 2(0)‘到’Latch 2(15)”。如图19所示。
交叉由“T1 OK2 Insert”和“T2 OK2 Insert”信号控制。在正常操作下,当信号升高时交叉会发生。但如果“T2 OK插入”升高时,T2锁存器中适当数量的数据还没有达到,那么锁存器会错过它的机会,必须继续缓存数据,直到下一个插入数据的机会发生。
总之,根据这项发明,如果要出现上述的缓冲,在T2的输出处必须发生相对“滑动”。T2在错过了它的数据插入点,并必须继续在图19所示锁存器中缓冲时发生滑动,如果T2滑动,而未能将数据引入流水线,T2流输出在数据通道输出处产生一个相应的缝隙。这个缝可用T2输出处额外的缓存移走或“吞掉”。这个处理可被视为有一个“固定”的T1一一维IDCT变换和一个可变T2一一维IDCT变换,在这里数据流以一种时间多路方式交叉,以便它们可以使用同一条运算数据通道流水线。
在这项发明中,当非数据进入T1时“恢复”发生。这是T2缓存追上T1和数据流的机会。非数据是一种数据类型,它绕过IDCT,在图34中的“Latch 2[φ]”里显示为一个数据脉冲。它最终到达T2输入,这个输入允许在T2缓存输出处注满。恢复示于图33和图25,此处“T2 dout”和“out”信号被许多周期间隔开,缝隙被用作固定数据流的参考。必须注意两个信号间若干周期的缝隙与T2的锁存器等待插入它的数据时缓存的缝隙相同。
在POSTC 233的部分B中TRANS FORM(变换)之后,交叉流被解交叉到“T2 out”,如图18和23所示。“T2 out”数据流在数据中有如上所述的滑动缝隙。图17中所示的T2 out[143φ]进入到一个16选1的多路选择块,如图17中“IDDPMUX”块所示。这个多路选择块从输出缓存块中的16个位置之一选择数据,如图25所示。这个位置用图29所示的控制逻辑来选择,它利用了在T2的输入端“缓存等待的”间隙(“buffere-up”)。这个缝隙被用作一个参考。多路块的输出流T2DOUT是“固定”的数据流。
在对上文描述的此项发明的一个实施例的IDCT安排进行测试的范围内,发现所有中介和最终值都在每个点被很好保持在已知范围内,并仍满足CCITT标准。正因为如此,有可能象前文所述用少量地“调正”选中的值(比如,令选中数据字的某些位为期望值),且不需担心算术计算中上溢或下溢。
根据此项发明,此方法及系统可以有许多不同形式。比如,计算加法或乘法的结构可以用任何已知技术改变。因此,有可能在优选实施例中使用带解算加法器的进位保存部件的地方使用解算加法器或减法器。同时,这项发明的优选实施例在不同点上采用向下换算,以确保所有值都落在可接受的范围内。但向下换算不是必需的,因为可以用其它预防措施避免上溢或下溢。
在这项发明的一个实施例中,不同数据字的某些位被处理以减少系统内所需的字宽。但当然可以使不同的中介值不做位变换而通过。进一步讲,虽然在所讲的此发明的例子中,只有数据字进行了位变换,但也可以对常系数的位进行处理,并在CCITT标准下详测结果。如果结果的比较显示令一个特定位为给定值是有利的,那么有某些情况下就能够增加这些系数的二进位表示中“0”的个数,从而进一步减少实现相应乘法器所需的硅片面积。再则,位运算并不是必需的。
作为对此项发明上述方面的总结,下述内容被公开一个变换数据的装置,有一个定义第一数据流源的第一锁存器,和一个定义第二数据流的第二锁存器。第一和第二锁存器与一单个运算单元进行通讯。运算单元传递数据到一个置换RAM,置换RAM置换数据并传递到第二锁存器。第二锁存器是可调整的,并大小可变,以适应被接收和发送数据的不同速率。第二锁存器和第一锁存器顺序传递第一和第二数据流到运算单元,但第二锁存器的顺序传递不会打断来自第一锁存器的传递。以这种方式,公共运算单元被用到第一和第二数据流。进一步,有如下步骤的用公共运算单元变换数据的过程被讲述。第一,将数据装入第一锁存器,当达到预定次数的循环时发送数据到运算单元,并将第一标志位装入控制移位寄存器。然后,将数据装入第二锁存器,第二锁存器是可调整的,且大小可变,以适应在不同速率被接收和发送数据的多种速率。下一步是当第一个控制移位寄存器达到预定状态,且第二个锁存器充以预定数目的数据时,传送第二个锁存器中的数据到运算单元。然后,若第二锁存器未充以预定数目的数据,则阻止从第二个锁存器发送数据,并当第一锁存器收到非数据时恢复第二锁存器。
发明中关于时间同步的详细说明在MPEG-2中,视频和音频数据通过使用在MPEG-2系统流中的信息来进行同步,在这一方面,主要存在两种信息来用于同步参考时钟和时间标记。参考时钟被用来通知解码器什么数字被用来代表当前时间。这被用来初始化计数器。这个计数器每隔相同的时间间隔增加一次,于是解码器永远都知道当前时间是多少。
时间标记装在一些数据流中,这些数据流组成了程序表(主要是图象和声音),如果是图像,时间标记与图相关,并告诉解码器这一帧图应在什么时候(由被参考时钟初始化的计数器定义)被显示。
在MPEG中,一系列参考时钟被复合到系统流中,这些参考时钟定义了“系统时间”。主要有两种参考时钟程序参考时钟(PCRs)和系统参考时钟(SCRs)。在这个发明中,PCRs和SCRs的区别变得无足轻重。因为解码器用同样的方式使用这两种参考时钟。PCRs和SCRs有90KHz分辨率的定时信息,在有一个扩展段时,可以有27MHz分辨率的定时信息(或者是每秒1/27×106)。为了使系统时间可以在一次随机存取或通道改变后被重新初始化,参考时钟经常被包含在数据流中。
因此,非常重要的一点是要理解时间标记参考了一种解码器假想模型。在这种模型中,解码器可以迅速地将图像解码。但是象一般的熟知本领域中技艺的人所理解的那样,任何真正解码器都不能做到这一点,它必须花费步骤来修改图象应被显示的理论时间。而且,时间标记和参考时钟被用来确定显示时间和显示时间中的误差。这种修改依靠于具体解码器的具体结构。很明显,必须要在音频解码器中引入的任何延时需同视频解码器相当的延时相匹配。
当解码MPEG时,会出现“系统时间”概念上的不连续,例如,在一个编辑过的位流中,每个编辑点会有不连续时间。类似的情况会在改变通道时发生。应该明白,在这时使用时间标记时一定要小心,因为使用在一个时间范围内编码的时间标记而参考在另一个时间范围里定义的“系统时间”很明显要导致错误的结果。
图39显示了将MPEG系统流分离成基本流250的过程。尽管每个基本流通常会携带视频和音频数据,总的来说,各种类型的数据都可以被传送,每个基本流被分解成一系列的存取单元,如果是视频数据,这个存取单元是一图像。如果是音频数据,这个存取单元是固定数目的音频数据的样本。
在被分离出的系统流中还有一系列的参考时钟。这些参考时钟定义了“系统时间”。
根据这个发明,与每个基本流相关的是一个系列的时间标记。这些时间标记指出了相应的基本流中的下一个存取单元在什么“系统时间”出现。这些时间标记被叫做“呈现时间标记”(PTS)。
如果是视频数据,又定义了第二类时间标记,叫做“解码时间标记”(DTS)。由于DTS只是在PTS出现时才可能出现而且二者之间有简单的关系,这两类时间标记的具体差别可以被忽略。因为在这个发明中,PTS和DTS的区别没有什么意义。
解码时间标记(DTS)定义了解码一个访问单元(在视频情况下的图)的时间,呈现时间标记(PTS)定义呈现(显示)一个访问单元的时间。而且,所用的时序模式是假设模型,其中解码器的解码速度是无限快的。在这种情况下,DTS和PTS将彼此相等。
但是,在MPEG视频解码中有些帧的图像被重新排列了。因此在解码后,在它们被显示以前这些帧要在存储器内存一段时间,例如几个帧的时间。在这段时间中,接着上述图象被解码的图象被显示就会有问题。因此,对于这些重新排列的图,DTS和PTS之间有区别。
根据这个发明,应该明白,为了适当地同步时间,时间标记的使用必须前后一致。在一个优选的实施例中,当图按照它们解码的顺序出现时,在解码流水线的某个位置上放置了时间同步电路,于是这个实施例使用DTS。
然而,这些电路也可以同样地被移到解码流水线中那些图被重排列之后的点上。于是图会按照它们显示的顺序到达同步电路。因此,在对使用一般技术时,在这个实施例中可以使用PTS。
在这个发明的优选的实施例中,从时间标记中得到的信息被以令牌的形式在不同电路中传输。令牌由一系列一个或多个信息字组成。令牌的第一个字包含了一个标明令牌类型的码。和那个令牌所包含的信息的类型。与令牌中每个字相关的是被置成1的扩展位来指示在当前的令牌中还有多个字。因此,令牌中的最后一个字由一个被置成0的扩展位来指示。在这个发明中,指示令牌类型的第一个字的码可以有很多位以使得有些码使用少一些位(允许第一个字中的其它位用于表示其它信息),而另一些码使用的位数多一些。
令牌可以按特性分为控制令牌和数据令牌。例如,在系统解码器和视频解码器的接口上,有两类信息(1)编码后的视频数据,(2)从时间标记信息中得到的同步时间。编码后的视频数据被认为是数据,并由数据令牌传送。(例如,叫做DATA的令牌),而同步时间则被看作是控制信息,由控制令牌(一个叫做SYNC-TIME的令牌)传送。在这个发明中,还有一些其它的控制令牌会不时被用到。例如,一个FLUSH令牌,它的行为方式与复位信号类似。当由于一个错误需要重新解码之前,需要用这个令牌来初始化视频解码电路。
根据这个发明,一个优选实施例的目标是对两个电路进行时间同步。更具体一点儿,是要对两个电路进行时间同步而不把第一电路的系统时间直接送到第二电路。根据这个发明,通过在每个电路中提供一个同步时间计数器而实现了同步两个电路而不把系统时间从第一电路送到第二电路。
这个发明还通过为每个电路提供一个基本流时间计数器而做到了对两个电路进行时间同步而不把系统时间从第一电路送到第二电路。
相应的,这个发明的另一个目标是要使两个电路做到时间同步并确定物体出现的出现时间误差,如果有的话。它通过使用时间标记信息,系统时间和第一电路中的基本流时间来产生同步时间,并将其送到第二电路。并与第二电路的基本流时间的一份拷贝相比较,第二电路的基本流时间与第一电路的基本流时间同步。这个发明的系统还可以同步一个系统解码器和视频解码器而不用将系统时间直接从系统解码器送到视频解码器。通过为每个电路提供一个同步时间计数器使得不必将系统时间直接传到视频解码器,用通过为每个电路提供一个视频计数器使得不必将系统时间从系统解码器传送到视频解码器。
这个发明还可以同步一个系统解码器和一个视频解码器,并且确定被显示的帧的显示时间误差,如果有的话。它是通过使用视频时间标记信息,系统时间和系统解码器的视频解码时间来产生同步时间,并将其送到视频解码器,然后与视频解码器中的视频解码时间的拷贝相比较。视频解码器中的视频解码时间与系统解码器中的视频解码时间同步。
根据这个发明,从时间标志中得到的信息可以象前面描述过的那样通过使用控制令牌在系统中传递。
图40显示了这个发明中第一个优选实施例中,实行基本流时间标记管理的情况。参考时钟253代表系统时间,被系统多路分配器254解码并初始化。然后按照需要放到系统解码器256中的时间计数器255中。然后在90KHz下被增大。参考时钟253的第二个拷贝同时被放入基本流解码器257中的时间计数器255中,也在90KHz下被增大,并且与系统解码器256中的时间计数器255同步。
根据这个发明,时间标记251从系统多路分配器254通到基本流缓冲区260,使得它们得到与到来的数据相同的延时。时间标记251也可以加入一个修正,以补偿基本流解码器257的非零解码时间。修正后的时间标记251与存在基本流解码器257里的所存的时间计数器258中的时间的拷贝相比较来确定解码后的信息是否出现得太早或太晚。
上面这个实施例比仅仅将系统时间直接从系统解码器256中的时间计数器255传到基本流解码器257要好,因为系统解码器中的计数器每秒钟改变90000次。因此系统时间实质上需要被连续地传到基本流解码器257,将系统时间连续地传递需要有专用的管脚或与之类似的东西。通过使用系统解码器256中的时间计数器255和基本流解码器252中的时间计数器256,系统时间可以以参考时钟253的形式以一秒钟几次的频率传送。
在图41中显示了另一个实施例。在图41的这个实施例中,不需要将参考时钟253直接传到基本流解码器257。这是通过使用第二个计数器“es-time”262实现的。这个计数器包含有基本流时间的信息。这一第二计数器被保存在系统解码器256和基本流解码器257中。两个es-time计数器262和263在接通电源或在其它时候例如改变通道时清零,然后从那里开始自由运行。由于这个实施例要求两个es-time计数器262和263保持同步,所以要注意必须要采取措施以保证两个es-time计数器不失去同步。为了保持两个es-time计数器262和263保持同步,可以用系统解码器中的es-time计数器的进位标志对基本流解码器257中的es-time计数器进行清零,象图41显示的那样。
正象在图41中显示的那样,代表系统时间的参考时钟253由系统多路分配器254解码,并置入系统解码器256里的时间计数器255中,然后在90KHz下增大。这个发明中的系统解码器256中的es-time计数器262和这个发明中基本流解码器257中的es-time计数器263是互相同步的,并且都在90KHz下被增大。基本流时间标记也被系统多路分配器254解码。因此,可以利用基本流时间标记、时间计数器中的系统时间和系统解码器256中的es-time计数器262里包含的基本流时间,按照方程3-1计算出同步值X。
下面这组方程3-1(a-d)说明了这个发明中的一种方法。这种方法用于时间同步,可以避免将参考时钟253送到基本流解码器257。方程3-1(a)是由时间同步所要求满足的方程。由于不愿意将系统时间直接传到基本流解码器电路257。如图41所示,利用系统解码器256,根据方程(3-1)(b-d),产生了一个表示同步时间的值X,并将这个值送到基本流解码器。然后将同步时间x与基本流解码器257中的es-time计数器中的基本流时间比较。于是,比较的结果可以用来判断解码的信息是否出现得太早或太晚,而且可以继续被系统用于时间同步。
方程3-1(a)、时间同步=(基本流时间标记-系统时间)(b)、时间同步=(X-基本流时间)(c)、(X-基本流时间)=(基本流时间标记-系统时间)(d)、X=(基本流时间标记-系统时间+基本流时间)在这个发明中,同步时间X可以加上一个修正值,以补偿基本流解码器257中的非零解码时间。修改后的同步时间与基本流解码器257中的es-time计数器263中存储的基本流时间进行比较。以确定解码的信息是否出现的太早或太晚,并进一步用来作为系统时间同步。注意,可以将基本流解码器257中的es-time计数器263中的基本流时间减去修正时间,而不必在同步时间X中加上修正时间而得到相同的结果。上面这个实施例是用来产生同步时间X并判断信息是否出现得太早或太晚的一个例子,很显然,对于那些在技术上很熟练的人来说,很容易找到很多其它的方法来达到上述要求。
例如,图42给出了根据这种发明的另一种确定同步时间X的方法。在这个例子里,系统解码器不存储基本流时间,相反,它在寄存器initial-time 265中记录系统时间的值。当基本流解码器257中的基本流时间计数器es-time 263被清零时。es-time 263的值可以通过系统解码器256计算得到,因为它将是当前系统时间和init-ial-time中记录的值之间的差值。
下列方程3-2(a-c)说明了进行时间同步的另一种方法。方程3-2(a)是表示基本流解码器257中的es-time 263中存储的基本流时间的值的方程。这个值被代入方程3-1(d)得到简化后的方程3-2(b),从方程3-2(b)可以得到方程3-2(c)。方程3-2(c)可以给出同步时间X。这个同步时间X是系统时间和在寄存器initial-time 265存的值的函数。
方程3-2(a)、基本流时间=系统时间-initial-time(b)、X=(基本流时间标记-系统时间+[系统时间-initial-time])(c)、X=(基本流时间标记-initial-time)上面举出了两个利用这个发明得到同步时间X的方法。对于那些在技术上很熟练的人来说,很容易得到许多其它类似的方法。
图43显示了这个发明的另一个实现视频时间标记的管理的实施例。代表系统时间的参考时钟253被系统多路分配器254解码,初始化,然后是根据需要放入系统解码器256内的时间计数器255,然后在90KHz下增大。参考时钟253的第二个拷贝同时被置入视频解码器270内的时间计数器258,然后在90KHz下增大,并且与系统解码器256中的时间计数器255同步。
视频时间标记从系统多路分配器254流到视频解码缓冲区271以获得与到来的视频数据同样的延时。可以对视频时间标记加一个修正值来补偿视频解码器270的非零的解码时间。然后将修正后的视频时间标记与视频解码器270里的时间计数器258中时间的拷贝进行比较,以确定解码后的图是否被显示得太早或太晚。
图43显示的实施例是对原来仅仅将系统时间直接从系统解码器中的时间计数器传到视频解码器的方法的一种改进,因为系统解码器中的计数器每秒钟改变90000次。因此系统时间实质上是要被连续地送到视频解码器。连续地传送系统时间需要有专用的管脚或类似的东西。通过使用系统解码器中的时间计数器和视频解码器中的时间计数器可以将系统时间以参考时钟的形式每秒钟只传送几次。
现在参考图44,代表系统时间的参考时钟由系统多路分配器254解码,并放入系统解码器256中的时间计数器255中,然后在90KHz下增大。系统解码器256中的vid-time计数器272和视频解码器270中的vid-time计数器273互相同步,并在90KHz下增大。视频时间标记也由系统多路分配器254解码。于是同步值X可利用视频时间标记、时间计数器273中的系统时间和系统解码器256里的vid-time计数器272中的视频解码时间,根据方程3-3计算得到。
下面这一组方程3-3(a-d)说明了利用这个发明进行时间同步的一种方法。根据这种方法不必将参考时钟253送到视频解码器270。方程3-3(a)是由时间同步所要用的方程。如图44所示,由于不希望将系统时间直接送到视频解码器电路270,由系统解码器256根据方程3-3(b-d)产生了一个代表同步时间的X。然后将同步时间X与视频解码器270里的vid-time计数器273中的视频解码时间相比较。比较的结果用于判断解码的图是否被显示得太早或太晚,并且可以由系统用来进行进一步的时间同步。
方程3-3(a)、时间同步=(视频时间标记-系统时间)(b)、时间同步=(X-视频解码时间)(c)、(X-视频解码时间)=(视频时间标记-系统时间)(d)、X=(视频时间标记-系统时间+视频解码时间)在这个发明中,可以将同步时间X上加一个修正值,用以补偿视频解码器的非零的解码时间。然后将修正后的同步时间与视频解码器270内部的vid-time计数器273中存储的视频解码时间进行比较,确定解码的图是否被显示得太早或太晚,并被用来对系统进行时间同步。注意,时间的修正可以从视频解码器270中的vid-time计数器273中的视频解码时间中减去时间修正值而不在同步时间X中加上时间修正值。这样可以得到相同的结果。这个发明的上述实施例是产生同步时间X并确定帧显示得早或晚的另一个例子。对于那些在技术上很熟练的人来说,得到很多其它的解决方法是一件非常容易的事情。
这个发明的另一种很好的特点是不需要处理整个33位的时间标记数字或44位的参考时钟数字。这个发明将计数器限制在16位,并允许对视频解码器270进行16位操作。在初看时,在90Kz的分辨率下(只有2/3秒被使用)16位似乎不可以表示足够的数字范围。但是并不需要这样高的精度,因为对视频解码器270的时间控制只是对一个段时间是准确的(因为视频定时发生器VTG是自由地运行或者与一些和被解码的MPEG流没有什么关系的部分进行强制同步),所以它和时间标记和呈现时间没什么关系。
如图44和图45所示,同步时间X和视频解码器270中的vid-time计数器273只使用16位。这是由两个因素造成的。第一,系统时间和时间标记(用于得到同步时间,见方程3-3)之间的差别应该总是非常小的,这使得那些高位可以被去掉。第二,只可能控制图像出现在离它最近的帧时间中。因此,低位变得不必要,可以通过向右移4位来将其去掉。
因此,这个发明中使用的16位的时间信息可以处理在180μS的精度下(大约是一场的1%)11.5秒的定时误差。这对一个PAL或SECAM欧洲625线电视系统是在5626 Hz时钟的112.5拍(tick);对一个NTSC 525线电视系统是93.84拍。因此,使用16位允许一场的1%的精度下进行定进计算。
图46显示了利用这个发明在硬件中移动时间标记的一个优选的方法。在这个硬件中交换信息的优选方法是令牌,但是应该知道其它的方法也可以。硬件被分为两个模块,第一个模块被加在起始码检测器201后面。这个模块负责产生包含有同步时间x的SYNC-TIME令牌,正如上文讨论的那样。这一令牌出现在相关的那个PICTURU-START令牌之前,在MPEG系统流中,时间标记被加载在数据包头中,指的是数据包的第一帧图象。由于数据包并不按照视频数据排列起来。所以一般来说,在时间标记所指的这帧图像的开头之前,经常是前一帧的结尾。
在这个发明中,同步时间信息可由微处理器接口或通过使用令牌得到。无论是哪种情况,同步时间数据(16位)被存储在同步时间寄存器中(这一寄存器被分成两部分,允许对每一字节的单独存取),这在表12中有详细说明。
表12用于处理同步时间的微处理器的寄存器寄存器名称 大小/方向复位状态 说明ts_low 读写 同步时间值的低8位。ts-low寄存器是从属型的,以使得新的值可以写到这个寄存器中,而不影响前面写过的值。
(那将成为SYNC-TIME令牌的一部分),当读操作读回从寄存器的值时,对ts-low寄存器的写操作会影响主寄存器,直到利用ts-valid进行的主从传递完成之后,才可以将写入ts-low中的值读回。ts_high 8/rw 同步时间值的高8位,和ts-low一样处于从属状态表12用于处理同步时间的微处理器的寄存器(续)寄存器名称 大小/方向复位状态 说明ts_valid读写 0 这一位控制ts-low和ts-high的主从传递。
当向ts-low和ts-high中写入值时,微处理器应将这一位置成l。然在应该查询这一位,读回值1。在这时,写入ts-low和ts-high中的值将已经被传到从属寄存器(并且可以被读回ts-waiting位将要被置成1。然后,微处理器应应将这一位清0,为下一次存取做准备。ts-waiting 只读0 当ts-low和ts-high不包含有效的同步时间信息时,将这个寄存器清0。
当ts-low和ts-high中包含有效的同步时间信息时,将寄存器置1,在下一个PICTURE-START令牌之前会产生一个表12用于处理同步时间的微处理器的寄存器(续)寄存器名称 大小/方向复位状态说明SYNC-TIME令牌,然后ts-waiting将会变成0。应该查询这一位,以保证向ts-valid中写入一个1之前这一位是0,保证在进行主从传递重写同步时间时,上一个同步时间已经被使用。
在这个发明中,设置了一个ts-waiting标志位,来指示有效的同步时间信息位于时间标记寄存器中这个事实。如果用SYNC-TIME令牌提供数据,就将那个令牌从流令牌中移去。
当碰到一个PICTRUE-START令牌时,检查指示同步时间寄存器状态的标志位。如果这个标志位没有被设置,则无动作,PICTURE-START令牌和后面所有的数据不受影响。但是如果标志位已经被置数,说明有效的时间同步信息在寄存器中,于是就产生一个SYNC-TIME令牌并将其放在数据流中PICTURE-START令牌的前面。然后,清除标志位,使得下一个出现的时间标记可以使用同步时间寄存器。
图46所示的第二个模块包括一个分频器由27MHz的时钟驱动。还包括一个vid-time计数器,这个vid-time计数器由与微可编程状态机(MSM)218相关的分频器278提供时钟。
有一个分频器278对时钟进行4800分频,如图44和图46所示。换句话说,4800是16的300倍(27MHz/90KHz)。下面将讨论图45和图46所示的4804.8选项。
在NTSC彩色电视中,帧频不是30Hz,而实际上是大约29.94Hz(精确地说是30000/1001Hz)。(在彩电出现之前,采用的是30Hz)。每个NTSC行扫描时间有1716个27MHz的时钟周期。(行扫描时间是帧时间的1/525)。
美国电视标准体系已经表示出一种在将来仍回到使用30Hz的意向(或者对HDTV更可能的是60Hz)。因此,MPEG支持精确值为30Hz的帧频。但是,由于不可能利用27MHz的时钟产生精确的30Hz的电视信号(即每行1714.29......个时钟周期)所以在MPEG体制中产生一个30Hz的光栅是很困难的。
一个可能的解决办法是在解码器中“屈服(bend)”时钟速度,来产生一个27.027MHz的时钟而不是27MHz的时钟。这个时钟用MPEG参考时钟除以300.3(而不是300)来产生90KHz的时钟而得到。当利用27MHz来产生29.94Hz的帧频对视频定时电路计时,这个27.027MHz的时钟会产生精确的30Hz的频率。
在这个发明的体制中,90KHz的时钟先被乘以16,于是将27.027MHz的时钟除以300.3×16=4804.8。
vid-time计数器273(上文讨论过)包含视频解码时间,并在每次分频器到达到达终止数时增加。vid-time计数器273由reset-time管脚进行清0。
分频器和在这个发明中的vid-time计数器可以用完全时钟的反馈触发器实现。这种触发器比其它地方使用的电阻性反馈或弱反馈锁存器更耐α粒子的腐蚀。用时钟反馈型触发器作为时间计数器有利于保证视频解码器的时间计数器与系统解码器中的时间计数器保持同步。
图47说明了当MSM 218收到SYNC-TIME令牌后处理的过程。MSM218可以读入由视频时间计数器指示的当前时间,并将其和视频SYNC-TIME令牌提供的值相比较。因此,它可以与它应该解码图像的时间相比较以确定它是否早或晚。
在这个发明中,一个有符号的16位的时间标记修正值被加到由视频SYNC-TIME令牌携带的同步时间X上(上面讨论过)。当在芯片复位时,这个修正值由MSM 218清零。如果不动作,同步时间保持不变。微处理器总可以写入ts-correction来修改同步时间,因此可以补偿视频解码器和音频解码器的不同的延时。
存储在vid-time计数器273中的当前视频解码时间被从修正的同步时间中减掉。这个值的符号给出了误差的方向(并确定了误差码,加果有的话,这个误差码由MSM 218产生)。于是还得到了差值的绝对值。这个结果同一个阈值相比较,确定定时误差是否在可接受的范围。因此,在目前,视频定时只能在标准时间加上或减去一个帧时间的准确度范围内进行控制(因为VTG 333自由运行),这个阈值只能在一个帧时间内设定。
如果误差超过了一个帧时间,必须要进行一些修正。这个发明中的MSM 218可以在解码太早时修正它自己的状态,因为MSM可以简单地延迟解码直到合适的时间。但是,如果解码的时间比打算的时间晚,这时进行时间修正就比较困难,因为不可能删除编码的数据缓冲区的输出的可靠的图像。根本上讲,解码序列被破坏了,修正这种情况最可靠的方法就是以一种类似随机存取或通道改变的方式,重新开始解码过程。为了便于这一过程,MSM 218的控制寄存器可被编程用来删除所有的数据,直到碰上一个适当的起始码或FLUSH令牌。另外,启动阶段,不产生错误信息“ERR-TO-EARLY”,不器考虑disable-too-early的设置,因为在启动时,期望第一帧图象来得早一点儿。
表13说明了MSM 218的寄存器是如何工作的,并详细说明了寄存器可生成的一些动作和错误消息信息。
表13时间标记MSM寄存器寄存器名称 大小/方向 复位状态 说明ts_correction 16/读写 0 在同步时间被使用之前加到它上面的修正值frame-time 16/读写 226或188 表示解码图象的定时容差,复位状态由PAL/NTSC脚决定。vid-time 16/只读0 由reset或reset-time复位,视频解码时间的当前值。
表13时间标记MSM寄存器(续)寄存器名称大小/方向复位状态 说明manual-startup 1/读写 0 当使用decode-disable进行手工启动时,将其置1。在这时SEQUENC-END和FLUSH令牌在MSM中导致decode-disable被置成1。decode-disable 1/读写0 当被置成0时,解码过程正常进行。
在每幅图启动时MSM检查decode-disable的标志位,如果标志位为1,不再继续进行。
注意,如果要进行手工启动,(例如没有时间标记管理的硬件时),则这位应该和Manual-startup同时置1。disable_too_early 1/读写 0 当有错误时,置成1。表明解码太早的“ERR_TOO-
表13时间标记MSM寄存器(续)寄存器名称大小/方向 复位状态 说明EARLY”被消除MSM简单地等待,正确的状态。NTSC_30 1/读写 0当置为1时,分频器被4804.8除而不是被4800除。
当解码30Hz帧频时,自动设置。descard-if_late 1/读写 0它没有作用除非产生了一个“ERR_TOO_LATE”(或者如果错误没有标出时,将要产生一个ERR_TOO_LATE)。如果这位被置成1,则所有的数据都被丢掉,直到discard-until指示的条件到来。discard-until 2/读写 0 指示由时间标记引起的丢弃数据的停止条件。
0-FLUSH
表13时间标记MSM寄存器(续)寄存器名称大小/方向 复位状态 说明1-SEQUENCE-START2-GROUP-START3-NEXT PICTURE注意1、丢弃一帧图像可以立即被恢复,如果那帧图像是一个段图像,这可以通过产生一个哑段来保留变化的头/尾段结构。因此,如果discard-until被置成了Next picture,但是将要产生一个哑域时,会多丢掉一帧图像。
这个发明进行时间同步的一结果是,可能会有两个错误中的一个产生。
如果解码发生在时间标记指示的时间之前,会产生一个ERR_TOO_EARLY。ERR_TOO_EARLY可以被禁止,但是ERR_TOO_LATE总会产生,除非所有的错误被屏蔽。
总之,这个发明包括一个用于时间同步的装置,该装置有一个时间标记用于确定呈现时间,一个参考时钟用于初始化第一电路的系统时间,一个第一时间计数器用于与参考时钟通讯来保持第一电路中的系统时间和一个第二时间计数器,该第二时间计数器由与第一时间计数器同步的第二电路的参考时钟进行初始化,用于保持系统时间的局部拷贝,并用于确定系统时间和系统时间的本地拷贝之间的出现定时误差。这可通过比较时间标记和第二时间计数器实现。这个发明还包括一个用于同步系统解码器和视频解码器的装置。这个装置使用一个时间标记来确定显示时间,一个参考时钟来初始化系统解码器中的系统时间,一个第一时间计数器与参考时钟通讯来保持系统解码器中的系统时间和一个第二时间计数器。这个第二时间计数器由与第一时间计数器同步的视频解码器的参考时钟初始化,用来保持系统时间的局部拷贝,并通过比较时间标记和第二时间计数器,来确定系统时间本地拷贝和系统时间之间的显示定时误差。另一个实施例包括了一个用于同步第一电路和第二电路的装置,这个装置使用一个参考时钟来初始化第一电路的系统时间,第一电路有一个时间计数器与参考时钟通讯来保持系统时间。这个装置的第一电路中还有一个第一基本流时间计数器用于提供基本流时间。第一电路适于接收一个时间标记,第一电路通过将基本流时间加到时间标记上,再减去系统时间而得到同步时间。第二电路适于从第一电路接收同步时间,并且有一个第二基本流时间计数器与第一基本流时间计数器同步,为基本流时间提供局部拷贝,并通过比较同步时间和基本流时间的局部拷贝来确定系统时间和时间标记中的定时误差。通过这种方式,不必为了确定计时误差而将参考时钟信号直接传到第二电路。在另一个实施例中,一个用于同步第一电路和第二电路的装置有一个参考时钟来初始化第一电路中的系统时间。第一电路有一个时间计数器,和参考时钟通讯来保持系统时间,它还有一个第一视频时间计数器来提供视频解码时间。第一电路适于接收视频时间标记,并通过将视频解码时间加到视频时间标记上,再减去系统时间而得到同步时间。第二电路适于从第一电路接收同步时间,并有一个第二视频时间计数器与第一视频时间计数器同步,用以提供视频解码时间的局部拷贝,并通过比较同步时间和视频解码时间的局部拷贝来确定系统时间和视频时间标记之间的定时误差。因此,不必为了确定定时误差而将参考时钟信号直接送到第二电路。这个发明,还包括一种提供定时信息的方法。这种方法提供了一个视频数据流。这个数据流有一个时间标记装在数据包头中。这个时间标记指的是数据包中的第一帧图像。下一步,提供了一个寄存器。这个寄存器中有一个标志,它指示从数据包信头中得到的并放在寄存器中的有效的时间标记信息。接着,将时间标记从视频数据流中取出,放到寄存器中。然后,这种方法碰到了一帧图像的开始,然后检查寄存器的状态,通过检查寄存器的标志位来确定寄存器中包含的是否是有效的时间标记信息。如果标志位指示寄存器中包含的是有效的时间标记信息,则产生一个与这帧图像开头相对应的时间标记,并将这个时间标记插回数据流中。另一个实施例中有一个上文描述的装置。在这个装置中,基本流时间计数器被限制在16位。与之类似,在另一个上文描述的装置中,基本流解码器中的第二基本流时间计数器被限制在16位。另外,还有一个上文描述的装置,同步时间被限制在16位,用以控制基本流解码。这个发明还有一种方法用于解码图像,并根据一个阈值确定显示时间误差。然后它将视频数据分析成令牌形式来进行进一步处理,以确定是否指示了一个时间标记令牌,将时间标记令牌同视频时间进行比较,根据得到一个比值确定是否出现了一个定时误差。然后,它与阈值相比较,判断比较的结果是否在可接受的参数范围内,当指示了一个定时误差时。它还指示比较的结果什么时候超出可接受的参数范围。另一个实施例包括了一种使用系统解码器和视频解码器的装置。系统解码器适于接收MEPG系统流,并将视频数据和视频时间标记从流中分离出来。系统解码器有一个表示系统时间的第一时间计数器、视频解码器接收视频数据和视频时间标记,第二时间计数器同第一时间计数器同步。视频解码器亦有一个视频解码缓冲器以几乎为常数的速率接收视频数据,并以不同速率输出视频数据及传递视频时间标记。在从视频数据中解码图像的同时,视频解码器还将解码后的图的视频时间标记与第二时间计数器进行比较,确定合适的显示时间。还有一种方法可以确定第一电路和第二电路之间的时间误差。这种方法为第一电路提供一个系统时间(SY),一个时间标记(TS),和一个基本流时间(ET),并通过使用基本流时间(ET),时间标记(TS)、和系统时间(SY),利用方程X=EI+TS-SY,得到同步时间X。它将同步时间X送到第二电路,并产生一个同步的基本流时间(ET2),然后通过利用同步时间X,根据方程ET2-X得到一个时间误差。于是可以做到使第一电路和第二电路在时间上同步,而不必将系统时间传送到第二电路。另一个确定第一电路和第二电路之间的时间误差的方法有以下步骤提供给第一电路一个时间标记(TS)和一个初始时间(T)。通过利用时间标记(TS)和初始时间(IT),根据方程x=TS-1得到同步时间(X)。将这个同步时间(X)送到第二电路,产生一个同步的基本流时间(EI),然后利用同步时间(X),利用方程ET-X得到时间误差。通过这种方式,可以使第一电路和第二电路在时间上同步而不必将系统时间送到第二电路。还有一个确定第一电路和第二电路时间误差的方法,它包括以下步骤提供第一电路一个系统时间(SY)、一个视频时间标记(VTS),和一个视频解码时间(VT),通过利用视频解码时间(VT),视频时间标记(VTS),和系统时间(SY),根据方程X=TS+VTS-SY得到同步时间(X),再将这个同步时间(X)送到第二电路,在第二电路中产生一个视频解码时间(VT2),这个视频解码时间(VT2)与第一电路中的视频解码时间(VT)同步,然后利用同步时间(X),根据方程VT2-X得到时间误差。于是,第一电路与第二电路可以在时间上同步,而不必将系统时间送到第二电路。
这个发明中异步交替缓存的详细说明根据这个发明,为了进行异步交替缓存,两个缓冲区异步地进行操作;当这一个在写数据时,另一个在读。因此,这使得一个有第一速度流量的数据流被同步到另一速度,而同时还保持着理想的速度。在这个发明中,写控制和读控制都有状态指示器来说明它们正使用哪一个缓冲区,并说明控制正在等待存取还是正在存取它所使用的缓冲区。每边同另一边的一个单一位通信。以表示缓冲器正在使用这是在异步电路的两边中,唯一需要同步的信号。当一个控制电路(读或写)完成存取一个缓冲区后,这个发明将使控制传到另一个电路。如果在控制已经交替后,并且两个电路在试图存取同一缓冲区,则后一个控制电路则会开始等待。控制电路会一直等到每边都使用不同的缓冲区,例如,另一边已交替完。如果在控制交替后,它发现它在使用不同的缓冲区,它将不等待,立即开始存取。缓冲器之间的仲裁系统以两边都使用同一缓冲区来启动,在这里是缓冲区0。读的一边由等待开始,这时写的一边正在访问,因为两个缓冲区中都没有可有效读出的东西。
在根据这个发明的一个实施例中,交替缓存是两个独立的RAMS。这些RAMS中的所有信号例如使能选通脉冲,读的或写的一边复用的地址或数据,都依赖于每边使用的是哪个缓冲区。这种结构被显示出使用了很多在两个缓冲区之间的大量信号的汇流区域。
将两个RAMS合并为一个结构,可以省下很多汇流区域,而仍然保持着同样的性能,这种结构与这个发明的第一个实施例中的独立的RAM相比,有两倍的行单元。但是,第二个实施例必须有两对位线,因为向独立的缓冲区中读和写会同时异步发生。每行的宽度与原来相同(例如有同样数目的单元),因为这时的存取与对独立的各RAM存取,有同样的宽度。每对行被当作在同样的地址来存取,但是是从不同的缓冲区,于是,它们被接到一对不同的位线上。使用相同的地址,这些成对的行可以很容易地被一个接在读地址上的行解码器和一个接在写地址上的行解码器存取。而且,读写控制从不在相同时间存取同一缓冲区。所以在由哪一个行解码器存取哪一对上不会出现冲突。
与行解码器从不同缓冲区存取行的方式相同,这个发明的这个结构里的读写电路都接到每一对位线上,每个缓冲区一对。于是读操作和写操作可以复用至每个缓冲区,与上面相同的原因,它们不会发生冲突。
如图48所示,交替单元1包括带有RAM 12和14的交替缓存10,交替单元1还包括一个写控制电路和一个读控制电路,用来控制数据进出RAM 12和14。这些读控制电路和写控制电路通过使用选通脉冲。数据和地址控制线8来完成这一点。线7和9是控制线,用以指示由写控制电路使用的RAM和由读控制电路使用的RAM。线7用于控制写控制电路,即当读控制电路在使用时低电平为RAM 12,是高电平为RAM 14。同样,线9用于通知读控制电路,低电平时写控制电路在使用RAM 12,高电平时用RAM 14。
在这个发明中,交替缓存10有两个RAM阵列,12和14。交替缓存10可以异步轮流地读写RAM区,这使得这个装置可以获得高速存取内存的必要的带宽,RAM 12和14需要下列信号写地址16、读地址18、输入数据20、输出数据22和读写使能信号(没有画出),也见图49。
写地址和读地址信号由多路转换器24转接用。RAM阵列12和14在传统意义上与写电路、行解码器和读电路一起运行。
在这个发明的第一个实施例中,在初始化交替缓存10时,RAM12将被写入直到控制电路向RAM 14发出一个写使能信号。
一旦RAM阵列12被写入时,它归入读电路4的控制来被读。在这时,RAM阵列14也被写入。很重要的一点是要注意,当RAM阵列归入读阵列控制2控制时,或归入写控制电路4控制时,会建立一个控制,直到读或写操作结束。然后,控制转换。在读控制电路4存取RAM阵列,例如RAM 12,并且这时写控制电路2也要存取同一RAM阵列12时,写控制电路则会开始等待。
因此,根据这个发明,产生两个控制事件,当读控制电路或写控制电路被不同的RAM交替时,它会立即存取这个RAM,因为这个RAM是自由的,没有在另一个电路的控制之下;或者,它将开始等待。在启动阶段,读的一边服从于写的一边,因为这时在每个缓冲区中都没有有效的数据可读。
这个发明的第二个实施例显示在图50中,一个集成的交替缓存区30包括一个由RAM阵列12和RAM阵列14组合而成的逻辑尺寸的RAM阵列32。换句话说,在第一和第二实施例中具有同样RAM量,但在第二个实施例中是两个RAM结合起来了。因此,一个集成的交替缓存可以节省很多汇流区域,而仍保持着原来的性能。
在本发明的第二个实施例中,写电路34和读电路36分别与在交替缓存10中的类似。但是这些电路现在包括有选择器,可以从下文描述的位线对中进行选择。与之相同,读操作行解码器38和写操作行解码器40与在交替缓存10中的也是相似的。但是它们现在可以存取下面在图51中描述的行对。
如图51所示,根据这个发明,集成的交替缓存30的特有结构被详细说明了。单个的单元42包含在行44中,读行解码器38和写行解码器40成对地存取行44。一对行有由地址线16和18提供相同的地址。读缓冲区线52和写缓冲区54为选择一对行42中的一个提供控制信息。缓冲区0的位线48和缓冲区1的位线50分别接在不同的行的单元上。并接在读电路34和写电路36上。为了清楚地描述寻址方式,浅的阴影部分表示读行解码器38存取缓冲区0中的一行。类似的,深的阴影部分表示写行解码器存取缓冲区1中的一行。
总之,这个发明包括了一个至少有两个RAM阵列的交替缓存器。一个写控制电路与RAM阵列通讯用于控制数据写入RAM阵列。一个读控制电路与RAM阵列通讯用于控制数据读出RAM阵列。而且,写控制电路和读控制电路互相进行通讯,提供对RAM阵列的同步控制。另外还有一种只有一个RAM阵列的交替缓存装置,一个写控制电路通过一对位线与RAM阵列进行通讯,一个读控制电路利用另一对位线与RAM阵列进行通讯。此外还有一读行解码器和一写行解码器用于通过一对行线来寻址RAM,以使得每个单元被读出。这个发明还提供了一种异步寻址RAM的方法。这种方法通过至少解码RAM中的一对单元而实现异步寻址RAM。它用一个行解码器对至少一对行线解码,然后选择一行存取,并使用至少两对位线连接到一个读电路和一个写电路,选择要使用的那对位线。
关于这个发明存储视频信息的详细说明视频解压缩系统包括三种基本部分用于解码和显示图像信息。一个视频解压缩系统的三个主要部分是空间解码器,时间解码器和视频格式化器。这个发明包括了时间解码器和视频格式化器以及一种时间解码器和视频格式化器分别管理它们各自的图像缓冲区和后面的帧存储缓冲区的方法。在MPEG系统中,时间解码器包括两个帧存贮缓冲区,视频格式化器包含两个帧存贮缓冲区。
MPEG使用三类不同的图像内部的(I),估计的(P)和双向插入的(B)。B图像是基于对另外两种图像的估计的。这二个图像一个来自将来,一个来自过去。I图像不需要时间解码器再进行解码。但是必须存贮在两个帧存贮缓冲区中的一个里,在以后解码P图像和B图像时用。解码的P图像需要从一个已解码的P图像或I图像中作出估计。解码后的P图像存在一个帧存贮缓冲区中,为以后解码P图像或B图像时用。B图像要求要从两个帧存贮缓冲区中都作出预测,但是B图像不存贮在帧存贮缓冲区中。需要理解的是,I和P图像不是在它们被解码后从时间解码器中输出,而是I和P图像被写入一个帧存贮缓冲区,并且只在后面需要解码的I和P图像到来时才被读出。换句话说,时间解码器是依靠于后面来的P或I图像将前面的图像清除出图像缓冲区。因此,这个发明中的空间解码器可以在需要刷新时间解码器的两个帧存贮缓冲区时提供伪的I或P图像。反过来,这个伪的图象在后面的视频序列开始时被清除。
如表14所示,图像帧按照表中数字顺序显示。
表14帧存贮显示顺序I1 Be B3 P4 B5 B6 P7 B8 B9 I10传送顺序I P4 Be B3 P7 B5 B6 I10 B8 B9但是,为了减少那些被时间解码器存贮在内存中的图象帧的数目,这些帧按照不同的顺序传递。从分析一个内部帧图象(I图象)开始分析非常有用。I图象按照它们将要被显示顺序传递过来。然后传送下一个预测帧图像(P图像)P4。然后传送所有将在I图像和P4之间被显示的双向插入帧图像(B图像),这些B图像由Be和B3表示。这允许传送的B帧参考前面的一帧(前向预测)或将来的一帧(后向预测)。在传递完所有将在I和P4之间显示的B帧后,传递P7帧,然后传递所有在P4和P7之间显示的B帧,即与B5和B6对应的帧。然后再传递下一个I帧I10。最后,传递所有在P7和I10帧间显示的B帧,即与B8和B9相对应的帧。这个传送帧的顺序任何时候只需要时间解码器在内存中保持两帧图像,而且不需要解码器为了等待下一个要传递的P帧或I帧而显示一个注入的B帧。如上文所描述并如表14所示,这个发明中的时间解码器可以被配置来提供MPEG图像的重新排列。通过这种图像重新排列,P或I图像的输出被延迟,直到数据流中下一个P或I图像开始被时间解码器解码。
在P或I图像被重新排列时,某些令牌如PICTURE_START,PICTURE_TYPE和TEMPORAL_REFERENCE在图像被写入图像缓冲区时被暂时存贮在芯片中。当图像被读出来显示时,这些存贮的令牌被读出。在时间解码器的输出中,新被解码的P或I图像中的DATA令牌被原来被解码的P或I图像中的DATA令牌所代替,然后被送到视频格式化器。注意,时间解码器的输出处于令牌化的宏块格式,而且这里没有块到光栅的转换。
简单地说,这个发明的视频格式化器存贮两个帧存贮或图像。在一些视频格式化器中,使用三个图像或帧存储来完成重复或跳过图像等一些特点。视频格式化器的外部DRAM包含三个帧存储器。在这里使用三个帧存储器使得在解码图像的速度与显示速度不同时,可以重复或跳过一些帧。
所有的I、B和P帧都被存贮在视频格式化器的帧存储器中。在任一时刻,可以有一个帧存储被显示,一个帧存储被写入数据,并且在有三个帧存储器的视频格式化器中,还有另一帧被存贮在第三个帧存器储中。
这个实施例通过使用一个有两个帧储备的时间解码器和一个有两个帧储备的视频格式化器来完成MPEG一般要完成的预测,重新排列和块到光栅转换等任务,也就是说总共有四个帧储备。在这个发明中,通过使用一个共享帧储备的方案来完成这些任务,而仅使用三个帧储备。但是,这个实施例不能只用三个帧储备,来处理视频格式化器的重复和跳过帧的任务。
这个发明将I图像存贮在第一帧存贮器中,将P图像存贮在第二帧存贮器中。由于需要进行块到光栅的转换,B帧被按照下文将详细描述的方式存储在一个第三帧存储器中。为了尽量减少需要使用的外部DRAM的数量,一种连续的B帧分享同一个第三帧存贮器的方案被使用了。
当一个B帧被解码时,它会参考在第一或第二帧存储器中的已经解码后的I或P帧。解码后的B帧被写入第三帧存储器中。这个实施例允许光栅在一帧还没有被完全填满时就开始扫描。光栅可以在一个帧存储器填满之前开始,使得下一帧B图像可以被写到同一个帧存储器中,以占据在前一帧顶部光栅所腾出的空间。
为了记录帧储备中哪部分是图像数据,哪部分可以被新数据使用,每个帧存储器被分成许多扇区,在这个发明中,每个帧存储器首先被分成两个段存储器。其中每个段包括N个扇区。在这里,N是这个段中,块行的数目。
场图像的帧编码是比较简单的,每个连续的宏块行占据场存储器的两个扇区。一旦写回过程进行到这一帧的足够下的部分,光栅开始从顶部读出每个扇区。一旦第一帧被写完,下一帧的开始被写到光栅余下的空间。检查每个扇区的状态,保证被光栅读的扇区真正已经满了,而在被写回时,所需的两个扇区是空的。
帧图像的帧编码要更困难一些。不同于场图像,数据的宏块行不是按照它们要被光栅扫描的顺序写入DRAM的。场存储被并行地写入,但是这些场被光栅依次地扫描。
考虑一个图象每个场存储器有8个扇区。场存储器0包括由0到7共8个扇区,每个扇区包括一块行(即图象宽度×8个象素点深度)场存储器1包括由8到15共8个扇区。每个扇区包括一块行(即,8个象素点深度×图像宽度)。
第一个宏块行被写入到场存储器0中的0扇区和场存储器1中的8扇区。这个场存储器继续被并行地写入。在某一时刻,光栅开始从场存储0开始显示扇区。这一时刻的选择,应使得光栅对场存储器的扫描不会追上写入过程。但是,第二帧不能够用与第一帧相同的方式写入。因为扇区的读写是按照不同的顺序,等待帧开始的同样两个扇区被空出意味着读和写不能同时进行。但是为了获得必要的显示和解码速度,又必须做到这一点。
因此,第二帧一定要被写入场存储器中已经被光栅空出的扇区。这可以通过将场存储器分成两个实现。因此,对于第二帧来说,半个场存储的含义改变了。扇区4-7变成了第二场存储器的上部,扇部8-11变成了第一场存储器的下部。即它们进行对换。第一个宏块行在扇区0和4被空出时写入这两个扇区。然后将后面的行分别写入1和5,2和6、3和7。下一行被写到扇区8和12中,一直这样,直到11和15。这种对内存的重新分配,使得写回操作和光栅扫描可以连续工作在适当的速度。
当第三个连续的B帧到来时,写回的顺序返回到第一帧的情况。
在使用帧图像的共享B帧存储器中;第一帧被写回到扇区0到8(第一宏块行=2块行),然后是1和9,2和10,3和11......7和15。
第一图像被从扇区0开始被光栅读出,然后是1、2、3、4、5、6、7、8、9、10、11、12、13、14、15。
第二帧图像被写到扇区0和4,然后是1和5,2和6,3和7,8和12、9和13、10和14、11和15。
第二帧图像从扇区0开始被光栅读出。然后是1、2、3、8、9、10、11、4、5、6、7、12、13、14、15。
注意,根据这个发明,第二帧的第一个宏块并不被写到扇区0和扇区1中,这是被光栅最先空出的两个扇区,而是它要等待扇区4空出。这样做是因为两个原因第一,等待扇区4空出并不影响系统保持连续地解码和显示,即使在编码数据最差的情形下,它还容易实现。第二,当被分成很多扇区的图像的大小不是2的乘方数时,从内存的扇区中读出或写入的序列并不经常重复,(例如,NTSC格式每个场有30个扇区,这一序列每58帧重复一次)。这使得测试和修复都困难。
在这个发明中,考虑到实现方法,不是保留每个单个扇区的状态的记录,而是每个半场存储都有效地通过先进先出的方式实现。它有指针指向下一个要读写的位置。因此每个先进先出装置满了或空了都会分别导致写回操作和光栅操作分别被禁止。这可以由每个半场存储都是只读或只写的知识知道,就好象是一个先进先出装置。
总之,这个发明提供了一种存储视频信息的方法。这种方法将视频信息以I帧、P帧、B1帧和B2帧形式,将I帧存储在第一帧存储器中,将P帧存储在第二帧存储中;还提供了一个第三帧存储。这个第三帧存储有一个第一场存储和一个第二场存储。这两个场存储分别至少被分为两个内存区。在第三寄存器中存储B1帧,从第一或第二场存储中的一个选择的内存区读取B1帧,将B2帧的一部分写到B1帧已经被读出的那部分内存区。于是,可以用较少的内存在存储视频信息。
在后面的两个程序中,包含着用于这个发明的优先实施例中的代码。
这个发明中并行Huffman解码器的详细说明根据这个发明,并行Huffman解码器块将对用Huffman方式编码的变长度码(VLCs)和固定长度码(FLCs)进行解码,并在Parser微可编程状态机(MSM)的控制下,通过令牌。
这个发明的这个实施例可以处理MPEG-2和MEPG-1的Huffman码。发明的这个实施例的一个重要方面是由于它是并行解码器而不是串行的,所以它可以保持很高的吞吐量。
这个发明的这个实施例采用一种码查找技术来解码Huffman码。这样做是为了达到性能要求,并处理第二MPEG-2变换系数表。这个系数表是不规则的或者说实质上是不标准的。
而且,发明的这个实施例还有一些特点使得它可以在一个时钟周期内解码流中一些特别复杂的成分,而不需要外部控制器的协助。例如,这些复杂的成分有换码编码系数、直流基值和运动矢量增量。所有这些成分都会以组合VLC/FLC成分的方式出现在流中。
现在参见图52,那里说明了并行Huffman解码器300如何处理变长度码(VLCs)的,FLCs要求一种分流结构。这种分流结构使用选择器301的输出来生成数据,并用一个输入段来规定FLC的长度。因此在解码FLC时,不需要ROM 302了。
但是,在解码VLC时,输入首先被装入如图52所示的两个输入数据寄存器“MSReg”和LSReg”中。正如名字所暗示的那样,早的和最重要的数据存在MSReg中。用选择器将下一个VLC的开头和ROM输入对齐。因此,为了解码第一个VLC,选择器输出它全部59位输入中的高28位。其中高16位被送到Huffman编码ROM 302中。对于后面的VLC,选择器有效地根据已解码的总位数对输入进行移位。这个总位数通过将每个已解码的VLC的大小加到一起得到。不同的字宽是可解码的最大编码大小的结果。它是28位MPEG-1 EscapeCoded系数和16位的最大VLC大小(DCT系数表)。
“表选择”输入被用于选择MPEG所要求的不同的Huffman码表。
Huffman码ROM这个发明中,用于解码所有VLC的实现方法的本质是一个专用ROM 302。如图52和图53所示,它的地址由选择器/移位器控制。ROM 302负责进行一个VLC表索引计算。然后再进行一个索引到数据的操作,产生解码后的数据。
索引计算是一个内容可寻址存储器(CAM)操作。通过执行“不管”匹配来处理当前流中的Huffman码。由于所有的VLC码表是固定的。所以一个CAM-ROM就足够了。这也就是图54到图57所示的ROMAND阶段的工作。由于索引生成是通过一种查找方式(而不是算法性的)方式进行的。所以在处理规则的表时,没有限制。
ROM OR阶段将索引(一个激活的字线)转换成解码后的数据和码的大小(长度)。这个数据构成了解码输出(服从于误差检查),信息的大小被反馈以实现一个控制选择器的计算。因此,提供了一个有正确数据的解码器ROM 302在下面的时钟周期内解码下一个VLC。
在这个发明中的ROM 302的地址有两个字段。大的字段是要被解码的位模式,小的字段选择要检查哪个Huffman码表。必须被检查的位模式相当长,有16位,与最长的VLC码对应。而且还有一个附加的4位的表选择段。因此总共有20位的地址空间(大约有一兆的地址),尽管ROM 302只有450个入口。这一差别存在的原因是由于存在着“不管(don′t care)”位。
为了解码VLCs,AND阶段必须要可以解码“不管”位。这个“不管”位处于VLC的位模式中。这是因为所有比最大18位短的VLC后将跟上附加位。这些附加位在VLC解码时不起作用,由于较宽的地址,AND阶段先被预解码(2→4),然后ROM 302必须将“不管”处理与这个预解码结合起来,另外,除了完整的MPEG码表,ROM 302还有识别非法VLC模式的入口。这些模式存在于一些码表中。最大吞吐量为了保持每个周期输出一个解码的项,必须注意控制解码器的输入,并对于一些复杂的符号采取特别的处理。(即那些不是单个的FLCs和VLCs)。
为了保持Escape-coded系数的峰值吞流量,必须能够在一个周期内输入至少一个完整的码,在MPEG-1中要求的最大长度是28位。这指示输入字宽度为32位(大于28的下一个敏感大小)。
正常变换系数也是复杂符号,如果从某个角度来看。它们由一个VLC接着是一个1位的给出级别值的符号的FLC组成,并且用与其它复杂符号(如运动向量,直流基和Escape coded系数)类似的方式处理。如果系数被当作一个VLC后面是一个FLC(在不同周期)来解码,不能达到峰值流通量。而如果让ROM 302解码符号位就会使ROM中两个最大的表的大小加倍。因此在这个发明中,通过对不同的符号采取特别的处理。以使得一个时钟同期可以得到最终要求的结果。FLCs和令牌处理FLC的根本是要控制有FLC所要求的长度的选择器,忽略rom 302,简单地输出正确选择的FLC。因此简单的FLCs由解码器很自然地处理,不要重要的外部硬件。而且,令牌不用处理,直接送到解码器的输出。
实现根据这一发明,这一节说明了几个实现解码器的重要特点。如图52所示,这种实现包括用计数器303和选择器301安排寄存器,和实际的码ROM。
图53的方案展示了核心部件如何互相连接以实现这个发明中主要Huffman解码的核心部分。寄存器ms[310]和Ls[310]分别是MSReg和LSReg,块phselect是选择器。计数逻辑包含在块phcclog中(与很多其它的逻辑在一起),计数锁存器被叫做CNTL[40]。这一方案中的其它逻辑用于处理命令、数据和动态命令、令牌以及对复杂符号的操作(在块phcop中进行)。
根据这个发明,图54显示了一方案。这个方案说明了一个ROM设计形式的很小的例子,用于实现Huffman码ROM。这个ROM 302不一般的特点位于AND阶段。在这里,通过使用预解码和“不管”处理。实现了一种解码变长度Huffman码的方法。
现在参考图55、图56和图57,主要见图55,这里展示了一个可以进行“不管”处理的ROM AND阶段的实施例。在这个实施例中,每个地址线(a[3],a[2],a[1]和a
)被驱动沿它的真和反的方向穿过AND阶段。为了解码在一个给定地址线上的“1”和“0”,一个晶体管被以传统的方式或者接在真地址线上,或者接在反地址线上。为了解码“不管”信号(由X代表),一个晶体管既不接在“真”地址线上,也不接在“反”地址线上。
图56和图57显示了另一个实施例,在这个实施例中,利用预解码减少了最坏情况下,解码逻辑中晶体管的个数,在这些例子中,预解码时,将两个地址位合并成一个,这样的话四根地址线中的一个被驱动为高电平,4种可能数字的每个都可用2个地址位来表示。一个在本领域有普通技术的人都可以理解,这个发明会同那些将多个地址位合并为一个的高级预解码技术工作得一样好。在预解码时,如果被组合在一起的两个地址位有定义好的值(1或0,但不是“不管”),则将一个晶体管按传统的方式接在合适的地址线上。与之类似,如果两个位都有一个“不管”,就不使用前面的晶体管。但是,如果一个地址位要有一个明确值(1或0),然而另一个地址位需要一个“不管”,则需要两个预解码地址线之一被激活时,选择被驱动穿过OR阶段的字线。在图56所示的实施例中,通过放置两个晶体管实现了这一点。这两个晶体管分别位于相应的预解码地址线上,如码001x所示的那样并行处理。在图57所示的实施例中,没有使用并行连接的晶体管,也实现了所要求的解码。这时,两个独立的解码器,二者都必被选择且执行。它们用字线驱动器上的异或门结合在一起,所以只有在两个选择都被激活时,字线才被激活。
我们相信前面的描述已经足够详细地说明了整个的概念,而且对于这个发明中各个方面的系统的实现和操作也有了足够详细的说明,使得一个有一般技术的人都可以利用和实践这个发明的附属的特性、目标和优点,但是,为了使对这个发明有一个进一步的更深入的理解,有关这个发明的更具体的商业化的实现各种实施例相关的细节,以后将给出了进一步的说明和解释。
为了更详细地说明本发明的系统,采用下面的标题进行陈述概述......................................
起始码检测器..............................
分析器....................................
空间处理..................................
予测......................................
显示电路系统..............................
并行起始码检测器(scdp)....................
输入Fifo(先进先出)........................
输入电路..................................
起始码....................................
位填充的去除..............................
搜索模式..................................
非对准起始码..............................
交叠的起始码..............................
不被识别的起始码..........................
扩展和用户数据............................
PICTURE-END令牌的插入.....................
图象后停止中断............................
discard-all...............................
存取位(Access Bit)........................
被scdp识别的令牌..........................
Scdp存贮器图..............................
技术实现(Implementation)..................
编码数据缓存器周围的数据流................
工作原理..................................
不连续性..................................
启动......................................
实施例....................................
硬件......................................
时间标记信息的MSM处理.....................
启动......................................
MSM时间标记错识码.........................
对30Hz的支持..............................
引言......................................
状态机....................................
跳转和调用................................
中断和错误................................
跳转地址..................................
状态机内部指令............................
状态机测试................................
状态机微码图..............................
状态机微码字..............................
算术核心..................................
ALU.......................................
移位块....................................
进位块....................................
条件块....................................
ALU核心...................................
ALU微码字.................................
ALU的用途.................................
寄存器组..................................
寄存器组寻址..............................
寄存器组寄存器类型........................
寄存器组地址图............................
寄存器组微码字............................
令牌端口..................................
令牌端口微码字............................
多路复用器................................
UPI存贮器图...............................
引言......................................
接口......................................
功能性说明................................
定时要求..................................
微处理器接口访问..........................
引言......................................
接口......................................
功能性说明................................
畸形令牌..................................
曲折扫描路径..............................
扫描线扫描顺序............................
微处理器接口访问..........................
引言......................................
帧图中的予测..............................
以帧为基础的予测..........................
以场为基础的予测(在一幅帧图中)............
双优(在帧图中)............................
在场图中的予测............................
以场为基础的予测..........................
16×8MC...................................
场图中的双优..............................
总体组成..................................
水平过采样器..............................
引言......................................
4∶3过采样................................
3∶2过采样................................
2∶1过采样................................
过界效应..................................
输出象素数................................
位置信号..................................
多路传送信号..............................
水平对准..................................
过采样比率................................
视频定时产生器............................
引言......................................
水平定时..................................
垂直定时-PAL..............................
垂直定时-NTSC.............................
VTG结构...................................
水平机....................................
垂直机....................................
硬件比较器设计............................
输出多路传送..............................
边框产生..................................
垂直边框..................................
UPI控制...................................
输出多路传送..............................
概述这份详细说明把本发明当作一个完整的芯片来对待。现在参看图58,那里展示出一张级别很高的系统方框图。在以后的各节中,每个方框得到扩展以提供一个更加详细的方框图。
这份说明准确地为电路的各种功能块之间的所有接口提供资料。这就使得每个功能块应该能够以完整的接口知识来进行设计。
像在图58中表示出来的那样,基本的系统部件包括时钟产生器350,一个起始码检测器201,一个语法分析器(parser)202,一个微处理器接口320,一个存储器控制子系统352,一个空间处理子系统351,一个预测子系统208和一个显示355。图58进一步说明发生在各系统部件之间的连系。
起始码检测器根据本发明,图59表示起始码检测器201(SCD)和系统的别的电路块之间的连接。
SCD 201可以被看作能提供三种性质不同的功能。第一,SCD201提供一个从专用的引脚(pins)或者从MPI 320接收数据的输入电路。第二,SCD 201检测数据中的起始码,和第三,SCD提供必要的电路,把进来的数据装配成一种在编码数据缓存器(CDB)321内部使用的一种格式。
语法分析器(Parser)根据本发明,图60说明分析器子系统。为CDB 321格式化了的数据被解包,并传到接收从MPI 320来的指令的语法分析器中去。此后,通过一个双线接口,数据传送到系统的其余部分。
空间处理系统图61说明空间处理电路系统的各部件。这些部件包括一个逆向模式化器(Imodel)325,一个逆向曲折(IZZ)326和逆向量化器(Iquant)327和一个逆向离散余弦变换器(DICT)328。数据传入Imodel 325,然后到IZZ 326,下一步到Iquant 327,再后到IDCT328。
显示电路系统本发明的显示电路系统在图62中示出。此系统包括一个垂直过采样器210,一个水平标度子系统331,一个输出多路传输器332和一个视频定时产生器333。
并行起始码检测器(scdp)
根据本发明,起始码检测器201是一个并行起始码检测器,这就是说,它并行传送数据。这个系统类似于早先在英国1994年3月24日提出申请的申请号NO.9405914.4以及1992年6月30提出申请的EPO申请号no.92306038.8(此后用“Brolly”表示)的专利中公开的系统。然而在两种起始码检测器之间还有一些重要的不同点。第一,假定字节是对准的。在本发明中为了寻找起始码数据用不着移位。第二,本发明主要以MPEG数据操作。
一个MPEG(1和2)起始码包括被称为起始码前缀(start-code-prefix)的在位流中的一个专门的位(字节样式)。此样式是23个零后面跟一个一。紧跟着起始码前缀(start-code-prefix)的8位被称为起始码值(start-code-value)。它表明起始码的类型。到达本发明的SCD处的起始码要求字节是对准的。因此,上述数据可以被规定成一个字节序列。例如0×000×000×010×b8是一个group-start码。
输入Fifo(先进先出)本发明设计成在给定峰值数据率为250 Kbytes/S并假定编码数据缓存器不溢出的情况下,in-accept引脚决不会被拉低。因此,为了计算输入fifo的长度,必须知道1)交替缓存器等待时间的最坏情况,和2)通过SCD的数据扩充的最坏情况。
按照本发明,输入数据以编码数据时钟速率到达时,scdp将对每个起始码发生二次停顿。(从数据流中清除了三个字节后)。
输入电路本发明输入电路的运行情况和在Brolly中公开的相同。然而,二电路间有几个不同的注意点。第一,upi不做成一直要等到令牌的有效结束(因为这可能从未被设置)。作为替代,它做成一直等到in-token信号为低电平。第二,当进入字节模式时数据头的产生取决于那里存在某些字节模式数据。
起始码在本发明中,由SCD识别MPEG起始码并把它们转换成令牌。这些在表15中得到表示。
表15 起始码值
位填充的去除在start-code-prefix前面的任何零位都是填充位,它们能被安全地去除。在本发明中只去除完整的填充字节。
例如,下面示出的字节序列有13个填充位,实际只清除其中8个0×20∥5个填充位0×00∥8个填充位0×000×000×01∥start-code-prefix搜索模式按本发明的search-modes在下面的表16中得到描述表16 搜索模式
任何非零搜索模式引起所有到达数据被废弃,直到找到希望的起始码级别。此时搜索模式复位为零,并可能产生一个start-code-search中断。一个新的控制位stop-on-search决定在产生中断后SCD实际上是否停止(中断也按常规被屏蔽,但停止不是强制性的)。
在本发明中,如果SCD接收一个FLUSH令牌,search-mode也被置零。然而。当FLUSH令牌给discard-all结尾时,search-mode被完全复位,也就是search-mode是由一个FLUSH令牌和discard-all的组合所复位。
非对准起始码任何一种大于一个零字节的游程(run),后面跟一个0×01就是一个起始码。此外,任何一种大于23个零,后面不跟一个一的游程是一个非对准起始码。在字节对准领域中,这可以解释成如果在去除了位填充后收不到0×01,则该起始码是非对准的。应该注意这种陈述实际上遗漏了一些非对准起始码(在那里牵涉到小于一个字节的填充)。
不再费力地在此数据表中描述那些种类的非对准起始码被检测,本发明的scdp忽略他们。换言之,填充仍然被清除。
交叠的起始码一个起始码的“数值”部分有可能形成下一个起始码的“前缀”部分。典型地发生这种情况有二个原因1)标准允许系统级起始码在数据流的任何地方出现一包括直接在一个视频级起始码的中间出现,2)出错。去除所有的看上去错误的起始码,直到最后一个,这样,提供了一个从出错中恢复的较好机会。
根据本发明,在字节对准环境下,能够发生交叠起始的唯一途径是如果一个picture-start(值=0×00)形成另一起始码的一部分。在这种情况下,picture-start从数据中被去除,第二起始码得到解码。依次地,如果此码交叠,那么采取同样的步骤,直到检测到一个不交叠的起始码。
不被识别的起始码在本发明中,保留值(0×b0,0×b1,0×b6),所有的系统起始码(0×b9到0×ff)以及sequence-error码(0×b4)都被当作不被识别的起始码。在去除了不被识别的起始码后,SCD废弃所有输入数据,直到找到下一个有效的起始码。它还将unrecognized-start出错寄存器置位,并且将依靠unrecognized-start屏蔽,产生一个中断。
扩展和用户数据本发明中使用二个配置位1)Discard-user(or not)2)Discard-extn(beyond MPEG 2 main picofile,main level)这二个配置位都被复位成一。
MPEG 2各扩展起始码是不同的。跟在extension-start-value后面的四位现在是extension-start-code-identifier,必须由SCD解码。产生四块新的令牌来标记他们。被允许的extension-start-code-identifier以及他们各自的令牌在表17中示出。然而,保留的extension-start-code-identifier不被识别。不被识别的exte-nsion-start-codes或被废弃(取决于Discard-extn)或用(老的)extension-data令牌代替。
表17扩展起始码标识符extension- 名称 新令牌 头start-code-identifier0000 保留0001 序列扩展 SEQUENCE- 0×e80010 序列显示扩展 SEQUENCE-DISPLAY-EXTN 0×e90011 量化矩阵扩展 QUANT-MATRIX-EXTN 0×ea0100 保留0010 序列可伸缩扩展0110 保留0111 图像平移扫描扩展1000 图像编码扩展 PICTURE-CODING-EXTN 0×eb
表17扩展起始码标识符(续)extension- 名称 新令牌 头start-code-identifier1001图像空间的可伸缩扩展1010图像时间的可伸缩扩展1011 to 1111保留1111PICTURE-END令牌的插入现有标准(MPEG1,2,JPEG,或H.261)中没有一个规定结束一幅当前图像的方法。
然而在本发明中,SCD 201含有一种叫做in-picture的状态。每当SCD 201输出一个PICTURE-START令牌时,这个状态就被置位。任何一个后续的起始码,只要它在语法上高于picture-start(或一个FLUSH令牌),就引起产生一块PICTURE-END令牌。PICTURE-END令牌被产生,并且在任何和新起始码有关的令牌之前输出。当PICTURE-END令牌离开SCD 201时,in-picture复位。如果SCD 201在输入数据流中接收到令牌,包括接收到PICTURE-END令牌,操作在逻辑上是相同的。总这,按照本发明,能引起产生PICTURE-END的起始码(和令牌)的是picture-start-code 或令牌group-start-code或令牌sequence-start-code 或令牌sequence-end-code 或令牌FLUSH 令牌图像后停止中断图像后停止(stop after picture sap)是本发明功能的一个特点,以便用干净利落的方法结束一个当前的序列,例如,信道的改变。完成这个功能必须尽可能自动化而不需要外部实时软件。
sap控制位叫做flag-picture-end除flag-picture-end以外还有二个控制位,屏蔽和出错位1)after-picture-stop决定在产生中断以后,SCD是否停止2)after-picture-discard在产生了一个flag-picture-end中断后,这个位决定scdp是否自动进入到discard-all模式。
这样,discard-all模式不必知道什么事件调用它,并且能够迅速而干净地离开discard-all模式,进入搜索模式。
按照本发明,一旦SCD输出一个PICTURE-END令牌,flag-pict-ure-end位就决定是否要采取任何行动。如果flag-picture-end被置位,则FLUSH在PICTURE-END之后产生,本事件就产生了。中断由flag-picture-end-mask决定,而(已经中断之后)停止取决于after-picture-stop。
作为例子,对于一次信道的改变,事件的序列如下1)伴随
after-picture-stop=0及after-picture-discard=1,对flag-picture-end置位。
2)对flag-picture-end-event作出响应a)将搜索模式设置到sequence(举例)b)Retune等3)或FLUSH或S/W将discard-all复位。
4)scdp搜索下一序列的开始discard-all一个R/W控制位discard-all引起本发明的scdp废弃所有输入直到且包括一个FLUSH令牌。该位被一个FLUSH令牌自动复位并可被flag-picture-end功能置位。
被scdp识别的令牌虽然本发明的scdp的大多数主要功能和实际令牌的产生有关,但有些令牌当它们被加到编码数据口(或经过输入电路)时被scdp解码并对其进行动作。表18说明和定义这些令牌。
表18能识别的输入令牌令牌头 动作 注解FLUSH 0×17 清除scdp 这些令牌可以引起一个PICTURE-PICTURE-START 0×12 置位in-picture END的产生。在这种情况下,它PICTURE-END 0×16 复位in-picture 们将会使in-picture复位并GROUP-START 0×11 可引起一个flag-picture-end事SEQUENCE-START0×10 件,且一个FLUSH被产生。SEQUENCE-END 0×14DATA 0×04等 对数据搜索起始码其他 -- 不被识别的令牌通过scdp后不发生变化scdp存储器图本发明的scdp的各种寄存器及其有关的地址在表19中得到描述。
表19并行起始码检测器存储器映射
表19并行起始码检测器存储器映射(续)
编码数据缓存器周围的数据流本发明有下列优点1)迫使缓存器交替的一种方法2)避免必须把字节打包成奇数位的一种方法3)把SCD总线的宽度(可能较长)减少到8位4)SCD把自己打包成32位数据,为避免大的总线,SCD的这个位处于dramif内部。在本发明中它叫做sccdbin。本模块把所有的数据打包成32位的字,将其推算定位在非数据令牌之间。
5)交替缓存器进行自己的计数和交替。sccdbin对PICTURE-END或FLUSH令牌(或信号)作出响应,发出fill-and-swing,缓存器对这个信号作出响应,进行清除。
6)位于Huffman解码器前的解包模块sccdbout删除跟在FLUSH或PICTURE-END后面的所有数据,直到它接收到一个由输出交替缓存器提供的buffer-start信号。
引言这一节将根据本发明详细说明时间标记信息的处理。
工作原理在MPEG-2中,利用在MPEG-2系统流中传送的信息实现对视频和音频数据的同步。主要有二类涉及同步的信息时钟基准和时间标记。
时钟基准用来通知解码器用什么数来代表“现在”这个时间。它被用来初始化一个按有规律的时间间隔增加的计数器,使得在任何时刻解码器都有一个现在是什么时间的概念。
每个组成节目(典型地是视频和音频节目)的数据流都带有时间标记。在视频情况下,一个时间标记和一个图像有关,它告诉解码器应当在什么“时间”(由时钟基准初始化的计数器定义)显示该图像。
然而,像在MPEG中所有事情一样,情况要比这更为复杂些。存在着两种类型的时钟基准节目时钟基准(PCR)和系统时钟基准(SCR)。时钟有达到90 KHz分辨率的信息而另外一个时钟有分辨率扩展到27MHz的附加信息。数据流中常常包含有时钟基准,以便在随机存取或信道改变后可以重新初始化该“时间”。
也存在着两种类型的时间标记显示时间标记(PTS)和解码器时间标记(DTS)。这两类时间标记只对必须重新安排次序的I图象和P图象(而不是对B图象)有所不同。DTS告诉你什么时候解码图像,而PTS告诉你什么时候显示图像。在没有2-3下拉效果(2-3 pull-down effects)的帧图像的简单情形下,一幅I图象或P图象的DTS和PTS之差将是跟在该图象帧周期后面的B图象的数目再加1。
要知道的重要复杂情况是,DTS和PTS涉及一个假想的解码器模型,它能立即解码图像。任何实际解码器做不到这一点,必须采取步骤改变应该显示图像的理论时间(由时间标记和时钟基准决定)。这种改进将取决于解码器结构的细节。很明显,视频解码器引进的任何延时必须由音频解码器等效的延时给予匹配。
不连续性在“时间”概念上的不连续性可能会发生。例如,在一个编辑好的位流中,每个编辑点将有不连续的时间。信道改变时会发生相似情形。必须小心,因为相应于另外一种时间体制的时钟基准所决定的“时间”,使用在一种时间体制中编码的时间标记,将会明显地导致错误的结果。
起动在起动(或改变信道)时会发生一个特殊的问题,因为为了正确地开始解码存在着二种可能互相竞争的要求。从视频角度考虑,必须从一个系统头后面的I图象开始解码(可能并非所有情况下都如此,但大多数情况下这是一种正确的说法),但是从系统角度考虑,第一个解码图像应当带一个时间标记。然而,并没有要求每个图像要带一个时间标记,因此,如果试图寻找一个图像,它既是I图象又携带一个时间标记,那就有可能一直等下去。
人们可能想到从I图像前一幅有时间标记的图像来推算该I图像的时间标记会是什么。令人遗憾的是这是非常困难的,因为必须部分地解调介于其间的图像以确定它们是场图像还是帧图像(以及repeat-first-field是否已置位)。这要求数据通过编码数据缓存器并且被Huffman解码器废弃。
实施例图63示出实现时间标记管理的第一个实施例。时钟基准253由本发明的系统多路信号分离254解码并送到一个代表时间的计数器255,该计数器以90 KHz频率增加。时间基准还被装到第二个相同的计数器258,它位于视频解码器270中。时间标记流过视频缓冲器271,因此它们和视频数据的延迟相同。然后把它们和本地时间复制品进行比较,以确定图像是太早还是太晚。
各时间标记流经视频缓存器271,以便它们得到与视频数据相同数量的延时。然后将这些时间标记和时间的当地拷贝比较,以决定图象是太早还是太晚。
根据本发明的另一个实施例示于图64中。它避免了必须把时钟基准253送到视频解码器270。这是靠采用第二计数器“vid-time”272,273(在视频解码器270和系统解码器中各有一个)来实现的。它们在开机时复位,然后自由运行。因为此实施例要求两计数器步调一致,因此必须采取步骤保证它们不会步调不一致。实现这一点是靠把系统解码器中计数器的进位输出去复位视频解码器中的计数器(如图所示)。
此实施例的另一优点是不必处理全部33位数。这个想法是把计数器限制到16位使得视频解码器270处理16位。虽然在90KHz(仅2/3秒)分辨率可能会出现表示的数字范围不够用,但并不需要如此高的精度,因为VTG自由运行(或是被强制与某个和正在解码的MPEG流毫无关系的信号同步),在视频解码器上,时间控制反正只精确到一场时间。
作为结果,似乎进入解码器的时间标记的少量较低有效位能被丢弃。在本发明中,丢弃四位。这意味着视频解码器利用20位数的16位。因而,分辨率是5625Hz,能表示11.65秒的时间差值。
所以,一个PAL场是5625Hz时钟的112.5节拍(ticks)。一个NTSC场是93.84节拍。因而仍可能得到定时计算精确度约为一场时间的1%,这对本发明是足够了。
硬件图65表明按照本发明的硬件。对Brolly公开的那些增加了两个模块。第一个加在起始码解码器201的紧后面。它负责产生令牌。在PICTURE_START令牌的紧前面发生TIME_STAMP令牌。在MPEG系统流中,数据包头中携带了时间标记。该时间标记指的是数据包中的第一幅图象。因为这些包不和视频数据对齐,所以通常先有前幅图象的结束,然后才有时间标记所指的图象的开始。
可以或者通过微处理器接口或者用一个令牌向本发明的系统提供时间标记信息。在两种情况,时间标记数据(16位)都存在寄存器中。设置一个标志(flag)指明有效时间标记信息在寄存器中的事实。如果用TIME-STAMP令牌提供数据,则那个令牌从令牌流中除去。
当遇到一个PICTURE-START令牌时,指明寄存器状态的标志被检验。如标志是清零,则不采取动作,PICTURE-START令牌和所有后随的数据不受影响。然而,如果表明时间标记信息有效的标志在寄存器中可得到,则在PICTURE-START令牌之前产生一个TIME_STAMP令牌。然后标志被清除并可再次得到以用于发生的下一个时间标记。
第二个硬件模块与可微编程的状态机218有关。这仅仅是用27MHz解码器时钟计数的一系列计数器。第一个是一个预计数器(prescaler),它以4800除时钟(示于图中的4804.8选项在以后讨论)。4800仅是300(27MHz/90KHz)×16。
第二个计数器是时间计数器,它在每次预计数器278输出时钟时增量。它用reset-time引脚复位。
本级的计数器可能应当用完全定时的反馈触发器(SYNC)实现,它们比其他任何地方用的弱反馈锁存器更抗单粒子腐蚀(a-partic-le corrupTion)(这是因为担心Brian中的时间计数器可能和系统解码器中的计数器失去同步)。
可微编程的状态机218能读出时间计数器所表明的当前时间,并把它和TIME-STAMP令牌提供的值比较。所以它可确定比应该正在对图象解码的时间是早还是迟。
用于关系到时间标记的SCD 201中的寄存器示于表20。
表20时间标记“SCD”寄存器寄存器名尺寸/ 复位 说明方向状态ts-low 8/rw - 时间标记值的低8位这个寄存器是从属的,使得新值可写入寄存器而不影响前面写入的值(那将成为TIME-STAMP令牌的一部分)。在读回从寄存器的同时写入这个寄存器影响主寄存器。在用ts-valid使主到从传送生效以前,写入ts-low的值不能被读回。ts-high 8/rw - 时间标记值的高8位。
它像ts-low寄存器一样是从属的。ts-valid1/rw 0 这位控制ts-low和ts-high的主-从传输。
表20时间标记“SCD”寄存器(续)寄存器名 尺寸/ 复位 说明方向 状态当值已写入ts-low和ts-high时,微处理器应写值1到这位。然后它应定时查询这位,直到它读回值1为止。在此时刻,写入ts-low和ts-high的值会已被传送到从寄存器(并且可被读回)而ts-waiting会被置1。然后微处理器应写入值0为下次访问作准备。ts-waiting 1/ro0 当置0时,寄存器ts-low和ts-high不包含有效时间标记信息。
当置1时,寄存器ts-low和ts-high包含有效时间标记信息。在下一个PICTURE-START令牌以前,TIME-STAMP令牌会产生,然后ts-waiting会变成0。
应定时查询这个位以保证在写1到ts-valid以前它是0,以保证前面的时间标记值在被主到从传输表20时间标记“SCD”寄存器(续)寄存器名尺寸/ 复位说明方向状态改写以前已被用过。MSM对时间标记信息的处理本节将详细描述按照本发明当MSM 218接收TIME-STAMP令牌时的功能。
首先,一个16位有符号时间标记校正值加到TIME-STAMP令牌携带的时间标记。用在芯片复位时MSM 218将校正值复位到0,如果不采取动作,时间标记不改变。然而,控制微处理器可以写任何值到这个寄存器来修改时间标记,从而补偿经过视频和音频解码器的有差异的延迟。
其次,从当前时间减去已校正的时间标记。它的符号给出误差的方向(如果MSM 218产生任何错误码的话,此符号决定错误码)。然后采用这个差的绝对值,此结果与帧时间比较,如结果小于帧时间,不采取动作。如前面讨论的,由于VTG自由运行,时间精度只能被控制到标称时间加或减一帧时间。
在本发明中,如误差超过一帧时间,则必须作某些校正。如果解码太早,MSM 218能自己校正这种情况,因为它能简单地延迟解码直到合适的时候为止。然而,如果解码比意图的时间晚,则因为不可能在编码数据缓存器输出处可靠地丢弃图象而变得更困难。实质上,序列的解码被中断,改正这种情况最可靠的方法是以类似于随机访问或通道改变的方式重新开始解码过程。为了方便这个步骤,MSM 218的控制寄存器可被编程来丢弃所有数据直到遇到一个FLUSH令牌为止。起动按照本发明,如果MSM 218在它认为是起动情况时(例如,在复位以后,在一个SEQUENCE-END令牌或FLUSH令牌之后而仍旧在第一个PICTURE-START以前)则MSM 218的动作可被修改。如时间标记表明解码理应早于当前时间发生,则此情况按上面详细描述的同一方式处理。然而,如时间标记表明解码仍留待当前时间以后发生(那是在起动后的正常情况),则即使误差小于一帧时间,解码器也将等待直到正确时间为止。在这一方式,可能把标称解码时间尽可能精确地设置到正确时间。然后,后面的图象最多在它们的标称时间早一帧或晚一帧被解码,不会引发任何错误情况。
另外,在本发明中,在起动期间(因为它期望早解码),不管disable-too-early设置是什么,错误“ERR-TOO-EARLY”不被产生。MSM时间标记错误码作为时间标记处理的结果,可能产生两种错误之一。
ERR_TOO_EARLY产生,如果解码发生的时间比时间标记表明的时间早一些。
ERR_TOO_LATE产生,如果解码发生的时间比时间标记表明的时间晚一些。
ERR-TOO-EARLY可被抑制,但除非所有错误被屏蔽掉,ERR_TOO_LATE总是会产生的。
表21示出了按照本发明与可微编程状态机有关的各种时间标记寄存器。
表21时间标记“MSM”寄存器寄存器名 尺寸/复位 说明方向 状态ts-correction 16/rw -在使用以前把修正值加到每个时间标记。frame-time 16/rw226或188 表示在解码图象定时上的允许误差。
由PAL/NTSC引脚决定的复位状态。time 16/ro 0用reset或time-reset两者之一复位。时间的当前值。manual-startup 1/rw 0在置1时,用decode-disable手动启动。在此情况,在MSM处的SEQUENCE-END和FLUSH令牌使decode-disable置1。
当置0时,用时间标记管理硬件启动。Decode-disable永不表21时间标记“MSM”寄存器(续)寄存器名 尺寸/ 复位 说明方向状态自动置1。decode-disable1/rw 0 当置0时,解码正常进行。
在每幅图象开始,MSM检查decode-disable的状态,如果它置1,就不继续进行。
注意如用手动启动(即没有时间标记管理硬件)在manual-startup置1时这一位应同时置1。disable_too_early 1/rw 0 当置1时,指明解码太早的错误信号“ERR_TOO_EARLY”被抑制,MSM只是等待去纠正这一情况。NTSC_30 1/rw 0 当置1时预计数器被4804.8除而不是被4800除。当解码30Hz帧速率时该寄存器被自动设置。
表21时间标记“MSM”寄存器(续)寄存器名 尺寸/ 复位 说明方向状态discard_if_1/rw 0 除非产生(或如果错误未被屏late蔽掉,本会产生)“ERR_TOO_LATE”,这个寄存器没有作用。
如果它被置1则数据被丢弃直到用discard-unTil指明条件为止。discard_until 2/rw 指明造成时间标记引发的丢弃late停止的条件。
0-FLUSH1-SEQUENCE-START2-GROUP-START3-下一幅图注1,如果图象是为了保留交替的上/下(top/bottom)场结构而产生的假场图象,则对该图象的丢弃立即被取消(un-done)。其结果是,如果disc-ard-until被置为“下一幅图”
表21时间标记“MSM”寄存器(续)寄存器名 尺寸/ 复位 说明方向状态但又坚持要产生假场,则多丢弃一幅图象。对30Hz的支持本发明并不适当地支持30Hz帧速率。然而一个具有本行一般技巧的人会懂得,如果时钟发生器电路适当地作修改,本发明可以解码30Hz数据。在这一情况,系统用27.027MHz时钟定时使得典型的“CCIR-601”光栅以精确的30Hz速率产生图象。为了适应27.027MHz时钟,时钟必须被300.3除以提供90KHz时钟。因为本发明用一个16的因子去定标这个值,所以时钟被4804.8除是必要的。
引言本节按照本发明,详细描述可微编码的状态机(MSM)。建立MSM的目的是产生一个机构,对它作小的修改就能用于许多应用,诸如VLC解码器和地址发生器。
本发明的MSM具有通用的性质,它提供对各种各样特性的支持。然而,MSM的基础结构是模块化的,允许建造中的灵活性。相应地,具有本行一般技能的那些人会懂得本发明能用于许多种应用。
如图66所示,系统设计分为两部分。第一部分是一个状态机218。它产生在双线接口控制下传送到数据处理流水线的一些指令,这在Brolly应用中曾经公开过,在此将其作为参考并归入本文。第二部分是一个算术核心219,包含ALU 222和有关的寄存器组221。这个算术核心219是数据处理流水线的一部分。它在两个双线接口的控制下接收数据和指令。如状态机也控制上游的块,这两个双线接口可以合并。它在一个双线接口的控制下在它的输出端产生数据。把这两个部分组合在一起,就使完整的微码(ucode)字的定义成为可能。
状态机按照本发明,状态机218向算术核心219提供指令。它也在整个指令进行过程中提供控制它本身的指令。
正在传送到算术核心219的指令的地址保持在程序计数器中。程序计数器复位到0×00,通过地址继续进行下去。然而,“跳转”或“调用”指令和/或“中断/错误”事件能使程序计数器重新加载,从而改变指令执行的次序。
在本发明中,状态机218最多允许4096条指令。然而,具有本行一定技能的那些人会知道,其它的指令数量也可用。这里提出数字并不是要作为一种限制。
跳转和调用在本实施例中,所有指令都是条件跳转指令。对每个指令计算一个条件,决定是否跳转(即重新加载程序计数器)。“真”和“假”两个条件分别提供给无条件跳转或不跳转。其余的各个条件(总共16个)基于状态总线的测试。如条件不是“真”或“假”,状态机218将等待,直到算术核心219已执行该指令并为了对照条件进行测试把状态总线反馈到状态机为止。这些条件示于下面表22中。
表22状态机条件码 条件0001F 假-永不跳转0010C 设置进位0011NC 清除进位0100Z 零0101NZ 非零0110AN ALU结果为负0111AP ALU结果为负1000F 假-备用条件1001F
表22状态机条件(续)码 条件1010 LT (S^V)[I-J指明I<J]1010 GE ~(S^V)[I-J指明IJ]1100 I 一个索引寄存器增量曾经逐步通过终端1101 NI 一个索引寄存器增量未曾逐步通过终端1110 V 溢出1111 NE Extn位是低如果一条调用位已设置的指令引起跳转,假定跳转不发生的下一个地址会存储起来作为返回地址。相应地,这形成一个例程调用的机构。为了从例程返回存储地址,对地址0×001作一次调用,调用只支持到一次调用的深度,即只能有一个返回地址。尽管如此,从调用中调用虽然是错误的,在硬件中却不检查。中断和错误在本发明中,如中断/错误线被采样为高,无条件跳转到中断/错误地址(地址0×001)。如中断/错误不发生的话要采用的下一个地址被存贮起来。为了从中断/错误例程返回,做一次到中断地址(0×001)的跳转。
按照本发明,状态机218用硬件工作,如同执行中断或错误例程两者中的任一个。差别在于中断例程在执行时屏蔽掉其它中断,而错误例程不这样做。状态机218现在的连接如同一个中断而不是一个错误引脚。跳转地址装入程序计数器中的地址是跳转地址。这个地址的12位包含在一个微码字段中。它可以或者是一个绝对地址或者可以有一些从ALU 222输出的部分来置换它。如果一个地址要被置换,状态机218会等待,直到算术核心219已执行完指令并且为了置换把ALU 222的输出馈送到状态机为止。
按照本发明,地址的格式示于表23,“跳转地址置换”。一些标明“a”的位表明绝对地址位。余下的较低有效地址位(LSB)将被置换。有标志“s”的LSB是置换位。
表23跳转地址置换
本发明的地址置换特性允许跳转表的结构。状态机内部指令可能要求在状态总线上做重复的条件测试。这些指令对状态机是内部的并要求有从算术核心219的稳定反馈。所以这些类型的指令可标记为对算术核心219非有效,因此算术核心219不能执行它们。相应地,提供一个“有效”位,以标志指令对算术核心219是有效的。状态机测试在本发明中,为了使状态机218的操作能被检验,微处理器总线可访问许多寄存器。用设置“访问”寄存器为1,然后定时查询寄存器直到它读回这个值为止的方法就可得到访问。然后状态机暂停,可安全地访问。写0到“访问”寄存器,可重新启动状态机。
当微处理器有访问时,它能对以下寄存器读和写-程序计数器-调用返回地址-中断返回地址-中断状态位(即表明一个中断是否在进行)-微码的所有位表24描述这些寄存器的各种地址用产生一个微处理机事件的方法,状态机218也能停止它本身。只有事件的屏蔽位被设置时,状态机才会暂停。然后,当为这个事件服务时,应可正常地得到访问。对复位地址(0×00)的一次调用会产生一个事件。调用实际上未进行,它只是在本指令被执行以后产生事件。尽管如此,为了检查,这个调用会留在指令ROM的输出处。
本发明的状态机218有一种方式,在这一方式下它会单步通过它的指令。设置MSSR寄存器的位为0使单步初始化。然后状态机会在每条指令前面停止。停止状态用“1”=stopped表明。然后即将执行的指令将在指令ROM的输出处。它可通过微处理器访问被改变。为了重启动状态机,写“1”到MSSR寄存器的位1。这两个位寄存器都是同步的,所以在它们能被访问以前,它们要求微处理器的访问。状态机微码图表25表明本发明的状态机的微码图。
表25状态机微码图地址 用途0×000 复位地址0×001 中断/错误地址0×002 各微码程序地址-0×fff状态机微码字类似地,按照本发明,表26描述状态机微码字。
表26状态机微码字位数 2 1 0 f e d c b a 9 8 7 6 5 4 3 2 1 0位用途a a a a a a a a a a a a s c 条 件 v这里a=地址
s=置换一个地址c=调用或跳转条件=跳转条件码,和v=对算术核心有效的指令算术核心在本发明中,算术核心219执行在MSM 218内的所有数据处理。如图67所示,算术核心219的总体结构包含有一些功能块,它们从可用总线中选取输入并提供一个总线作为输出。
算术核心219是32位宽,是由位片(bit-slices)构成的,它允许在其他实施中构成8、16、24或32位数据通路。
如图68中所描绘的,本发明的算术核心219有三个主要功能块用于和数据流通信的令牌端口360,用于完成计算(可能还有其他功能)的ALU 222以及包括所有寄存器的寄存器组221。在图68中所有输出总线都被注上标记。到各块中的输入就是从这些总线中被选择出来的。这些选择器的大小以及它们的输入可以改变,且受微码控制。
ALU按照本发明,ALU块222负责算术核心中的所有计算和数字操作。它可以进行相当复杂的运算(如循环,乘法和除法),这些复杂运算是由相对简单的运算(如移位,有条件转化(conditionalinversion)和加法)的组合来完成的。其中每一块都将在下面被描述。然后再举例说明在算术核心219中这些块作为一个整体如何被用来实现更加复杂的计算。
移位块在本发明中,“移位块”允许用于1位左移、右移或不移。1位总线k象是一个附加位似的循环移位进入字。这在表27中被表示出来。
表27移位块ss移位功能00I′=I01I′=I;NOP10I′=(I<<1)+k11I′=(I>>1)+(k<<32)如果ss=0b01,“NOP”作为一个整体信号发给ALU 222。这是一个空操作,它将阻止任何状态标志从上一操作改变。
进位块进位块或从状态寄存器中取进位位或把它清除。在单字加法和减法操作中,进位位被清除,而在多字操作中,以前操作产生的进位(并存贮在各状态标志中)将被用作进位。这在表28中得到描述。
表28进位块c进位功能0C=01C=H从状态标志来条件块按照本发明,块条件,到ALU核心功能的加数和进位在表29中被定义。
表29条件块ii 反转功能00 J′=JC′=C01 J′=~JC′=~C10 J′=J & LC′=C & L
表29 务件块(续)ii 反转功能11 J′=(L?J~J)C′=(L?C~C)ALU核心本发明的ALU核心222执行简单的一套采用2的补码运算的逻辑和算术功能。这些在表30中被定义。
表30 ALU核心ff ALU核心功能0 I′+J′+C′Add1 I′ ^J′ XOR10 I′& J′ AND11 I′|J′ OR从ALU核心222的结果,四个状态标志被产生(参看表31)。这些状态标志存在寄存器组221中(如表36所示)并送回到状态机218以便和条件码进行比较。
表31由ALU核心产生的状态标识意义反转功能进位从ALU操作来的进位出零 ALU的结果是零负 ALU结果的最高有效位=1溢出ALU操作溢出ALU微码字表32说明ALU微码字。
表32 ALU微码字位号 6 5 4 3 2 1 0位用处 s s I I f f c其中ss是移位块控制ii是条件块控制
ff是ALU核心控制c是进位块控制ALU的用途表33描述根据本发明的ALU不同功能的位图。
表33位号6 5 4 3 2 1 0加法(I+J) 0 0 0 0 0 0 0减法(I-J) 0 0 0 1 0 0 0乘法1 0 1 0 0 0 0除法1 0 1 1 0 0 0寄存器组图69说明本发明的寄存器组221。寄存器组221包含64个32位字的寄存器。寄存器组221能对部分字(partial words)寻址,也就是寄存器组能以64×32位,128×16位,256×8位,512×4位,1024×2位或2048×1位的格式被寻址。地址直接由微码提供或者地址的一部分可以从特殊寄存器替换进来。这就允许寄存器的变址访问。
在每一个指令下,在一个寄存器上可以进行读出-修改-写入。读出-修改-写入便于部分字写回寄存器组。写入的源由一个外部的有自己的独立微码的多路复用器来决定。如果不要写,寄存器组221的输出应当由多路复用器来选择。
取决于模式寄存器的位0,部分字可以当作有符号或没有符号的数字。如果部分字是负的(也就是它的最高有效位被置位),符号会被扩展到总线的全部宽度。这使在算术运算中易于使用部分字。
本发明的寄存器组221中有三个存储单元还被连到一个专用总线上,但它们仍可以和别的寄存器组存储单元并行使用。它们是表示在图69中的A和B寄存器以及状态寄存器。寄存器组还包含用于地址替换的变址寄存器,及伴随的终端计数寄存器、常数寄存器和一个说明寄存器组模式的模式寄存器。
寄存器组寻址按照本发明,寻址必须妥善处理两个不同的特性用于访问字的变宽度部分的可变长度地址和地址替换。
为了对部分字寻址,要求有一个较长的地址。因此,所有地址是变长度的,并且它们被编码如下其中“a”是一个地址位,地址位的最低有效位是“s”,即替换位。
表34可变宽度寻址
寻址是大头在下的(endian)。这就是说字的较高、较重要的部分是用较低的地址来寻址。
地址的一部分“a......a”能以变址寄存器之一替换。作为一个例子,采用表34中定义的8位字地址,表35表明如何确定要被替换的最低有效位的数目。所有尾随的零都被替换。
表35地址替换
例如,在一个32位地址中替换进4位将会有0b000001aaa01111的形式,或者在一个1位地址中替换零位将会有0b1aaaaaaaaaaaa0的形式。
在本发明中,替换将来自二个8位变址寄存器中的一个,变址寄存器是被在寄存器组中微码字指定的。因此能够看出,在一个地址中最多能替换8位。
还能看出,按上述方案,使用象0b0000000000000或0b11111111111111那样的非法地址是可能的。非法地址导致无地址可被访问,使寄存器组的输出总线未知(unknown)。寄存器组寄存器类型在本发明中,有许多寄存器组寄存器类型。每种描述如下·有独立总线的寄存器三个寄存器(A、B和状态寄存器)除了能用寄存器组中常规的方法被访问,还有它们自己的专用总线。这就使得这些寄存器能够连到算术核心219中的更多地方并能和寄存器组中其他寄存器并行地被访问。独立总线只能以其全宽度,也就是32位宽访问寄存器。
对于这些寄存器没有微码写使能。只能通过有自己的微码控制字的外部多路复用器才能对它们进行写入。为了防止写入,如图70所示,它们必须以它们自己的值写入。
当独立总线寄存器象寄存器组中的寄存器那样被写入时,独立总线写入被封锁。
状态寄存器象独立总线寄存器那样被实现。寄存器各位在表36中被定义。
表36状态寄存器的定义
·变址和终端计数寄存器提供二个8位变址寄存器用于替换到地址中去。其中一个能在微码控制下每指令被增量。此外,每个寄存器由一个终端计数寄存器伴随。当增量的寄存器被通过(passed)时,它的终端计数将复位为零。
变址寄存器叫做Y和Z,它们分别有终端计数寄存器U和V。它们全部都能在寄存器组中被访问。
变址寄存器Z有一个预先规定的解码器附在它的输出端(目前这种解码是一种转化(inversion))。取决于模式寄存器中的Index_Mode(位1),这个解码器而不是变址寄存器将被用于地址替换,它将从寄存器组中的Z被读出。(Index_Mode=1读解码,Index_Mode=0读计数)·常数寄存器在本发明中,寄存器组的32位存储单元中的16个将被预先规定成常数。这些常数可以象常规寄存器那样被读出。写入这些存储单元将没有影响。(对于当前的实施例选定的常数是0-7。然而可以理解常数的其他数字也可被采用)。
按照本发明,常数的这种实现免除了在微码中需要一个常数字段和在算术核心中需要一个常数总线。然而它的确限制了程序中可用常数的数目。(数目16是可协商的)。在每一种场合的基础上,这些常数可以被编程。此外,十分常用的数值,如有必要,能被连到多路复用器上。
寄存器组地址映像表37表示用于本发明的寄存器组地址映像。
表37寄存器组地址映像
表37寄存器组地址映像(续)
寄存器组微码字表38表示用于本发明的寄存器组微码字。
表38寄存器组微码字
其中a=完整的寄存器组地址(总是12位)s=替换位r=用于置换的变址寄存器如果r=0,1分别选择Y,Z变址寄存器。
I=用r说明的增量变址寄存器。
令牌端口本发明的令牌端口是算术核心到数据流的连接。这是一个双线接口连接。
仅当令牌端口读周期时,在令牌端口处的数据输入才被定义。因此,它应该仅当读周期时才被使用。
如果在一个读周期中输入端口并不包含有效数据或者在一个写周期中输出端口不接受,算术中心将停顿。于是,它将执行空操作,不读新的微码字,不写寄存器。只有当这些状态不存在时,它才重新启动。令牌端口微码字表39描述令牌端口微码字。
表39令牌端口微码字
其中I=读入输入端口O=从输出端口写多路复用器用于块的源的选择是靠使用多路复用器来完成的。总线的所有组合几乎都许可(只有一个例外功能块,例如ALU,的输入必须来自存储块,例如令牌端口或寄存器组)。
多路复用器是2、4或8输入。因此,它们分别使用微码字的1、2或3位来控制它们的输入的选择。UPI存储器映像按照本发明,表40表示MSM地址映像。
表40 MSM地址映像
表40 MSM地址映像(续)
引言在MPEG编码标准(MPEG-1及MPEG-2)中,量化系数被作为“事件”来编码。每一事件被编码成一个RUN和一个LEVEL。RUN是给定的非零系数之前的零系数个数。LEVEL是该系数的值。此外,在最后的非零系数之后使用了一个特别事件End-of-block(本块结束)以指示本块的余部是全零。
例如,假设有下列的系数序列
1、-7、0、3、0、0、0、-1、0、0、0、0......0(总计64个系数)这些系数可被由(RUN,LEVEL)表示的下列事件模式化(0,1)(0,-7)(1,3)(3,-1)(EOB)逆向模式化器的任务是逆转此模式化过程,使64个系数的每一个都用纯粹的数表示,以便后续处理。
接口下列信号引脚被用于将数据送入本发明的逆向模式化器·level[110]·run[50]·in_extn·in_valid·in_accept各令牌被在level[110]总线上传送(用其低8位;level[70])。run[50]充当传送RUN信息的辅助总线。除了在DATA令牌的数据字中之外,它别无意义。
下列信号在逆向模式化器的输出使用·out_data[110]·out_extn·out_valid·out_accept功能性说明在各DATA令牌中的数据被扩充,以使在逆向模式化器输出端出现的DATA令牌中,总是有64个系数。在大多数情况下,DATA令牌的最后数据字不会使第64个系数被产生。这不是错误,而只是在此刻EOB事件本应已被编码到位流中去。因此,在此场合,逆向模式化器必须继续输出一些零值数据的令牌字,直到在输出端已总共产生64个系数。
在某些情况(如数据出错时)下,在逆向模式化器输入端的DATA令牌有可能出现多于64个系数。此时模式化器必须丢弃所有的多余数据并在其输出处产生正好具有64个系数的令牌。
在输入端出现的一切非DATA令牌都被不变地简单传送到逆向模式化器的输出端。
定时要求本发明要求数据以时钟速率通过逆向模式化器。
如果在Imodel输入处的信号无间断,且与输出相连的电路不使Imodel停止工作(即in_valid=1,out_accept=1),则在Imodel的输出端会每个时钟周期出现一个新的数据字。但是要注意此时Imodel可能并不是在每个单一的时钟周期都在其输入端接受新数据,这是因为(DATA令牌内的)非零RUN可以引起对每次输入产生一个以上的数据字。
对微处理器接口的访问在本发明逆向模式化器的正常工作方式下,不要求其电路系统与MPI连接。请注意出错状态(过多的系数)不应该产生微处理器的中断。它只是用丢弃多余数据的方法在内部得到处理。
但是在块输入处的窥测(测试)电路却需要访问微处理器。
引言在各MPEG编码标准中,系数被“曲折(zig-zag)”扫描,以使较低频率的系数在较高频率的系数之前得到传送。
根据本发明,逆向曲折(inverse zig-zag)的作用是将它从逆向模式化器接收的一维的系数流转换成可以由IDCT处理的二维系数阵列。
过去在MPEG-1中,只使用了一条确确实实的之字形曲折扫描路径(从而得名)。而MPEG-2却使用两条扫描路径。第一条是原来的MPEG-1路径,第二条路径被优化,以用在交错编码的场合,在那里往往会有一些异常大的垂直频率成分。
除了那些明显地按曲折扫描次序传送的系数之外,各量化矩阵也同样地按照曲折扫描顺序被下装(downloaded)。这发生在MPEG-1,H.261和JPEG。其结果是,本发明的量化器位于逆向曲折之前(逆向曲折曾被作为IDCT的一部分来实现)。所以量化器处理的是系数的一维流,这些系数以与各下装的量化矩阵系数相同的次序到来。因此,量化器只须将第一个系数与第一个矩阵元素相联系,第二个系数与第二个矩阵元素相联系,并以此类推。
但是,由于现在在MPEG-2中有两条扫描路径,对于逆向曲折位于逆向量化器之前的本发明,采用了新方法。各系数及各下装的矩阵被逆向扫描,然后逆向量化器处理二维数据。应当注意到,因为在三种数据表示中(两个曲折扫描及在IZZ输出处的扫描线扫描(raster-scan)次序),首系数总是在最先,末系数总是在最后,这种处理才是可能的。首系数在Iquant中作特殊处理,因为它是直流(DC)项。末系数也作特殊处理,因为作为所有其余系数值的函数,由于失配控制(mis-match control)的结果,可能需要对它修改(所以它必须在最末)。余下的62个系数则全都以相同的方式处理(每个系数有它自己的量化矩阵元情况除外)。
接口在本发明的逆向曲折器的输入处使用下列信号·in_data[110]·in_extn·in_valid·in_accept在逆向曲折器的输出处使用下列信号·out_data[110]·out_extn·in_valid·out_accept功能性说明IZZ对下列各令牌作出响应·PICTURE_START·ALTERNATE_SCAN·DATA·QUANT_TABLE所有其它的令牌则穿过IZZ,不作修改地通过。
PICTURE_START令牌使IZZ将它的表示两条扫描路径的哪一条为有效的(例如alternate_scan)内部状态复位为零(表示MPEG-1扫描)。
ALTERNATE_SCAN是一个可以用掩码Oxfe指定为值Oxeb的令牌。ALTERNATE_SCAN令牌见于表41。
表41 Alternate_Scan令牌
“S”表示对各后继的DATA令牌使用哪种扫描,所以它被装入IZZ寄存器“alternate_scan”。
各DATA令牌被按照扫描路径零(MPEG-1扫描路径)作重新排序,这与alternate-scan的设置无关。注意,alternate_scan必须保持它的原有值(即必须不被置零),以使各后继DATA令牌得到正确处理。
各QUANT_TABLE令牌被按照扫描路径零(MPEG-1扫描路径)作重新排序,这与alternate_scan的设置无关。注意,alternate_scan必须保持它的原有值(即必须不被置零),以使各后继DATA令牌得到正确处理。
畸形的令牌DATA和QUANT_TABLE令牌两者都可能是畸形的。DATA令牌无疑应当是正确的,因为Imodel应当已经保证它的正确形成。然而,对QUANT_TABLE却得不到这样的保证。由于必须实现对畸形QUANT_TABLE令牌的处理,所以对DATA令牌也应当有这样的实现。
根据本发明,在IZZ输入端出现的过短的DATA及QUANT_TABLE令牌应当在输出端产生具有正确数据字数(64)的令牌。这些字中包含的数据内容是不重要的,它们可能是令牌开始前重排序RAM中偶然存在的任何废弃值。与此类似,过长的DATA和QUANT_TABLE令牌也应当在输出端产生形式正确的令牌。就当使用开头的64个系数(矩阵元素),应当丢弃其余部分。
在畸形令牌之后的所有(形式正确的)后继令牌应当得到恰当处理。
不要求产生微处理器接口出错(中断)。
扫描线扫描顺序在IZZ的输出处,本发明的DATA和QUANT_TABLE令牌表示的是二维数据。但是这些系数事实上仍被当作一串一维数字来传送。问题在于数据应当以行传送还是以列传送。
预测电路系统要求对象素域(pel-domain)数据按照扫描线扫描的顺序来编排。由于IDCT装置了数据,进入IDCT的数据必须与之相反。表42表示在IZZ输出端DATA和QUANT_TABLE令牌的系数的传送次序。
增高的水平频率→u
表42 IZZ各输出系数对微处理器接口的访问在IZZ的正常运行中,并没有对微处理器访问的要求。然而,可能要求作访问使重排序RAM得到测试。预期不会需要窥测器。在Imodel前头的那个窥测器对二者已足够了。
引言本节讨论预测,在此引言部分列举所有可能的预测方式,并且为每种方式提供示意图以准确解释必须做什么。
在整个本节中,对于水平方向的操作(如半象素滤波)不给于特别的注意。这是因为这些操作与Brolly的相同。然而在垂直方向,由于隔行扫描图象格式的关系,事情就十分不同了。
在帧图中的预测以帧为基础的预测在本方式下,根据基准帧来形成预测。其结果就象是两个基准场首先合成一帧,然后根据该帧作出预测。注意,这正是Brolly所描述的情况。
半象素滤波可以在垂直方向进行,这由矢量的最低有效位来触发。除最低有效位外,下一最高有效位(位1)具有特殊意义,因为它将决定预测的最高行(top line)由上基准场(top referencefield)产生还是由下基准场(bottom reference field)产生。
因此,必须考虑四种情况,每一种取决于垂直矢量的两个最低有效位的二进制值。
vector[1]=0,vector
=0如图7l所示,恰好16行(色度读8行)被读入,因为没有半象素滤波。从每个基准场读8(4)行。
vector[1]=0,vector
=1如图72所示,读17(9)行,9(5)行读自上基准场,8(4)行读自下基准场。
vector[1]=1,vector
=0如图73所示,恰好读16(8)行,但是注意现在预测的最高行已经读自下基准场。
vector[1]=1,vector
=1如图74所示,读了17(9)行,8(4)行读自上基准场,9(5)行读自下基准场。
所以,位1表示哪个基准场持有为产生预测而必须读的最高行。此外,如果位0也被置位,位1还指示哪个基准场具有使半象素滤波得以进行的额外行。
很明显,直到两场都从DRAM读出之后才能进行半象素预测。
在对垂直活动矢量定标以获得在场存贮中的偏移时,必须十分小心。下表表43,说明了效果
表43以场为基础的预测(在一幅帧图内)在本方式,对各场作独立处理。两场的每一场使用分别的矢量。与每一矢量有关的是另一个一位的标识(motion_vertical_field_select),此标识指示预测应该根据上基准场还是根据下基准场来作出。矢量的最低位仍旧指示是否需要半象素滤波,但是位1没有特殊意义。注意,场矢量和帧矢量的测量单位不同,具有值n的场矢量所表示的(在屏幕上的)实际位移量与具有值2n的帧矢量相同。
然而现在有16种情况要考虑(因为有四个二进制变量两个矢量各有motion-vertical-field-select,两个矢量也各有位0)。要画的图例太多,因此下列图解只讨论上场的预测。用类似的方法得到下场的结果。
如图75所示,motion_vertical_field_select=0,vector
=08(4)行读自上基准场以形成预测的上场。
图76表示motion_vertical_field_select=0,vector
=1。
9(5)行读自上基准场,然后被半象素滤波以形成预测的上场。
同样,图77描述motion_vertical_field_select=1,vector
=08(4)行读自下基准场以形成予测的上场。
图78说明motion-vertical-field-select=1,vector
=19(5)行读自下基准场,然后被半象素滤波以形成予测的上场。
双优(Dual Prime)(在帧图中)双优是上一节中以场为基础的预测的特例。简要地说,双优是将以下两个特点结合起来·一种对各矢量编码的特别方法,使得尽管有效地形成了四个独立的场预测(独立是在各自有不同的矢量的意义上说的),事实上只传送一个活动矢量。因此矢量开销便大大减少了。
·对于每一场,预测信息读自各基准场的每一个,然后加以平均,形成最后的预测。这和B图象的情况非常类似,在那里分别作前向和后向预测,然后取平均值。
在本发明中,矢量解码将全部在语法分析器内完成。因此,当预测电路接收信息时,将真正有四个分别的矢量。
双优取平均将靠重新使用B帧取平均电路来完成(双优本身不能在B帧中使用)。因此预测电路的唯一有关的复杂性在于发出信号去指出(使用后向矢量令牌等等所作的)后向预测应当用前向基准场(而与后向基准场相反)来实现。由于P图象在正常情况决不应当请求后向预测,所以预测电路只需保持图型(P或B)的记录,以便能决定为了“后向”预测要使用哪个基准存贮。
场图中的预测以场为基础的预测这和在帧图中的以场为基础的预测极为相似。有四种情况,它们取决于motion_vertical_field_select和活动矢量的最低有效位。注意,讨论已形成的预测的上场和下场并不真正贴切,因为这只是对正在解码的图象的预测(该图象不是全部上场就是全部下场)。
图79说明motion_vertical_field_select=0,vector
=016(8)行读自上基准场以形成预测。
图80表示motion_vertical_field_select=0,vector
=117(9)行读自上基准场并被半象素滤波以给出预测。
图81描述motion_vertical_field_select=1,vector
=016(8)行读自下基准场以形成预测。
图82表示motion_vertical_field_select=1,vector
=117(9)行读自下基准场,并被半象素滤波,以给出预测。
16×8 MC在本方式中,宏块(macroblock)被分成两个一上一下的16×8区域。为每个区域传送分别的场矢量。又有十六种情况要考虑(因为有四个二进制变量,两个矢量各有motion_vertical_field_select,两个矢量也各有位0)。要说明的事例也太多,所以下列图例只涉及上16×8区。用类似的方法得到下区的结果。
图83表示motion_vertical_field_select=0,vector
=08(4)行读自上基准场以形成上16×8区的预测。
图84描述motion_vertical_field_select=0,vector
=19(5)行读自上基准场并被半象素滤波以形成上16×8区的预测。
图85说明motion_vertical_field_select=1,vector
=08(4)行读自下基准场以形成上16×8区的预测。
图86描述motion_vertical_field_select=1,vector
=19(5)行读自下基准场并被半象素滤波以形成上16×8区的预测。
场图中的双优场图中的双优只是场图中场预测的一个特例。将使用两个场矢量(一个将适用于上基准场,另一个适用于下基准场,语法分析器将给予保证)。两个预测之一看起来将是作后向预测,但是因为这是P图象。预测电路将把此理解为第二个前向预测。得出的两个预测然后将靠使用与B帧取平均同一的电路来取平均值。
总体构成根据本发明,图87表示显示流水线的总体构成。数据从DRAM接口来到单一的多路复用接口。此外,DRAM接口将按行提供数据,这些数据被取整到超过正确的字节数,达到下一32字节的边界。然而,接近行末的那些象素可能位于计划中的显示区之外。
除数据外,DRAM接口将为每一通道(Y,Cr和Cb)提供一位,用来指示本字节是否当前显示行的末字节。还进一步提供一位,以指示数据来自哪个场。
在本发明显示流水线中的第一方框被分裂成三个通道。色度(Cr和Cb)数据供给垂直过采样器210。亮度(Y)数据在需要时可以在FIFO内延时。
垂直过采样器210的任务是以2∶1的因子对色度数据过采样,使色度数据有与亮度数据同样多的行数。为此,垂直过采样器存贮色度数据的每一行,并且产生在本行和下一行之间内插的输出象素。
在显示流水线中的下一级称作“水平对准370”。它是作为水平过采样器212的一部分实现的。其任务是对准数据,使得在每行的起点,三个通道的每一个的第一象素正确地被加到水平过采样器212。在每行的终点,一般说预期这些通道会在不同时间“用尽数据”。“水平对准”方框370的工作是从具有太多数据的通道丢弃多余数据,同时又停止其它通道,使它们等待,直到所有三个通道都被对准并准备好开始下一显示行。
在本发明中,水平过采样器212在水平方向对数据过采样,以便扩展数据来填满IV屏幕。为了节省硅片面积,滤波器由三个通道共用。可以做到这点,因为滤波器的总输出速度必须是27 Mbytes/s(时钟速率)。数据按照CCIR 601的次序被多路传送,使所产生的数据流被简单地多路传送到最终的数据流中去。
注意,水平过采样器212仅仅接纳DRAM接口提供的数据量并用选定的比例因子加以缩放。通常这些过采样器将产生对扫描线中实际行长度来说过多或过少的数据。这将在输出多路传送中得到处理。
也要注意,“水平对准”方框370不必知道为完成一行,需要每个通道有多少象素。计算此数字是十分困难的,因为水平过采样器输入象素数和输出象素数的关系不十分简单。水平对准方框370只是在“被提出要求”时才将数据在它三个通道的每一个上提供给水平过采样器212,即水平过采样器以要求的顺序“拉入”所需的象素数。到显示行的终点,通道之一将首先用尽数据,而这表示其他通道的剩余数据(如果有的话)应当被丢弃。
VTG 333只是在整个扫描区计数,它产生一系列定时信号提供给输出多路传送371。这些信号中,有些是内部信号,它们告知输出多路传送371如何去建立最后一条扫描线。其他是一些“外部”信号,如同步和消隐,这些信号也被加到输出多路传送371电路,使它们和数据被延迟同样的时钟周期数。
输出多路传送371方框有好几个任务。其中最有趣的恐怕是从数据中去除双线接口的性质。由水平过采样器212提供的数据仍有伴随的(valid)信号(输出多路传送也提供accept信号)。在多路传送输出端的数据没有双线接口,它只是被时钟打出,每个时钟周期一个字节。
输出多路传送371还有在图象四周画边框的任务。顶边框和左边框在VTG 333的控制下画出。VTG 333简单地告知输出多路传送371去产生必要数量的具有边框颜色的象素。在图的右部和底部,输出多路传送371画它自己的边框,即它知道去做此事,因为它用尽了图象数据。
在显示流水线中的最后的方框是8位至16位的输出方式变换器372。它十分简单,是一个触发器和一个多路传送器。有意将它在输出PAD本身处实现。这样做,就可能只布8位总线而不是16位总线。每一位将送到两个输出焊盘。
水平过采样器引言根据本发明,水平过采样器212执行对已解码图象过采样或内插的任务,以便将它扩展,以与显示扫描线相适应。
本发明的过采样器212可工作在四种方式1)1∶1——输出与输入相同2)2∶13)3∶24)4∶3在经过一些图象模拟和考虑可能实现的成本之后,已经决定使用三抽头滤波器来进行内插。
每个相继的输出用一组不同的滤波系数来产生。从这个意义看,滤波器是一种“多相”滤波器。总相数等于过采样比例的分子。因此,4∶3过采样器有四相,每产生第四个输出样本采用相同的滤波系数。
因为过采样器212产生着比它当作输入来接受的数据更多的输出数据,很清楚,不是每个时钟周期都接受一个新的输入样本。事实上,滤波器不接受新输入时的相数就是过采样比的分子和分母的差值。在这些比例的每一个中(1∶1除外),差值是1。因此,遍及各相的每个完整周期内,在其中的一相上不接受新的输入数据。这时的数据与上一相的相同。然而,滤波系数则与上一相不同。4∶3过采样在4∶3过采样中,各滤波系数见表44,而图88表示正在工作的滤波器。输出象素实质上是以输入象素的加权平均来形成的。<p>表2B
从上述表中可以明显看出,本发明例子中的非溶液电解质二次电池的充/放电性能优于对比例子中的电池,可以认为这是因为在空气中的氧化处理部分削弱了碳素物的碳-碳键,引起碳素物中能吸入或掺入锂的位置数量增加,以致于真实比重下降。
边界效应在图象的边缘处,必须产生由位于图象区域外的象素形成的输出象素。为了避免这个问题,必须对边缘象素作图象重复,以使波波器可以不认为这是在图象的边缘而照常操作。
在三抽头滤波器的情况下,在本发明中就是如此,必须在图象左边和右边各重复一个象素。(如果是五抽头滤波器,就会要求在左边重复2个,在右边重复2个)。这在图91中示出。
因此,从概念上说,其实现可以看作由两个方框组成。
注意,如果图象宽度不是16象素的倍数,本方案就实行不通,这是因为DRAM接口总是提供宽度为16象素的倍数的数据。
虽然知道有这样的问题,我们也不准备为此做什么补救。至少说,大多数图象是16象素倍数的宽度,而且不管怎样,可以被边界效应影响的只是这一行的最后一个象素。这在图92中作了说明。
输出象素的个数在本发明中,对于给定个数的输入象素,过采样器总是产生一定个数的输出象素。这一点很重要,因为这使语法分析器状态机能决定在过采样器的输出端会产生多少象素,由此决定为了使图象与扫描线适应,需要剪切掉多少象素(或增加多少边界象素)。
来自水平过采样器的第一个有效输出应当作为对正在输入到过采样器的第三个象素的响应而出现(因为这是三抽头滤波器)。由于重复了一个象素,它就总是在第二个实际象素输入过采样器时出现。
最后一个有效输出应当在此时出现,这时作为对正在输入的最后一个即(重复了的)象素的响应,所有可能的输入样本都已被产生。由于计算多相滤波器最后一相时使用了与次末相相同的输入数据,作为此最后重复象素进入过采样器的结果,可能产生一个或者两个输出象素。
如果做完这一步,过采样器将产生“q”个输出样本方程式1q=N(pDIVM)+(pREM)此为NM过采样器对“p”输入样本作出的响应例如,对于4∶3过采样器,可以拟定表47如下
位置信号 表47 4∶3过采样器输出象素数在本发明中,两个信号与视频数据一起传送。它们使输出多路传送能确保数据被显示在输出扫描线的适当位置上。这些信号是·last_in_line·field_idlast_in_line对一个象素时间,以及有关象素是扫描线中最后象素的信号来讲是有效的。field_id表示数据属于哪一场。“0”表示空间上场,“1”表示空间下场。注意,用在任何边框线之类上的这一表示法被应用于解码图象。field_id在一个象素前过早地改变状态,即在本场的次末象素与末象素之间。这就使本场的末象素得到识别,而不用等待下一场的首象素。然而,如果出于某种理由解码停止,就可能没有“下一场”。field_id信号在图93中示出。
如果需要真正的场指示符,可以将field_id延时一个象素来得到。
因为这些信号在整个显示流水线中与数据并排行进,所以重要的是使用两个信号而不是三个(后者可允许在场信号内提供末象素),以节省许多触发器。多路传送后的数据将位置信号加到多路传送后的数据上时,需要小心。
数据以CbY CrY的次序作多路传送。
在本发明中,三个样本(CbY Cr)在时间上重合,所以应当被看成不可分割。剩余的字节(Y)位于上一(CbY Cr)象素和下一(CbYCr)象素之间。
其结果是,一行的末字节总是Cr或Y这二者之一。(注意以3∶2过采样可以产生奇数的Y象素)。如果各行的末字节是Cr,则在多路传送信号中理应存在着不连续,因为一行的首字节永远是Cb(CbY1Cr)(Y)(CbY1Cr)/(CbY1Cr)(Y)(CbY1Cr)水平方向的对准在过采样器的输入处,不保证三个不同的通道总是对准的。
在本发明中,为了实现对准,在水平过采样器和水平对准这两个方框之间必须达成某种“约定”。根据本发明,约定的实施如下·一经要求,水平对准方框就将象素供给水平过采样器。当它用尽某一给定通道的数据时,它会使用标记本行末象素的信号告知过采样滤波器。这只会在有重复的象素的情况下发生。
水平过采样器保证一旦它已从给定通道被提供末象素,它就不再在当前行对该通道索取另一象素。但是滤波器继续运行,从其他各通道取入任何必需的象素,直到它从它知道已用尽数据的通道索取象素。滤波器将它能在输出端产出的最后一个象素标记为本行中的末象素。此刻它就将自己复位,准备接受下一行数据。
·当水平过采样器了解到滤波器接受已经用尽的通道的数据时,它就明白滤波器正在索取下一行的首象素。此刻在其他两个通道的任何剩余象素被丢弃。在这些通道的每一个上将被提供的下一象素将是一行的首象素。
虽然为了说明工作把水平对准方块和水平过采样滤波器看成两个分别的方框是适宜的,但是很可能它们是一起实现的。
过采样的比率过采样比率将以两位二进制数供给滤波器。为了使滤波器有意识地工作,过采样比率应当由过采样器自身每场抽查一次。因此提供该比率的电路就有空在当前场的任何时候更新采样比,为下一场作准备。
随着每一场的首象素被实际接受(而不是紧接在上一场的末象素之后),此比率就应当被抽查。这样,在复位之后的最初场(或解码中暂停一下之后)就以正确的比率被过采样。
视频定时信号产生器引言本节根据本发明说明视频定时信号发生器(VTG333)。VTG主要担负产生各种模拟的视频同步信号及保持对显示系统当前扫描线位置的了解。这就使VTG能提供给输出多路传送器的各个控制信号,输出多路传送器在有效视频、边框和消隐等源中选择一个作输出。模拟和数字标准二者都得到支持;有两种帧的规格(PAL和NTSC)和有关的同步特性,它们可以在设置时选定。边框或剪切宽度可以在令牌内规定,此令牌将用一硬接线输入加载至VTG。水平定时各水平定时参数的说明见图94。这些参数分为固定的(或适用于PAL,或适用于NTSC)和可变的(即和任何可以规定的边框或剪切有关的参数)。
视频显示的隔行扫描性质要求作以半行为基础的计数,所以各个定时时刻按前半行和后半行分别说明。
一行包括一段开头的消隐期、插入SAV令牌、一段有效期、插入EAV令牌和结尾的消隐期。在各消隐行期间,有效区将被插入消隐值而不是边框和数据。
行同步脉冲出现在每行的起始处(HSYNC)。在某此消隐行,出现两个同步脉冲,一个在前半行的开头,另一个在前半行之后。这些脉冲的宽度取决于现行的是哪个垂直区域均衡区还是锯齿形(serration)区(即场同步脉冲区)。
在初始的水平消隐期间,按照剪切值(如果剪切位被置位)丢弃一些象素—允许一段120周的固定周期以从上一行丢弃RHS被剪切掉的象素。然后丢弃当前行的LHS象素。象素被停止直到有效区的始端。重要的是象素正被从中丢弃的数据流没有中断,否则会产生失真。
可是,如果剪切位未被置位,在一个左边界L的期间内,通过插入边界值来构造一个边界,其后是图象宽度的数据,然后再是边界,直到有效区的结尾。注意不必计算右边界L的值。
总的水平边框或剪切宽度的规格用象素来表示。为了使采样保持一致,LHS边框/剪切值必须是2个象素的倍数。因此,用时钟周期来表示,它必须是4的倍数。将最低的两个有效位从原来的以象素表示的总边框值中屏蔽掉,就能达到这点。例如,如果规定边框为91象素,左边框就将是88周期长,图象宽度将是(720-91)*2周。
到达输出多路传送的象素流被装填成32象素的块。考虑到这点及要支持的各种比例因子,一行要接收的象素最大数将是832。这意味着最大剪切值是112象素,即在LHS及RHS给予112周的剪切。垂直定时-PAL根据本发明,在图95中表示PAL的垂直定时参数,分别表示了两场,因为它们有略为不同的定时。模拟参数由阴影区表示,它们在每场全相同,数字参数则用波形表示。为简单起见,表示了零边框的情况。如果规定为非零的垂直边框,则插入期限为borderT的边框,然后是图象高度的数据,然后再是边框,直到(固定的)有效区的末端。BroderT与图象高度的计算方法分别与(水平定时中的)borderL和图象宽度相似。再一次指出,初始边框(borderT)必须是4的倍数,现在是用半行数来表示,因为顶部边框必须是2的倍数。
注意,MPEG对576行的PAL视频编码,而模拟标准只规定575行。为适应此差别,为每场576个半行选择输出用的数据,但是只为必不可少的575行认定模拟的消隐信号。垂直定时-NTSC往下,根据本发明,图96表示NTSC垂直定时。在原理上,它与PAL定时相似,虽然略为复杂一些。MPEG对480行的NTSC视频编码,而模拟标准却规定483行。这意味着为填满空缺必须每帧插入3行边框(每场3个半行)。此外,考虑周密的垂直消隐指示信号V是这样规定的在有效视频行之前需要插入额外的边框行作装填之用。除了那些已经指出的行外,还将插入如上节所述的非零垂直边框。还要注意,两个标准都不允许作垂剪切。
至今,关于数字的消隐信号V还有若干不确定处,因为不同的参考来源提供了矛盾的信息。主要有两种可能的定时可能性,它们用V和V′表示,其相关的边框选择信号分别是SB和SB′。VTG结构本发明的视频定时信号产生器包括用于水平定时定义域和垂直定时定义域的分开的机构(machines)。垂直机构为水平机构提供控制信号,水平机又依次为各垂直计数器提供半行增量信号。
VTG的各项输入是·时钟和复位·PAL not NTSC·带有剪切指示值的水平边框值·垂直边框值各项输出是·水平、垂直和复合同步及消隐信号
·数据、边框、消隐的选择信号·用于剪切的一个丢弃数据位·插入SAV及EAV·用于构造SAV及EAV的F和V值·用于插入SAV/EAV的两位YUV位置计数器·一个首行位以便在启动时指示一幅图象的起点所有的输出都到输出多路传送器方框去,包括各个同步信号,这些信号可以因此与数据保持同步。水平机(Horizontal Machine)水平机主要是一个计数器,伴随有硬件以检测如图94所示的各个定时时刻的到来。计数从零至半行长度(后者对PAL和NTSC是不同的),并且每半行重复一次。对于每个固定的定时点有一个硬接线的(hardwired)比较器,定时点根据标准激活。此外,还有一个用于寄存边框值的寄存器(每场查询此值一次)、一个决定图象宽度的减法器,和一个从边框值递减计数到零的辅助计数器。此过程与主半行计数并行地发生。数据通路是10位宽,实现PAL和NTSC二者共需要15个硬接线的比较器。在图97中示出了当前实施例的结构及大致的规模。数据通路估计为360u×330u。
除数据通路外,在本发明VTG中的大多数控制逻辑将与水平机有关。这可能将总共需要100至200个门。
水平机的各项输入为·时钟与复位·水平边框值与剪切位·行、均衡或场同步指示信号
·PAL not NTSC·垂直消隐·插入垂直边框水平机的各项输出为·水平和复合消隐·插入数据·插入边框·插入各消隐值·丢弃输入·插入SAV或EAV,带有YUV计数·水平同步·复合同步·行起始·半行增量垂直机垂直数据通路基本上具有与水平数据通路相同的结构,但是硬件比较器是22个(PAL 8个,NTSC 14个)。主计数器的增量是半行,用每半行对各半行计数,并依次用每场对各半行计数。它也是十位的宽度。
此外,为了测试的目的,将半行的脉冲输入与另一个速度更快的时钟一起多路传送是有利的,这样垂直机就可以不依赖水平机而独立运行。
估计的规模是360u×420u。
垂直机的各项输入是
·时钟与复位·PAL not NTSC·垂直边框值·半行增量垂直机的各项输出是·选择均衡、场或行脉冲·垂直消隐(模拟)·垂直同步·用于构造SAV/EAV的F、V和V′·插入垂直边框·插入数据·插入消隐值·帧起始硬接线的比较器的设计在本发明中,硬接线比较器的设计以一系列串联的n型半导体三极管为基础,它们或被预充电,或带上拉电阻,被组织成与存贮器的行解码器相似的式样。典型情况下,这些比较器将在上述的估计区域中约8u高。
输出多路传送本发明的输出多路传送的任务是将要显示的数据放到一起。它用从VTG得到的定时信息来混合从显示流水线前几部分到达的数据。
输出多路传送的另一输入任务是去掉双线连接。输出多路传送之前的所有流水线的级都有双线接口,确实,到达输出多路传送输入端的数据总是来得太早,它们将会由于收到accept为低而被停住。但是在该器件的输出处却没有双线接口。
为了实现上述的对双线连接的去除,需要弄清楚数据供应的机理,使DRAM接口永不停住从水平过采样器输出端到来的数据。
从本质上说,输出多路传送在一场接一场的基础上不断地决定是否输出一场数据。在接近一场第一有效行起点的某时刻,输出多路传送作出决定。如果在其输入端有等待着的有效数据(即in_accept为低),则它就开始输出数据。反之,如果没有有效数据(例如,在第一幅图象已被解码之前),则它将整幅图象涂成边框颜色。
实际上,此过程还要略为复杂一些,因为输出多路传送也要保证将数据涂入正确的场内。即,必须有属于正确场的等待着的有效数据后才能开始显示。
如果在输出多路传送希望有有效数据送去显示的时候,数据在某刻停止有效(这决不应当发生),则输出多路传送就回复到输出边框颜色对本场的剩余部分一直这么做。
边框的产生图98根据本发明说明在图象显示的左右边框颜色的产生。
如图示,VTG靠认定一个在输出多路传送内选择边框色的信号来产生图象的左边框区。但是,在图象的右方,边框色由输出多路传送自己产生。这是靠输出多路传送识别出它已把数据“用尽”并将图象宽度的剩余部分涂成边框色来实现的。
必须明白,对“用尽”数据有两种可能的解释。其一是从水平过采样器输出的数据不是有效的。但是,在这里不是这个意思。这里是指,当被last-in-line信号标记为在本行最后一个到来的象素被纳入输出流之后,就用尽了数据。图99表示当发生图象剪切(clipping)时与此相当的作用。
如图所示,VTG用认定一个告知输出多路传送丢弃输入象素的信号的方法来向输出多路传送发信号,要它剪切掉图象左方的象素。一旦此事发生完毕,VTG就发出输出多路传送应当输出剩余象素的信号。在有效行的终点(即720象素之后),VTG取消对此信号的认定,输出多路传送就丢弃加在其输入端的数据中任何剩下的象素。注意,一般说,在VTG指出的应当进行剪切的时间与有效行的起始时刻之间有(时间上的)间隙。这就可观地简化了VTG的设计。当剪切信号被认定时,输出多路传送丢弃象素;然后它等待着直到有效行的时期开始。输出多路传送输出多路传送控制了不同数据源在一起的多路传送,以形成CCIR 601 8位多路复用的数据流。
定时关系(即多路传送的对象和时刻)主要由VTG控制。输出多路传送则与各更深层的问题有关。例如,在解码开始后,如果得不到可供显示的图象,输出多路传送会给整幅图象涂成边框颜色。最后,第一幅解码的图象将终于到达水平过采样器的输出端。典型情况下,这不会在一场开始时合适地出现。输出多路传送每场都问一次“有准备好作显示的有效数据吗?”。如果没有,它就等待下一场的出现(碰巧在一场中间出现的任何有效数据必须等待下一场的开始)。
输出多路传送还保证从SDRAM来到的正确场的数据被显列PAL或NTSC扫描制式的正确场中去。
除处理数据处,输出多路传送也为输出到引脚选择正确的同步和消隐信号。这便于连结到各式各样的组合编码器,DAC等等。为输出多路传送用的位器寄存器如表48所示。多路传送控制的一些位说明于表49。
表48输出多路传送寄存器
表49来自Outmux-Ctrl的一些位
表49来自Outmux-Ctrl的一些位(续)
表49来自Outmux-Ctrl的一些位(续)
a不管这个位的设置是什么,在消隐期间色度数度(Cb和Cr两者)总是0×80(十进制128)。视频解码器技术说明和特性除了前面的详细说明之外,也提供关于适合本发明实施的一个视频解码器的优先实施例的下列公开内容。
本发明包括一个高度集成、易于使用的MPEG-2视频解码器。它完全支持MPEG-2 Main Profile at Main Level的所有要求。
本发明的系统也是自配置的(单个引脚在PAL运行和NTSC运行之间选择)并且,在许多应用中不需要外部软件支持就能开始和维持视频解码。出错掩盖和恢复是完全自动的。要求更高的应用可利用由运行在一个外部微处理器上的软件控制的高级特性。
本发明把它自己的微码存储在一个片内ROM上,从而避免用一个外部ROM或在解码能开始以前卸下微码的需要。见图100。
本发明的系统的下面更详细的说明,为了组织、清楚和便于说明的目的,用列在下面的标题陈述。信号..........................................寄存器图......................................电源..........................................逻辑电平......................................时钟信号.......................................复位信号.......................................编码数据接口信号...............................通过微处理器接口提供数据.......................在输入方式之间切换.............................接受编码数据的速率.............................编码数据接口定时信号...........................CDCLOCK........................................视频输出信号...................................视频输出控制寄存器.............................边框、缩放和剪切...............................视频输出控制寄存器.............................视频信号定时...................................MPI信号........................................MPI电气技术说明................................中断...........................................页寄存器.......................................SDRAM接口信号..................................SDRAM配置......................................在非JTAG系统中JTAG引脚的连接...................支持的指令.....................................特性...........................................对IEEE 1149.1的符合程度........................起始码检测器寄存器............................起始码的检测.................................discard-all装置...............................flag-picture-end装置.........................start_code_search装置........................SCD例-通道改变...............................分析器寄存器.................................错误码.......................................处理用户数据.................................系统组织.....................................信号和寄存器.................................电气技术说明.................................编码数据接口.................................视频输出接口.................................微处理器接口.................................同步DRAM接口.................................JTAG接口.....................................起始码检测器.................................视频分析器...................................时间标记管理.................................地址发生器配置...............................机械的信息...................................
本节包括按照本发明使用的所有信号(引脚)的列表和通过微处理器接口可利用的全部寄存器的列表。(见表50和51)。
表50信号
表51测试信号
寄存器映象本发明的寄存器映象被分成区。开始的32个单元是系统正常工作要求的。地址只有5位。
下一个32个单元的组在地址发生器线路中,它们被要求用于建立一个非缺省的SDRAM存储器映射图。
寄存器映象的其余部分是那些只用于测试和诊断目的的寄存器。这些寄存器能被分页排入代替地址发生器寄存器。
表52说明本发明的寄存器映象。
表52本发明寄存器映射图的概述
表52本发明寄存器映射图的概述(续)
a、正常工作中,Page-Select应保持0值。
在这种情形,单元0×20......0×3f将包含地址产生用户寄存器。
表53描述页选择寄存器。
表53页选择寄存器
表53页选择寄存器(续)
表54说明中断服务范围。
表54中断服务范围
表55表示本发明的输入电路寄存器。
表55输入线路寄存器
表56表示本发明的起始码寄存器。
表56起始码检测器寄存器
表56起始码检测器寄存器(续)
按照本发明,表57表明时间标记插入寄存器。
表57时间标记插入寄存器
同样地,表58说明视频分析器寄存器。
表58视频分析器寄存器
表58视频分析器寄存器(续)
输出控制寄存器示于表59。
表59输出控制寄存器
表59输出控制寄存器(续)
测试寄存器完整的寄存器图示于表60到表69。
表60嵌入式自测试寄存器
表61IDCT测试寄存器
表62 IM-PLUS测试寄存器
表63 SCD测试寄存器
表64分析器测试寄存器
表64分析器测试寄存器(续)
表65场/帧测试寄存器
表65场/帧测试寄存器(续)
表66 BOB测试寄存器
表66 B0B测试寄存器(续)
表67 Addrgen测试寄存器
表68 DRAMIF测试寄存器
表69窥测器寄存器
表69窥测器寄存器(续)
表69窥测器寄存器(续)
表69窥测器寄存器(续)
电源本发明主要运行于单个5V电源。然而,为了使得能简单地连接到同步DRAM去,也提供了一个3.3V电源。
表70建议的技术规格额定值b
aD[15∶0],DA[11∶0],DCKE,DCLKOUT,DCLKIN,DWE,DCAS,DRAS,DCS[1∶0]和TDCLK。b超过这里列出的条件可能对器件造成永久性损坏。这仅是条件的可用域,并没有在这些条件下或在超出本说明部分使用部分指出的任何其他条件下器件能正常运行的意思。持续地经受绝对最大定额的情况可能影响可靠性。
表71直流工作条件
逻辑电平按照本发明实现了三种不同的信号接口类型。微处理器接口用标准(5V)TTL电平。另外,编码数据接口和视频输出接口用5VCM0S电平。SDRAM接口也用3V低电压TTL电平。TTL(5V)电平表72
表72(续)
a交流输入参数在1.4 v测量电平被测得。
b Lo≤Loocminc这是接口的稳态驱动能力。瞬态电流ma可能大得多。
d当有效时,集电极开路的IRQ输出信号拉低,其阻抗不大于100Ω。CMOS(5V)电平对于CM0S输入,VIHmin约为VDD的70%,而VILmax约为VDD的30%。在表73中所示的是VIH和VIL分别在它们的最极限运行时的值。
表73 CMOS(5V)DC特性
cIOL≤1mAdIOL≤4mA表74 LVTTL(3.3V)DC特性
a AC输入参数在V量测电平上被测得b这是接口的稳态驱动能力。瞬态电流可能会大得多。时钟信号本发明对几乎全部片内功能使用一个时钟(SYSCLOCK)。因为这个时钟用于视频输出线路,所以假定采用一个27MHZ时钟,使得VTG(Video Timing Generator视频定时信号发生器)可在正确的速率产生图象。
可用第二个时钟(CDCLOCK)将编码数据打入本发明的系统。这个时钟可和SYSCLOCK同步,这就允许从不是运行在27MHz时钟(可能是一个从盘或网络接口线路得到的时钟)的线路来的数据进入系统。
在内部,本发明用一锁相环路(PLL)得到用于驱动SDRAM接口的高速时钟。这个时钟作为DCLKOUT输出到SDRAM。一个片内PLL也用于得到均恒的脉冲占空比。对SYSCLOCK的要求示于图101。
表75对输入时钟的要求
a注意时钟的允许偏差和稳定性必须满足与适当的视频标准的行频相一致的要求。复位信号本发明用三种复位信号1)RESET2)VTGRESET3)TIMERESETRESET是主芯片复位信号。所有线路被复位并采用下文中描述的各种表格中指明的复位状态。TESET必须在电源和时钟稳定到能保证正确复位以后的至少四个时钟周期内为低(LOW)有效。VTGRESET用于复位本发明的视频定时信号发生器而不影响本发明的其它方面。TIMERESET根据本发明用于时间标记处理电路(timestamp handlingcircuitry)。引言根据本发明,编码数据接口提供一组专用的引脚可用来给系统提供编码视频数据。另一种方法是,通过微处理器接口可以写入编码数据。本节讨论这两种方法。
如果用一些专用引脚,编码数据可以或者作为简单的字节流或者作为“令牌”被提供。令牌使编码数据以及其它类型的信息能被提供。例如,用这一机理可传送时间标记。
如果微处理器接口用于编码数据,则总是用令牌的。而且,这十分简单。一旦一个“令牌头”已被写入来说明后面跟随的数据是编码数据(只要求两个寄存器被写),此后,编码数据可简单地写入一个寄存器。编码数据接口信号表76规定了用于本发明的编码数据接口信号。
表76编码数据接口信号
表76编码数据接口信号(续)
CDVALID和CDACCEPT按照本发明用以控制数据的传送。这种类型的约定称为一个“两线”接口。在CDCLOCK的上升沿为了使数据传送能发生,两个信号都必须为高,图102表明数据(CD[7∶0],CDEXTN和BMODE和CDVALID和CDACCEPT之间的关系。注意∶如数据通过编码数据接口引脚被提供,微处理器接口寄存器“enable_mpi_input”必须为0(这是它的复位状态)。字节方式在本发明中,如BMODE在CDCLOCK的上升沿被采样为HIGH(并且CDVALID和CDACCEPT两者都是高),则数据被看作简单的编码数据。事实上,数据立即被装入一个DATA。在此情况,CDEXTN被忽略。令牌方式如BMODE在CDCLOCK的上升沿被采样为低(CDVALID和CDACCEPT两者都是高),则数据被看作是令牌。
按照本发明,在整个系统中令牌广泛地被用来控制数据流和控制信号流。理论上,在编码数据输入可提供任意令牌。
按照本发明,所有令牌包含一系列字节(CD[7∶0]),它们中的每一个与某一个扩展位(CDEXTN)有联系。令牌的第一个字节指明令牌携带的信息的类型。用扩展位为LOW的方法指明令牌的最后一个字节。
例如,编码数据用DATA令牌提供。这在图103中说明。如图所示,第一个字节是0×04(指明这是一个DATA令牌)。这个信息后面跟着编码数据的一些字节,它们一直延续到CDEXTN被采样为LOW为止。采样的下一个数据被看作新令牌的第一个字节(假定BMODE仍为LOW)。
另一个特别有用的令牌是FLUSH令牌。这个令牌的作用如同一个“复位”,可在一个视频流结束以后用它使系统为下一个视频流作好准备。在图104中说明FLUSH令牌。通过微处理器接口提供数据在本发明中,用访问编码数据输入寄存器的方法通过微处理器接口(MPI)对系统提供令牌。表77定义了各编码数据输入寄存器。
表77编码数据输入寄存器
表77编码数据输入寄存器(续)
通过MPI写令牌在存储器映象中编码数据寄存器被组合成两个字节一组,以允许有效的数据传送。8个数据位,coded_data[7∶0],在一个存储单元而一些控制寄存器,coded_busy,enable_mpi_input和coded_extn在第二个单元。(见表56)。
当配置成使令牌通过MPI输入时,每次向coded_data[7∶0]写入一个值,当前令牌就被用coded_extn的当前值扩展。在任何令牌的最后一个字被写入coded_data[7∶0]以前,软件负责把coded_extn设置为0。
例如,用写1到coded_extn然后写0×04到coded_data[7∶0]的方法开始一个DATA令牌。这个新DATA令牌的开始然后进入系统接受处理。
每次一个新8位值写入coded_data[7∶0],当前令牌就被扩展。当结束当前令牌时,只需再次访问coded_extn(例如,引入另一个令牌)。用写0到coded_extn接着写当前令牌的最后一个字到coded_data[7∶0]的方法来指明当前令牌的最后一个字。
此外,在每次写入coded_data[7∶0]之前,应检查coded_busy,看接口是否已准备好接受更多数据。在输入方式之间切换只要遵守合适的预防措施。动态改变数据输入方式就是可行的。一般,在切换方式以前通过任一路线传送的令牌应该被完成。这些切换方式示于表78。
表78切换数据输入方式
表78切换数据输入方式(续)
以字节方式提供的第一个字节使DATA令牌头在片上产生。在字节方式下传送的任何另外的字节附加在这个DATA令牌上直到输入方式改变为止。MPI寄存器位coded_busy和信号Coded_accept指明系统将在哪个接口上接受数据。正确监视这些信号应能保证不丢失数据。接受编码数据的速率本发明的输入线路把令牌传送到起始码检测器。此检测器分析在DATA令牌中的数据,它的正常处理速率是每个(CDLOCK)时钟的一个字节。然而,有时需要额外的处理周期。例如,在编码数据中遇到起始码时。这种情况发生时,CDACCEPT就变低以指明数据不能被接受。
因此,CDCLOCK必须有一个比要提供给本系统的数据字节速率更高的时钟频率。在许多应用中,SYSCLOCK和CDCLOCK两者用同一时钟(典型地说,是27MHz)是合适的。一个例子示于图105。编码数据接口定时类似地,表79表示本发明的编码数据接口定时。
表79编码数据接口定时信号
a这些定时关系在某些情况不需遵守。
b最大的信号负载量为20pF。
编码数据接口用CMOS电平。CDCLOCK通过编码数据接口的数据传送用CDCLOCK控制。CDCLOCK可与主视频解码器时钟(SYSCLOCK)同步。
这种机置也许在允许系统解码的时钟与视频时钟不一致时是有用的。
然而,在本发明中CDCLOCK也在内部被用来对例如起始码解码的电路定时。因为CDCLOCK没有锁相环路(PLL)所保证均恒占空比的好处,必须用外部线路来保证这点或保证示于图105中的定时参数2和3。
在CDCLOCK和SYSCLOCK不需要同步的一些情况下,用PLL而不是用CDCLOCK去驱动内部线路如起始码解码器的可能性是存在的。这可省去外部保证均恒占空比的线路的需要。
图106表明内部的安排,它使PLL产生的均恒占空比时钟可按规定路线送到起始码解码器以代替CDLOCK。
如Un_named_register为0(复位条件),起始码解码器从PLL得到时钟。在此情况下,CDCLOCK和SYSCLOCK两者必须连结到同一信号。
对SYSCLOCK的AC定时要求。
如Un_named_register为1,起始码解码器用CDCLOCK作时钟。在此情况下,CDCLOCK可能和SYSCLOCK同步。CDCLOCK必须满足图105中说明的定时要求。
引言本发明的视频输出接口实现了一个符合CCIR 601和656推荐书的数字输出接口。所有的同步和消隐信息以特殊码字(SAV和EAV)的形式,被包含在与视频信息相同字节宽度的数据流中。
另外,提供分开的同步和消隐引脚使得本系统可直接连结到各种各样的设备(如视频DAC或NTSC编码器)。这些信号的定时适合于产生与CCIR 624推荐书相一致的视频信号。
视频数据可在一字节宽的单个总线上时分多路传送。另外,提供一个16位输出方式,在该情况下,亮度数据在一个字节宽总线上输出,而两个色差信号则在第二个单字节宽的总线上时分多路传送。视频输出信号按照本发明,表80提供用于视频输出接口的信号。
表80视频输出接口信号
表80视频输出接口信号(续)
表80视频输出接口信号(续)
图107表明在16位方式下的输出定时信号。图108表明在8位方式下的输出定时信号。视频输出控制寄存器按照本发明的视频输出控制寄存器示于表81。
表81视频输出控制寄存器
表81视频输出控制寄存器(续)
表81视频输出控制寄存器(1)
表81视频输出控制寄存器(续)
a在消隐期间不管这一位的设置如何,色度数据(Cb和Cr两者)都总是0×80(十进制128)。边框、比例缩放和剪切本发明总是试图去产生尺寸为720象素乘或者480行(525行光栅)或者576行(625行光栅)的显示图象。本发明自动按比例缩放已解码的图象以便试图去填满这个区域。
因为只支持有限数目的比例因子,不可能总是把这个区域填充得很精确。如果最后得到的图象太小,则接着围绕已解码图象画一个边框,这个边框使已解码图象位于屏幕的中心。
相反地,如果按比例缩放产生的图象太大,于是图象被剪切使能合适地显示。显示的范围是已解码图象的中心。剪切被限制,使得不多于约10%的已解码图象被剪切。如果可能丢失的部分大于此百分比,则会用一较小的比例因子。
用向寄存器border_cb,border_y和border-cr写的方法可以选择边框的颜色。在设备复位以后和在任何图象已被解码以前,整个屏幕用边框的颜色填充。另外,用对blank_screen写的方法也可使整个屏幕画上边框的颜色。这可用于隐匿视频。例如在通道改变期间。视频输出特性特性按照本发明,图109说明视频输出接口的定时信号。类似地,表82说明视频输出接口定时。
表82视频输出接口定时信号
表82视频输出接口定时信号(续)
a 最大信号负载量为50 pFb 不符合这个定时参数将仅仅导致复位将发生的所在精确时钟周期的不确定性。VTGRESET用一片内同步器提供。该同步器能防止由于本定时参数未被保持而出现的暂时稳定性问题(metastability problems)。
表83规定视频输出方式信号。图110示出视频输出方式信号。
表83视频输出方式信号
a在复位以后如NTSC/PAL或V16/8改变状态则工作状态是不确定的。视频信号的定时本发明的视频定时是这样的,它使最后得到的视频输出与以下CCIR推荐书相一致。
·CCIR推荐书601·CCIR推荐书656·CCIR推荐书624水平定时水平定时示于图111。以SYSCLOCK周期为单位的数字是为525行系统的(625行系统的数字在括号中)。
在均衡期间,HSYNC信号在62个周期期间为低电平(在625行系统中为66个周期)在场同步期间,HSYNC信号在732个周期期间为低电平(在625行系统中为738个周期)。垂直定时为525行(NTSC)系统的垂直定时信号说明于图112。为625行(PAL)系统的示于图113。在这些图中左边自上而下的数字提供按照CCIR推荐书656的行号。右边的两列提供在SAV和EAV码(见CCIR推荐书601)中含有的“F”和“V”位。
在厚实心黑线中心的较小的数字提供已解码MPEG图象的逻辑行号。所以,对于用在525行(NTSC)系统的480行,这些编码为0到479,而对于用在625行(PAL)系统的576行则为0到575。
图114表明对525行系统引脚的同步和消隐的定时信号而图115是为625行系统的。注意只有HSYNC或CSYNC之一可被输出(见hs_not_cs)以及这些信号的每一个的极性可被取反(见cblank_ah等)。VTG复位状态在本发明中,VTG对525行(NTSC)系统复位到第4行的开始,对625行(PAL)系统则复位到第1行的开始。
引言按照发明,采用了标准的一字节宽微处理器接口(MPI)。MPI与多种解码器芯片时钟同步工作。MPI信号表84描述MPI接口信号。
表84 MPI接口信号
表84 MPI接口信号(续)
MPI电气技术说明DC特性见2.2.1“TTL(5V)电平”。图123和124分别说明MPI的读和写定时信号。AC特性表85表明MPI的读定时信号表85微处理器接口读定时
表85微处理器接口读定时(续)
a在本例中,选择ME
开始周期和ME[1]结束周期竞争。这些信号的地位相同。
b访问时间是在MD[7∶0]的每位上的最大负载量为50PF时确定的。负载变大访问时间会增加。
同样,表86表明MPI的写定时信号表86微处理器接口写定时
a在本例中,选择enable
开始周期和enable[1]结束周期是竞争的。这些信号的地位相同。中断“事件”是一个术语用以描述用户可能想要知道的一个片内条件。一个事件可能指明一个出错条件或可能向用户软件提供消息。
有两个单个位的寄存器与每个中断或“事件”有联系。这些是条件事件寄存器和条件掩模寄存器。条件事件寄存器条件事件寄存器是一个一位可读/写寄存器,它的值由发生在电路内的一个条件置成1。即使条件仅在瞬间存在,寄存器也被置1。然后,寄存器保证维持置1直到用户的软件把它复位或整个芯片复位为止。
·用写入值1的方法使寄存器置0。
·将0写到寄存器,寄存器不改变。
·在这个条件另一次发生能被观察到以前寄存器必须被用户软件置0。
·在复位时寄存器总是被复位到0。条件掩模寄存器条件掩模寄存器是一个一位可读/写寄存器,如果相应的条件事件寄存器(一个或多个)被设置,它使能一个中断请求的产生。在条件掩模寄存器被写1时如条件事件已被设置,就立即发出中断请求。
·值1使能中断·在复位时寄存器清除为0。
除非另外说明,在产生一个中断请求后一个块将停止工作,在条件事件或条件掩模寄存器中的任一个被清除后该块将很快重新开始动作。事件和掩模位在本发明中,一些事件位和一些掩模位总是被组合到寄存器映象(见表55)中的连续字节的相应位位置。这使中断服务软件能用从一些掩模寄存器中读出的值作为在事件寄存器中的值的一个掩模来识别哪个事件发生了中断。芯片事件和掩模本发明有一个单一的“全局”事件位它概括芯片上的事件活动。芯片事件寄存器表示它们的掩模位为1的所有片内事件的或(OR)。
芯片掩模位为1使芯片产生中断。芯片掩模位为0表示任何片内事件产生中断请求。
写1或0到芯片事件不产生效果。当所有的事件(用使它们的掩模位为1的方法来使能)已被清除时它才会清除。IRQ信号在本发明中,如果芯片事件位和芯片事件掩模位两者都被设置,IRQ信号变为有效。IRQ信号是低有效。“集电极开路”输出要求一个片外的上拉电阻。当有效时IRQ输出被一个100Ω或更小的阻抗拉下来。对大多数应用约4kΩ的上拉电阻是合适的。页寄存器为了减少本发明要求的寄存器地址信号的数目。用了一个页寄存器使多于64个寄存器可被寻址。这个页寄存器在0×1f单元。寄存器单元0×00到0×1f不受页寄存器内容的影响并总是出现在寄存器图中。在单元0×20到0×3f中的一些寄存器由页寄存器选择。
有不分页的寄存器,它们是正常设备操作要求的。最后,分页寄存器只用于测试目的。
在本发明中,页寄存器被复位到值零。用户应保证没有别的值被写入这个寄存器。
引言SDRAM接口信号表87说明SDRAM接口信号。
表87 SDRAM接口信号
表87 SDRAM接口信号(续)
SDRAM配置表88说明SDRAM的配置。
表88 SDRAM配置
表88 SDRAM配置(续)
配置零配置零的SDRAM连结见图116。
图117说明一个SDRAM连结的配置。类似地,图118和119分别描述两个和三个SDRAM连接的配置。
引言按照本发明,系统完全支持联合测试行动小组(Joint TestAction Group JTAG)“标准测试访问端口和边界扫描体系结构”,后者现在已被IEEE采纳为标准1149.1。
所有JTAG的操作通过测试访问端口(TAP)完成。TAP包含5个引脚。TREST(测试复位)引脚复位JTAG线路以保证在测试方式下设备不加电。TCK(测试时钟)引脚用来将串行测试标本用时钟打入TDI(测试数据输入)引脚和从TDO(测试数据输出)引脚打出。另外,JTAG线路的操作方式用把适当的位序列用时钟打入TMS(测试方式选择)引脚的方法来设置。
JTAG标准可被扩展来提供另外的特性,由芯片制造者自由决定。按照本发明有9个用户指令,包括三个JTAG必须遵循的指令。额外的指令使一些内部设备测试以不同等级进行并提供另外的外部测试灵活性。例如,所有设备的输出可以用一个简单的JTAG序列变成浮动。见表89。在非JTAG系统中JTAG引脚的连接表89如何连接各JTAG输入
被支持的指令本节说明本发明的这个实现中支持的一些指令。见表90、91和92。
表90必须遵循的指令
表91被支持的可选指令
以下可选JTAG指令不被支持1)IDCODE2)RUNBIST表92另外的一些公用指令
表92另外的一些公用指令(续)
表92另外的一些公用指令(续)
指令码的分配一共有14个定义的指令。因而有一个4位长指令寄存器,附有两个未指定的指令。根据IEEE 1149.1,未指定指令是BYPASS指令的别名。
指令的全部列表和它们的码示于表93。
表93 JTAG指令码
表93 JTAG指令码(续)
表93 JTAG指令码(续)
对IEEE 1149.1的符合程度规则所有的规则都遵守此标准,不过应注意以下各点∶
表94 JTAG规则
表94 JTAG规则(续)
推荐表95已达到的推荐
表96未实现的推荐
许可表97被满足的许可
表97被满足的许可(续)
引言按照本发明,起始码检测器(SCD)有在编码数据流中检测起始码的任务。它把起始码转换成令牌以便系统作进一步内部处理。
除了这个任务以外,它支持许多特性,例如通道改变。起始码检测器寄存器表98说明本发明的起始码检测器的一些寄存器表98起始码检测器寄存器
表98起始码检测器寄存器(续)
表98起始码检测器寄存器(续)
表98起始码检测器寄存器(续)
表98起始码检测器寄存器(续)
表98起始码检测器寄存器(续)
a事件位不是简单的R/W寄存器位b所有中断以chip_mask被置1为条件起始码的检测本发明的起始码检测器只检测那些正确地字节对准的起始码。
本发明只处理视频起始码。未被认出的起始码被检测到,产生一个unrecognized_start_code事件。未被认出的起始码是系统起始码(具有值0×b9到0×ff),保留起始码(0×b0、0×bl和0×b6)和sequence_error_code(0×b4)。discard_all装置(discard_all Facility)discard_all装置可被用来丢弃进入系统的所有数据。用设置discard_all为1的方法可“手动”选择discard_all装置。然而。scdp_access必须首先置1然后查询直到它读回1为止。一般说,典型的情况是作为flag_picture_end装置的一部分自动进入这个方式。
本发明会继续丢弃全部数据直到或者值0写到discard_all或者遇到一个FLUSH令牌为止。注意那个复位discard_all的FLUSH令牌从令牌流中被删除并且不影响分析器或任何后接的线路块。flag_picture_end装置按照本发明,flag_picture_end装置的意图是用一直等待到图象结束才停止数据流进入系统的方法使解码有一个清楚的终结。所以,分析器不会看到不完全的图象。
图120作为一个流程图说明flag_picture_end装置。如图所示,当图象的末尾被检测到时可以产生一个中断(flag_picture_end_event)。这可以使SCD停止处理数据直到中断得到服务为止。否则,SCD可被允许继续进行下去。
如after_picture_discard被置1,则在检测到图象末尾以后,所有接着的数据将被丢弃。对在通道改变以前,把来自系统信号分离器中在使用的一个通道的尾数据丢弃掉,这是最有用的。
注意,在这个实施例中start_code_search装置的优先级高于flag_picture_end装置。这样,由于start_code_search而被丢弃的数据不被检验。检验是为了决定图象末尾是否已经达到。start_code_search装置在本发明中,SCD能被设置来搜寻指定类型的起始码。例如,这可用于在一个通道改变后在解码开始前搜寻一个序列起始码。
表99 start_code_search方式
用写一个非零值到start_code_search的方法进入搜寻方式。于是起始码检测器会搜寻如表99指出的合适的起始码。在搜寻继续时所有的数据和令牌被丢弃。当遇到一个合适的起始码时搜寻结束。start_code_search被设置为零并且可以可选择地产生一个中断。
也要注意一个FLUSH令牌会象遇到一个指定的起始码那样终止搜寻。然而,在特殊情况下在FLUSH令牌正在终止discard_all功能搜寻不停止。另外,当遇到FLUSH令牌时,在discard_all和从前选择的搜寻方式之间允许直接转换。
按照本发明,图121作为一个流程图说明start_code_search装置。SCD的例子-通道改变在本发明中用SCD装置的一个例子示于下面影响一个通道改变的动作序列中。
1)控制中的微处理器识别一个通道改变的需要(可能是对摇控器来的信号作出响应)。微处理器将用写的方法使用SCD的flag_picture_end装置,即写∶·1到flag_picture_end·1到after_picture_discard·1到flag_picture_end_mask2)当起始码检测器检测到当前图象的末尾时,它立即开始丢弃后续的全部数据。微处理器被中断并确定中断的原因曾是flag_picture_end_event。微处理器用写的方法首先为新通道准备起始码检测器。即写∶·3(搜寻sequence_start)到start_code_search·1到flag_picture_end_event(以清除事件)3)然后微处理器重新调整调谐器去选择新通道。
4)在从老通道来的最后数据传送到系统以后(以及在从新通道来的第一个数据传送到系统以前)插入一个FLUSH令牌。(另一种方法是,将值0写到discard_a11)。所以,起始码检测器停止丢弃(来自老通道的)数据并开始搜寻(从新通道来的数据)某个序列起始码。
5)一旦序列起始码被检测到,起始码检测器停止丢弃数据并重新开始正常解码。
引言按照本发明,视频分析器负责对视频数据流解码。它作为一个微编程处理器被实现。
在事件的正常过程中,很少需要与视频分析器交互,许多简单的应用可简单地让它不断地完成视频解码。
然而,当视频分析器检测到异常或反常的事件,例如位流出错时,它能够通知控制用的微处理器。在所有情况下,微码包括从出错中恢复(和掩盖出错)的代码使得忽略位流出错是安全的。然而,正在发生位流错误的消息可能对诊断目的有用。
另外,时间标记管理的某些方面在分析器的微码处理器中处理。在第10章中为这些提供资料。分析器寄存器分析器所用的寄存器示于表100表100分析器寄存器
表100分析器寄存器(续)
表100分析器寄存器(续)
表100分析器寄存器(续)
表100分析器寄存器(续)
a事件位不是简单的R/W寄存器位。
b所有中断以chip_mask被置1为条件。出错码每当分析器检测到一个事件条件,它设置parser_event。如parser_mask置1(表明用户系统对服务分析器事件有兴趣),分析器停止处理并且(假定chip_mask置1)产生一个中断。
一旦响应中断,控制用的微处理器应读parser_error_code来决定事件的原因。表101提供在这方面定义的出错码的完整列表。
在控制用的微处理器以适当方式已对事件响应以后,它必须允许本发明的分析器重新开始处理。用写值1到parser_event的方法清除事件来做到这点。
表101分析器出错码
处理用尸数据小量的用户数据可从分析器读出,缺省情况下,所有用户数据被起始码检测器丢弃。这是为了保护系统免于不合适地使用大量用户数据,那会超出它的容量。
为了允许用户数据达到分析器,寄存器discard_user必须置0。每当在位流中遇到用户数据,数据的字节被缓存入一个片上用户数据RAM。此RAM有可缓存192个字节数据的空间。当所有用户数据的字节已被读出(或RAM已满)时,分析器会产生一个事件(ERR_USER_DATA),它允许控制微处理器从RAM读数据。
在用户数据RAM被读以前,微处理器必须首先设置parser_access为1以得到对分析器的内部寄存器的访问,然后查询这个位直到它读回1为止。parser_status表明在用户数据RAM中的字节数。用户数据RAM不能被直接访问。代之以必须把要读的地址写入user_keyhole_addr(通常为0)然后从user_keyhole_data读出数据。因为从user_keyhole_data每完成一次读出,user_keyhole_addr自动增加,适当的数量的用户数据字节能被很快读出。
如果用户数据少于192字节则所有数据用单个事件处理。如果多于192个字节,则第一次产生ERR_USER_DATA时,parser_status将包含192个字节。在事件已被清除后(用写0到parser_access,然后写1到parser_event的方法)微码会询问parser_continue来决定下面做什么。
如果parser_continue是1,分析器继续处理用户数据。残留的用户数据字节(或下一个192字节)从流中被分析,过程重复。然而,如果parser_continue是0则分析器丢弃残留用户数据进行正常视频解码。注意,即使parser_continue是0,第一个ERR_USER_DATA事件总是会产生的。用户数据量的限制如果试图使用用户数据,重要的是这是受限制的,以便保证按照本发明对视频数据实时解码。很难规定在用户数据方面可接受的极限,它取决于许多外部制约诸如控制用微处理器的中断响应时间和从系统读数据的一个字节所用的时间。作为一个指导,用户数据量应限制在该量能保证在约50μS以内从系统读出(包括中断响应时间等)。用户数据RAM在图象数据解码期间,用户RAM被微码处理器用于其它目的(例如存储掩盖运动矢量)。因为这个理由,不可能把数据留在RAM中和希望为以后使用将它保存下来。
引言本发明包括帮助管理视频时间标记的电路系统。假定与MPEG系统流分析器有关联的外部电路用时钟基准(编程时基或系统时基,以适宜为准)已恢复了一个稳定的27 MHz时钟。
所以按照本发明,本电路系统牵涉到在合适的时间开始视频解码以保证与音频同步,并且在此后监视视频时间标记以保证连续的同步。没有出错时不需要后来的改正。
最好避免将时基信息传送到视频解码器的需要。硬件分成两个范围,一是与用于加载视频时间标记的系统各输入级有关的电路,另一是与视频分析器电路有关的实时计数器。系统组织本发明包括一个计数器,它以从27 MHz SYSCOLOCK得到的等时间间隔作增量计数。用于管理时间标记的系统(在概念上)依赖被维持在系统外面的这个计数器的第二个拷贝。这两个计数器用同一个信号复位,初始化到相同的值。以后这两个计数器自由运行。
本发明根据它的被称为“视频时间”的内部时间计数器进行它的时间标记管理。为保证进行正确的比较,视频时间标记被系统解码器修改。不必知道绝对时间—只要知道图象被解码的真正时间和它应已被解码的时间的差就可以了。
下面的方程1用将视频时间计数器和修改的(modified)时间标记之差设置成等于实际“时间”(从时钟基准得到)和时间标记之差的方法来表明这点。方程2仅仅是变量的重新组织以得到修改的时间标记。
方程1∶videotime-modifiedtimestamp=timestamp-time视频时间-修改的时间标记=时间标记-时间方程2modlfiedtimestamp=videotime+(timestamp-time)修改的时间标记=视频时间+(时间标记-时间)图122表明一个得到修改的时间标记的可能的算术组织。事实上,实际的加法(和位移)将最可能在处理器上进行而不是在专用硬件中进行。当然,有许多别的方法来得到同样数值的修改的时间标记。例如,当本发明的RESET_TIME引脚在当初被最后认定时,简单地记录“时间”值可能比有一个视频计数器的拷贝更好。从这个信息和“时间”的当前值,推定在系统内部的视频时间的当前内容总是可能的。
可使用任意合适的算术运算的重新排列,后者能产生修改的时间标记的合适值就行。
如图122所示,用于本发明的修改的时间标记只用了16位。用两种方法做到这点。第一,因为时间和时间标记(用于得到修改的时间标记--见方程2)的差总应该是小的,较高的位可被丢弃。第二,因为本发明仅仅控制视频表示到最近的帧时间(frame-time),较小有效位也不需要,右移四位把它们丢弃。
所以被保持的16位时间信息能处理直到约11.5秒的时间误差,具有约180μS的精确度(约一场时间的1%)。
注意本应用包括那些对本行业技术有一般技术的人能自己解释的额外的图,这是为了对本详细结构和本发明意图起作用的运行环提供进一步的深入理解。
前面描述的本发明的流水线系统满足对视频解码系统各方面进一步改进的长期以来存在的需要,包括一个MPEG视频解压缩方法和利用用一个两线接口作为内部连接的多级的装置,排列成一个流水线处理机。控制令牌和DATA令牌通过单个两线接口,以便用令牌格式传送控制和数据两者。一个令牌解码电路放在某些级中,以便识别某些令牌作为与该级有关的控制令牌以及沿流水线传送未被认出的令牌。重构放在所选择的级中的处理级电路,它们对被识别的控制令牌作出响应,以便重构这些级去处理一个认出的DATA令牌。各种各样的独特的支持子系统电路和处理技术被公开,以便实现这个系统,包括存储器寻址,用一个公共处理块变换数据,时间同步,异步交替缓存,视频信息存储,并行Huffman解码器等等。
从上述内容,显然可见,在本发明的特定形式已被图解和描述的同时,能作出不脱离本发明的精神和范围的各种各样的修改。因此,除非用附加的权利要求,不打算使本发明受到其他限制。
权利要求
1.一种用于时间同步的装置,包括一用于决定呈现时间的时间标记;一个在第一电路中用于初始化系统时间的参考时钟;一个在第一电路中用于保持系统时间的与所述参考时钟通信的第一时间计数器;以及一个在第二电路中由所述参考时钟初始化并与所述第一时间计数器同步的第二时间计数器,用于保持所述系统时间的局部拷贝,并通过比较所述时间标记和所述第二时间计数器判断所述系统时间的局部拷贝和所述系统时间之间的呈现定时误差。
2.一种用于同步一个系统解码器和一个视频解码器的装置,包括一个系统解码器;一个用于决定显示时间的时间标记;一个用于在所述系统解码器内初始化系统时间的参考时钟;一个在所述系统解码器中用于保持系统时间的与所述参考时钟通信的第一时间计数器;以及一个在所述视频解码器中由所述参考时钟初始化并与所述第一时间计数器同步的第二时间计数器,用于保持系统时间的局部拷贝,并通过比较所述时间标记和所述第二时间计数器判断所述系统时间的局部拷贝和所述系统时间之间的显示定时误差。
3.一种用于同步第一电路和第二电路的装置,包括一个用于在第一电路中初始化系统时间的参考时钟,所述第一电路有一个用于保持系统时间的与所述参考时钟通信的时间计数器;一个用于提供基本流时间的,位于所述第一电路的第一基本流时间计数器;所述第一电路适于接收一时间标记,且所述第一电路适于通过向所述时间标记加入基本流时间和减去系统时间来产生同步时间;且所述第二电路适于从所述第一电路接收同步时间,且具有一与所述第一基本流时间计数器同步的第二基本流时间计数器,用于提供所述基本流时间的局部拷贝,并用于通过比较同步时间和所述基本流时间的所述局部拷贝来判断所述系统时间和所述时间标记之间的定时误差;藉此,所述参考时钟信号不必直接传递给所述第二电路以判断定时误差。
4.一种用于同步第一电路和第二电路的装置,包括一个用于在第一电路中初始化系统时间的参考时钟;所述第一电路具有一个用于保持系统时间的与所述参考时钟通信的时间计数器;一个用于提供视频解码时间的第一视频时间计数器;所述第一电路适于接收一视频时间标记,并通过加视频解码时间和视频时间标记并减去系统时间来产生同步时间;且所述第二电路适于从所述第一电路接收同步时间,并具有一个与所述第一视频时间计数器同步的第二视频时间计数器,用于提供视频解码时间的局部拷贝,并通过比较所述同步时间和所述视频解码时间的局部拷贝来判断所述系统时间和所述视频时间标记之间的一个定时误差;藉此,所述参考时钟信号不必直接传递给所述第二电路以判断定时误差。
5.一种如权利要求1到4的任意一个所陈述的装置,其中,所述基本流时间计数器被限制为16位。
6.一种如权利要求1到4的任意一个所陈述的装置,其中,位于所述基本流解码器中的所述第二基本流时间计数器被限制为16位。
7.一种如权利要求1到6的任意一个所陈述的装置,其中,所述同步时间被限制为16位,以控制所述基本流解码。
8.一种用于提供定时信息的方法,包括如下步骤提供一视频数据流,该数据流具有一携带于包头中的时间标记,所述时间标记涉及一数据包中的第一幅图象;提供一寄存器,该寄存器具有一个标志,用于指示取自所述包头并被放入所述寄存器的合法时间标记信息;将所述时间标记从所述视频数据流移走,并将其放入所述寄存器;以及遇见一个图象起始,然后检查所述寄存器的状态,通过检查标志状态以判断合法时间标记信息是否包含于所述寄存器之中。
9.一种如权利要求8中所陈述的方法,包括有附加步骤如果标志指示合法时间标记信息包含于所述寄存器内,则相应于图象起始产生一个时间标记;以及将时间标记插回数据流中。
10.一个用于解码视频的过程,包括如下步骤判断相对于一阈值的显示时间误差;将视频数据解析成为令牌,以便进一步处理;判断一个时间标记令牌是否被指示;将时间标记令牌与一视频时间相比较;产生一比较值,以决定定时误差的指示;在与阈值比较时,当指示有定时误差时,判断比较值是否处于一可接受的参数内;以及当比较值超出可接受参数时给予指示。
11.一种使用一系统解码器和一视频解码器的装置,包括一种适于接受MPEG系统流并从流中分配视频数据和一视频时间标记的系统解码器;所述系统解码器具有一第一时间计数器,代表系统时间;一个用于接受所述视频数据和所述视频时间标记的视频解码器;所述视频系统具有一第二时间计数器,与所述第一时间计数器同步;且所述视频解码器还具有一个视频解码器缓冲器,用于以本质上恒定的速度接收所述视频数据和以变率输出所述视频数据,以传递一视频时间标记。
12.一种如权利要求11所陈述的装置,其中,所述视频解码器在从所述视频数据解码一幅图象的同时,还对所述被解码图象的视频时间标记和所述第二时间计数器进行比较,以判断合适的显示时间。
13.一种用于判断第一电路和第二电路之间定时误差的方法,包括如下步骤向第一电路提供一系统时间(SY),一时间标记(TS)和一基本流时间(ET);通过使用基本流时间(ET)、时间标记(TS)和系统时间(SY),相应于公式X=ET+TS-SY获得同步时间(X)。把同步时间(X)提供给第二电路;以及产生一同步的基本流时间(ET2);通过使用同步时间(X),相应于公式ET2-X获得一定时误差;从而,第一电路可以与第二电路同步而无需将系统时间传递给第二电路。
14.一种用于判断第一电路和第二电路之间二定时误差的方法,包括如下步骤向第一电路提供一时间标记(TS)和一初始时间(IT);通过使用时间标记(TS)和初始时间(IT),相应于公式X=TS-1获得同步时间(X);向第二电路提供同步时间(X);产生一同步的基本流时间(ET);以及通过使用同步时间(X),相应于公式ET-X获得一定时误差;从而,第一电路可以与第二电路同步而无需将时间传递给第二电路。
15.一种用于判断第一电路和第二电路之间的定时误差的方法,包括如下步骤向第一电路提供一系统时间(SY)、一视频时间标记(VTS)和一视频解码时间(VT);通过使用该视频解码时间(VT)、视频时间标记(VTS)和系统时间(SY),相应于公式X=VT+VTS-SY获得同步时间(X)。向第二电路提供同步时间(X);在第二电路中产生一视频解码时间(VT2),该视频解码时间与第一电路中的视频解码时间(VT)同步;以及通过使用同步时间(X),相应于公式VT2-X获得一定时误差;从而,第一电路可以与第二电路同步而无需将系统时间传递给第二电路。
16.一种用于存贮器寻址的方法,包括如下步骤提供一具有预先设定了固定位数的固定宽度字,用于寻址可变宽度数据;用一宽度定义字段和一地址字段定义固定宽度字;向宽度字义字段提供至少一位,作为终止记号;用多个定义数据地址的位定义地址字段;与可变宽度数据的大小成反比地在地址字段中改变位的大小;与可变宽度数据的大小成正比地在宽度定义字段中改变位的数目;以及在改变宽度定义字段和地址字段的宽度的同时,保持一个固定宽度字,以寻址可变宽度数据。
17.一种用于存贮器寻址的方法,包括如下步骤提供一具有预先设定了固定位数的固定宽度字,用于寻址数据;用一地址字段和一替换字段定义固定宽度字用多个定义数据地址的位定义地址字段;用至少一个替换位定义一可变宽度替换字段;替换字段至少具有一个位,用作地址字段和替换字段之间的终止记号;用替换字段从分开的寻址源中指出被替换位;以及在相反方向改变地址字段的宽度和替换字段宽度的同时,保持一固定宽度的字,用于寻址可变宽度数据。
18.一种用于在存贮器中寻址可变宽度数据的方法,包括如下步骤提供具有预定宽度字并由部分字组合的存贮器;旋转将要被存取的部分字,以便最低位对齐;扩展字的剩余部分,使被存取的字将被作为部分字被识别;恢复字的剩余部分;以及旋转字,直到部分字被恢复到其初始位置。
19.一个并行Huffman解码器,包括一个选择器;一对用于接收Huffman编码数据的输入寄存器,二个所述寄存器控制并行输入到所述选择器;以及一个Huffman码ROM,用于从所述选择器接受输入和另一ROM表选择输入;所述ROM提供解码的数据输出。
20.一种如权利要求19中所陈述的Huffman解码器,适于解码MPEG-1数据。
21.一种如权利要求19中所陈述的Huffman解码器,适于解码MPEG-2数据。
22.一种如权利要求19中所陈述的Huffman解码器,适于解码MPEG-1和MPEG-2数据。
23.一种如权利要求19到22中任何一个所陈述的Huffman解码器,其中,所述一对输入寄存器中的一个处理最高有效的数据,而所述一对输入寄存器中的另一个处理最低有效的数据。
24.一种如权利要求19到23中任意一个所陈述的Huffman解码器,适于解码可变长码(VLC)。
25.一种如权利要求19到24中任意一个所陈述的Huffman解码器,其中,所述ROM执行一VLC表索引运算。
26.一种如权利要求25中所陈述的Huffman解码器,其中,所述索引运算之后跟随一个索引到数据的运算,以提供解码数据。
27.一种如权利要求19到26中任意一个所陈述的Huffman解码器,适于解码换码编码的系数。
28.一种如权利要求19到26中任意一个所陈述的Huffman解码器,适于解码直流基(lntra-DC)值。
29.一种如权利要求19到26中任意一个所陈述的Huffman解码器,适于解码运动向量增量(delta)。
30.一种用于把一总线连结到RAM的RAM接口,包括用于从一总线接收多个数据字,并缓冲接收到的数据字的装置;用于从所述总线接收一个与所述多个数据字相关的地址的装置;用于在RAM中产生一系列地址的装置,被缓冲的数据字将被写入这些地址,且这些地址产生于所接收到的地址;以及用于在被产生的地址处将所述被缓冲的数据字写入RAM的装置。
31.根据权利要求30所述的RAM接口,所述数据字接收和缓冲装置包括一交替缓冲器。
32.根据权利要求30所述的RAM接口,其中所述RAM以页寻址模式运行;且所述地址产生装置包括基于接收到的地址产生行地址的装置和产生列地址的装置。
33.如权利要求32中所述的RAM接口,其中所述RAM是一个DRAM;所述总线包括一双线接口;所述数据字接收和缓冲装置包括一双线接口;所述地址接收装置包括一双线接口;所述多个数据字为一令牌的形式;且所述接收到的地址为一令牌的形式。
34.如权利要求30中所述的RAM接口,还包括用于判断所述数据字接收装置是否已接收到并缓冲了所述多个数据字的装置。
35.一个用于将一总线连结到RAM的RAM接口,包括多个以预定地址存贮于RAM中的数据字;用于从一总线接收与所述多个数据字相关联的RAM地址的装置;用于在所述RAM中产生一系列RAM地址,以寻址所述多个数据字的装置,所述一系列地址来自接收到的地址;用于缓冲从所述RAM读出的数据字的装置;以及用于利用由所述地址产生装置产生的所述一系列RAM地址,从所述RAM读所述多个数据字,并将所述数据字写入所述缓冲器装置的装置。
36.如权利要求35所述的RAM接口,其中,所述数据字缓冲装置包括一交替缓冲器。
37.如权利要求35所述的RAM接口,其中所述RAM以页寻址模式运行,且所述地址产生装置包括用于基于接收到的地址产生行地址的装置和产生列地址的装置。
38.如权利要求37所述的RAM接口,其中所述RAM是一个DRAM;所述总线包括一双线接口;所述数据字缓冲装置包括一双线接口;所述地址接收装置包括一双线接口;且所述接收到的地址为一令牌形式。
39.如权利要求35所述的RAM接口,进一步包括用于判断所述数据字接收装置是否已接收并缓冲了所述多个数据字的装置。
40.一种用于控制以帧形式组织的编码视频数据的缓冲的方法,包括判断一帧的图象号;判断所述帧的期望呈现号;以及当所述图象号位于或超过所述期望呈现号时,将缓冲器标志为已准备好。
41.一种用于转换数据的装置,包括定义一第一数据流源的第一锁存器和定义一第二数据流源的第二锁存器;所述第一和第二锁存器与一运算单元通信;所述运算单元将数据传送到一个发送器;所述发送器将所述数据发送和传送到所述第二锁存器;所述第二锁存器被安排以吸收数据;且所述第二和第一锁存器以一种交叉方式将所述第一和第二数据流传送到所述运算单元,进一步定义,在交叉方式的所述通信中,所述第二锁存器不打断来自所述第一锁存器的通信;一个公共的运算单元被用于所述第一和第二数据流。
42.一种使用一公共运算单元转换数据的过程,包括如下步骤将数据装载入一第一锁存器,且在达到一预定周期数时,将数据传送给运算单元,并将一第一记号位装入一控制移位寄存器;将数据装入一第二锁存器,该第二锁存器适于吸收数据;当第一控制移位寄存器达到一预定状态且第二锁存器装满了预定数量的数据时将第二锁存器内的数据传送给运算单元;如果第二锁存器未被预定数量的数据装满,则停止从第二锁存器传送数据;以及当第一锁存器在接收非数据时,恢复第二锁存器。
43.一种交替缓冲器装置,包括至少两个存贮器阵列;一个与所述存贮器阵列通信的写控制电路,用于控制输入到所述存贮器阵列的数据,一个与所述存贮器阵列通信的读控制电路,用于控制从所述存贮器阵列输出的数据;且所述写控制电路与所述读控制电路相互通信,以获得所述存贮器阵列的同步控制。
44.一种如权利要求43中所陈述的交替缓冲器,其中所述步允许所述读控制电路从一个存贮器阵列读,而排斥所述写控制电路写那个阵列。
45.一个如权利要求44中所陈述的交替缓冲器,其中,所述排斥仅是暂时性的。
46.一种如权利要求43所陈述的交替缓冲器,其中,所述同步允许所述写控制电路从一个存贮器阵列读,而排斥所述读控制电路从那个阵列读。
47.一种如权利要求44所述的交替缓冲器,其中所述排斥是暂时性的。
48.一种如权利要求44所述的交替缓冲器,其中所述同步包括使被排斥的控制单元等待,直到另一控制单元已在所述阵列上操作。
49.一种交替缓冲器设备,包括一存贮器阵列;一通过位线与所述存贮器阵列通信的写控制电路;一个通过所述位线与所述存贮器阵列通信的读控制电路;以及一个读行解码器和一写行解码器,安排用以通过一对行存取所述存贮器阵列,以使单个的单元被读。
50.一种如权利要求49中所述的交替缓冲器,其中,所述读行解码器能够选择至少一行以便存取。
51.一种如权利要求49中所述的交替缓冲器,其中,至少一个所述读或写控制电路被安排用以选择至少一对所述位线,以确定要被存取的行。
52.一种如权利要求49中所述的交替缓冲器,其中,所述读和写解码器不能同时选择同一行,且所述读和写控制电路不能同时选择相同位线。
53.一种用于在存贮器中异步存取单元的方法,包括如下步骤使用一解码器解码至少一对单元;以及读所述单元之一并写另一单元。
54.一种如权利要求53所述的方法,其中,每一所述单元位于一分立行中。
55.一种如权利要求53中所述的方法,其中,所述单元通常由位线解码器存取,且至少被所述位线的第一组或所述位线的第二组所存取。
56.一种如权利要求53中所述的方法,其中,所述单元被安排成为只由读和写解码器存取的第一和第二组,所述第一组单元仅由所述位线的第一组存取。
57.一种用于存贮视频信息的方法,包括如下步骤以一个I帧、一个P帧、一个B1帧和一个B2帧的形式提供视频信息;在第一个帧存贮中存贮I帧;在第二个帧存贮中存贮P帧;提供一个具有一第一和一第二场存贮的第三帧存贮器,第一和第二场存贮被分别分成至少两个存贮器区域;且在第一或第二场存贮中存贮来自存储器区域的一选中部分的B1帧;将B2帧的一部分写到存贮器区域的所选中部分中,B1帧曾从这个部分被读出。从而,可以使用缩减数量的存贮器存贮视频信息。
58.一种用于“不管”处理的存贮器,包括一组存贮器地址线、反向地址线和数据线,所述地址线和反向地址线被相应于一解码格式连结,以存取一数据字形式的寻址的信息,数据线上的“不管”地址位于不与相关的地址线和所述反向的地址线相联。
59.一种如权利要求58所述的存贮器,其中,所述存贮器地址线和反向地址线被预解码成地址信和反向地址线组的子地址线,以便一个信号对于某一地址出现于一个所述子地址线上,所述存贮器有一个旁路(by-pass),可以由一条子地址线激活,以将那个子地址线作为一定义值解码,将另一子地址线作为同一组中一“不管”解码。
60.一种如权利要求58所述的存贮器,其中,一对数据线与为表示将要被存取的数据之地址位置的每一地址线相关联,所述每一数据线对都与一NOR门相连。
61.一种存取动态随机存取存贮器(DRAM)的方法,用以存贮和恢复与一二维图象相关联的数据字,所述DRAM包括两个分离的体,每个体都可能以页模式操作,以读和写数据字,二维图象被以单元的二维栅格模式组织起来,每个单元包括一个M×N的象素矩阵,且与每个单元相关的字占据体的一页或少于一页,这种方法包括如下步骤(a)为每个单元分配两个体中特定的一个,使得所有与那个特定单元相关联的数据字都被读自或写到那个特定体的一个特定页,体到单元的分配是这样进行的,使每个单元都与一个与任何相邻单元不同的体相关联,相邻单元既可在同一行中,也可在同一列中;且(b)读与由一M×N的象素矩阵构成的一个单元相关联的数据字,该单元不与两维栅格模式对齐,但是与两维栅格模式单元中的象素对齐。
62.如权利要求61中所陈述的方法,其中,DRAM包括一第一和第二个体,且读与未对齐的单元相关联的数据字的步骤(b)包括如下步骤(c)识别二维栅格模式中的那些单元包含与未对齐单元相关联的数据字;(d)从DRAM的第一个体中,读一个与栅格模式的单元相关联的数据字,该单元已被识别出含有与未对齐单元相关的数据字;(e)从DRAM的第二个体中,读与另一个栅格模式的单元相关联的数据字,该单元已被识别出含有与未对齐单元相关的数据字;(f)重复步骤(d)和(e),直到所有与未对齐单元相关的数据字都已被读。
63.一种用于存取动态随机存取存贮器(DRAM)的方法,以便存贮和恢复与一二维图象相关联的数据字,所述DRAM包含两个分离的体,每个体都能够以页模式操作以读和写数据字,两维栅格模式的单元,每个单元包括一M×N的象素矩阵,且与每个单元相关的字占据体的一页或少于一页,该方法包括如下步骤(a)为每个单元分配两个体中特定的一个,使得所有与那个特定单元相关联的数据字都被读自或写到那个特定体的一个特定页,体到单元的分配是这样进行的,使每个单元都与一个与任何相邻单元不同的体相关联,相邻单元既可在同一行,也可在同一列中;且(b)读与由一M×N的象素矩阵构成的一个单元相关联的数据字,该单元不与二维栅格模式对齐,但是与二维栅格模式单元中的象素对齐。
64.如权利要求63所陈述的方法,其中,DRAM包括一第一和第二体,且读与非对齐单元相关的数据字的步骤(b)包括如下步骤(c)从DRAM的第一个体中,读与栅格模式中的一个单元相关联的数据字,该单元包含与非对齐单元相关联的数据字;(d)从DRAM的第二个体中,读与栅格模式中的另一个单元相关联的数据字,该单元包含与非对齐单元相关联的数据字;(e)重复步骤(c)和(d),直到所有与非对齐单元相关联的数据字都已被读。
65.如权利要求63所陈述方法,其中DRAM包括一第一和第二体,且读与非对齐单元相关联的数据字的步骤(b)包括如下步骤(d)以单元的一预定顺序,读与栅格模式的每个单元相关联的数据字,这些单元包含与非对齐单元相关联的数据字,单元的预定顺序导致从后面单元读出的数据字被从另外的体中读出。
66.如权利要求65所陈述的方法,其中,预定的顺序是栅格模式的单元按顺时针方向旋转的顺序,这些单元包含与非对齐单元相关联的数据字。
67.如权利要求65所陈述的方法,其中,预定的顺序是栅格模式的单元按反时针方向旋转的顺序,这些单元包含与非对齐单元相关联的数据字。
68.如权利要求63所陈述的方法,其中DRAM包括一第一和第二体,且读与非对齐单元相关联的数据字的步骤(b)包括如下步骤(c)识别二维栅格模式的哪些单元包含与非对齐单元相关联的数据字;(d)从DRAM的第一个体,读与栅格模式的一个单元相关联的数据字,这些单元已被识别出含有与非对齐单元相关联的数据字;(e)从DRAM的第二个体,读与栅格模式的另一个单元相关联的数据字,这些单元已被识别出含有与非对齐单元相关联的数据字;(f)重复步骤(d)和(e),直到所有与非对齐单元相关联的数据字都已被读。
69.如权利要求63所陈述的方法,其中,DRAM包括第一和第二体,且读与非对齐单元相关联的数据字的步骤(b)包括如下步骤(c)识别哪些二维栅格模式的单元包含与非对齐单元相关联的数据字;(d)以单元的预定顺序,读与栅格模式的每个单元相关联的数据字,这些单元已被识别为含与非对齐单元相关联的数据字,单元的预定顺序导致从后面单元读出的数据字被从另外的体读出。
70.如权利要求69所陈述的方法,其中,所述预定顺序是栅格模式的单元按顺时针方向旋转的顺序,这些单元被识别为包含与非对齐单元相关联的数据字。
71.如权利要求69所陈述的方法,其中,所述预定顺序是栅格模式的单元按反时针方向旋转的顺序,这些单元被识别为含有与非对齐单元相关联的数据字。
72.一种用于从RAM中存取M个字的方法,该字数M小于RAM预定的固定脉冲串长度N,该RAM包含一使能线,该使能线选择性地允许和禁止读自或写到RAM,该方法包括如下步骤命令N个字被读自或写到RAM;判断何时M个字已被读自或写到RAM,M小于N;且当判断出M个字已被读自或写给RAM时,禁止(disabling)RAM。
73.一种用于从RAM中读M个字的方法,该字数M小于RAM预定的固定脉冲串长度N,该RAM包括一使能线,该使能线选择性地允许和禁止读RAM,该方法包括如下步骤命令N个字被从RAM读;判断何时M个字已被读自RAM,M小于N;且当判断出M个字已被读自RAM时,禁止RAM。
74.一种用于向RAM写M个字的方法,该字数M小于RAM预定的固定脉冲串长度N,该RAM包括一使能线,该使能线选择性地允许和禁止写RAM,该方法包括如下步骤命令N个字被写到RAM;判断何时M个字已被写到RAM,M小于N;且当判断出M个字已被写到RAM时,禁止RAM。
全文摘要
一种MPEG视频解压缩方法和设备,使用多个以双线接口相连、安排为一流水线处理器的级,控制令牌和数据令牌经过单个双线接口传递,以令牌格式携带控制和数据。一令牌解码电路置于某些级中以把某些令牌作为与该级相关的控制令牌识别,并沿流水线传递未被识别的控制令牌。重配置的处理电路置于所选级中,并响应于被识别的控制令牌,以重配置该级来处理一已被识别的DATA令牌。还具有多种独特的支持子系统电路和处理技术。
文档编号G06F12/00GK1144434SQ9510966
公开日1997年3月5日 申请日期1995年7月29日 优先权日1994年7月29日
发明者阿德里安·P·怀斯, 凯文·D·迪尤尔, 安东尼·M·琼斯, 马丁·W·萨瑟安, 科林·史密斯, 海伦·R·芬奇, 安东尼·P·J·克莱登, 唐纳德·W·W·帕特森, 马克·巴恩斯, 安德鲁·P·库利高斯基 申请人:Dva公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1