摘 要: 介绍了一种基于FPGA的彩色触摸屏控制器的设计方法,根据彩色液晶屏TFT-LCD与芯片ADS7843的接口方式,使用FPGA设计了TFT-LCD控制器和ADS7843芯片的控制器,并实现了在TFT-LCD上的触摸功能。该控制器显示效果好,触摸响应速度快,为后续彩色触摸屏的IP核设计打下了基础。 关键词: FPGA; ADS7843; 彩色触摸屏
触摸屏技术方便了人们对计算机的操作使用,是一种极具发展前途的交互式输入技术,受到各国的普遍重视,并投入大量的人力、物力对其进行研发,使得新型触摸屏不断涌现[1]。特别是四线电阻式触摸屏具有制造工艺简单、成本低廉、使用方便等特点,已经被广泛应用于不同的电子设备[2]。
随着嵌入式技术的高速发展,尤其是CPLD/FPGA的出现,其基于SoPC技术的IP核的使用给开发人员带来了诸多方便。但在SoPC中并没有彩色触摸屏的IP核,因此需要自己编写硬件的时序控制[3]。本文提出一种基于FPGA的彩色触摸屏控制器的设计方案,通过单片FPGA芯片可以实现彩色触摸屏的驱动逻辑,从而实现硬件上时序控制,在此控制器的基础上可以进一步开发彩色触摸屏的IP核。 1 彩色触摸屏控制器的设计
1.1 总体结构及其工作原理
彩色触摸屏控制器的总体结构如图1所示。
该彩色触摸屏的控制器主要由TFT-LCD控制器和ADS7843芯片控制器两部分组成。由图1可以看出,TFT-LCD控制器的作用是将图像数据采集后,通过SDRAM进行缓冲,然后将图像数据输出给TFT-LCD。它的主要功能是完成图像数据的采集和缓冲、TFT-LCD的时序控制及最终数据在TFT-LCD上的显示。 1.2 TFT-LCD控制器的设计
图像数据经采集和缓冲之后,通过TFT-LCD的时序控制可以将数据按如图2所示时序图进行输出。本设计中采用的TFT-LCD的分辨率为480×272,其RGB数据位均为8 bit,可以显示16 777 216种颜色。其中,PCLK为LCD像素时钟信号,HSYNC为行同步信号,VSYNC为帧同步信号,VDEN为数据使能信号,VD[23:0]为LCD像素数据输出端口,tvpw、tvp、tvbp、tvfp分别为垂直同步脉冲、垂直扫描时间、垂直后回归、垂直前回归,thpw、thp、thbp、thfp分别为水平同步脉冲、水平扫描时间、水平后回归、水平前回归[4]。
从图2所示的时序图可以看出,当HSYNC电平由低变高,再经过水平回归时间之后,开始进行水平扫描。在水平扫描中,像素的显示受PCLK控制,一个PCLK周期决定了一个像素点的显示。在HSYNC的高电平的驱动下,PCLK将产生480个时钟周期,使图像的像素点在屏幕上从左向右依次逐点输出,完成一行共480个像素点的显示。用Verilog HDL编写的水平同步扫描的时序程序如下:
always@(posedge CLK or negedge RST_n) begin
if (RST_n) begin
x_cnt <= 11'd0;
hd <= 1'd0;
end
else if (x_cnt ==479) begin
x_cnt <= 11'd0;
hd <= 1'd0;
end
else begin
x_cnt <= x_cnt + 11'd1;
hd <= 1'd1;
end
end
同理,当VSYNC电平由低变高,再经过垂直回归时间之后,进入垂直扫描。在VSYNC的高电平驱动下,HSYNC将产生272个时钟周期,像素点在屏幕上从上到下依次逐行输出,完成整个图像数据在彩色显示器上的显示。用Verilog HDL编写的同步扫描的时序程序如下:
always@(posedge CLK or negedge RST_n) begin
if (iRST_n)
y_cnt <= 10'd0;
else if (x_cnt == 479) begin
if (y_cnt == 271)
y_cnt <= 10'd0;
else
y_cnt <= y_cnt + 10'd1;
end
end