0 引 言
OSD(on screen display),即在屏显示系统,是实现人机界面交互的基础,在视频处理SOC中作为重要功能模块有着广泛的应用。
基于SOC技术的模块化设计要求各功能模块尽可能小地占用电路资源,以满足芯片系统对资源使用和面积的控制。对于OSD功能模块而言,存储器资源为主要开销。因此,减少存储器资源的使用对降低OSD模块电路资源需求有着重要的意义。
OSD电路中,字符索引算法的选取直接决定了存储器资源的使用情况,因此采用更优化的字符索引算法可以达到降低存储器资源需求量的目的。作者在逐字符索引法的基础上,针对该算法的缺点,提出了二步索引法。在保证OSD功能完整的同时,大大地降低了系统对存储器资源的需求。
1 二步索引算法的原理及特点
1.1 字符索引算法原理
字符索引算法是将OSD菜单中所显示的字符按菜单显示顺序进行编码,并存储于存储器中,在读取字符点阵信息以显示菜单时通过读取编码信息来索引所需字符信息。设菜单中字符尺寸为C1×Ch(bit),菜单共显示m行字符,每行显示n个字符,字符编码Ni×j,并且存储器中一个地址所存储的数据(bit)大于C1。则读取菜单中第i行第j个字符时,首先通过索引得到存储器中相应字符的字符编码Ni×j,索引地址可通过公式(1)得出:
add_mi×j=addr_n0×0+(i-1)n+n-1 (1)
将读取出的字符编码Ni×j转换成相应字符点阵信息在存储器中存储空间的首地址。地址的转换可通过公式(2)计算得到:
addr_di×j=addr_d0×0+Ch×(Ni×j-1) (2)
式中:addr_u0×0和addr_d0×0分别是字符编码存储器和字符点阵信息存储器中首地址指针。根据Ch控制从字符点阵信息存储器中读出地址范围为addr_di×j到addr_di×j+Ch的数据即完成了对菜单中第i行第j个字符的点阵数据信息的读取。
逐字符索引算法下,将空格按字符看待并进行编码,菜单每行固定显示n个字符,字符长度小于n的菜单行由空格来补齐。由于采用定长的存储结构,所以字符索引电路原理简单且易于实现,只需要根据菜单字行符长数n就可以计算出相应行字符的首地址指针。但这种存储结构的缺点也很明显,就是对存储器的使用量较大。在该算法下,可以计算出在OSD所需要的使用的存储器量为:m×n×Ch,如图1(a)所示。存人其中的“空格”(图中编码为“28”)会占用相当一部分的存储器资源。在一些情况中,用于补充空缺而存储的“空格”所占用的存储空间甚至会比字符点阵信息的存储空间还要多,这是对存储器资源极大的浪费。