• 1. 第 5 讲 设计举例 H. 264运动向量估计10/20/20181
  • 2. 目录 运动向量 图像数据块 设计依据 总体设计 运算单元 基本模块 运行模式 存储组织与控制 模块组合方式 向量产生器及输出控制10/20/20182
  • 3. 5.1 运动向量 相邻两帧的视频图像是非常相似的,这种现象是基于“运动补偿”的编码方法的基础。 当前帧图像用它与前一帧图像的差值来编码,差值越小,编码效率越高。 一帧图像可以划分为若干小块。通常,块越大,编码效率越高,图像质量越低;块越小,编码效率越低,图像质量越高。 运动估计:对于当前帧中的一个图像块(当前块),按某种度量标准在前一帧图像中寻找最为相似块。 运动向量:与当前块最为相似块的位置标识。10/20/20183
  • 4. 5.1 运动向量(续) 相似块在前一帧与当前块相同位置的周围(搜索窗口)进行搜索而得到。当前帧当前块搜索窗口相似块运动向量10/20/20184
  • 5. 5.2 图像数据块 H.624中几种不同大小、不同形状的图像数据块 116 16 2816 2168 488 848 884 164410/20/20185
  • 6. 数据块组合5.2 图像数据块(续) 将全部16个44的数据块加起来。 将上面8个和下面8个44的数据块分别加起来。10/20/20186
  • 7. 5.2 图像数据块(续) 数据块组合 将左边8个和右边8个44的数据块分别加起来。 将上、下、左、右各4个44的数据块分别加起来。 其它类似10/20/20187
  • 8. 5.3 设计依据 相似度计算:设图像大小为M*N(行列),搜索窗口大小x方向为[-p, p-1],y方向为[-q, q-1],其中p=N/2,q=M/2。D(i, j)为向量(i, j)所对应的平均绝对值差(MAE),则 其中第m行的MAE为: 有: 其中r为当前块数据,s为搜索区数据。10/20/20188
  • 9. 5.4 总体设计主CPU系统总线DMA图像数据 存 储 器存储控制16个 基本 模块求和向量 产生系 统 存储器10/20/20189
  • 10. 5.5 运算单元 绝对值电路 当|A-B|溢出时,输出为+127; 当A-B为正且没有溢出时,输出为A-B; 当A-B为负且没有溢出时,输出为结果的绝对值减1。需要的加1(C0)操作留给后面的处理单元电路在进行级联相加时完成,这样可以节省一级进行加法操作的时间。10/20/201810
  • 11. 处理单元及行结构5.5 运算单元(续) MAE有多种实现的方法。一种经典的方法是用一行有N个处理单元的电路对M行数据进行串行的行处理,另一种方法是用M行电路同时对M行数据进行全并行处理。在本设计中,我们除采用了这两种方法之外,还采用了界于两者之间的方法。 10/20/201811
  • 12. 5.6 基本模块 基本模块 一个基本模块由16个处理单元排成一个方阵。这些处理单元按从左到右,从上到下的方式串联起来。图3是一个4*4基本模块内部处理单元的连接方式 。 一个基本模块除了可被看成是一个4*4的方阵外,还可以被看成是一个2*8的矩阵,甚至是一个1*16的行向量,这取决于如何加载图像数据s和r。10/20/201812
  • 13. 5.6 基本模块(续) 基本模块运行时序:表1表示的是一个4*4的基本模块,在大小为7*7的搜索区间内工作时的时序。表中,每一个方格表示一个数据,方格中的数字代表访问该数据的时刻。红色数码15-30分别对应D(0,0)、D(0,1)、D(0,2)、D(0,3)、D(1,0)、…、D(3,3)完成的时间和在电路中的位置,它们在第三行最后一个处理单元被产生。数据行列(第一处理单元行)列(第二处理单元行)列(第三处理单元行)列(第四行处理单元)012345601234560123456012345600123456---------------------14567891045678910--------------2891011121314891011121314891011121314-------3121314151617181213141516171812131415161718121314151617184-------1617181920212216171819202122161718192021225--------------20212223242526202122232425266---------------------24252627282930表1 4*4基本模块时序图10/20/201813
  • 14. 0123123423453456001231234’234’5’34’5’6’145675678’678’9’78’9’10’28910119101112’101112’13’1112’13’14’31213141513141516’141516’17’1516’17’18’145675678’678’9’78’9’10’28910119101112’101112’13’1112’13’14’31213141513141516’141516’17’1516’17’18’41617181917181920’181920’21’1920’21’22’28910119101112’101112’13’1112’13’14’31213141513141516’141516’17’1516’17’18’41617181917181920’181920’21’1920’21’22’52021222321222324’222324’25’2324’25’26’31213141513141516’141516’17’1516’17’18’41617181917181920’181920’21’1920’21’22’52021222321222324’222324’25’2324’25’26’62425262725262728’262728’29’2728’29’30’10/20/201814
  • 15. 5.6 基本模块(续) 表2是一个完整的4*4基本模块的详细数据流表。表中用不同颜色表示不同的D(i,j)所对应的数据,其中右半部分用黑色表示的数据,代表后续一帧图像的数据,与左半部分的数据类似。10/20/201815
  • 16. 10/20/201816
  • 17. 5.7 运行模式 有7种不同的运行模式。在任何一种模式下,全部基本模块同时并行运行。 一个基本模块除可看成一个4*4的方阵外,还可看成一个2*8的矩阵,或是一个1*16的行向量。用8个基本模块组成1个8*16的模块时,每个基本模块是这个8*16模块中的1行,8行电路同时运行,得到8个行的MAE,把它们加起来便是整块图像的MAE。用8个基本模块组成1个16*8的模块时,每个基本模块是这个16*8模块中的2行,等等。10/20/201817
  • 18. 5.7 运行模式 表3是用4个基本模块组合成一个8*8模块时,前2行(1个基本模块)的工作时序表,电路时延为15个时钟周期,共需要79个周期完成运算。事实上,在任何模式下,电路时延均为15个时钟周期。时延过后,每个周期产生一个MAE,共产生M*N个MAE,总共需要15+M*N个时钟周期完成运算任务。 数据行列(第一处理单元行)0123456789101112131400123456789101112131418910111213141516171819202122216171819202122232425262728293032425262728293031323334353637384323334353637383940414243444546540414243444546474849505152535464849505152535455565758596061627565758596061626364656667686970数据行列(第二处理单元行)01234567891011121314189101112131415161718192021222161718192021222324252627282930324252627282930313233343536373843233343536373839404142434445465404142434445464748495051525354648495051525354555657585960616275657585960616263646566676869708646565666769707172737475767778表3 4*4基本模块组合成8*8模块时的工作时序图10/20/201818
  • 19. 5.7 运行模式(续) 表4(a)和表4(b)分别表示在模式mode22下,电路中2个基本模块内部,前32个时钟周期所对应的数据流,这2个基本模块分别对应8*8模块的第0、1行和第2、3行,图中红色数据表示输出的时间和处理单元的位置。将4个这样的基本模块的输出全部加起来便可以得到1个8*8模块的输出。10/20/201819
  • 20. 10/20/201820
  • 21. 10/20/201821
  • 22. 5.8 存储组织与控制 图5(a)表示模式mode11下的搜索窗口。图中共有31行、31列,对应1个16*16模块的搜索窗口。为了方便,我们增加了第31列(用绿色表示,其中的数据无意义); 窗口的左半部分为处理单元提供数据S1(红色),右半部分提供数据S2(蓝色,见图2); 左半部和右半部的数据分别存储在2组共32个大小相同的存储器里。每个存储器16个单元,每个单元存储2个像素的数据。以左半部为例,第0行和第16放在0号存储器里,第14行和第30行存放在14号存储器里,第15行存放在15号存储器里(这个存储器中的数据较少);10/20/201822
  • 23. 5.8 存储组织与控制(续) 第0-15行和第16-30行分别位于相应单元的高位部分和低位部分。这16个存储器同时分别向16个基本模块提供数据; 图中红色符号(符号的上标是基本模块号,见图4,下标代表搜索窗口的左半部或右半部)表示的是0时刻左半部分存储器向基本模块提供的数据在搜索窗口中的位置; 每经过1个时钟周期,红色符号从左到右移动1次。同时,后一个存储器(下一行)当前读出的内容被写回到前一个存储器当前的单元中,而第0号存储器的低位部分写回到第15号存储器的高位部分。这些操作组合起来,相当于刚刚访问过的数据列由下向上移动了一行。例如,第2个时钟周期过后,用红色细线围住的数据已经全部向上移动了一行(见图5(a))。右半部分与左半部分完全类似。10/20/201823
  • 24. 5.8 存储组织与控制(续)10/20/201824
  • 25. 5.8 存储组织与控制(续) 图5(b)所示搜索窗口只有23行,相应存储结构与图5(a) 完全一样,只是第7-15号存储器中分别只存放了16个像素的数据(低位为空)。10/20/201825
  • 26. 5.8 存储组织与控制(续) 图6(a)是模式mode22下的寄存器组织示意图。图中按列分为4大块,32个存储器被分为4组; 搜索窗口由左起第0、第1和第3大块(在图6(a)的最右边)组成。事实上,第2大块的数据与第1大块的数据完全相同; 每组前3个(0-2号)存储器存有32个像素的数据,第3号存储器存有24个有效数据,第4-7号存储器只存储16个有效数据; 如模式mode11类似,图中红色符号表示的是0时刻左半部分存储器向基本模块提出的数据在搜索窗口中的位置。以后,每经过1个时钟周期,红色符号从左到右移动1次。同时,后一个存储器当前读出的内容被写回到前一个存储器当前的单元中,而第0号存储器的低位部分被写回到第7号存储器的高位部分。10/20/201826
  • 27. 5.8 存储组织与控制(续)10/20/201827
  • 28. 5.8 存储组织与控制(续) 图6(b)、图6(c)与图6(a)类似,其中图6(b)中的有效数据在图6所示的三种模式中最少,图6(c)最多。 10/20/201828
  • 29. 5.8 存储组织与控制(续)10/20/201829
  • 30. 5.8 存储组织与控制(续) 图7(a)是模式mode44下的寄存器组织示意图。图中按列分为8个大块,每1个大块由4个存储器构成1个存储器组; 搜索窗口由左边4个大块和最右边1个大块组成。左起第1、2、3大块的数据与第4、5、6大块的数据分别完全相同; 每组只有0号存储器存有28个有效数据,其它存储器均只存储了16个有效数据。10/20/201830
  • 31. 5.8 存储组织与控制(续)10/20/201831
  • 32. 5.8 存储组织与控制(续) 图7(b)中每组第0号存储器存有32个有效数据,1号存储器存有28个有效数据,其余的2号、3号存储器只存储16个有效数据。10/20/201832
  • 33. 5.8 存储组织与控制(续) 图8表示在不同工作模式下,如何控制搜索窗口内的数据在存储器中移动。10/20/201833
  • 34. 5.8 存储组织与控制(续) 存储组织:为了方便表述,对存储器使用了不同的编号方法,其相互之间的关系由表5所示 。对应搜索窗口左半部(S1)对应搜索窗口左半部(S2)DMA 传送数据 移动对应基本模块DMA 传送数据 移动对应基本模块000010002110311042205220633073308401940110511115111262113621147311573116802178021891219912201022211022221132231132241203251203261313271313281423291423301533311533表5 各种情况下存储器的编号方法10/20/201834
  • 35. 5.8 存储组织与控制(续) DMA控制:设想主控CPU采用DMA方式向本设计中的存储器装载图像数据(包括参考图像数据和搜索区图像数据); 主CPU把搜索窗口内数据分为两部分(在图5、6、7中为用粗实线分开的上下两块),并将对应行、列的数据组装成一个字,其中前16行的数据位于字的高位,而16行以后的数据则位于字的低位; 装载顺序按图像块从左至右、自上而下; 在某些模式下,一个像素的数据可能要存储在多个不同的存储器中。这时,我们将相关存储器的“片选”信号通过多路开关连接在一起,把相同的数据同时一次性地写入到多个存储器中。10/20/201835
  • 36. 5.8 存储组织与控制(续) 图9为DMA传送时的地址控制原理图。图中有3个可编程计数器,其中(16, 8, 4)计数器和(4, 2)计数器比较简单,但(32, 24, 20)计数器较复杂; 当电路工作在模式类0时,(32, 24, 20)计数器实际上是一个普通的5位计数器,此时信号“进位2”和“进位3”不起作用; 当电路工作在模式类1时,该计数器的组态情况见图9右边上部,(4, 2)计数器以2为模进行计数; 当电路工作在模类2时,计数器的组态情况见图9右边下部,(4, 2)计数器以4为模进行计数。(32, 24, 20)计数器的计数值通过一个5-32译码器译码,再经多路开关把译码信号接到适当的存储器。10/20/201836
  • 37. 5.8 存储组织与控制(续) S1与S2的控制:在同类模式下,不同模块中具有相同列位置的处理单元,要么访问数据S1,要么访问数据S2(这些数据来自不同的存储器); 16个基本模块关于S1和S2的控制在同类模式下是一样的,即不同模块中相同列位置的处理单元关于S1和S2的控制信号线可以连接在一起; 图10显示了在不同模式类下任意一个基本模块关于S1和S2的控制情况,其中“0”表示访问S1,“1”表示访问S2; 可以用4组,每组4位长的可重载的移位寄存器和6个1位宽的二选一多路开关组成,见图11。10/20/201837
  • 38. 5.8 存储组织与控制(续)10/20/201838
  • 39. 5.8 存储组织与控制(续)10/20/201839
  • 40. 5.9 模块组合方式 参见图4和图12mode11mode21mode21mode22mode22mode22mode2210/20/201840