DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1151|回复: 0
打印 上一主题 下一主题

[待整理] 基于FPGA的彩屏控制器设计

[复制链接]
跳转到指定楼层
楼主
发表于 2014-10-12 16:37:20 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
触摸屏技术方便了人们对计算机的操作使用,是一种极具发展前途的交互式输入技术,受到各国的普遍重视,并投入大量的人力、物力对其进行研发,使得新型触摸屏不断涌现[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]。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2025-8-1 20:50 , 耗时 0.100406 秒, 21 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表