触摸屏技术方便了人们对计算机的操作使用,是一种极具发展前途的交互式输入技术,受到各国的普遍重视,并投入大量的人力、物力对其进行研发,使得新型触摸屏不断涌现[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
1.3 ads7843 芯片控制器的设计
ads7843 芯片控制器用于将触摸的位置进行数据转换。ads7843 的时序图如图3 所示。其中,cs 为片选信号, 低电平有效;busy 为忙指示信号, 同样低电平有效。
由图3 可看出,ads7843 标准的一次数据转换需要24 个时钟周期, 每次的数据转换以8 个时钟周期为一次通信, 需要与控制器进行3 次通信。第一次通信是触摸控制模块的din 端口通过串口向ads7843 发送控制字, 同时对x、y 的电压值进行采集。控制字如表1 所示, 其中,s 为数据传输起始标志位;a2~a0 为通道选择;mode 为a/d 转换精度控制位;ser/dfr 为参考电压的输入模式[5]。
将控制字以串行的方式写入到内部寄存器的verilog hdl代码如下所示:
if (dclk)
data_in <= {data_in[6:0],1’b0};
第二、三次通信则是ads7843 将触摸后的x、y的电压值转换为16 bit数据赋值给dout端口,然后芯片采集其高12 bit数据,低4 bit自动补零。本设计将采集到的串行的12 bit数据转化为并行的12 bit数据,其verilog hdl代码如下:
if (!dclk)
begin
if(rd_cd_strob)
begin
if(y_cde_config)
y_cde<={y_cde[10:0],adc_out};
else
x_cde<={x_cde[10:0],adc_out};
end
end
2 实验结果
2.1 仿真验证
整个控制器是在quartus ii 8.0中设计并仿真的。仿真分为两个部分,包括tft-lcd控制器的时序波形和ads7843芯片控制器的时序波形。仿真结果分别如图4、图5所示。
由图4可以得出,在一帧的数据(ovd的一个时钟周期内的数据)中,前1/3帧显示红色(olcd_r对应255),中间1/3帧显示绿色(olcd_g对应255),后1/3帧显示蓝色(olcd_b对应255);则相应的屏幕上1~90行显示为红色、91~180行为绿色,180~272行为蓝色,如图6所示。
下面分析x坐标值。由图5可以看到,当产生触摸时笔中断信号penirq变为低电平,此时片选信号cs变为低电平,其低电平维持时间为24个dclk时钟周期,在前8个时钟周期din端口写入控制字为10010010,在第10个时钟dout端口开始接收转化的12 bit数据,其值为011110001000。同理可分析y坐标值。在dout端口接收x、y坐标值之后,通过串并转换最终得到并行输出的x、y的坐标值,如图5中的ox和oy端口所示。
2.2 最终显示效果
fpga采用altera公司的ep2c70f896c6;彩色液晶触摸屏采用***东华公司的wxcat43-tg3#001r。最终的显示效果如图6所示。
使用verilog hdl编写触摸界面过于复杂,通过软件设计触摸屏操作界面则需要编写彩色触摸屏的ip核,本设计基于fpga的彩色触摸屏控制器能够实现颜色深度为24 bit,分辨率为480×272的tft-lcd控制和ads7843芯片的时序控制,为后续ip核的编写工作打下了基础。
蔚来汽车恢复用户免费换电政策
欣奕华科技在平板显示用负性光刻胶领域实现量产 预计今年将有1000吨的光刻胶交付用户
GaN或成5G市场发展新动力
一言不合就玩跨界 昂达金色小马41二合一笔记本
电动汽车通过换电池实现续航升级有何利与弊
基于Altera FPGA的彩屏控制器的设计和实现
Win10 ipv6无网络访问权限的具体解决方案
感知音频质量分析POLQA测试方案
巴西2018上半年风电装机容量达13180.7兆瓦,风力发电量为4098平均兆瓦
六轴机器人介绍
局势突变!特朗普又变脸了,再次套近乎、服软了
服务器BMC防火墙规则设置错误的解决方案
Amazfit跃我GTS 4定位精度全面升级
【节能学院】安科瑞ARD2F电动机保护器在广州地铁7号线益丰停车场项目的应用
工控机的CPU高速缓存与内存关系是什么
全球首批量产级浸入式液态散热主机已正式上市
中国企业开始成为存储市场的新兴力量
关于夜狼智慧用电对电气火灾预警的作用分析
模拟技术在某些性能方面胜于数字技术
盈利背后,中兴通讯做的三个正确选择