【发明内容】
本发明要解决的技术问题,在于提供一种实现屏幕顺时针270度旋转的系统,通过较少的电路和存储器实现了屏幕顺时针旋转270度。
本发明是这样实现的:一种实现屏幕顺时针270度旋转的系统,包括CPU和存储有图像原始数据的存储单元,所述系统还包括总线读取单元、屏幕显示控制器、旋转图像缓存单元、旋转控制器、屏幕以及配置寄存器;所述CPU和存储单元经总线与总线读取单元连接,所述的总线读取单元负责通过总线从存储单元读取图像数据,如果是不旋转的图像数据,则直接送入屏幕显示控制器;如果是要旋转的图像数据,将该数据送入旋转控制器;所述的旋转控制器负责图像数据进行旋转处理,再将处理后的数据存放到旋转图像缓存单元,所述的旋转图像缓存单元由两个结构完全一致的缓存器构成,各所述缓存器内部又由4个列缓存构成,每个列缓存的位宽都是32bit;主要用于操作过程中的乒乓操作,即第一缓存器在填充数据的时候第二缓存器能向外输送数据,当第一缓存器被填满数据并向外传数据时,第二缓存器被填充;每个缓存器存储的像素个数为:最大支持分辨率的高度和一次突发传输的长度的乘积;所述的旋转图像缓存单元与屏幕显示控制器连接,所述的屏幕显示控制器的数据输出端与屏幕连接;所述的CPU经总线还连接有配置寄存器,所述的配置寄存器为总线读取单元和旋转控制器提供配置信息;其中所述总线读取单元读取图像数据并填入所述旋转图像缓存单元中的缓存器的顺序见步骤10至步骤40:
步骤10、从原始图像的左下角开始传输,数据通过旋转控制器送到第一缓存器,每次传输一个突发传输的长度,传完后继续传输上一行的一个突发传输的长度,直到原始图像的第一行的突发传输被传完,此时第一缓存器被填满,可以向屏幕显示控制器输出原始图像的列数据;
步骤20、接着从原始图像的最后一行偏移一个突发传输长度所占用缓存器的地址再开始传输,此时填充第二缓存器,操作和填充第一缓存器一致,直到第二缓存也被填满,然后等待第一缓存器被读完;
步骤30、等待第一缓存器被读完后,开始读第二缓存器,总线读取单 元也从原始图像最后一行偏移两个突发传输长度所占用缓存器的地址再开始传输,重新填充第一缓存器,直到第一缓存器填满,然后等待第二缓存器被读完;
步骤40、等待第二缓存器被读完后,又开始读第一缓存器和重新填充第二缓存器,如此循环直到整个图像被遍历;
其中,所述图像缓存单元向屏幕显示控制器输出的具体时序如下:
当缓存器填满后,缓存器向屏幕显示控制器输出原始图像的列数据,输出方向为从下到上、从左到右;每当需要显示原始图像的一列,则读取对应列缓存中原始图像的列数据,每次读取一列,直到缓存中的16列全部读完,该缓存器再次进入被填充状态。
本发明具有如下优点:本发明通过较少的电路和存储器实现了屏幕旋转,由于本系统和屏幕显示控制器紧耦合,只需要从存储单元读出待显示画面,经过旋转后直接显示到显示设备上,大大降低了总线带宽的占用,很好的解决了在尽量少占用资源的情况下实现画面旋转的功能。
【具体实施方式】
下面参照附图结合实施例对本发明作进一步的说明。
一种实现屏幕顺时针270度旋转的系统,如图1所示,包括CPU和存储有图像原始数据的存储单元,所述CPU和存储单元经总线与总线读取单元连接,所述的总线读取单元负责通过总线从存储单元读取图像数据,如果 是不旋转的图像数据,则直接送入屏幕显示控制器;如果是要旋转的图像数据,将该数据送入旋转控制器;所述的旋转控制器负责图像数据进行旋转处理,再将处理后的数据存放到旋转图像缓存单元,所述的旋转图像缓存单元与屏幕显示控制器连接,其中所述的旋转图像缓存单元由两个结构完全一致的缓存器构成,所述缓存器各自内部又由4个列缓存构成,每个列缓存的位宽都是32bit;主要用于操作过程中的乒乓操作,即第一缓存器在填充数据的时候第二缓存器能向外输送数据,当第一缓存器被填满数据并向外传数据时,第二缓存器被填充;每个缓存器存储的像素个数为:最大支持分辨率的高度和一次突发传输的长度的乘积;所述的屏幕显示控制器的数据输出端与屏幕连接;所述的CPU经总线还连接有配置寄存器,所述的配置寄存器为总线读取单元和旋转控制器提供配置信息;所述的配置信息包括配置画面的尺寸、是否需要旋转、原始图像在存储单元中的起始地址值。
其中所述总线读取单元读数并填入缓存器的顺序如下(如图2所示):
步骤10、从原始图像的左下角开始传输,数据通过旋转控制器送到第一缓存器,每次传输一个突发传输的长度,传完后继续传输上一行的一个突发传输的长度,直到原始图像的第一行的突发传输被传完,此时第一缓存器被填满,可以向屏幕显示控制器输出原始图像的列数据;
步骤20、接着从原始图像的最后一行偏移一个突发传输长度所占用缓存器的地址再开始传输,此时填充第二缓存器,操作和填充第一缓存器一致,直到第二缓存也被填满,然后等待第一缓存器被读完;
步骤30、等待第一缓存器被读完后,开始读第二缓存器,总线读取单元也从原始图像最后一行偏移两个突发传输长度所占用缓存器的地址再开始传输,重新填充第一缓存器,直到第一缓存器填满,然后等待第二缓存器被读完;
步骤40、等待第二缓存器被读完后,又开始读第一缓存器和重新填充第二缓存器,如此循环直到整个图像被遍历。
本发明中的存储单元:负责存储隔行格式的视频原始数据;
CPU:负责系统整体的时序控制和对寄存器进行配置;
总线读取单元:负责通过总线从存储单元读取图像数据,并把数据送到运动估计单元和图像缓存单元;
旋转控制器:负责对总线读取单元送入的数据进行旋转处理,再将处理后的数据存放到图像缓存单元;
旋转图像缓存单元:负责存储将要显示到屏幕的经过处理的旋转图像;
屏幕显示控制器:负责放大缩小缓存中的图像尺寸使之适应屏幕的尺寸并且按照屏幕需要的格式和时序传输图像数据到屏幕输出;
配置寄存器:负责存储整个旋转过程需要的所有信息,如画面的尺寸,是否需要旋转,原始图像在存储单元中的起始地址值,等等,用户使用CPU通过总线对寄存器中的值进行配置。
本发明的系统工作的流程:
1、当用户使用旋转电路时,CPU通过总线配置寄存器,配置画面的尺寸,是否需要旋转,原始图像在存储单元中的起始地址值等必须的信息;
2、在配置完毕后,总线读取单元会根据配置开始从存储单元取数,如果不需要旋转,则读取像素的顺序与屏幕扫描顺序一样,并将读取的数据直接送到屏幕显示控制器;如果需要旋转,则从原始图像的左下角开始读取,并将数据送往旋转控制器;
3、数据在经过旋转控制器后,像素经过旋转存到图像缓存单元;
4、图像缓存单元按照原始图像中列的形式将像素送往屏幕显示控制器;
5、屏幕显示控制器将图像按照屏幕需要的格式和时序传输图像数据到屏幕输出。
其中旋转和屏幕扫描原理示意:
如图3所示,在旋转之前,需要显示图像的话,向屏幕送数据的方式只需要按照原始图像一行一行的从左到右从上到下的方向就可以了,这也是原始图像存储于存储单元的格式。如果需要旋转屏幕扫描的方向不变的情况下将画面输出的顺序进行改变,将变为从画面的左下方开始送数据,将原始画面一列一列从下到上,从左到右输送。
下面结合一具体实施例对本发明作进一步说明。
数据在经过旋转控制器时写到两个缓存器的具体时序,如图4所示:两个缓存器都有4个列缓存,每个列缓存的位宽都是32bit,图中显示的是前四次突发传输的第一个32bit的存放于4个列缓存的方式。旋转控制器是根据像素所在行除以4的余数和像素在本行中的位置对4的余数来决定写入列缓存的位置,具体的方法是:
像素所在的行数对4的余数如果为0,则该像素存储于列缓存的最低8bit大小空间中;
像素所在的行数对4的余数如果为1,则该像素存储于列缓存的9到16bit大小空间中;
像素所在的行数对4的余数如果为2,则该像素存储于列缓存的17到24bit大小空间中;
像素所在的行数对4的余数如果为3,则该像素存储于列缓存的最高8bit大小空间中;
像素在本行中的位置对4的余数如果为0,则该像素存储于第4个列缓存中;
像素在本行中的位置对4的余数如果为1,则该像素存储于第1个列缓存中;
像素在本行中的位置对4的余数如果为2,则该像素存储于第2个列缓存中;
像素在本行中的位置对4的余数如果为3,则该像素存储于第3个列缓存中。
如图5所示,是第一个突发传输的写缓存器具体时序,假设原始图像的高度是720行,所以第一次突发传输的内容是第720行的像素。一次突发传输的量是16个像素,在4个时钟节拍内送入缓存器,每个节拍四个像素,根据上面描述的写列缓存位置的规则写入各个列缓存,如图5中第一个时钟节拍4个像素10,分别写入缓存器20L1基地址、L2基地址、L3基地址、L4基地址,第二、三、四时钟节拍,每个节拍中的4个像素同第一节拍一样的原理分别写入对应的缓存器中。
按照以上的写时序将第一个缓存器填满后,缓存器中四个列缓存的内容如图6所示:
假设原始图像的高度为720行,第一次将A缓存填满后的个缓存内容如图6所示。整个缓存中一共存储了原图像16列的内容,每个列缓存都存储了原始图像中4列的数据。比如列缓存L1中从基地址到偏移地址179存储了原图中第一列的所有像素,偏移地址180到359存储了原图中第五列的所有像素,偏移地址360到539存储了原图中第九列的所有像素,偏移地址540到719存储了原图中第十三列的所有像素。
其系统工作流程中图像缓存单元向显示控制器输出的具体时序:
在将缓存器填满后,缓存器可以向显示控制器输出原始图像的列数据,输出方向为从下到上从左到右。所以每当需要显示原始图像的一列,则读取对应列缓存中原始图像的列数据,具体的读取顺序如图7所示,每次读取一列,直到缓存中的16列全部读完,该缓存器再次进入被填充状态。
总之,本发明通过较少的电路和存储器实现了屏幕旋转,由于本系统和屏幕显示控制器紧耦合,只需要从存储单元读出待显示画面,经过旋转后直接显示到显示设备上,大大降低了总线带宽的占用,而且用户通过CPU进行基本的配置即可实现画面旋转显示,中间不需要CPU干预,大大节省了CPU的计算资源。
以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。