实施发明用的最佳形态
以下在说明图象译码设备的实施形态之前,先说明本图象译码设备提供的三个基本技术(a)(b)(c)。而且为了理解这些基本技术,介绍一下最好参照本实施形态的哪个部分。
(a)亮度分量及色差分量的存储方式的改进
为了缩短从SDRAM读出的时间,将蓝色差块及红色差块存储在一页中,通过指定行地址、列地址、读出长度的脉冲串读出,而将全部蓝色差分量及全部红色差分量一次读出。亮度分量及色差分量怎样被存储在多个存储器阵列中呢,请参照(第1.1.1章 存储器阵列51及存储器阵列52的存储方式)。
(b)分散存储在多个存储器阵列中的图象的读出
在不得不从多个存储器阵列中读出参照图象的亮度分量及色差分量的情况下,必须个别地激活存储器阵列。为了避免由于该激活而发生延迟,本图象译码设备对各存储器阵列确定读出顺序,以此为根据,个别地从多个存储器阵列读出亮度分量及色差分量。这里所说的读出顺序是怎样形成的顺序呢,请参照第1.4.8章至第1.4.11章。
(c)通过改进从SDRAM读到缓冲器的读出方式而导致的半贝尔内插的高效化
需要对亮度分量进行横向半贝尔内插时,不是将横16象素×纵16象素读到缓冲器中,而是将接近于其一半大小的横17象素×纵8象素的亮度分量读到缓冲器中。通过将横17象素×纵8象素的亮度分量读到缓冲器中,用与其下一行的亮度分量的平均值改写各亮度分量。在对第十六行的亮度分量进行半贝尔内插期间,仍将第十七行的亮度分量留在缓冲器中,将接着的横16象素×纵8象素读到缓冲器中。如果这样处理的话,就能用与留在缓冲器中的第十七行的亮度分量的平均值重新改写读到新的缓冲器中的横16象素×纵8象素的亮度分量。在如上进行的半贝尔内插中,通过非常方便地利用留在缓冲器中的第十七行的亮度分量,能顺利地进行半贝尔内插。
将读出范围确定为多大呢,请参照第1.3章。关于根据是否需要半贝尔内插,怎样扩大读出范围的问题,请参照第1.3.2章。另外,关于怎样利用剩下的一行的亮度分量进行半贝尔内插的问题,请参照第1.17章、第1.18章。
以下,参照附图说明图象译码设备的实施形态。
(第一实施形态)
(第一章)图象译码装置的总体像
图4A是表示本发明的第一实施形态的图象译码设备的全体结构的框图。图6A是表示将FIFO存储器4、处理器5、代码编码器6、象素读写部8沿纵向配置,沿横向按照时间序列的顺序表示这些处理的时间图。在说到图象译码设备的全体结构的情况下,引用以下的图4A及图6A。
图象译码设备由流输入部1、缓冲存储器2、存储器模块3、FIFO存储器4、处理器5、代码编码器6、象素运算部7、象素读写部8、视频输出部9、缓冲器200和缓冲器201构成。
流输入部1将从外部串行输入的MPEG数据流变换成并行数据(以下称MPEG数据),通过处理器5的控制,将变换后的MPEG数据输送给缓冲存储器2。
缓冲存储器2是暂时保存从流输入部1输送的MPEG数据的缓冲用存储器。
存储器模块3由用多个SDRAM(Synchronous DynamicRandom Access Memory)芯片构成的存储过去显示的图象的SDRAM31、存储将来应显示的图象的SDRAM32、以及存储通过补偿获得的图象的SDRAM33构成。SDRAM31~SDRAM33的内部结构都相同。
FIFO存储器4在处理器5的控制下,以先进先出方式存储从流输入部1输送的压缩动态图象数据。
处理器5控制FIFO存储器4的压缩动态图象数据的读出,同时进行对压缩动态图象数据的一部分的译码处理。具有代表性的压缩动态图象数据的一部分的译码处理中,有MPEG流中的标题信息的分析、动矢量的计算和压缩图象译码处理的控制。
代码编码器6对从FIFO存储器4读出的压缩动态图象数据进行可变长度译码(Variable Length Code Decoding:以下简称VLD),获得6个空间频率分量数据、标题信息、动矢量。每个频率分量数据相当于8象素×8象素。如图6A中的时刻t20所示,代码编码器6将译码后的数据中有关标题信息及动矢量的信息输送给处理器5,在时刻t21、时刻t22、时刻t23、时刻t24、时刻t25、时刻t26分六次,通过缓冲器200将空间频率分量输送给象素运算部7。这样获得的空间频率分量是纵8象素×横8象素。
缓冲器200保存由代码编码器6输送的纵8象素×横8象素大小的空间频率分量。
象素运算部7对通过缓冲器200从代码编码器6输送的块单位的频率分量进行反量化处理(以下简称IQ)及反离散余弦变换(以下简称IDCT)。如果对频率分量进行以上的处理,则块单位的频率分量被变换成diff_Y0块、dif_Y1块、dif_Y2块、dif_Y3块、dif_Cb块、dif_Cr块,通过缓冲器201输送给象素读写部8。这里所说的Y0块~Y3块是指用横8象素×纵8象素将横16象素×纵16象素四等分后获得的各块。如图13A所示,如果将由横16象素×纵16象素构成的亮度块四等分,便获得Y0块、Y1块、Y2块、Y3块。另外,“dif_”是差分的意思。
在图6A所示的时间图中的时刻t31,象素运算部7对在时刻t21输出给缓冲器200的频率分量实施IQ及IDCT。这样一来,该频率分量被变换成Y0块,并输送给缓冲器201。
缓冲器201保存由象素运算部7输送的纵8象素×横8象素。
象素读写部8以块为单位对象素运算部7的处理结果进行动态补偿。即,根据动矢量,对P图象、B图象从存储器模块3内的译过码的参照帧截出矩形区,通过使缓冲存储器2中存储的Y0块、Y1块、Y2块、Y3块、Cb块、Cr块合成,译成原来的块图象。由象素读写部8进行的处理结果被存入存储器模块3内的任一个SDRAM中。另外在差分图象为1帧面的情况下,因为不需要与参照图象相加,所以将译码后的图象存入存储器模块3中。视频输出部9根据被写入SDRAM3中的图象,输出视频信号。
(第1.1章存储器模块3中的SDRAM的结构)
以SDRAM31为代表例,说明存储器模块3中的SDRAM。图5中示出了SIDRAM31的内部结构。
SDRAM31具有:有512行×256列的区(将1行×256列的区称为页区)、被变换成存储单元地址=0(也称为存储单元0)的存储器阵列51;被变换成存储单元地址=1(也称为存储单元1)的存储器阵列52;将输出给地址引线A0~A9的地址作为行地址进行译码后输出给存储器阵列51及存储器阵列52的行地址译码器53及行地址译码器54;将输出给地址引线A0~A9的地址作为列地址进行译码后输出给存储器阵列51及存储器阵列52的列地址译码器55及列地址译码器56;由于特定了行地址及列地址,故保存从存储器阵列51及存储器阵列52读出的一页长的数据,并输出给数据引线的页数据缓冲器57及页数据缓冲器58;以及存储应进行脉冲串读出的字长,指示页数据缓冲器57及页数据缓冲器58输出该字长数据的字长寄存器59。另外在本实施形态中,SDRAM31的字长为1字节,一象素部分的亮度分量、蓝色差分量、红色差分量的数据尺寸也是1字节。
(第1.1.1章 存储器阵列51及存储器阵列52的存储方式)
存储器阵列51及存储器阵列52的存储内容中行地址0000_0000以后的内容示于图7A,行地址1000_0000以后的内容示于图7B。
在图7A中,左上顶点为(0,0)、右下顶点为(15,31)的矩形区(0,0)~(15,31)的亮度分量(在图8A的一例中相当于带影线的范围h1部分)被存储在存储单元0-行地址0000_0000的页区中,左上顶点为(16,0)、右下顶点为(31,31)的矩形区(16,0)~(31,31)的亮度分量(在图8A的一例中相当于带影线的范围h2部分)被存储在存储单元1-行地址00000的页区中。
在图7B中,左上顶点为(0,0)、右下顶点为(7,31)的矩形区(0,0)~(7,31)的蓝色差分量和左上顶点为(0,0)、右下顶点为(7,31)的矩形区(0,0)~(7,31)的红色差分量(在图8B的一例中相当于带影线的范围h31部分)被存储在存储单元0-行地址1000_0000的页区中,左上顶点为(8,0)、右下顶点为(15,31)的矩形区(8,0)~(15,31)的亮度分量(在图8B的一例中相当于带影线的范围h32部分)被存储在存储单元1-行地址1000_0000的页区中。
(第1.1.2章 存储器阵列51及存储器阵列52内的各页的内容)
图9及图10中示出了存储器阵列51及存储器阵列52的各页的内容。
在图9中,在存储单元0-行地址0000的页区内,图象上的从坐标(0,0)到坐标(15,0)的亮度分量Y(0,0)~(15,0)被存储在列地址=000000_0000~000000_1111中。
图象上的从坐标(0,1)到坐标(15,1)的亮度分量Y(0,1)~(15,1)被存储在列地址=000001_0000~000001_1111中。
另一方面,在图10中,在存储单元0-行地址1000_0000的页区内的列地址=00000_0000~00000_1111的偶数地址中,存储着图象上的位于坐标(0,0)~(7,0)的蓝色差分量,在列地址=00000_0000~00000_1111的奇数地址中,存储着图象上的位于坐标(0,0)~(7,0)的红色差分量。
详细地说,坐标为(0,0)的蓝色差分量被存储在偶数地址的列地址00000_0000中,坐标为(0,0)的红色差分量被存储在奇数地址的列地址00000_0001中。坐标为(1,0)的蓝色差分量被存储在其相邻的偶数地址的列地址00000_0010中,坐标为(1,0)的红色差分量被存储在奇数地址的列地址00000_0011中。
即,构成Cb块及Cr块的各行的蓝色差分量及红色差分量被相邻地存储在一页内的偶数列地址、奇数列地址中。
由于这样存储蓝色差分量和红色差分量,所以如果从该开始区起始指定读出长度,进行脉冲串式地读出存储的内容的所谓的脉冲串读出,则能一次读出象素块中包括的蓝色差分量和红色差分量。通过这样一次读出蓝色差分量和红色差分量,在读出参照图象时,对一个象素块来说,与亮度分量的读出合起来共计通过两次脉冲串读出,就能读出参照图象。
因此,能将脉冲串读出的次数减少到与宏块数的二倍成比例的数,特别是在每1秒读出30帧的参照图象反复近30次的情况下,能异常地减少总读出时间。因此,不需要将工作时钟脉冲设定得高来强制图象译码设备高速工作,能导致抑制电力消耗的效果。
(第1.2章 象素读写部8的内部结构)
图4B是表示象素读写部8的内部结构的框图。
在该图中,象素读写部8由以下部分构成:补偿控制部10;存储器存取部11;缓冲器A12;写入地址生成部13;读出地址生成部14;半贝尔内插部15;缓冲器B16;写入地址生成部17;读出地址生成部18;半贝尔内插部19;缓冲器C20;读写地址生成部22;缓冲器D25;读出地址生成部26;混合部29;以及选择部34。以下,参照图4B,说明象素读写部8的内部结构。
(第1.3章 补偿控制部10的作用概要)
补偿控制部10根据处理器5输出的动矢量,确定从SDRAM31~SDRAM33中存储的图象的哪个坐标截出哪个范围作为参照图象。设用于截出的基准坐标为(X,Y),截出的范围为横m象素×纵n象素。如果补偿控制部10指示应截出的参照图象的左上顶点的坐标(X,Y)、截出的范围为横m象素×纵n象素、以及差分图象是P图象还是B图象的种类,那么补偿控制部10便通过存储器存取部11进行的存储器存取,从SDRAM31~SDRAM33中的任一个读出参照图象。用什么样的单位读出参照图象的亮度分量、色差分量呢,在本实施形态中,分3次读出参照图象。
这里,参照图象的亮度分量的左上顶点的X坐标用10位表示,Y坐标用9位表示。这是因为X坐标需要保存0~719中的某数值,Y坐标需要保存0~479中的某数值。
参照图象的蓝色差分量及红色差分量的X坐标用9位表示,Y坐标用8位表示。这是因为X坐标需要保存0~359中的某数值,Y坐标需要保存0~239中的某数值。
由补偿控制部10进行的第一次读出是亮度块的上半部分的读出。即存储器存取部11确定将构成亮度块的Y0块、Y1块、Y2块、Y3块中的Y0块和Y1块的组(以下称Y01块)作为读出范围的横m象素×纵n象素。
第二次读出是亮度块的下半部分的读出。即存储器存取部11确定将构成亮度块的Y0块、Y1块、Y2块、Y3块中的Y2块和Y3块的组(以下称Y23块)作为读出范围的横m象素×纵n象素。
第三次读出是Cb块及Cr块的读出。即存储器存取部11确定将Cb块及Cr块的组(以下称CbCr块)作为读出范围的横m象素×纵n象素。
之所以将亮度块的读出分为Y01块、Y23块这样两次,是因为将1行部分的亮度分量、1列部分的亮度分量额外地读到规模为横16象素×纵16象素的缓冲器中。即,在缓冲器的规模为横16象素×纵16象素的情况下,如果一次读出横16象素×纵16象素的亮度分量,那么缓冲器就会失去额外存储亮度分量的余裕,但如果将横16象素×纵16象素的亮度分量分两次读出,则在规模为横16象素×纵16象素的缓冲器中就会产生额外存储亮度分量的余裕。
说明在亮度分量按半帧单位进行编码,并由象素运算部7对每个Y02块及Y13块的奇数行、偶数行进行了IDCT的情况下,动态补偿部10怎样读出亮度分量。
由补偿控制部10进行的第一次读出是亮度块的左半部分的读出。即存储器存取部11确定将构成亮度块的Y0块、Y1块、Y2块、Y3块中的Y0块和Y2块的组(以下称Y02块)作为读出范围的横m象素×纵n象素。
第二次读出是亮度块的右半部分的读出。即存储器存取部11确定将构成亮度块的Y0块、Y1块、Y2块、Y3块中的Y1块和Y3块的组(以下称Y13块)作为读出范围的横m象素×纵n象素。
之所以按Y02块、Y13块的图形读出参照图象,是因为由象素运算部7进行的IDCT的结果能用Y02块、Y13块的图形获得。
第三次读出是Cb块及Cr块的读出。即存储器存取部11确定将Cb块及Cr块的组(以下称CbCr块)作为读出范围的横m象素×纵n象素。
(第1.3.1章 全体图象译码设备中的补偿控制部10的位置分配)
在图6A所示的时间图中,在时刻t12,处理器5进行标题分析时分析动矢量,如果输出的差分图象是P图象,应将它与过去方向的参照图象相加,从存储器模块3中的SDRAM31读出过去方向的ref_Y01_b(r)块(“ref”是参照图象的reference(参照)的意思。b(r)的“b”是“backward(向后)”的意思,“r”是“read(读)”的意思。)、ref_Y23_b(r)块、ref_CbCr_b(r)块。
如果输出的差分图象是B图象,则除了将它与过去方向的参照图象混合外,还应与将来的两个方向的参照图象相加,从存储器模块3中的SDRAM32读出将来方向的Y01_f(r)块(f(r)的“f”是“forward(向前)”的意思。)、Y23_f(r)块、CbCr_f(r)块。
(第1.3.2章 由补偿控制部10进行的读出范围的确定)
由补偿控制部10进行的读出范围的确定是由实现图12A及图12B中的流程的顺序的序列发生器或机械程序来实现的。
参照这些流程图,更详细地说明存储器存取部11的处理内容。在步骤S0中,存储器存取部11将Width_Flag及Height_Flag设定为『0』。设定后,在步骤S1中,补偿控制部10参照动矢量,判断是否需要进行纵向的半贝尔内插。如果需要的话,在步骤S2中,将Height Flag设定为『1』。接着在步骤S3中,判断是否需要进行横向的半贝尔内插。如果需要的话,在步骤S4中,将Width_Flag设定为『1』。
设定后,在步骤S5中,判断参照图象是否是亮度块,如果是的话,在步骤S6中判断差分图象是按帧编码的还是按半帧单位编码的。
如果是按帧单位编码的,则在步骤S7中,将横m象素×纵n象素中的象素数确定为象素数(m,n)=(2*8+1*Width_Flag,8+1*Height_Flag)。
这时如果Height_Flag、Width_Flag都为『0』,则确定为象素数(m,n)=(2*8+1*0,8+1*0)=(16,8)。该(16,8)的大小恰好为图13A所示的将(0,0)(15,0)(0,7)(15,7)作为四个顶点的Y01块的大小。
如果Height_Flag为『0』,Width_Flag为『1』,则确定为象素数(m,n)=(2*8+1*1,8+1*0)=(2*8+1,8+0)=(17,8)。该(17,8)的大小恰好为图13B所示的将(0,0)(16,0)(0,7)(16,7)作为四个顶点的Y01块的大小。图13B中的Y01块与图13A中的Y01块相比较,只多出带影线的1列。即,需要半贝尔内插,在Width_Flag被设定为『1』的情况下,可知读出范围被确定为多1列。
之所以确定这样多1列,是因为在进行横向的半贝尔内插的情况下,需要用该列及其下一列的平均值生成各列的亮度分量。
如果Height_Flag为『1』,Width_Flag为『0』,则确定为象素数(m,n)=(2*8+1*0,8+1*0)=(2*8+0,8+1)=(16,9)。该(16,9)的大小恰好为图13C所示的将(0,0)(15,0)(0,8)(15,8)作为四个顶点的Y01块的大小。图13C中的Y01块与图13A中的Y01块相比较,只多出带影线的1行。即,需要半贝尔内插,在Height_Flag被设定为『1』的情况下,可知读出范围被确定为多1行。
如果Height_Flag为『1』,Width_Flag为『1』,则确定为象素数(m,n)=(2*8+1*1,8+1*1)=(2*8+1,8+1)=(17,9)。该(17,9)的大小恰好为图13D所示的将(0,0)(16,0)(0,8)(16,8)作为四个顶点的Y01块的大小。图13D中的Y01块与图13A中的Y01块相比较,多出带影线的1行及1列。即,需要半贝尔内插,在Height_Flag及Width_Flag被设定为『1』的情况下,可知读出范围被确定为多1行及1列。
如果这样确定参照图象左上顶点所在处的坐标(X,Y)及象素数(m,n),则在步骤S8中,使欲读出由参照图象左上顶点所在处的坐标(X,Y)及象素数(m,n)构成的参照图象的存储器存取部11进行读出处理。在步骤S9中,将(纵向幅度n+1)加在参照图象位置的Y坐标上。如果这样相加,则参照图象左上顶点所在处的坐标(X,Y)为图13A中的Y23块的左上坐标。接着将应在第二次读出的读出范围的纵横象素数(m,n)确定为(2*8+1*Width_Flag,8)。
这时如果Height_Flag,Width_Flag都为『0』,则确定为象素数(m,n)=(2*8+1*0,8)=(16,8)。该(16,8)的大小恰好为图13A所示的将(0,8)(15,8)(0,15)(15,15)作为四个顶点的Y23块的大小。
如果Height_Flag为『0』,Width_Flag为『1』,则确定为象素数(m,n)=(2*8+1*1,8)=(2*8+1,8)=(17,8)。该(17,8)的大小恰好为图13B所示的将(0,8)(16,8)(0,15)(16,15)作为四个顶点的Y23块的大小。图13B中的Y23块与图13A中的Y23块相比较,只多出带影线的1列。即,需要半贝尔内插,在Width_Flag被设定为『0』的情况下,可知读出范围被确定为多1列。
如果Height_Flag为『1』,Width_Flag为『0』,则确定为象素数(m,n)=(2*8+1*0,8)=(2*8+0,8)=(16,8)。该(16,8)的大小恰好为图13C所示的将(0,9)(15,9)(0,16)(15,16)作为四个顶点的Y23块的大小。
如果Height_Flag为『1』,Width_Flag为『1』,则确定为象素数(m,n)=(2*8+1*1,8)=(2*8+1,8)=(17,8)。该(17,8)的大小恰好为图13D所示的将(0,9)(16,9)(0,16)(16,16)作为四个顶点的Y23块的大小。
如果这样确定参照图象左上顶点所在处的坐标(X,Y)及象素数(m,n),则在步骤S8中,使欲读出由参照图象左上顶点所在处的坐标(X,Y)及象素数(m,n)构成的参照图象的存储器存取部11进行读出处理。
其次,用图12B说明差分图象按半帧编码的情况。
首先在步骤S12中,将横m象素×纵n象素中的象素数(m,n)确定为(8+1*Width_Flag,8*2+1*Height_Flag)。
这时如果Height_Flag,Width_Flag都为『0』,则确定为象素数(m,n)=(8+1*0,8*2+1*0)=(8,16)。该(8,16)的大小恰好为图14A所示的将(0,0)(7,0)(0,15)(7,15)作为四个顶点的Y02块的大小。
如果Height_Flag为『0』,Width_Flag为『1』,则确定为象素数(m,n)=(8+1*1,8*2+1*0)=(9,16)。该(9,16)的大小恰好为图14B所示的将(0,0)(8,0)(0,15)(8,15)作为四个顶点的Y02块的大小。图14B中的Y02块与图14A中的Y02块相比较,只多出带影线的1列。即,需要半贝尔内插,在Width_Flag被设定为『1』的情况下,可知读出范围被确定为多1列。
之所以确定这样多1列,是因为在进行横向的半贝尔内插的情况下,需要用该列及其下一列的平均值生成各列的亮度分量。
如果Height_Flag为『1』,Width_Flag为『0』,则确定为象素数(m,n)=(8+1*0,8*2+1*1)=(8,17)。该(8,17)的大小恰好为图14C所示的将(0,0)(7,0)(0,16)(7,16)作为四个顶点的Y02块的大小。图14C中的Y02块与图14A中的Y02块相比较,只多出带影线的1行。即,需要纵向的半贝尔内插,在Height_Flag被设定为『1』的情况下,可知读出范围被确定为多1行。
如果Height_Flag为『1』,Width_Flag为『1』,则确定为象素数(m,n)=(8+1*1,8*2+1*1)=(9,17)。该(9,17)的大小恰好为图14D所示的将(0,0)(8,0)(0,16)(8,16)作为四个顶点的Y02块的大小。图14D中的Y02块与图14A中的Y02块相比较,只多出带影线的1行及1列。即,需要对纵向及横向进行半贝尔内插,在Width_Flag被设定为『1』的情况下,可知读出范围被确定为多1行及1列。
如果这样确定参照图象左上顶点所在处的坐标(X,Y)及象素数(m,n),则在步骤S13中,使欲读出由参照图象左上顶点所在处的坐标(X,Y)及象素数(m,n)构成的参照图象的存储器存取部11进行读出处理。
在步骤S14中,通过将横向幅度m和『1』加在图象左上顶点位置的X坐标上,更新图象位置的X坐标。更新后,在步骤S15中,确定横m象素×纵n象素中的象素数(m,n)=(8+1*Width_Flag,8*2+1*Height_Flag)。
这时如果Height_Flag,Width_Flag都为『0』,则确定为象素数(m,n)=(8,8*2+1*0)=(8,16)。该(8,16)的大小恰好为图14A所示的将(8,0)(15,0)(8,15)(15,15)作为四个顶点的Y13块的大小。
如果Height_Flag为『0』,Width_Flag为『1』,则确定为象素数(m,n)=(8,8*2)=(9,16)。该(9,16)的大小恰好为图14B所示的将(9,0)(16,0)(9,16)(16,16)作为四个顶点的Y13块的大小。
如果Height_Flag为『1』,Width_Flag为『0』,则确定为象素数(m,n)=(8,8*2+1*1)=(8,17)。该(8,17)的大小恰好为图14C所示的将(8,0)(15,0)(8,16)(15,16)作为四个顶点的Y13块的大小。
如果Height_Flag为『1』,Width_Flag为『1』,则确定为象素数(m,n)=(8,8*2+1*1)=(8,17)。该(8,17)的大小恰好为图14D所示的将(9,0)(16,0)(9,16)(16,16)作为四个顶点的Y13块的大小。图14D中的Y13块与图14A中的Y13块相比较,只多出1行。即,需要半贝尔内插,在Width_Flag被设定为『1』的情况下,可知读出范围被确定为多1行。
如果这样确定参照图象左上顶点所在处的坐标(X,Y)及象素数(m,n),则在步骤S16中,使欲读出由参照图象左上顶点所在处的坐标(X,Y)及象素数(m,n)构成的参照图象的存储器存取部11进行读出处理。
在色差分量的情况下,在步骤S17中,确定横m象素×纵n象素中的象素数(m,n)=(2*8+1*Width_Flag,8+1*Height_Flag)。
这时如果Height_Flag,Width_Flag都为『0』,则确定CbCr块的象素数(m,n)=(2*8+1*0,8+1*0)=(16,8)。
如果Height_Flag为『0』,Width_Flag为『1』,则确定CbCr块的象素数(m,n)=(2*8+1*1,8+1*0)=(2*8+1,8+0)=(17,8)。
如果Height_Flag为『1』,Width_Flag为『0』,则确定CbCr块的象素数(m,n)=(2*8+1*0,8+1*1)=(2*8+0,8+1)=(16,9)。
如果Height_Flag为『1』,Width_Flag为『1』,则确定CbCr块的象素数(m,n)=(2*8+1*1,8+1*1)=(2*8+1,8+1)=(17,9)。
如果这样确定参照图象左上顶点所在处的坐标(X,Y)及象素数(m,n),则在步骤S18中,使欲读出由参照图象左上顶点所在处的坐标(X,Y)及象素数(m,n)构成的参照图象的存储器存取部11进行读出处理。
(第1.4章 象素读写部8的其它结构要素的概述)
这里简略地提及一下象素读写部8的其它结构要素中的主要部分(存储器存取部11、缓冲器A12、缓冲器B16、缓冲器C20、缓冲器D25)。
如果补偿控制部10确定了左上顶点坐标、纵向幅度、横向幅度,则存储器存取部11便将位于由所确定了的左上顶点坐标决定的纵向幅度及横向幅度的范围读到缓冲器A12中。
这时如果补偿控制部10确定了Y01块的左上顶点坐标、纵向幅度、横向幅度,则存储器存取部11便将位于该坐标的Y01块读到缓冲器A12中。对所读出的Y01块进行半贝尔内插后,如果补偿控制部10确定了Y23块的左上顶点坐标、纵向幅度、横向幅度,便将位于该坐标的Y23块读到缓冲器A12中。对所读出的Y23块进行半贝尔内插后,如果补偿控制部10确定了CbCr块的左上顶点坐标、纵向幅度、横向幅度,便将位于该坐标的CbCr块读到缓冲器A12中。补偿控制部10在按照Y02块、Y13块、CbCr块的顺序读出参照图象时也一样。
存储器存取控制部11有:为了进行存储器存取,而进行变换成存储着亮度分量的地址的行地址、列地址、存储单元地址的亮度地址编码器61;以及如果输出了补偿控制部10输出的应读出的象素的坐标(X,Y),便将该坐标变换成存储着蓝色差分量及红色差分量的地址的行地址、列地址、存储单元地址的色差地址编码器62,根据补偿控制部10算出的读出范围,对SDRAM31、SDRAM32、SDRAM33进行存取。
如果差分是B图象,且由存储器存取部11读出构成将来方向的Y01块、Y23块、CbCr块的亮度分量及色差分量后,缓冲器A12便将它们保存起来。如果差分是P图象,且由存储器存取部11读出构成将来方向的Y01块、Y23块、CbCr块的亮度分量及色差分量后,同样进行保存。被保存的亮度分量及色差分量成为半贝尔内插部15进行半贝尔内插的对象。
如果差分是B图象,且由存储器存取部11读出给过去方向的每个Y01块、Y23块、CbCr块、Y02块、Y13块时,缓冲器B16便将它们保存起来。被保存的亮度分量及色差分量成为半贝尔内插部15进行半贝尔内插的对象。混合部29对由半贝尔内插部15进行的半贝尔内插结果和横16象素×纵16象素的差分进行混合后,缓冲器B16保存该混合的结果,并输出给欲写入SDRAM3内的SDRAM中的存储器存取部11。
通过半贝尔内插部15进行半贝尔内插,输出横16象素×纵8象素、横8象素×纵16象素的半贝尔内插结果后,缓冲器C20将它保存起来。然后,如果应与它混合的差分被输出给缓冲器D25,便将用来与该差分混合而一直保存着的半贝尔内插结果输出给象素混合部29。
缓冲器D25存储通过缓冲器201从象素运算部7输送来的差分Y0块、Y1块、Y2块、Y3块、Cb块、Cr块,半贝尔内插部15对缓冲器A12及缓冲器B16中存储的Y01块、Y23块、CbCr块进行半贝尔内插后,将一直存储着的构成差分图象的横8象素×纵8象素的亮度分量及色差分量输出给象素混合部29。
(第1.4.1章 存储器存取部11内的亮度地址编码器61的结构)
参照图11A及图11B,说明亮度地址编码器61及色差地址编码器62的结构。
亮度地址编码器61通过在图11A中排列9位长的Y坐标中的低位的5位和10位长的X坐标中的低位的4位,生成列地址。
之所以这样生成列地址,是因为X坐标的低位的4位表示在亮度块内从左开始存在于第几列,Y坐标的低位的5位表示在亮度块内从上开始存在于第几行。
另外亮度地址编码器61有:使保存Y坐标的9位中高位的4位的值变为45倍的乘法器63;对乘法器63的乘得结果、存储该画面上的左上部分的象素的页的行地址、以及X坐标的高位的6位进行加法运算的加法器64,将12位长的相加结果的高位的11位作为行地址输出。另一方面,将最低位的1位作为切换存储单元0和存储单元1用的存储单元地址输出。乘法器63之所以将Y坐标的高位的4位的值变为45倍,是因为在从某个亮度块到位于其正下方的亮度块之间存在45个亮度块。
(第1.4.2章 存储器存取部11内的色差地址编码器62的结构)
色差地址编码器62根据在图11B中是蓝色差分量还是红色差分量的种类,确定最低的位,用X坐标的低位的3位,生成列地址的第一位至第三位。
备有加法器65,用于对构成Y坐标的8位中低位的5位和页的入口列地址进行加法运算,根据加法器65的运算结果,生成列地址高位的5位。
之所以这样生成列地址,是因为X坐标的低位的3位表示在色差块内从左开始存在于第几位,Y坐标的低位的5位表示在色差块内从上开始存在于第几行。有:使保存Y坐标的8位中高位的3位的值变为45倍的乘法器66;对乘法器66的乘得结果、存储该画面上的左上部分的色差块的页的行地址、X坐标的高位的6位、以及加法器65进行加法运算时发生的进位进行加法运算的加法器67,将加法器67的相加结果的最低的1位作为切换存储单元0和存储单元1用的存储单元地址输出,同时将该相加结果的最低的1位除去后的11位作为行地址输出。
(第1.4.3章 由存储器存取部11进行多页存取的可能性)
如果补偿控制部10确定了Y01块左上顶点所在位置的坐标(X,Y)及象素数(m,n),便对欲读出由左上顶点所在位置的坐标(X,Y)及象素数(m,n)构成的Y01块的SDRAM31进行存取。
这里必须注意的是,Y01块的左上顶点、左下顶点、右上顶点、右下顶点是图象上的哪个坐标位置。即,如果在图8中Y01块的四个顶点正好被收容在由带影线的横16象素×纵32象素构成的区域的哪个区中,就只对存储着该区的页进行存取即可,但当Y01块的四个顶点中的两个以上的顶点重叠在两个以上的区时,就必须从所重叠的多个区个别地读出重叠部分。图15A表示Y01块的左上顶点、左下顶点、右上顶点、右下顶点与存储在不同页中的4个横16象素×纵32象素重叠之一例。在图15A的中心,正交的两条线是横16象素×纵32象素的象素组的边界。由于横16象素×纵32象素被存储在各页,所以该边界称页的边界(页边界)。
对于该两条页边界来说,存储着左上方的横16象素×纵32象素的页称为左上页P00,存储着左下方的横16象素×纵32象素的页称为左下页P10,存储着右上方的横16象素×纵32象素的页称为右上页P01,存储着右下方的横16象素×纵32象素的页称为右下页P11。可知带影线的Y01块与两条页边界相交,有与左上页P00、右上页P01、左下页P10、右下页P11重叠部分。
在Y01块这样与两个以上的页相交的情况下,存储器存取部11为了个别地读出Y01块,算出对哪个存储单元的哪个行地址的页进行存取即可,且通过脉冲串读出,算出从该页内的哪个列地址读出哪个亮度分量即可。
(第1.4.4章 由存储器存取部11进行的SDRAM存取的详细情况)
存储器存取部11内部装有实现图16~图18中的流程用的序列发生器或机械程序。参照图16~图18中的流程,说明存储器存取部11进行的处理。参照图象的读出分Y01块、Y23块、CbCr块三次,或分Y02块、Y13块、CbCr块三次进行,所以本应对该每个三次存储器存取进行说明,但这样做就会使说明量倍增,因此以下的详细说明将集中在怎样读出Y01块这一点进行。
在步骤S51中,如果补偿控制部10算出由动矢量指示的Y01块的左上顶点(X,Y),则存储器存取部11便算出存储在左上页P00中的横16象素×纵32象素内的Y01块左上顶点的相对坐标(A,B)。
如下计算相对坐标(A,B)。
A=X mod 16 …(1)
B=Y mod 32 …(2)
※所谓mod是剩余的意思。
如果算出相对坐标,在步骤S52中,便在亮度地址编码器61中算出从P00、P01、P10、P11读出重叠部分用的行地址、列地址、存储单元地址。这里假设从左上页P00读出重叠部分用的开始坐标为(X,Y),在亮度地址编码器61中将它变换成行地址及列地址。
(第1.4.5.1章 对左上页P00的读出处地址、读出长度、位移的设定)
图15B是表示怎样从左上页P00、右上页P01、左下页P10、右下页P11读出Y01块的示意图。本图中的4个黑点『Read Start』表示备页的读出开始坐标,箭头(1)(2)(3)(4)(5)表示怎样读出亮度分量及色差分量的经过。
亮度地址编码器61将在左上页P00内的Y01块的左上顶点所在位置的X坐标的低位的4位编码成列地址的低位的4位码,将Y坐标的低位的5位编码成列地址的高位的5位码,生成列地址。将X坐标的高位的6位和乘法器63的乘得结果相加,生成存储单元地址和行地址。
其次,虽然从左上页P00读出的长度为s00,但在图15A中为了从左上页P00读出Y01块的重叠部分,通过脉冲串读出,就可以对从Y01块左上顶点的相对坐标(A,B)到(15,B)的15-A象素进行读出。
为了从左上页P00读出Y01块的重叠部分,根据其读出长度15-A象素,只读出15-A地址,读出后需要将读出处移到下一行。
即,如箭头(1)所示,如果读出从Y01块左上顶点的相对坐标(A,B)到相对坐标(15,B)的15-A象素,那么就有必要接着如箭头(2)所示,读出从相对坐标(A,B+1)到相对坐标(15,B+1)的15-A象素,再接着如箭头(3)所示,读出从相对坐标(A,B+2)到相对坐标(15,B+2)的15-A象素。
如果参照图11A就能知道,由于Y坐标的低位的5位被编成列地址的高位的5位码,所以在读出处的地址坐标的Y坐标增加1个的情况下,列地址便各增加15位。
将该读出处作为移到下一行用的位移,对左上页P00设定读出位移为『+15』。
(第1.4.5.2章 对右上页P01的读出处地址、读出长度、位移的设定)
这里将从右上页P01读出重叠部分用的开始坐标设为图15B所示的(X+15-A,Y),在亮度地址编码器61中将它变换为行地址及列地址。
将坐标“X+15-A”的低位的4位编成列地址的低位的4位码,将坐标“Y”的低位的5位编成列地址的高位的5位码,生成列地址。将X坐标的高位的6位和乘法器63的乘得结果相加,生成存储单元地址和行地址。
其次,虽然从右上页P01读出的长度为s01,但在图15B中为了从右上页P01读出Y01块的重叠部分,通过脉冲串读出,就可以对从Y01块左上顶点的相对坐标(0,B)到(A+m-15,B)的A+m-15象素进行读出。
为了从右上页P01读出Y01块的重叠部分,根据其读出长度(A+m-15)象素,只读出(A+m-15)地址,读出后需要将读出处移到下一行。
即,如箭头(1)所示,如果读出从Y01块左上顶点的相对坐标(0,B)到相对坐标(A+m-15,B)的A+m-15象素,那么就有必要接着如箭头(2)所示,读出从相对坐标(0,B+1)到相对坐标(A+m-15,B+1)的A+m-15象素,再接着如箭头(3)所示,读出从相对坐标(0,B+2)到(A+m-15,B+2)的A+m-15象素。
如果参照图11A就能知道,由于Y坐标的低位的5位被编成列地址的高位的5位码,所以在读出处的地址坐标的Y坐标增加1个的情况下,列地址便各增加15位。
将该读出处作为移到下一行用的位移,对右上页P01设定读出位移为『+15』。
(第1.4.5.3章 对左下页P10的读出处地址、读出长度、位移的设定)
这里将从左下页P10读出重叠部分用的开始坐标设为(X,Y+n),在亮度地址编码器61中将它变换为行地址及列地址。
将坐标“X”的低位的4位编成列地址的低位的4位码,将坐标“Y+n”的低位的5位编成列地址的高位的5位码,生成列地址。将坐标X的高位的6位和乘法器63的乘得结果相加,生成存储单元地址和行地址。
其次,虽然从左下页P10读出的长度为s10,但在图15B中为了从左下页P10读出Y01块的重叠部分,通过脉冲串读出,就可以对从Y01块左上顶点的相对坐标(A,B+n-31)到(15,B+n-31)的15-A象素进行读出。
为了从左下页P10读出Y01块的重叠部分,根据其读出长度15-A象素,只读出15-A地址,读出后需要将读出处移到上一行。
即,如箭头(1)所示,如果读出从Y01块左上顶点的相对坐标(A,B+n-31)到相对坐标(15,B+n-31)的15-A象素,那么就有必要接着如箭头(2)所示,读出从相对坐标(A,B+n-30)到相对坐标(15,B+n-30)的15-A象素,再接着如箭头(3)所示,读出从相对坐标(A,B+n-29)到(15,B+n-29)的15-A象素。
如果参照图11A就能知道,由于Y坐标的低位的5位被编成列地址的高位的5位码,所以在读出处的地址坐标的Y坐标减少1个的情况下,列地址便各减少15位。
将该读出处作为移到下一行用的位移,对左下页P10设定读出位移为『-15』。
(第1.4.5.4章 对右下页P11的读出处地址、读出长度、位移的设定)
这里将从右下页P11读出重叠部分用的开始坐标设为(X+15-A,Y+n),在亮度地址编码器61中将它变换为行地址及列地址。
将坐标“X+15-A”的低位的4位编成列地址的低位的4位码,将坐标“Y+n”的低位的5位编成列地址的高位的5位码,生成列地址。将坐标X的高位的6位和乘法器63的乘得结果相加,生成存储单元地址和行地址。
其次,虽然从右下页P11读出的长度为s11,但在图15中为了从右下页P11读出Y01块的重叠部分,通过脉冲串读出,就可以对从Y01块左上顶点的相对坐标(0,B+n-31)到(A+m-15,B+n-31)的A+m-15象素进行读出。
为了从右下页P11读出Y01块的重叠部分,根据其读出长度(A+m-15)象素,只读出(A+m-15)地址,读出后需要将读出处移到上一行。
即,如箭头(1)所示,如果读出从Y01块左上顶点的相对坐标(0,B+n-31)到相对坐标(A+m-15,B+n-31)的A+m-15象素,那么需要接着如箭头(2)所示,读出从相对坐标(0,B+n-30)到相对坐标(A+m-15,B+n-30)的A+m-15象素,再接着如箭头(3)所示,读出从相对坐标(0,B+n-29)到(A+m-15,B+n-29)的A+m-15象素。
如果参照图11A就能知道,由于Y坐标的低位的5位被编成列地址的高位的5位码,所以在读出处的地址坐标的Y坐标减少1个的情况下,列地址便各减少15位。
将该读出处作为移到下一行用的位移,对右下页P11设定读出位移为『-15』。
(第1.4.6章 从左上页P00读出的处理)
如果算出相对坐标,则在步骤S53中,判断『相对坐标A+读出范围的横向幅度m<16』是否成立。该『相对坐标A+读出范围的横向幅度m』表示Y01块的右上顶点的相对坐标X,所谓『相对坐标A+读出范围的横向幅度m<16』成立,是表示Y01块的右上顶点的X坐标在右上页P01上找不到。
如果步骤S53为Yes,则在步骤S54中判断『相对坐标B+读出范围的纵向幅度n<32』是否成立。该『相对坐标B+读出范围的纵向幅度n』表示Y01块的左下顶点的Y坐标,所谓『相对坐标B+读出范围的横向幅度n<16』成立,是表示Y01块的右上顶点的Y坐标在左下页P10上找不到。
由于在右上页P01及左下页P10上找不到,所以如图20A所示,可知构成Y01块的上半部分的读出范围被收容在左上页P00内。
如果知道被收容在左上页P00内,则在步骤S61中对左上页P00的存储单元发送预充电命令及激活命令。发送后,在步骤S62中,开始进行左上页P00的读出。
图17是表示由补偿控制部10进行的页读出处理顺序的流程图。
在步骤S21中,在SDRAM31中将亮度地址编码器61算出的读出处的页的行地址输出给地址引线。输出后,在步骤S24中,将列地址输出给地址引线后,在步骤S25中,将CAS输出给亮度地址编码器61算出的存储单元地址,在步骤S26中,在字长寄存器59中设定读出长度,发送读出命令。
在步骤S27中,判断读出命令的输出是否是第t次,如果不是第t次,便在步骤S28中将对页确定的位移加到列地址中,将列地址移到重叠部分内的下一行。
如果将列地址移到了下一行,便移到步骤S24。
在步骤S24中,将列地址输出给地址引线后,在步骤S25中,将CAS输出给亮度地址编码器61算出的存储单元的存储器阵列,在步骤S26中,在字长寄存器59中设定读出长度,发送读出命令。
以上读出命令的发送重复若干次后,从左上页P00读出每个s×1象素部分的亮度分量。如果该读出反复了t次,变成读出s×t象素大小的重叠部分。
如果以上的读出重复了t次,则在步骤S27中变为Yes,移到步骤S29。在步骤S29中判断是否需要激活内存储单元。
如果必要的话,在步骤S30中,将预充电命令发送给内存储单元,在步骤S31中,将激活命令发送给内存储单元后,返回到图16所示的流程。
(第1.4.7章 Y01块重叠在左上页P00和左下页P10上时的读出处理)
在图16所示的流程中,在步骤S53为Yes、步骤S54为No时,表示在左下页P10上找到Y01块的左下、右下顶点。在找到的情况下,在步骤S55中判断『相对坐标B<(64-n)/2』是否成立。将相对坐标B<(64-n)/2时的Y01块示于图20B,将相对坐标B>(64-n)/2时的Y01块示于图20C。
将图20B和图20C进行比较,可知相对坐标B>(64-n)/2时,与左下页P10的重叠部分比与左上页P00的重叠部分长。
可知相对坐标B<(64-n)/2时,与左上页P00的重叠部分比与左下页P10的重叠部分长。
如果断定重叠部分的纵向幅度为长的一方,这时,将该纵向幅度长的一方的读出顺序确定为第一号,将短的一方的读出顺序确定为第二号。
通过判断相对坐标B和『(64-n)/2』的大小,如果断定相对坐标B大,则在步骤S88中将激活命令发送给存储单元0、存储单元1双方。接着在步骤S89中将左上页P00读给第一号,在步骤S90中将左下页P10读给第二号。
通过判断相对坐标B和『(64-n)/2』的大小,如果断定相对坐标B小,则在步骤S91中将预充电命令及激活命令发送给存储单元0、存储单元1双方。此后,在步骤S92中将左下页P10读给第一号,在步骤S93中将左上页P00读给第二号。
(第1.4.8章 Y01块重叠在左上页P00和右上页P01上时的读出处理)
在步骤S53为No时,表示在右上页P01上找到Y01块的右上顶点。在找到的情况下,在步骤S56中判断『相对坐标B+读出范围的纵向幅度n<32』是否成立。该『相对坐标B+纵向幅度n』表示Y01块的左下顶点的Y坐标,所谓『相对坐标B+读出范围的纵向幅度n<32』成立,是表示在左下页P10未找到Y01块的左下顶点的Y坐标。
如果在步骤S56中为Yes,便移到步骤S57。这里步骤S53为No,步骤S56变为Yes,表示Y01块重叠在左上页P00和右上页P01上,但不重叠在左下页P10和右下页P11上。
如果知道重叠在左上页P00和右上页P01上,则移到步骤S57,判断左上页P00及右上页P01中重叠多大。
在步骤S57中,判断相对坐标A和『(32-m)/2』的大小。
将相对坐标A>(32-m)/2时的Y01块示于图20D,将相对坐标A<(32-m)/2时的Y01块示于图20E。
将图20D和图20E进行比较,可知相对坐标A>(32-m)/2时,与右上页P01的重叠部分比与左上页P00的重叠部分长。
可知相对坐标A<(32-m)/2时,与左上页P00的重叠部分比与右上页P01的重叠部分长。
如果断定重叠部分的横向幅度为长的一方,则将该横向幅度长的一方的读出顺序确定为第一号,将短的一方的读出顺序确定为第二号。
通过判断相对坐标A和『(32-m)/2』的大小,如果断定相对坐标A大,则将右上页P01读给第一号,将左上页P00读给第二号。
通过判断相对坐标A和『(32-m)/2』的大小,如果断定相对坐标A小,则将左上页P00读给第一号,将右上页P01读给第二号。
(第1.4.9章 根据横向幅度的长度确定读出顺序的理由)
之所以以横向幅度长的一方的读出顺序为先,是因为与读出并行地进行其它存储单元的预充电及激活。即,在完成其它存储单元的预充电及激活之前,通过读出处理,亮度分量被全部读出,并不意味着并行地进行预充电及激活。
从将该读出处理和预充电及激活并行地进行的观点来看,最好将列地址及读出命令发送给具有横向幅度长的重叠部分的页,SDRAM在收到该命令后依次输出亮度分量,在此期间使对其它存储单元的预充电及激活结束。如果这样来考虑,就能理解将横向幅度长的一方的读出顺序定为第一号,而将短的一方的读出顺序定为第二号是合理的。
(第1.4.10章 Y01块与P01、P10、P11重叠时的读出处理)
在步骤S56中,如果断定『相对坐标B+读出范围的纵向幅度n<32』成立,则转移到步骤S58。在步骤S53中变为No,意味着Y01块有与右上页P01重叠的部分,这一点已说明过,但步骤S56变为No,意味着有与左下页P10和右下页P11重叠的部分。
如果步骤S56变为No,则在步骤S58中进行相对坐标A和『(32-m)/2』的大小的判断。在相对坐标A>(32-m)/2的情况下,意味着与右上页P01的重叠部分比与左上页P00的重叠部分长,这一点已说明过,但在步骤S58为Yes的情况下,在步骤S59中判断相对坐标B和『(64-n)/2』的大小。在步骤S58的判断为No的情况下,在步骤S60中判断相对坐标B和『(64-n)/2』的大小。
相对坐标A<(32-m)/2、相对坐标B<(64-n)/2的情况下的Y01块示于图20F,相对坐标A<(32-m)/2、相对坐标B>(64-n)/2的情况下的Y01块示于图20G。
对图20F和图20G进行比较,可知相对坐标B>(64-n)/2时,与左下页P10重叠部分的纵向幅度比与左上页P00重叠部分的纵向幅度长。
可知相对坐标B<(64-n)/2时,与左上页P00重叠部分的纵向幅度比与左下页P10重叠部分的纵向幅度长。
如果断定了纵向幅度及横向幅度的长短,则将与重叠的横向幅度最短、重叠的纵向幅度最长的一方的象素块的重叠部分的读出顺序确定为第一顺序,将与重叠的横向幅度最长、重叠的纵向幅度也最长的一方的象素块的重叠部分的读出顺序确定为第二顺序,将与重叠的横向幅度最长、重叠的纵向幅度最短的一方的象素块的重叠部分的读出顺序确定为第三顺序,而将与重叠的横向幅度最短、重叠的纵向幅度也最短的一方的象素块的重叠部分的读出顺序确定为第四顺序。
(第1.4.11章 确定左上页P00~右下页P11的读出顺序的理由)
参照图19,说明确定左上页P00~右下页P11的读出顺序的理由。各重叠部分的纵向幅度、横向幅度的长度为图18所示的长度。参照图19中的时间图,说明Y01块如该图18所示那样与各页相交时,存储器存取部11用怎样的时间发送读出命令、激活命令、预充电命令。
在图19中,RAS/CAS行表示行地址和列地址的输入,例如RO表示存储单元0的行地址的输入,C1表示存储单元1的列地址的输入。
Command行表示给SDRAM的工作指示,例如A1表示存储单元1的激活(Activate),RO表示存储单元0的读出(Read)、P1表示存储单元1的预充电(Precharge)、BS(Burst Stop)表示连续输送的停止。
Data行表示读出的存储内容。另外,在该图中画斜线的输入区表示存储在存储单元0的区域,其它部分表示存储在存储单元1的区域。
在图18中,在时刻C1及C2将激活命令发送给纵向幅度长、横向幅度短的重叠部分a。
SDRAM的特性是,在发送激活命令之后,如果未经过3个时钟脉冲的时间,就不能对被激活的块发送读出命令,也不能对其它存储单元发送激活命令,但在先将存储单元1激活后,如果先读出存储单元1中的数据,再激活存储单元0,那么在存储单元0激活后的3个时钟脉冲期间,也能进行存储单元1的数据读出。
这里,纵向幅度长、横向幅度短的重叠部分a由于沿纵向连续,而列地址不连续,所以需要将列地址再送给每个读出字(图19中的时刻C3、C4、C5时的C1、R1)。这时,由于不能并行地进行存储单元0的激活和存储单元1的读出,所以在发送存储单元1的读出命令之前,先给出用于读出纵向幅度长、横向幅度短的重叠部分a的存储单元1的激活命令(图中的时刻C1时的R1、A1),给出用于读出纵向幅度长、横向幅度长的重叠部分b的存储单元0的激活命令(图中的时刻C2时的R0、A0)。接着,给出用于读出纵向幅度长、横向幅度短的重叠部分a的读出命令(图中的时刻C3、C4、C5、C6时的C1、R1),通过这样处理,能有效地利用给出存储单元0的激活命令后的3个时钟脉冲期间。
其次,给出用于读出纵向幅度长、横向幅度长的重叠部分b的读出命令(图中的时刻C7、C8、C9、C10时的C0、R0)。纵向幅度长、横向幅度长的重叠部分b由于沿横向连续,所以列地址也连续,在横向连续读出期间不需要再发送列地址。因此,与纵向幅度长、横向幅度长的重叠部分b的读出并行地发送存储单元1的预充电命令(时刻C11时的R1、P1)和用于读出纵向幅度短、横向幅度长的重叠部分c的存储单元1的激活命令(时刻C12时的R1、A1)。
同样,由于纵向幅度短、横向幅度长的重叠部分c也沿横向连续,所以与纵向幅度短、横向幅度长的重叠部分c的读出(时刻C13时的C1、R1)并行地发送存储单元0的预充电命令(时刻C14时的R0、P0)和用于读出纵向幅度短、横向幅度短的重叠部分d的存储单元0的激活命令(时刻C15时的R0、A0)。
最后,读出纵向幅度短、横向幅度短的重叠部分d(时刻C16时的C0、R0),停止连续读出(时刻C17时的BS),对两个存储单元进行预充电(图中未示出命令)。在本实施形态中,最后对纵向幅度短、横向幅度短的重叠部分d这种存储的象素数少的页进行存取。这是因为在读出纵向幅度短、横向幅度短的重叠部分d的时刻,在将必要的象素全部读出后,还不知道作为下一个应读出的图象应读出哪个象素,所以在发送BS命令之前不能进行发送命令的处理。
如上所述,如果最初和最后读出列地址连续的象素个数少的存储区(在该图的例中,纵向幅度长、横向幅度短的重叠部分a和纵向幅度短、横向幅度短的重叠部分d),就能与列地址连续的象素个数多的存储区(在该图的例中,纵向幅度长、横向幅度长的重叠部分b和纵向幅度短、横向幅度长的重叠部分c)的读出并行地进行其它存储单元的预充电和激活,能有效地对变换成两个存储单元地址的存储器阵列进行存取。另外,最初读出了列地址连续的象素个数少的存储区中输送量多的区(在该图的例中,纵向幅度长、横向幅度短的重叠部分a),如上所述,能不浪费从其它存储单元的激活命令的发送到该被激活的存储单元的数据读出命令的发送之间的3个时钟脉冲长短的等待时间。即,在该例中,由于在从存储单元0的激活命令的发送到从存储单元0的数据读出命令的发送之间进行存储单元1的数据读出,所以能有效地利用3个时钟脉冲长短的时间。
另外,这里所说的列地址连续的象素个数少的两个存储区意味着四个存储区中最小的区和第二小的区,但如果用各边平行的两条直线(PB)分割矩形区,则最小的区和第二小的区是相邻的。另一方面,在本实施形态中,由于相邻的存储区被存储在不同的存储单元中,所以最小的区和第二小的区被存储在不同的存储单元中。
根据以上的说明可知,如果将最小的纵向幅度短、横向幅度短的重叠部分d的读出顺序作为最后顺序,将第二小的纵向幅度长、横向幅度短的重叠部分a的读出顺序作为最初顺序,就能有效地利用SDRAM,能参照必须用最少的时钟脉冲数读出的存储区。
<补充说明>
在图19的读出中,考察一下将纵向幅度短-横向幅度长的左下页P10和纵向幅度长-横向幅度短的右上页P01的读出顺序反转的情况。在此情况下,在纵向幅度短-横向幅度长的左下页P10的读出中,虽然必须发送预充电命令及激活命令,但如果发送预充电命令,那就会使来自纵向幅度短-横向幅度长的左下页P10的脉冲串读出中断。由于正在对右上页P01发送激活命令,所以不能发送其它激活命令。因此可知开始读出纵向幅度长-横向幅度短的右上页P01,然后读出纵向幅度短-横向幅度长的左下页P10的顺序同样是最合适的。
(第1.4.12章 从左上页P00~右下页P11的读出模式之(1))
图20F中示出了在步骤S58为Yes、步骤S59为Yes的情况下,Y01块怎样与左上页P00、右上页P01、左下页P10、右下页P11重叠。可知在步骤S58为Yes的情况下,Y01块的左上顶点(X,Y)位于左上页P00中包括的横16象素×纵32象素内稍微靠左的位置,在左上页P00和左下页P10中有横向幅度长的重叠部分。
可知在步骤S59为Yes的情况下,Y01块的左上顶点(X,Y)位于左上页P00中包括的横16象素×纵32象素内稍微靠上的位置,在左上页P00和右上页P01中有纵向幅度长的重叠部分。
在图20F中,在左上页P00中有纵向幅度长、横向幅度长的重叠部分,在右上页P01中有纵向幅度长、横向幅度短的重叠部分。在左下页P10中有纵向幅度短、横向幅度长的重叠部分,在右下页P11中有纵向幅度短、横向幅度短的重叠部分。由于如各页所示那样表示重叠部分,所以将重叠部分的读出顺序确定为『右上页P01』『左上页P00』『左下页P10』『右下页P11』。
(第1.4.13章 对SDRAM发送命令的时刻)
这里,图20F中的各重叠部分的纵向幅度、横向幅度的长度是图18中所示的长度。
在图16所示的步骤S68中,在时刻c1对SDRAM的RAS引线发送RAS信号,同时对读出处SDRAM的存储单元1发送激活命令A1。由于发送激活命令A1,所以在期间d1进行对存储单元1的激活(另外这里所说的期间d1是存储器阵列实际上的激活期间和CAS的延迟(包括图中的CAS执行时间))。在3个时钟脉冲后的时刻c2,对SDRAM的RAS引线发送RAS信号,同时对读出处SDRAM的存储单元0发送激活命令A0。由于发送激活命令A0,所以在期间d2进行对存储单元0的激活。
在步骤S69~步骤S72中,按照『右上页P01』『左上页P00』『左下页P10』『右下页P11』顺序进行脉冲串读出。
(第1.4.14章 对右上页P01发送命令)
在已经读出的页P01中,算出读出范围m×n所占的重叠部分s01×t01(=1×7)。在图17中的步骤S21中,将从重叠部分的左上顶点(X+15-A,Y)变换成的行地址、存储单元地址输出给地址引线。输出后,在步骤S24中,在图18中的时刻c3,将从象素块内的相对坐标(X+15-A,Y)变换成的列地址输出给地址引线后,在步骤S25中,将CAS输出给亮度地址编码器61算出的存储单元地址,在步骤S26中,在字长寄存器59中设定读出长度(A+m-15)(=1),发送READ命令R1。
判断READ命令的输出是否是第t次,如果不是第t次,则在步骤S28中使列地址只增加对页所确定的位移(+15),将列地址移到重叠部分内的下一行。
在将列地址移到重叠部分内的下一行后,转移到步骤S24。
转移到步骤S24后,在图18中的时刻c4,将加上了位移+15的列地址输出给地址引线后,在步骤S25中,将CAS输出给亮度地址编码器61算出的存储单元地址,在字长寄存器59中设定读出长度『1』,发送READ命令。
如果再次转移到步骤S24,则在图18中的时刻c5,将加上了位移+15的列地址输出给地址引线后,在步骤S25中,将CAS输出给亮度地址编码器61算出的存储单元地址,在字长寄存器59中设定读出长度『1』,发送READ命令。
在该7次读出的进行期间,存储单元0由按照时刻c2发送的激活命令激活,呈可以存取的状态。
在以上的读出反复进行7次的期间,从数据引线依次读出七行部分的象素。如果以上的读出反复了7次,便转移到步骤S29。在步骤S29中,判断是否需要将另一存储单元激活。
这时由于已经发送了激活命令,所以步骤S29变为No。
(第1.4.15章 对左上页P00发送命令)
存储器存取部11将在读出处页P00中从读出范围n×m所占的重叠部分的左上顶点(X,Y)变换成的行地址、存储单元地址输出给地址引线。输出后,在步骤S24中,在图18中的时刻c7,将从象素块内的相对坐标(X,Y)变换成的列地址输出给地址引线后,在步骤S24中,将CAS输出给亮度地址编码器61算出的存储单元地址,在字长寄存器59中设定读出长度(15),发送READ命令。
判断READ命令的输出是否是第t次,如果不是第t次,则相对页使列地址只增加所确定的位移(+15),将列地址移到重叠部分内的下一行。
在将列地址移到重叠部分内的下一行后,转移到步骤S24。
转移到步骤S24后,在图18中的时刻c8,将加上了位移+15的列地址输出给地址引线后,在步骤S25中,将CAS输出给亮度地址编码器61算出的存储单元地址,在字长寄存器59中设定读出长度15,发送READ命令。
如果再次转移到步骤S24,则在图18中的时刻c9,将加上了位移+15的列地址输出给地址引线后,在步骤S25中,将CAS输出给亮度地址编码器61算出的存储单元地址,在字长寄存器59中设定读出长度15,发送READ命令。
再次转移到步骤S24后,在图18中的时刻c10,将加上了位移+15的列地址输出给地址引线后,在步骤S25中,将CAS输出给亮度地址编码器61算出的存储单元地址,在字长寄存器59中设定读出长度15,发送READ命令。
如果以上的读出反复了4次,步骤S27变为Yes,转移到步骤S29。在步骤S29中,判断是否需要将另一存储单元激活。
其次由于作为应读出的页还剩下左下页P10,所以在步骤S30中,在3个时钟脉冲后的时刻c11,将RAS信号发送给RAS引线,同时发送预充电命令,在时刻c12将RAS信号发送给RAS引线,同时发送激活命令。如果这样发送,则在按照在时刻c10发送的读出命令进行的反复输出亮度分量的时刻c14之前的期间d3,对存储单元1进行激活。
(第1.4.16章 对左下页P10发送命令)
将在读出处页P10中从重叠部分s10×t10的左上顶点(X,Y+n-31)变换成的行地址、存储单元地址输出给地址引线。输出后,在步骤S24中,在图18中的时刻c13,将从象素块内的相对坐标(A,B+n-31)变换成的列地址输出给地址引线后,在步骤S25中,将CAS输出给亮度地址编码器61算出的存储单元地址,在图18中的时刻c14,在字长寄存器59中设定读出长度15,发送READ命令。
因为t=1,所以步骤S27变为Yes,转移到步骤S29。在步骤S29中,判断是否需要将另一存储单元激活。
其次由于作为应读出的页还剩下右下页P11,所以在步骤S30中,在3个时钟脉冲后的时刻c14,将RAS信号发送给RAS引线,同时发送预充电命令,在图18中的时刻c15发送激活命令。如果这样发送,则在按照在时刻c13发送的读出命令进行的反复输出亮度分量的时刻c17之前的期间d4,对存储单元0进行激活。
(第1.4.17章 对右下页P11发送命令)
其次由于作为应读出的页还剩下右下页P11,所以存储器存取部11将由重叠部分s11×t11构成的重叠部分的左上顶点(X+15-A,Y+n-31)变换成的行地址、存储单元地址输出给地址引线。输出后,在步骤S24中,将从象素块内的相对坐标(A+15-A,B+n-31)变换成的列地址输出给地址引线后,在步骤S25中,在图18中的时刻c16将CAS输出给亮度地址编码器61算出的存储单元地址,在字长寄存器59中设定读出长度1,发送READ命令R0。
t=1,以上的读出重复一次后,步骤S27变为Yes,转移到步骤S29。在步骤S29中,判断是否需要将另一存储单元激活。
其次由于没有剩下的应读出的页,所以在步骤S30中,在时刻c17发送脉冲串停止命令。这样发送后,读出处理结束。
(第1.4.18章 从左上页P00~右下页P11的读出模式之(2))
在图20G中示出了在步骤S58为Yes、步骤S59为No的情况下,Y01块怎样与左上页P00、右上页P01、左下页P10、右下页P11重叠。可知在步骤S58为Yes的情况下,在左上页P00和左下页P10中有横向幅度长的重叠部分。另外,可知在左下页P10和右下页P11中有纵向幅度长的重叠部分。在图20G中,在左上页P00中有纵向幅度短、横向幅度长的重叠部分,在右上页P01中有纵向幅度短、横向幅度短的重叠部分。在左下页P10中有纵向幅度长、横向幅度长的重叠部分,在右下页P11中有纵向幅度长、横向幅度短的重叠部分。由于如各页所示那样表示重叠部分,所以在步骤S73中将预充电命令发送给SDRAM31内的存储单元0及存储单元1之后,在步骤S74中读出『右下页P11』,在步骤S75中读出『左下页P10』,在步骤S76中读出『左上页P00』,在步骤S77中读出『右上页P01』。
(第1.4.19章 从左上页P00~右下页P11的读出模式之(3))
在图20H中示出了在步骤S58为No、步骤S60为Yes的情况下,Y01块怎样与左上页P00、右上页P01、左下页P10、右下页P11重叠。可知在步骤S58为No的情况下,Y01块的左上顶点(X,Y)在左上页P00中包括的横16象素×纵32象素内位于稍微靠右的位置,在右上页P01和右下页P11中有横向幅度长的重叠部分。另外可知在左上页P00和右上页P01中有纵向幅度长的重叠部分。在图20G中,在左上页P00中有纵向幅度长、横向幅度短的重叠部分,在右上页P01中有纵向幅度长、横向幅度长的重叠部分。在右下页P11中有纵向幅度短、横向幅度长的重叠部分,在左下页P10中有纵向幅度短、横向幅度短的重叠部分。由于如各页所示那样表示重叠部分,所以在步骤S78中将激活命令发送给SDRAM31内的存储单元0及存储单元1之后,在步骤S79中读出『左上页P00』,在步骤S80中读出『右上页P01』,在步骤S76中读出『右下页P11』,在步骤S77中读出『左下页P10』。
(第1.4.20章 从左上页P00~右下页P11的读出模式之(4))
在图20I中示出了在步骤S58为No、步骤S60为No的情况下,Y01块怎样与左上页P00、右上页P01、左下页P10、右下页P11重叠。可知在步骤S58为No的情况下,Y01块的左上顶点(X,Y)在左上页P00中包括的横16象素×纵32象素内位于稍微靠右的位置,在右上页P01和右下页P11中有横向幅度长的重叠部分。另外可知在左下页P10和右下页P11中有纵向幅度长的重叠部分。在图20I中,在左下页P10中有纵向幅度长、横向幅度短的重叠部分,在右下页P11中有纵向幅度长、横向幅度长的重叠部分。在右上页P01中有纵向幅度短、横向幅度长的重叠部分,在左上页P00中有纵向幅度短、横向幅度短的重叠部分。由于如各页所示那样表示重叠部分,所以在步骤S83中将激活命令发送给SDRAM31内的存储单元0及存储单元1之后,在步骤S84中读出『左下页P10』,在步骤S85中读出『右下页P11』,在步骤S86中读出『右上页P01』,在步骤S87中读出『左上页P00』。
经过如上处理读出Y01块后,对于Y23块、CbCr块也一样,通过算出左上顶点的坐标,并算出与各页的重叠部分的纵向幅度、横向幅度,依次读出Y23块及CbCr块。分三次读出Y02块、Y13块、CbCr块时也一样。
(第1.5章 缓冲器A12的概要)
缓冲器A12从存储器存取部11读出构成将来方向的Y01块、Y23块、CbCr块的亮度分量及色差分量后,根据写入地址生成部13指示的写入处的坐标,将其写入内部的存储区。另外,将被写入内部的亮度分量及色差分量中由读出地址生成部14指示的读出处坐标处的亮度分量及色差分量输出给半贝尔内插部15。
(第1.5.1章 全部图象译码设备中的缓冲器A12的位置分配)
在图6A所示的时间图中示出了在时刻t41,缓冲器A12的处理工作情况。
在图6A所示时间图的时刻t41,如果从存储器存取部11读出Y01_f(r)块,就保存读出的Y01_f(r)块。另外如果在时刻t43读出Y23_f(r),就保存读出的Y23_f(r)块,如果在时刻t46读出Cb块和Cb块的对偶CbCr_f(r),就保存该CbCr_f(r)。如果从存储器存取部11对每两个块读出过去方向的参照图象,就将它们保存起来。在图6A所示的时间图中的时刻t51从存储器存取部11读出的Y01_b(r)、在时刻t52读出的Y23_b(r)、在时刻t54读出的CbCr_b(r)全部被保存在缓冲器A12中。
(第1.5.2章 缓冲器A12的内部区域)
图21A示出了缓冲器A12所具有的内部区域。缓冲器A12的内部区域的列数、行数的长度是可变的,包括多个4字节长的区。在图21A中,表示缓冲器A12的行数的变数『z』、表示列数的变数『v』都是变数,通过将其设定为适当的值,就可改变缓冲器A12的行数、列数。之所以这样改变缓冲器A12的行数、列数,是因为在补偿控制部10确定的亮度分量的行数、列数中有横16象素×纵8象素、横17象素×纵8象素、横16象素×纵9象素、横17象素×纵9象素、横8象素×纵16象素、横9象素×纵16象素、横8象素×纵17象素、横9象素×纵17象素这样8种,并希望不管按哪一种形式读出亮度分量及色差分量,都能按原来的形状直接存储参照图象。
(第1.5.3章 缓冲器A12中的存储方式①)
图21B示出了在SDRAM31中,从左上页P00、右上页P01、左下页P10、右下页P11读出的亮度分量怎样被存储在缓冲器A12中。
根据相对坐标(A,B),从左上页P00读出由纵向幅度s00×横向幅度t00构成的亮度分量,根据相对坐标(0,B),从右上页P01读出由纵向幅度s01×横向幅度t01构成的亮度分量。缓冲器A12的y=0的区存储着从P00的相对坐标(A,B)到P00的相对坐标(A+s00,B)的亮度分量,以及从P01的相对坐标(0,B)到P01的相对坐标(s01,B)的亮度分量。
另外,缓冲器A12的y=1的区存储着从P00的相对坐标(A,B+1)到P00的相对坐标(A+s00,B+1)的亮度分量,以及从P01的相对坐标(0,B+1)到P01的相对坐标(s01,B+1)的亮度分量。
根据相对坐标(A,0),从左下页P10读出由纵向幅度s10×横向幅度t10构成的亮度分量,根据相对坐标(0,0),从右下页P11读出由纵向幅度s11×横向幅度t11构成的亮度分量。y=t00+1的区存储着从P10的相对坐标(A,0)到P10的相对坐标(A+s00,0)的亮度分量,以及从P11的相对坐标(0,0)到P11的相对坐标(0+s11,B)的亮度分量。
(第1.5.4章 缓冲器A12中的存储方式②)
图22示出了从各页读出的亮度分量怎样被存储在缓冲器A12内部的4字节长的各区中。
缓冲器A12内部的4字节的区域带有图中所示的线性地址。可知在linear_address=0000的4字节长的区中存储着页P00的左上顶点(A,B)的亮度分量、其右侧相邻的(A+1,B)的亮度分量、其右侧相邻的(A+2,B)的亮度分量、其右侧相邻的(A+3,B)的亮度分量这样四个象素部分的亮度分量。在linear_address=0001的4字节长的区中存储着页P00的(A+4,B)的亮度分量、其右侧相邻的(A+5,B)的亮度分量、其右侧相邻的(A+6,B)的亮度分量、其右侧相邻的(A+7,B)的亮度分量这样四个象素。
图23A示出了在Y01块为横17象素×纵8象素、从左上页P00读出横8象素×纵3象素、从右上页P01读出横9象素×纵3象素、从左下页P10读出横8象素×纵6象素、从右下页P11读出横9象素×纵6象素的情况下,怎样存储被读出的象素。
由于横向幅度共计为17象素,亮度分量及色差分量为1字节,所以缓冲器A12的内部区域将欲确保20字节的区的横向设定为x=0~x=4,将纵向设定为y=0~y=8。
图23B示出了在Y02块为横9象素×纵16象素、从左上页P00读出横8象素×纵3象素、从右上页P01读出横1象素×纵3象素、从左下页P10读出横8象素×纵13象素、从右下页P11读出横1象素×纵13象素的情况下,怎样存储被读出的象素。
由于横向幅度共计为9象素,亮度分量及色差分量为1字节,所以缓冲器A12的内部区域将欲确保12字节的区的横向设定为x=0~x=2,将纵向设定为y=0~y=16。
(第1.6章 写入地址生成部13的概要)
如果补偿控制部10开始从SDRAM读出亮度分量及色差分量,写入地址生成部13便生成线性地址,将所读出的亮度分量及色差分量写入缓冲器A12内的由其线性地址指示的区中。
(第1.6.1章 写入地址生成部13的内部结构)
图24A示出了写入地址生成部13的内部结构。写入地址生成部13由X计数器81、选择器82、Y计数器83、选择器84、选择器85、乘法器86、选择器87、加法器88及加法器89构成。
如果从SDRAMX有效地读出亮度分量及色差分量,X计数器81便增加计数值。该计数值如果达到选择器82有选择地输出的上限值,便将已达到的意思通知Y计数器83。
选择器82根据SDRAM内的读出处是在左上页P00、右上页P01、左下页P10、右下页P11中的哪一页,有选择地输出左上页P00的横向幅度s00、右上页P01的横向幅度s01(=s00)、左下页P10的横向幅度s10、右下页P11的横向幅度s11(=s10)中的哪一个。具体地说,读出处是左上页P00时,将左上页P00的横向幅度s00输出给X计数器81,读出处是右上页P01时,将右上页P01的横向幅度s01输出给X计数器81,读出处是左下页P10时,将左下页P10的横向幅度s10(=s01)输出给X计数器81,读出处是右下页P11时,将右下页P11的横向幅度s11(=s10)输出给X计数器81。
如果通知了X计数器81已计数到上限值的意思时,Y计数器83便增加计数值。该计数值如果达到选择器84有选择地输出的上限值,便将计数值复位。
选择器84根据SDRAM内的读出处是在左上页P00、右上页P01、左下页P10、右下页P11中的哪一页,有选择地输出左上页P00的纵向幅度t00、右上页P01的纵向幅度t01、左下页P10的纵向幅度t10、右下页P11的纵向幅度t11中的哪一个。具体地说,读出处是左上页P00时,将左上页P00的纵向幅度t00输出给Y计数器83,读出处是右上页P01时,将右上页P01的纵向幅度t01(=t00)输出给Y计数器83。读出处是左下页P10时,将左下页P10的纵向幅度t10输出给Y计数器83,读出处是右下页P11时,将右下页P11的纵向幅度t11(=t10)输出给Y计数器83。
如果Y计数器83将Y坐标的计数值加1,选择器85便从『+2』『+3』『+4』『+5』中选择某一个应与该计数值相乘的行数,输出给乘法器86。当横向幅度被确定为Y02块的模式、且不需要横向的半贝尔内插时,以横8象素×纵16象素单位读出亮度分量。为了存储8象素部分的亮度分量,将『2』输出给乘法器86。如果这样将『+2』输出给乘法器86,则Y计数器83每次使Y坐标增加时,便将其计数值增大二倍。
当横向幅度被确定为Y02块的模式、且需要横向的半贝尔内插时,以横9象素×纵16象素单位读出亮度分量。为了存储9象素部分的亮度分量,将『3』输出给乘法器86。如果这样将『+3』输出给乘法器86,则Y计数器83每次使Y坐标增加时,便将其计数值增大三倍。
当横向幅度被确定为Y01块的模式、且不需要横向的半贝尔内插时,以横16象素×纵8象素单位读出亮度分量。为了存储16象素部分的亮度分量,将『4』输出给乘法器86。如果这样将『+4』输出给乘法器86,则Y计数器83每次使Y坐标增加时,便将其计数值增大四倍。
当横向幅度被确定为Y01块的模式、且需要横向的半贝尔内插时,以横18象素×纵8象素单位读出亮度分量。为了存储18象素部分的亮度分量,将『5』输出给乘法器86。如果这样将『+5』输出给乘法器86,则Y计数器83每次使Y坐标增加时,便将其计数值增大五倍。
如果Y计数器83增大计数值,乘法器86便将该增加后的计数值和选择器85输出的缓冲器A12的一行数相乘后,输出给加法器88。
这里之所以Y坐标每次增加时,乘法器86便将Y计数器83的计数值和行数相乘,是因为Y坐标增加时,必须将某亮度分量、以及Y坐标与下一个亮度分量之间的某一行部分的亮度分量存储到缓冲器A12中。
选择器87有选择地输出下述地址中的某一个:存储从左上页P00读出的重叠部分时的开始地址、存储从右上页P01读出的重叠部分时的开始地址、存储从左下页P10读出的重叠部分时的开始地址、存储从右下页P11读出的重叠部分时的开始地址。
这里由于存储从左上页P00读出的重叠部分时的开始地址可以存储在缓冲器A12中的地址0000中,所以选择器87将线性地址0000输出给加法器88。
这里假设左上页P00的横向幅度为s00,从左上页P00读出的亮度分量被存储在从线性地址0000到线性地址0000+s00/4-1的区中,则从右上页P01读出的亮度分量可以根据线性地址0000+s00/4存储。因此,选择器87将从右上页P01读出的亮度分量的存储开始地址作为线性地址0000+s00/4并输出。
这里假设左上页P00的横向幅度为s00,从左上页P00读出的亮度分量被存储在从线性地址0000到线性地址0000+t00×z-1的区中,则从左下页P10读出的亮度分量可以根据线性地址0000+t00×z存储。因此,选择器87将从左下页P10读出的亮度分量的存储开始地址作为线性地址0000+t00×z并输出。
从右下页P11读出的亮度分量可以根据线性地址0000+t00×z+s00/4存储。因此,选择器87将从右下页P11读出的亮度分量的存储开始地址作为线性地址0000+t00×z+s00/4并输出。
加法器88将选择器87有选择地输出的开始地址和由乘法器86乘以全列数z后的Y计数器83的计数值相加。
加法器89将亮度地址编码器61生成的9字节长的列地址中从低位的2位到低位的9位的值和加法器88加得的结果相加,生成缓冲器A12中的亮度分量的写入处地址。由于从低位的2位到低位的9位的值是4字节的倍数,所以如果将它与加法器88加得的结果相加,就能确定缓冲器A12中的写入处地址。
(第1.7.1章 存储Y01块时的缓冲器A12的内部图象)
已说明过亮度块被分成Y01块和Y23块这样两次从存储器模块3读出,而现在参照图25A及图25B说明怎样存储这些分两次读出的Y01块、Y23块的亮度分量。
图25A示出了Y01块按横17象素×纵9象素读出时怎样存储亮度分量,图25B示出了Y23块按横17象素×纵8象素读出时怎样存储亮度分量。
在图25A中,可知缓冲器A12的内部区域被由Y01块中包括的横17象素×纵9象素填满,但如果读出Y23块,则在图25A中,Y01块的亮度分量所占的区域中的横17象素×纵8象素的部分按照Y23块中包括的横17象素×纵8象素的亮度分量书写。可是,Y01块是横17象素×纵9象素,包括比Y23块多出一横行部分的亮度分量,所以第九行的Y01(0,8)Y01(1,8)Y01(2,8)Y01(3,8)…Y01(14,8)Y01(15,8)Y01(16,8)不从Y23块书写,而留在缓冲器A12内。之所以这样将第九行的一行部分的亮度分量留在缓冲器A12内,是因为利用与该第九行的象素的平均值生成Y23块的象素中行地址的象素的亮度分量Y23(0,0)Y23(1,0)Y23(2,0)Y23(3,0)…Y23(14,0)Y23(15,0)Y23(16,0)。
(第1.7.2章 存储Y02块时的缓冲器A12的内部图象)
已说明过亮度块被分成Y02块和Y13块这样两次从存储器模块3读出,而现在参照图26A及图26B说明怎样存储这些分两次读出的Y02块、Y13块的亮度分量。
图26A示出了Y02块按横9象素×纵17象素读出时怎样存储亮度分量,图26B示出了Y13块按横8象素×纵17象素读出时怎样存储亮度分量。
在图26A中,可知缓冲器A12的内部区域被Y02块中包括的横9象素×纵17象素填满,但如果读出Y13块,则在图26A中,缓冲器A12内的区域中横8象素×纵17象素的部分按照Y13块中包括的横8象素×纵17象素的亮度分量书写。可是,Y02块是横9象素×纵17象素,包括比Y13块多出一纵列部分的亮度分量,所以第九列的Y02(8,0)Y02(8,1)Y02(8,2)Y02(8,3)…Y02(8,14)Y02(8,15)Y02(8,16)不书写,而留在缓冲器A12内。之所以这样将第九列的一列部分的亮度分量留在缓冲器A12内,是因为利用与该第九列的象素的平均值生成第二次读出的Y13块的象素中第0列的象素的亮度分量Y13(0,0)Y13(0,1)Y13(0,2)Y13(0,3)…Y13(0,14)Y13(0,15)Y13(0,16)。
(第1.8章 读出地址生成部14的概要)
读出地址生成部14算出成为半贝尔内插部15进行的半贝尔内插对象的亮度分量在缓冲器A12中的(X,Y)坐标,并指示给欲输出该(X,Y)的亮度分量及色差分量的缓冲器A12。
(第1.8.1章 读出地址生成部14的内部结构)
读出地址生成部14的内部结构示于图4C。读出地址生成部14由X计数器91、Y计数器92、MOD运算器93及MOD运算器94构成。
X计数器91计数从0到全部列数z的值,将该计数值作为缓冲器A12内的X坐标输出给缓冲器A12。该计数值的上限设定为全部列数z,所以由X计数器91作为计数值输出的数值范围为0~全部列数z-1。
如果X计数器91计数了上限值即全部列数z,则Y计数器92将该计数值加1后,将计数值作为缓冲器A12内的Y坐标输出给缓冲器A12。该计数值的上限设定为全部行数v,所以由Y计数器92作为计数值输出的数值范围为0~全部行数v-1。
在需要横向半贝尔内插的情况下,MOD运算器93将X计数器91作为X坐标输出的计数值加1,并将用全部列数z除上述加1后的所得值的余数输出给缓冲器A12。
在需要纵向半贝尔内插的情况下,MOD运算器94将Y计数器92作为X坐标输出的计数值加1,并将用全部行数v除上述加1后的所得值的余数输出给缓冲器A12。
这样一来,输出由读出地址生成部90及X计数器91的计数值构成的坐标(X,Y),在只需要横向半贝尔内插的情况下,由MOD运算器93的输出及X计数器91的计数值构成的(mod[X+1)/z],Y)被输出给缓冲器A12。在只需要纵向半贝尔内插的情况下,由MOD运算器94的输出及X计数器91的计数值构成的(X,mod[(Y+1)/v])被输出给缓冲器A12。
在需要纵向及横向半贝尔内插的情况下,由MOD运算器93的输出及MOD运算器94的计数值构成的(mod[(X+1)/z],mod[(Y+1)/v])被输出给缓冲器A12。
(第1.9章 半贝尔内插部15的概要)
如果缓冲器A12输出由X计数器91、Y计数器92、MOD运算器93、MOD运算器94指示的计数值构成的(X,Y)、(mod[(X+1)/z],Y)、(x,mod[(Y+1)/V])、(mod[(X+1)/z]、mod[(Y+1)/v])的亮度分量及色差分量,则半贝尔内插部15便对所输出的亮度分量和色差分量进行纵向半贝尔内插、横向半贝尔内插、纵向及横向半贝尔内插,将其结果输出给欲与缓冲器D25输出的差分图象的亮度分量及色差分量进行混合的象素混合部29。
亮度分量及色差分量按照以下8种中的某一种形式被读出:横16象素×纵8象素、横17象素×纵8象素、横16象素×纵9象素、横17象素×纵9象素、横8象素×纵16象素、横9象素×纵16象素、横8象素×纵17象素、横9象素×纵17象素。
这里横17象素×纵8象素、横16象素×纵9象素、横17象素×纵9象素的亮度分量从读出地址生成部14被读出后,半贝尔内插部15进行横16象素×纵8象素的半贝尔内插,将由半贝尔内插部15进行的横16象素×纵8象素的半贝尔内插结果写入缓冲器C20。
另外,横9象素×纵16象素、横8象素×纵17象素、横9象素×纵17象素的亮度分量从读出地址生成部14被读出后,半贝尔内插部15进行横8象素×纵16象素的半贝尔内插,将由半贝尔内插部15进行的横8象素×纵16象素的半贝尔内插结果写入缓冲器C20。
(第1.9.1章 全体图象译码设备中的半贝尔内插部15的位置分配)
在图6A所示的时间图中的时刻t41,如果过去方向的参照图象的Y01块被读到缓冲器A12中,则半贝尔内插部15便在时刻t71对被读出的Y01块进行半贝尔内插。在时刻t42,如果过去方向的参照图象的Y01块被读到缓冲器B16中,则半贝尔内插部15便在时刻t72对被读出的Y01块进行半贝尔内插。在时刻t43,如果未来方向的参照图象的Y23块被读到缓冲器A12中,则半贝尔内插部15便在时刻t73对被读出的Y23块进行半贝尔内插。
(第1.9.1章 半贝尔内插部15的内部结构)
参照图4C说明半贝尔内插部15的内部结构。半贝尔内插部15由选择器104、加法器95、除法器96、选择器97、加法器98、除法器99、选择器100、选择器101、加法器102、除法器103构成。
在需要横向的半贝尔内插的情况下,如果缓冲器A12输出的(mod[(X+1)/z],Y)中存储的亮度分量,则选择器104将它输出给加法器95。在不需要横向的半贝尔内插的情况下,如果缓冲器A12只输出(X,Y)中存储的亮度分量,便将它输出给加法器95。
在需要横向的半贝尔内插的情况下,加法器95将缓冲器A12输出的(mod[(X+1)/z],Y)中的亮度分量和缓冲器A12输出的(X,Y)中的亮度分量相加。在不需要半贝尔内插的情况下,由于从选择器104输出(X,Y)中的亮度分量,所以将(X,Y)的亮度分量之间相加后,将(X,Y)的亮度分量的倍数输出给除法器96。
除法器96将加法器95输出的相加结果除以2。在需要横向的半贝尔内插的情况下,除法器96通过将加法器95的计算结果除以2,算出(X,Y)和(mod[(X+1)/z],Y)的亮度分量的平均值。在不需要横向的半贝尔内插的情况下,通过将加法器95输出的(X,Y)的亮度分量的倍数除以2,直接输出(X,Y)的亮度分量。
在只需要纵向的半贝尔内插的情况下,如果缓冲器A12输出(X,mod[(Y+1)/v])中存储的亮度分量,则选择器97将它输出给加法器98。在需要纵向及横向的半贝尔内插的情况下,如果缓冲器A12输出(mod[(X+1)/z],mod[(Y+1)/v])中存储的亮度分量,便将它输出给加法器98。
在需要纵向及横向的半贝尔内插的情况下,加法器98将缓冲器A12输出的(X,mod[(Y+1)/v])中的亮度分量和选择器97输出的(mod[(X+1)/z],mod[(Y+1)/v])中的亮度分量相加。在只需要纵向的半贝尔内插的情况下,将缓冲器A12输出的(X,mod[(Y+1)/v])中的亮度分量和缓冲器A12输出的(X,mod[(Y+1)/v])中的亮度分量相加。
除法器99将加法器98输出的相加结果除以2。在需要纵向及横向的半贝尔内插的情况下,除法器99通过将加法器98的计算结果除以2,算出(X,mod[(Y+1)/v])和(mod[(X+1)/z],mod[(Y+1)/v])的亮度分量的平均值。在只需要横向的半贝尔内插的情况下,通过将加法器95输出的(X,mod[(Y+1)/v])的亮度分量的倍数除以2,直接输出(X,mod[(Y+1)/v])的亮度分量。
在纵向的半贝尔内插及横向的半贝尔内插都不需要的情况下,选择器100及选择器101将由除法器96除得的结果输出给欲进行输出的加法器102。
在只需要横向的半贝尔内插的情况下,选择器100及选择器101将由加法器95及除法器96获得的横向的半贝尔内插结果输出给加法器102。
在只需要纵向的半贝尔内插的情况下,选择器100及选择器101将加法器95及除法器96直接输出的(X,Y)和加法器98及除法器99直接输出的(X,mod[(X+1)/v])在加法器102中进行混合。
在需要纵向及横向的半贝尔内插的情况下,将加法器95及除法器96输出的(X,Y)和(mod[(X+1)/z],Y)的平均值、以及加法器98及除法器99输出的(X,mod[(Y+1)/v])及(mod[(X+1)/z],mod[(Y+1)/v])的平均值在加法器102中进行混合。
加法器102混合选择器100及选择器101输出的值。
除法器103将加法器98输出的相加结果除以2。在纵向的半贝尔内插、横向的半贝尔内插都不需要的情况下,再次直接输出除法器96直接输出的值。
在只需要纵向的半贝尔内插的情况下,将加法器95及除法器96直接输出的(X,Y)和加法器98及除法器99直接输出的(X,mod[(Y+1)/v])相加的结果除以2,获得纵向的半贝尔内插结果。
在只需要横向的半贝尔内插的情况下,直接输出由加法器95的加得结果和除法器96的除得结果获得的横向的半贝尔内插运算结果。
在需要纵向及横向的半贝尔内插的情况下,将加法器95及除法器96输出的(X,Y)和(mod[(X+1)/z],Y)的平均值、以及加法器98及除法器99输出的(X,mod[(Y+1)/v])及(mod[(X+1)/z],mod[(Y+1)/v])的平均值相加后除以2,获得纵向及横向的半贝尔内插结果。
(第1.10章 缓冲器B16的概要)
缓冲器B16与缓冲器A12的结构相同,在将来方向的参照图象被读给缓冲器A12时,如果从存储器存取部11将过去方向的参照图象读给每个Y01块、Y23块、CbCr块、Y02块、Y13块,缓冲器B16便将它们保存起来。而且,如果获得了对所保存的块的半贝尔内插结果及混合结果,便保存该结果,并输出给存储器存取部11。
(第1.10.1章 全部图象译码设备中的缓冲器B16的位置分配)
在图6A所示的时间图中的时刻t42从存储器存取部11读出的Y01_b(r)块,在时刻t45读出的Y23_b(r),在时刻t48读出的CbCr_b(r),全部被保存在缓冲器B16中。
在时刻t82如果象素混合部29算出混合结果,便保存该结果,并输出给SDRAM3。如果在时刻t84、时刻t86象素混合部29算出混合结果,便保存该结果,并输出给SDRAM3。
(第1.11章 缓冲器B16的周围结构)
写入地址生成部17与写入地址生成部13的结构相同,如果从SDRAM32读出Y01块、Y23块、CbCr块,便生成应存储这些亮度分量及色差分量的写入处坐标,输出给缓冲器B16。
读出地址生成部18与读出地址生成部14的结构相同,将应与差分混合的象素的X坐标及Y坐标的读出处坐标输出给缓冲器B16。
半贝尔内插部19与半贝尔内插部15的结构相同,用于对缓冲器B16中存储的Y01块、Y23块、CbCr块进行纵向的半贝尔内插、横向的半贝尔内插、纵向及横向的半贝尔内插。
(第1.12章 缓冲器C20的概要)
通过半贝尔内插部15进行半贝尔内插,如果输出横16象素×纵8象素、横8象素×纵16象素的亮度分量及色差分量,缓冲器C20便根据读写地址生成部22生成的X坐标、Y坐标,将它们写入内部区域。而且,如果应与其混合的差分被输出给缓冲器D25,便根据读写地址生成部22指示的X坐标及Y坐标,将欲与该差分混合、尚被保存着的半贝尔内插结果输出给象素混合部29。
(第1.13章 读写地址生成部22的内部结构)
图24B示出了读写地址生成部22的内部结构。读写地址生成部22由X计数器71、选择器72、加法器73、乘法器74、选择器75、加法器76、选择器77、Y计数器78、选择器79及加法器80构成。
X计数器71计数0~7的数值。每次从SDRAM有效地读出亮度分量及色差分量时进行该计数值的计数。如果计数值达到了上限值7,便将已达到的意思通知Y计数器78。
选择器72将读出处的开始坐标输出给加法器73。在这里对Y01块、Y23块、Y02块、Y13块、CbCr块进行半贝尔内插,而且如果下一次应进行混合的差分是Y0块、Y1块、Y2块、Y3块、Cb块、Cr块的话,将“0”输出给加法器73作为读出处及写入处的开始坐标X。如果对Y01块、Y23块进行半贝尔内插,且下一次应进行混合的差分是Y1块、Y3块的话,将“7”输出给加法器73作为读出处及写入处的开始坐标X。在后一种情况下,之所以输出“7”作为读出处及写入处的开始坐标X,是因为作为参照图象读出的Y1块、Y3块、Y01块、Y23块在被读出的状态下位于从X坐标7到X坐标15的范围内。
加法器73将选择器72有选择地输出的读出处及写入处的X坐标与X计数器71的计数值相加。
乘法器74将乘法器74的计数值乘以2。
如果下一个应混合的差分是Cb块,选择器75便将“0”输出给加法器76,作为读出处及写入处的开始坐标X。如果下一个应混合的差分是Cr块,便将“1”输出给加法器76,作为读出处及写入处的开始坐标X。乘法器74之所以将计数值乘以2,选择器75交替地输出“0”、“1”,是因为蓝色差分量及红色差分量在CbCr块中被交替地存储在偶数地址、奇数地址处。
加法器76将乘法器74进行的X计数器71的计数值和整数值“2”的乘算的结果与选择器75输出的开始坐标X相加。
如果下一个应混合的差分是Cb块及Cr块,选择器77便输出加法器76的输出值作为X坐标,如果下一个应混合的差分是Y0块、Y1块、Y2块、Y3块,便输出加法器73的输出值作为X坐标。
X计数器71每当计数到上限时,Y计数器78计数0~7的数值。每次从SDRAM有效地读出亮度分量及色差分量时进行该计数值的计数。
选择器79将读出处及写入处的开始坐标输出给加法器73。在这里对Y01块、Y23块、Y02块、Y13块、以及Cb、Cr块进行半贝尔内插,如果下一次应进行混合的差分是Y0块、Y1块、Y2块、Y3块、Cb块、Cr块的话,将“0”输出给加法器73作为读出处及写入处的开始坐标Y。如果对Y02块、Y13块进行半贝尔内插,且下一次应进行混合的差分是Y2块、Y3块的话,将“7”输出给加法器73作为读出处及写入处的开始坐标Y。在后一种情况下,之所以输出“7”作为读出处及写入处的开始坐标,是因为作为参照图象读出的Y2块、Y3块、在作为Y02块、Y13块被读出的状态下位于从Y坐标7到Y坐标15的范围内。
加法器80将选择器79有选择地输出的读出处及写入处的X坐标与Y计数器78的计数值相加,作为Y坐标输出。
(第1.14章 缓冲器D25的概要)
缓冲器D25存储通过缓冲器201从象素运算部7输送的差分Y0块、Y1块、Y2块、Y3块、Cb块、Cr块,如果半贝尔内插部15对缓冲器A12及缓冲器B16中存储的Y01块、Y23块、CbCr块进行半贝尔内插,便根据读出地址生成部26指示的X坐标及Y坐标,将尚存储着的构成差分图象的横8象素×纵8象素的亮度分量及色差分量输出给象素混合部29。
(第1.15章 读出地址生成部26的内部结构)
读出地址生成部26由X计数器27及Y计数器28构成,如果从缓冲器A12输出亮度分量,并开始对它们进行半贝尔内插,便将欲读出缓冲器D25中存储的差分的读出处坐标输出给缓冲器C20。
如果从SDRAM31读出参照图象中的亮度块及色差块,X计数器27便在0~7的范围内增加X坐标。
如果从SDRAM31读出参照图象中的亮度块及色差块,Y计数器28便在0~7的范围内增加Y坐标。
(第1.16章 混合部29的概要)
混合部29对缓冲器D25中新存储的差分、以及由半贝尔内插部15和半贝尔内插部19进行半贝尔内插后存储在缓冲器C20中的半贝尔内插结果进行混合,并输出给SDRAM30。
如果差分是P图象、且由半贝尔内插部15对过去方向的参照图象进行半贝尔内插后存储在缓冲器C20中,象素混合部29便对存储在缓冲器D25中的差分和由半贝尔内插部15进行过半贝尔内插的Y01块、Y23块、CbCr块、Y02块、Y13块进行混合,并输出给缓冲器B16。
如果差分是B图象、且由半贝尔内插部15对将来方向的参照图象进行半贝尔内插后存储在缓冲器C20中,象素混合部29便对存储在缓冲器D25中的差分和由半贝尔内插部15进行过半贝尔内插的参照图象进行混合,并输出给缓冲器C。如果读出过去方向的参照图象进行半贝尔内插后存储在缓冲器C20中,便对缓冲器C保存的前一次的混合结果和过去方向的参照图象进行混合,将其结果输出给选择器30。
(第1.16.1章 全体图象译码设备中的混合部29的位置分配)
在图6A所示的时间图中的时刻t71,如果半贝尔内插部15进行半贝尔内插,象素混合部29便在时刻t81对半贝尔内插部15的半贝尔内插结果和在时刻t61保存的Y0块进行混合。
如果在时刻t72,半贝尔内插部15进行过半贝尔内插,象素混合部29便在时刻t82对半贝尔内插部15的半贝尔内插结果和在时刻t62保存的Y0块进行混合。将其结果输出给缓冲器B16。
如果象素混合部29进行缓冲器C20中存储的半贝尔内插结果和缓冲器D25中存储的差分的混合,选择器30便将欲把该结果存储在缓冲器C中的象素混合部29的输出处切换成缓冲器C,如果象素混合部29进行缓冲器C中存储的混合结果和缓冲器D25中存储的差分的混合,选择器30便将欲把该结果存储在缓冲器B16中的象素混合部29的输出处切换成缓冲器B16。
(第1.17章 半贝尔内插时的半贝尔内插部15、混合部29的工作情况)
参照图27说明读入由横17象素×纵9象素构成的Y01块时半贝尔内插部15的处理情况。
在阶段w0、X计数器91输出X=0、Y计数器92输出Y=0的情况下,由MOD运算器93输出X=1(=mod[(1+0)/17]),由MOD运算器94输出Y=1(=mod[(1+0)/9])。其结果,从缓冲器A12输出Y01(0,0)Y01(1,0)Y01(0,1)Y01(1,1)的亮度分量,由半贝尔内插部15计算这些值的平均值。另一方面,X计数器27及Y计数器28将X坐标=0、Y坐标=0作为半贝尔内插部15的运算结果的读出处地址输出给缓冲器D25,由象素混合部29进行差分Y01(0,0)的亮度分量和半贝尔内插部15的运算结果的加法运算。X计数器27及Y计数器28将X坐标=0、Y坐标=0作为半贝尔内插部15的运算结果的写入处地址输出给缓冲器D25,象素混合部29的加得结果作为Y01(0,0)的亮度分量存入缓冲器C。
在阶段w1、X计数器91输出X=1、Y计数器92输出Y=0的情况下,由MOD运算器93输出X=2(=mod[(1+1)/17]),由MOD运算器94输出Y=1(=mod[(1+0)/9D。其结果,从缓冲器A12输出Y01(1,0)Y01(2,0)Y01(1,1)Y01(2,1)的亮度分量,由半贝尔内插部15计算这些值的平均值。另一方面,根据X计数器27及Y计数器28的计数值,读出差分图象内的Y01(1,0)的亮度分量,由象素混合部29进行差分Y0和半贝尔内插部15的运算结果的加法运算。X计数器27及Y计数器28将相同的X坐标、Y坐标作为半贝尔内插部15的运算结果的写入处地址输出给缓冲器D25,象素混合部29的加得结果作为相同的坐标的亮度分量被存入缓冲器C。
在阶段w2、X计数器91输出X=2、Y计数器92输出Y=0的情况下,由MOD运算器93输出X=3(=mod[(1+2)/17]),由MOD运算器94输出Y=1(=mod[(1+0)/9])。其结果,从缓冲器A12输出Y01(2,0)Y01(3,0)Y01(2,1)Y01(3,1)的亮度分量,由半贝尔内插部15计算这些值的平均值。另一方面,根据X计数器27及Y计数器28的计数值,读出差分图象内的Y01(2,0)的亮度分量,由象素混合部29进行差分Y0和半贝尔内插部15的运算结果的加法运算。X计数器27及Y计数器28将相同的X坐标、Y坐标作为半贝尔内插部15的运算结果的写入处地址输出给缓冲器D25,象素混合部29的加得结果作为相同的坐标的亮度分量被存入缓冲器C。
在阶段w3、X计数器91输出X=3、Y计数器92输出Y=0的情况下,由MOD运算器93输出X=4(=mod[(1+3)/17]),由MOD运算器94输出Y=1(=mod[(1+0)/9])。其结果,从缓冲器A12输出Y01(3,0)Y01(4,0)Y01(3,1)Y01(4,1)的亮度分量,由半贝尔内插部15计算这些值的平均值。另一方面,根据X计数器27及Y计数器28的计数值,读出差分图象内的Y01(3,0)的亮度分量,由象素混合部29进行差分Y0和半贝尔内插部15的运算结果的加法运算。X计数器27及Y计数器28将相同的X坐标、Y坐标作为半贝尔内插部15的运算结果的写入处地址输出给缓冲器D25,象素混合部29的加得结果作为相同的坐标的亮度分量被存入缓冲器C。
在阶段w4、X计数器91输出X=4、Y计数器92输出Y=0的情况下,由MOD运算器93输出X=5(=mod[(1+4)/17D,由MOD运算器94输出Y=1(=mod[(1+0)/9])。其结果,从缓冲器A12输出Y01(4,0)Y01(5,0)Y01(4,1)Y01(5,1)的亮度分量,由半贝尔内插部15计算这些值的平均值。另一方面,根据X计数器27及Y计数器28的计数值,读出差分图象内的Y01(4,0)的亮度分量,由象素混合部29进行差分Y0和半贝尔内插部15的运算结果的加法运算。X计数器27及Y计数器28将相同的X坐标、Y坐标作为半贝尔内插部15的运算结果的写入处地址输出给缓冲器D25,象素混合部29的加得结果作为相同的坐标的亮度分量被存入缓冲器C。
反复进行以上的处理,X计数器91作为计数值输出X=5、6、7、8、9、10、11、12、13。
在阶段w14、X计数器91输出X=14、Y计数器92输出Y=0的情况下,由MOD运算器93输出X=15(=mod[(1+14)/17]),由MOD运算器94输出Y=1(=mod[(1+0)/9])。其结果,从缓冲器A12输出Y01(14,0)Y01(15,0)Y01(14,1)Y01(15,1)的亮度分量,由半贝尔内插部15计算这些值的平均值。另一方面,根据X计数器27及Y计数器28的计数值,读出差分图象内的Y01(14,0)的亮度分量,由象素混合部29进行差分Y0和半贝尔内插部15的运算结果的加法运算。X计数器27及Y计数器28将相同的X坐标、Y坐标作为半贝尔内插部15的运算结果的写入处地址输出给缓冲器D25,象素混合部29的加得结果作为相同的坐标的亮度分量被存入缓冲器C。
在阶段w15、X计数器91输出X=15、Y计数器92输出Y=0的情况下,由MOD运算器93输出X=16(=mod[(1+15)/17]),由MOD运算器94输出Y=1(=mod[(1+0)/9])。其结果,从缓冲器A12输出Y01(15,0)Y01(16,0)Y01(15,1)Y01(16,1)的亮度分量,由半贝尔内插部15计算这些值的平均值。另一方面,根据X计数器27及Y计数器28的计数值,读出差分图象内的Y01(15,0)的亮度分量,由象素混合部29进行差分Y0和半贝尔内插部15的运算结果的加法运算。X计数器27及Y计数器28将相同的X坐标、Y坐标作为半贝尔内插部15的运算结果的写入处地址输出给缓冲器D25,象素混合部29的加得结果作为相同的坐标的亮度分量被存入缓冲器C。
反复进行以上的处理,Y计数器92作为计数值输出Y=1、2、3、4、5、6、7。
在阶段w16、X计数器91输出X=14、Y计数器92输出Y=7的情况下,由MOD运算器93输出X=15(=mod[(1+14)/17]),由MOD运算器94输出Y=8(=mod[(1+7)/9])。其结果,从缓冲器A12输出Y01(14,7)Y01(15,7)Y01(14,8)Y01(15,8)的亮度分量,由半贝尔内插部15计算这些值的平均值。另一方面,根据X计数器27及Y计数器28的计数值,读出差分图象内的Y01(14,7)的亮度分量,由象素混合部29进行差分Y0和半贝尔内插部15的运算结果的加法运算。X计数器27及Y计数器28将相同的X坐标、Y坐标作为半贝尔内插部15的运算结果的写入处地址输出给缓冲器D25,象素混合部29的加得结果作为相同的坐标的亮度分量被存入缓冲器C。
在阶段w17、X计数器91输出X=15、Y计数器92输出Y=7的情况下,由MOD运算器93输出X=16(=mod[(1+15)/17]),由MOD运算器94输出Y=0(=mod[(1+7)/9])。其结果,从缓冲器A12输出Y01(15,7)Y01(16,7)Y01(15,8)Y01(16,8)的亮度分量,由半贝尔内插部15计算这些值的平均值。另一方面,根据X计数器27及Y计数器28的计数值,读出差分图象内的Y01(15,7)的亮度分量,由象素混合部29进行差分Y0和半贝尔内插部15的运算结果的加法运算。X计数器27及Y计数器28将相同的X坐标、Y坐标作为半贝尔内插部15的运算结果的写入处地址输出给缓冲器D25,象素混合部29的加得结果作为相同的坐标的亮度分量被存入缓冲器C。
如果完成了对横17象素×纵8象素的半贝尔内插,横17象素×纵8象素的Y23块便被存入缓冲器A12。另外,由于Y01块以横17象素×纵8象素的大小被读出,所以不书写第十七行的亮度分量,使其呈存留状态。
在阶段w18、X计数器91输出X=12、Y计数器92输出Y=8的情况下,由MOD运算器93输出X=13(=mod[(1+12)/17]),由MOD运算器94输出Y=0(=mod[(1+8)/9])。其结果,从缓冲器A12输出Y01(12,8)Y01(13,8)Y01(12,0)Y01(13,0)的亮度分量,由半贝尔内插部15计算这些值的平均值。另一方面,根据X计数器27及Y计数器28的计数值,读出差分图象内的Y23(12,0)的亮度分量,由象素混合部29进行差分Y0和半贝尔内插部15的运算结果的加法运算。X计数器27及Y计数器28将相同的X坐标、Y坐标作为半贝尔内插部15的运算结果的写入处地址输出给缓冲器D25,象素混合部29的加得结果作为相同的坐标(12,0)的亮度分量被存入缓冲器C。
在阶段w19、X计数器91输出X=13、Y计数器92输出Y=8的情况下,由MOD运算器93输出X=14(=mod[(1+13)/17]),由MOD运算器94输出Y=0(=mod[(1+8)/9D。其结果,从缓冲器A12输出Y01(13,8)Y01(14,8)Y01(13,0)Y01(14,0)的亮度分量,由半贝尔内插部15计算这些值的平均值。另一方面,根据X计数器27及Y计数器28的计数值,读出差分图象内的Y23(13,0)的亮度分量,由象素混合部29进行差分Y0和半贝尔内插部15的运算结果的加法运算。X计数器27及Y计数器28将相同的X坐标、Y坐标作为半贝尔内插部15的运算结果的写入处地址输出给缓冲器D25,象素混合部29的加得结果作为相同的坐标(13,0)的亮度分量被存入缓冲器C。
在阶段w20、X计数器91输出X=14、Y计数器92输出Y=8的情况下,由MOD运算器93输出X=15(=mod[(1+14)/17]),由MOD运算器94输出Y=0(=mod[(1+8)/9])。其结果,从缓冲器A12输出Y01(14,8)Y01(15,8)Y01(14,0)Y01(15,0)的亮度分量,由半贝尔内插部15计算这些值的平均值。另一方面,根据X计数器27及Y计数器28的计数值,读出差分图象内的Y23(14,0)的亮度分量,由象素混合部29进行差分Y0和半贝尔内插部15的运算结果的加法运算。X计数器27及Y计数器28将相同的X坐标、Y坐标作为半贝尔内插部15的运算结果的写入处地址输出给缓冲器D25,象素混合部29的加得结果作为相同的坐标(14,0)的亮度分量被存入缓冲器C。
在阶段w21、X计数器91输出X=15、Y计数器92输出Y=8的情况下,由MOD运算器93输出X=16(=mod[(1+15)/17]),由MOD运算器94输出Y=0(=mod[(1+8)/9])。其结果,从缓冲器A12输出Y01(15,8)Y01(16,8)Y01(15,0)Y01(16,0)的亮度分量,由半贝尔内插部15计算这些值的平均值。另一方面,根据X计数器27及Y计数器28的计数值,读出差分图象内的Y23(15,0)的亮度分量,由象素混合部29进行差分Y0和半贝尔内插部15的运算结果的加法运算。X计数器27及Y计数器28将相同的X坐标、Y坐标作为半贝尔内插部15的运算结果的写入处地址输出给缓冲器D25,象素混合部29的加得结果作为相同的坐标(15,0)的亮度分量被存入缓冲器C。
在阶段w22、X计数器91输出X=12、Y计数器92输出Y=0的情况下,由MOD运算器93输出X=13(=mod[(1+12)/17]),由MOD运算器94输出Y=1(=mod[(1+0)/8])。其结果,从缓冲器A12输出Y23(12,0)Y23(13,0)Y23(12,1)Y23(13,1)的亮度分量,由半贝尔内插部15计算这些值的平均值。另一方面,根据X计数器27及Y计数器28的计数值,读出差分图象内的Y23(12,1)的亮度分量,由象素混合部29进行差分Y0和半贝尔内插部15的运算结果的加法运算。X计数器27及Y计数器28将相同的X坐标、Y坐标作为半贝尔内插部15的运算结果的写入处地址输出给缓冲器D25,象素混合部29的加得结果作为相同的坐标的亮度分量被存入缓冲器C。
在阶段w23、X计数器91输出X=13、Y计数器92输出Y=0的情况下,由MOD运算器93输出X=14(=mod[(1+13)/17]),由MOD运算器94输出Y=1(=mod[(1+0)/8])。其结果,从缓冲器A12输出Y23(13,0)Y23(14,0)Y23(13,1)Y23(14,1)的亮度分量,由半贝尔内插部15计算这些值的平均值。另一方面,根据X计数器27及Y计数器28的计数值,读出差分图象内的Y23(13,1)的亮度分量,由象素混合部29进行差分Y0和半贝尔内插部15的运算结果的加法运算。X计数器27及Y计数器28将相同的X坐标、Y坐标作为半贝尔内插部15的运算结果的写入处地址输出给缓冲器D25,象素混合部29的加得结果作为相同的坐标的亮度分量被存入缓冲器C。
在阶段w24、X计数器91输出X=14、Y计数器92输出Y=0的情况下,由MOD运算器93输出X=15(=mod[(1+14)/17]),由MOD运算器94输出Y=1(=mod[(1+0)/8])。其结果,从缓冲器A12输出Y23(14,0)Y23(15,0)Y23(14,1)Y23(15,1)的亮度分量,由半贝尔内插部15计算这些值的平均值。另一方面,根据X计数器27及Y计数器28的计数值,读出差分图象内的Y23(14,1)的亮度分量,由象素混合部29进行差分Y0和半贝尔内插部15的运算结果的加法运算。X计数器27及Y计数器28将相同的X坐标、Y坐标作为半贝尔内插部15的运算结果的写入处地址输出给缓冲器D25,象素混合部29的加得结果作为相同的坐标的亮度分量被存入缓冲器C。
在阶段w25、X计数器91输出X=12、Y计数器92输出Y=6的情况下,由MOD运算器93输出X=13(=mod[(1+12)/17]),由MOD运算器94输出Y=7(=mod[(1+6)/8])。其结果,从缓冲器A12输出Y23(12,6)Y23(13,6)Y23(12,7)Y23(13,7)的亮度分量,由半贝尔内插部15计算这些值的平均值。另一方面,根据X计数器27及Y计数器28的计数值,读出差分图象内的Y23(12,7)的亮度分量,由象素混合部29进行差分Y0和半贝尔内插部15的运算结果的加法运算。X计数器27及Y计数器28将相同的X坐标、Y坐标作为半贝尔内插部15的运算结果的写入处地址输出给缓冲器D25,象素混合部29的加得结果作为相同的坐标的亮度分量被存入缓冲器C。
在阶段w26、X计数器91输出X=13、Y计数器92输出Y=6的情况下,由MOD运算器93输出X=14(=mod[(1+13)/17]),由MOD运算器94输出Y=7(=mod[(1+6)/8])。其结果,从缓冲器A12输出Y23(13,6)Y23(14,6)Y23(13,7)Y23(14,7)的亮度分量,由半贝尔内插部15计算这些值的平均值。另一方面,根据X计数器27及Y计数器28的计数值,读出差分图象内的Y23(13,7)的亮度分量,由象素混合部29进行差分Y0和半贝尔内插部15的运算结果的加法运算。X计数器27及Y计数器28将相同的X坐标、Y坐标作为半贝尔内插部15的运算结果的写入处地址输出给缓冲器D25,象素混合部29的加得结果作为相同的坐标的亮度分量被存入缓冲器C。
在阶段w27、X计数器91输出X=14、Y计数器92输出Y=6的情况下,由MOD运算器93输出X=15(=mod[(1+14)/17]),由MOD运算器94输出Y=7(=mod[(1+6)/8])。其结果,从缓冲器A12输出Y23(14,6)Y23(15,6)Y23(14,7)Y23(15,7)的亮度分量,由半贝尔内插部15计算这些值的平均值。另一方面,根据X计数器27及Y计数器28的计数值,读出差分图象内的Y23(14,7)的亮度分量,由象素混合部29进行差分Y0和半贝尔内插部15的运算结果的加法运算。X计数器27及Y计数器28将相同的X坐标、Y坐标作为半贝尔内插部15的运算结果的写入处地址输出给缓冲器D25,象素混合部29的加得结果作为相同的坐标的亮度分量被存入缓冲器C。
在阶段w28、X计数器91输出X=15、Y计数器92输出Y=6的情况下,由MOD运算器93输出X=16(=mod[(1+15)/17]),由MOD运算器94输出Y=7(=mod[(1+6)/8])。其结果,从缓冲器A12输出Y23(15,6)Y23(16,6)Y23(15,7)Y23(16,7)的亮度分量,由半贝尔内插部15计算这些值的平均值。另一方面,根据X计数器27及Y计数器28的计数值,读出差分图象内的Y23(15,7)的亮度分量,由象素混合部29进行差分Y0和半贝尔内插部15的运算结果的加法运算。X计数器27及Y计数器28将相同的X坐标、Y坐标作为半贝尔内插部15的运算结果的写入处地址输出给缓冲器D25,象素混合部29的加得结果作为相同的坐标的亮度分量被存入缓冲器C。
如上通过半贝尔内插部15进行的半贝尔内插,使用本身的亮度分量、位于其横向右侧的亮度分量、位于下侧的亮度分量和位于右斜下侧的亮度分量的平均值,生成Y01块中包括的亮度分量。用本身的亮度分量、位于其横向右侧的亮度分量、位于正上侧的亮度分量和位于右斜上侧的亮度分量的平均值,生成Y23块中包括的亮度分量。
(第1.18章 纵向及横向的半贝尔内插时的生成方式的汇总)
图28A示出了在纵向及横向的半贝尔内插时,用哪个象素的平均值生成Y01块中包括的亮度分量。
带影线的Y01块内的(0,0)亮度分量是用包围在与(0,0)为同一框内的位于其横向右侧的亮度分量Y(1,0)、位于下侧的亮度分量Y(0,1)和位于右斜下侧的亮度分量Y(1,1)的平均值生成的。Y01块中包括的亮度分量Y(2,1)是用本身的亮度分量Y(2,1)、位于其横向右侧的亮度分量Y(3,1)、位于下侧的亮度分量Y(2,2)和位于右斜下侧的亮度分量Y(3,2)的平均值生成的。
Y23块内的(0,0)亮度分量是用本身的亮度分量、位于其横向右侧的(1,0)亮度分量、位于正上侧的Y01亮度分量Y(0,8)和位于右斜上侧的Y01亮度分量Y(1,8)的平均值生成的。
Y23块内的(2,1)亮度分量是用本身的亮度分量、位于其横向右侧的(3,0)亮度分量、位于正上侧的亮度分量Y(2,0)和位于右斜上侧的亮度分量Y(3,0)的平均值生成的。
另一方面,通过由半贝尔内插部15进行的半贝尔内插,Y02块中包括亮度分量是用本身的亮度分量、位于其横向右侧的亮度分量、位于下侧的亮度分量和位于右斜下侧的亮度分量的平均值生成的。Y13块中包括亮度分量是用本身的亮度分量、位于其横向左侧的亮度分量、位于正下侧的亮度分量和位于左斜下侧的亮度分量的平均值生成的。
图28B示出了在纵向及横向的半贝尔内插时,用哪个象素的平均值生成Y02块中包括的亮度分量。
带影线的Y02块内的(0,0)亮度分量是用包围在与(0,0)为同一框内的位于其横向右侧的亮度分量Y(1,0)、位于下侧的亮度分量Y(0,1)和位于右斜下侧的亮度分量Y(1,1)的平均值生成的。Y02块中包括的亮度分量Y(2,2)是用本身的亮度分量Y(2,2)、位于其横向右侧的亮度分量Y(3,2)、位于下侧的亮度分量Y(2,3)和位于右斜下侧的亮度分量Y(3,3)的平均值生成的。
Y13块内的(0,0)亮度分量是用本身的亮度分量、位于其横向左侧的Y02(8,0)亮度分量、位于正下侧的Y02亮度分量Y13(0,1)和位于左斜下侧的Y02亮度分量Y(8,1)的平均值生成的。
Y13块内的(1,2)亮度分量是用本身的亮度分量、位于其横向左侧的(0,2)亮度分量、位于正下侧的亮度分量Y(1,3)和位于左斜下侧的亮度分量Y(1,3)的平均值生成的。
(第1.19章 设置选择器34的意义)
选择器34在能从象素运算部7输出差分以半帧为单位编码的Y2块的情况下,形成使缓冲器D25跳跃用的迂回路径。
这样形成差分Y0块的迂回路径的理由在于:在读出以半帧为单位的差分的情况下的缓冲器A12、缓冲器B16、缓冲器C20、缓冲器D25的处理内容与到此为止说明过的处理内容有若干不同。图6B是表示在读出以半帧为单位的差分的情况下的缓冲器A12、缓冲器B16、缓冲器C20、缓冲器D25的处理内容的时间图。参照本图说明缓冲器A12、缓冲器B16、缓冲器C20、缓冲器D25的处理内容。
在图6B中,缓冲器D25在差分以半帧为单位编码的Y0块能从象素运算部7输出的情况下,在时刻g1将其保存起来。而且,如果在时刻g2读出参照图象的Y02块,在时刻g3进行对Y02块的半贝尔内插,便输出给欲使该半贝尔内插结果和Y0块进行混合的混合部29。
在时刻g5,在以半帧为单位编码的差分Y1块能从象素运算部7输出的情况下,将其保存起来。在时刻g6对作为参照图象读出的Y13块进行半贝尔内插之前,该差分的Y1块由缓冲器D25保存。对参照图象Y13块的半贝尔内插完成后,缓冲器D25将如此保存的差分的Y1块输出给混合部29,在时刻g7在混合部29中进行Y13块的半贝尔内插结果和Y1块的混合。
在时刻g8,在差分以半帧为单位编码的Y3块能从象素运算部7输出的情况下,将其保存起来。然后在时刻g9进行Y13块和Y1块的混合后,输出给欲对该混合结果和Y3块进行混合的混合部29。
在时刻g10,对Y02块的半贝尔内插结果和Y0块的混合结果被用混合部29输出后,缓冲器C20将其保存起来。
在时刻g11,如果以半帧为单位编码的差分的Y2块绕过缓冲器D25而被输出后,将如此保存的对Y02块的半贝尔内插结果和Y0块的混合结果输出给混合部29,在时刻g12对Y02块和差分的Y2块进行混合。这时由于输出给混合部29的Y02块已经完成了与Y0块的混合,所以如果进行与差分的Y2块的混合,就能获得Y02块结果的混合结果。这样获得的Y02块的混合结果被输出给缓冲器B16,被用缓冲器B16写入SDRAM3。
缓冲器C20在时刻g7由混合部29对Y13块的半贝尔内插结果和Y1块进行混合后保存该混合结果。在时刻g8,缓冲器D25将差分以半帧为单位编码的Y3块保存起来后,在时刻g13,将混合结果的Y13块输出混合部29以便使Y13块的混合结果和Y3块进行混合。这时由于输出给混合部29的Y13块已经完成了与Y1块的混合,所以如果进行与差分的Y3块的混合,就能获得Y13块结果的混合结果。这样获得的Y13块的混合结果被输出给缓冲器B16,被用缓冲器B16写入SDRAM3。
如上所述,如果采用本实施形态,则由于象素块中包括的蓝色差分量、红色差分量被存储在从由同一行地址特定的开始区至结束区中,所以如果从该开始区起指定读出长度,进行脉冲串式地读出存储内容的所谓脉冲串读出,就能将蓝色差分量、红色差分量一起读出。由于这样将蓝色差分量、红色差分量一起读出,所以在读出参照图象时,通过与亮度分量的读出合计两次的脉冲串读出,就能读出参照图象。因此,能将脉冲串读出的次数减少到与参照图象读出的二倍成比例的数,例如即使每1秒反复读出参照图象近30次,也具有能异常地减少从发送行地址开始到发送列地址为止的期间内的延迟时间tRCD的影响的效果。
另外,在需要将参照图象个别地从变换过的页读到不同的存储单元中的情况下,由于使重叠部分的横向幅度长的一方的读出顺序在前,所以在从一页读出其横向幅度部分的亮度分量的期间,能并行地进行另一存储单元的激活,能避免与激活存储单元之前的延迟相伴随的译码处理的延迟的影响。
另外,为了进行半贝尔内插,即使需要多于一行部分、一列部分的亮度分量及色差分量的情况下,将它们分作两次读出,由于在各个读出时将读出范围确定为比一行多些、比一列多些,所以如果是象素块大小的缓冲器,就能充分地存储半贝尔内插所需要的亮度分量及色差分量。
(第二实施形态)
第二实施形态是在SDRAM的字长为2字节,亮度分量、蓝色差分量、红色差分量为1字节的情况下,将两个象素部分的亮度分量、蓝色差分量、红色差分量存储在SDRAM的1字中的实施形态。
第二实施形态中的亮度分量的存储方式示于图29A,色差分量的存储方式示于图29B。在图29A中,最使人感兴趣的是两个亮度分量被存储在一页内的由一列地址构成的字长区中。亮度分量Y(0,0)和Y(1,0)被存储在列地址000000_0000中,亮度分量Y(2,0)和亮度分量Y(3,0)被存储在列地址000000_0001中。
在图29B中,最使人感兴趣的是坐标相同的蓝色差分量和红色差分量的对偶被存储在一页内的由一列地址构成的字长区中。Cb(0,0)和Cr(0,0)被存储在列地址000000_0000中,Cb(1,0)和Cr(1,0)被存储在列地址000000_0001中。
鉴于两个亮度分量、由蓝色差分量和红色差分量构成的对偶这样存储在1字长的区中,故在第二实施形态中对亮度地址编码器61、色差地址编码器62进行了图30A及图30B所示的改变。图30A中的亮度地址编码器61的改变处在于:使用从X坐标的第二位到第四位的3位生成列地址。
图30B中的色差地址编码器62的改变处在于:禁止用第0位来识别蓝色差分量及红色差分量,用第0~第3位表示蓝色差分量及红色差分量的X坐标。
另外补偿控制部10的改变处在于:根据左上顶点的坐标是偶数还是奇数,如下扩大或缩小使用读出范围。
(1)处理单位为帧单位
(1-1)参照图象的左上顶点的坐标是偶数坐标的情况
无横向的半倍尔内插 横16象素×纵8象素
有横向的半倍尔内插 横18象素×纵8象素
(1-2)参照图象的左上顶点的坐标是奇数坐标的情况
无横向的半倍尔内插 横18象素×纵8象素
有横向的半倍尔内插 横20象素×纵8象素
(2)处理单位为半帧单位
(2-1)参照图象的左上顶点的坐标是偶数坐标的情况
无横向的半倍尔内插 横8象素×纵16象素
有横向的半倍尔内插 横10象素×纵16象素
(2-2)参照图象的左上顶点的坐标是奇数坐标的情况
无横向的半倍尔内插 横10象素×纵8象素
有横向的半倍尔内插 横12象素×纵8象素
在(1-1)中有横向的半倍尔内插的情况下,之所以将横18象素×纵8象素确定为读出范围,是因为在横向半倍尔内插时,亮度分量需要多于一列。是只想读出该多列中的一列的内容,但在第二实施形态中,由于2个亮度分量被存储在一字长的区中,所以不能只读出一列。因此,与一字长区合并,以多于二列读出亮度分量。与『无横向的半倍尔内插』时相比较,读出范围之所以多于2象素(18象素-16象素),是为了以多于两列读出亮度分量,以便进行横向的半倍尔内插。
在(2-2)中参照图象的左上顶点的坐标是奇数坐标的情况下,之所以将横18象素×纵8象素确定为读出范围,其理由如下。即,左上顶点的坐标是奇数坐标时,假定欲根据该奇数坐标读出16个象素,那么在两个象素部分的亮度分量存储在一字长的区中的关系上,必须将读出开始坐标确定为表示左上顶点的奇数坐标的前一个偶数坐标,将读出结束坐标确定为表示右上顶点的奇数坐标的后一个偶数坐标。这样通过将读出开始坐标确定为前一个偶数坐标,读出范围自然加“1”,通过将读出结束坐标确定为后一个偶数坐标,读出范围自然加“1”。
读出开始坐标、读出结束坐标通过分别加“1”,读出范围变为横18象素×纵8象素。
在(2-2)中参照图象的左上顶点的坐标是奇数坐标、需要横向的半倍尔内插的情况下,之所以将横20象素×纵8象素确定为读出范围,是因为需要读出横19象素×纵8象素。横19象素×纵8象素的读出范围是以将读出开始坐标、读出结束坐标分别加“1”的理由和为了横向的半倍尔内插而进行多于一列的读出而加“1”的理由为依据的读出范围。是想直接读出该横19象素×纵8象素,但在第二实施形态中,由于2个亮度分量被存储在SDRAM的一字长的区中,所以将横20象素×纵8象素确定为读出范围。
如上所述,如果采用本实施形态,则在SDRAM的字长为2字节,亮度分量、蓝色差分量、红色差分量为1字节的情况下,能将两个象素部分的亮度分量、蓝色差分量、红色差分量存储在SDRAM的一字中。