基于SOPC的触控屏控制器IP核设计与实现
文中提出一种针对TFT-LCD触控屏控制器IP核的设计方法。该控制器具有Avalon总线接口,与其他标准IP核一起构成以NiosⅡ为核心的片上系统。针对本设计中触控屏帧缓存读操作的特点,选择以Avalon主端口接口的形式对模块进行开发,大大提高了处理器运行效率,同时实现了触控屏控制器IP核的参数化设计,提高了控制器对于不同LCD屏的可复用性,最后通过对输出缓冲FIFO的使用,解决了数据读出时钟与像素时钟不同步问题。
1 触控屏控制器总体结构
在SDRAM中开辟一段储仔空间,用来存放屏幕图像数据,称之为帧缓存。通过设计适当的硬件逻辑来建立帧缓存与屏幕图像像素之间的一一对应关系,并配合触控屏显示所必需的行、场时序信号,将帧缓存中的数据不断地输送给触控屏,完成最终的显示刷新,其总体结构如图1所示。
触控屏控制器刷新周期开始时,主端口模块根据帧缓存地址生成逻辑所产生的地址,完成主端口的读操作,实现帧缓存中数据读取,并将该数据输送给输出缓冲模块。同时,时序信号生成模块依据触控屏的时序规范生成行、场同步信号,以及与像素同步的相关显示点的横、纵坐标。触控屏控制器数据显示模块不断从缓存中读取屏幕显示数据。
2 触控屏控制器模块设计
2.1 Avalon-MM Slave接口模块
本模块挂载在Avalon总线上作为从设备使用,用来对所有的用户逻辑进行配置和控制,核心功能是寄存器操作,包括读、写以及一些特殊指示与状态信号的产生与转换。通过从端口得到的数据分别赋值给相应的寄存器,寄存器分为:FIFO地址寄存器、坐标寄存器、一帧数据长度奇存器。本模块是最后在触控屏上实现图形显示功能的接口电路。
2.2 Avalon-MM Master接口模块
LCD控制器的本功能是产生LCD时序信号,将帧缓存中的图像信息进行有序输出。由于图形是一帧一帧地输出到触控屏上,而且显示刷新过程是无限循环的,所以必须反复执行帧缓存读操作,因此本设计对上述读操作进行了硬件加速。可以不断地从FIFO读取图像数据,并且在行、场和触控屏显示有效时间段读取图像数据,其它时间不读图像数据,这样减少了Avalon总线的使用,有利于图像显示并减少了总线负担分析读帧缓存的操作可以发现,该过程总是按照一定的顺序,将存储器中的数据读出来进行显示输出,规律性非常强。
本模块主要完成地址及操作时序的产生、像素数据缓存写操作控制、数据宽度的变换等功能。
2.3 触控屏时序产生模块
本文的触控屏引出信号线有5根:像素数据信号、触控屏时钟信号、行同步信号、场同步信号、使能信号。为了实现触控屏的正常显示,必须对以上信号按照规范的时序进行驱动,其中,行、场同步信号分别用来标记屏幕上一行和一帧图像的显示时间,屏幕扫描线从上到下、从左到右依次扫描。在这个过程中,只需将帧缓存中的图像像素数据依次输出,就可以实现屏幕图像显示。
2.4 FIFO帧缓存模块
DDR控制器随着系统时钟不断往FIFO写数据,当一帧数据写满时就不再进行写状态,而等待LCD控制器进行读状态,颜色处理器从FIFO中获取数据,每次从FIFO中读取32 bit数据并不断送给LCD。
颜色处理器将每一个字节作为一个像素数据,并将一个字节的像素数据转换为3个字节的RGB数据。颜色处理器从同步FIFO缓冲器中读取数据,当同步FIFO缓冲器写和读相互不冲突时,同步FIFO缓冲器产生读请求,让Avalon主端口向Avalon总线发起读传输,从总线上获取的数据将写入同步FIFO缓冲器,颜色处理器从FIFO中读取像素值,并且传给LCD显示模块。
3 Modelsim仿真与测试
1)Avalon从端口仿真与测试
由图2可知,从端口一位地址对应一位数据。当写信号有效时,将数据写入相应的寄存器;当读信号有效时,对应寄存器地址将数据输出。通过从端口数据写入来控制LCD模块,控制LCD读取图像的首地址和读取数据的长度。
2)Avalon主端口仿真与测试
Avalon模块的作用是响应Avalon主端口的读请求,并将FIFO中的相应数据输出给Avalon主端口。通过读信号和相应地址主端口,不断地从FIFO中读取图像数据,并按照LCD时序将图像数据输送给LCD。图3为Avalon主端口从显存中读取数据时的仿真波形图。
- 单片DSP处理器功能系统的SOPC技术设计(01-12)
- 基于DSP和SOPC数字信号发生器的设计(01-05)
- 基于Linux的SoPC应用系统设计(04-23)
- 基于DSP的实时数据处理系统浅析(02-28)
- 基于LXI总线的1553B通讯模块设计与开发(11-24)
- 双MicroBlaze软核处理器的SOPC系统设计(01-27)