LCD控制器的设计和实现
扫描二维码
随时随地手机看文章
1. 引言
随着液晶技术的日益成熟,液晶显示器在显示技术中得到了越来越广泛的应用.当前LCD显示技术已经成为新一代平板技术显示技术的主流.LCD显示屏幕主要包括液晶屏幕,驱动电路以及控制驱动电路的系统。我们设计的LCD控制器主要是用来控制RGB模式的数据以及MCU模式的命令,参数的传输,实现LCD的控制功能. RGB模式主要有16bit输入,16bit输出; 16bit输入,18bit输出; 18bit输入,16bit输出;18bit输入,18bit输出;4种模式的传输。本文就LCD的驱动进行分析,介绍,提出硬件电路的设计以及验证方法。
2. LCD驱动器的介绍
2.1整体结构
LCD的控制系统是采用ARM公司的ARM926EJ-S,根据需求通过APB总线来控制LCD驱动电路的寄存器并设置相应的值,从而驱动LCD的显示屏幕。根据LCD显示屏的需求,LCD的驱动电路设计了2种接口模式:RGB和MCU。RGB在传输时,采用的同步方式,由LCD驱动电路产生象素时钟,处理数据的速度比较快,多用于同步通信中。MCU在传输时采用的是异步处理方式,处理数据的速度相比RGB而言要慢一些。
500)this.style.width=500;" border="0" />
2.2驱动器的内部结构
LCD驱动电路的内部如图2所示,APB总线是由ARM系统输出的控制信号线来配置整个LCD驱动电路的寄存器,实现输出信号的控制。IRQ和ACK等几根信号是跟DMA相连的,主要是中断的产生及清楚,如一帧发送完毕,FIFO里面数据为空,都会产生中断信号。 FIFO主要用来存储并转发数据,由于ARM的时钟在频率上要比LCD驱动的时钟信号快很多。FIFO就先把ARM写的数据存储起来.然后再根据LCD驱动的要求把数据转发出去。Timing Controller用来控制行同步, 帧同步,象素时钟,数据使能等信号的产生。 LCD驱动输出只有1种模式,为了减少引脚,在信号输出的时,把RGB和MCU模式的引脚复用在一起。
500)this.style.width=500;" border="0" />
2.3控制流程
RGB控制:当模块处于IDLE状态时,首先配置分频寄存器,帧同步寄存器,行同步寄存器,然后配置控制寄存器把相应位设置成RGB模式,并启动传输位。在RGB模式启动后,就开始往数据寄存器里写数据。
MCU控制:在模块处于IDLE状态时,首先配置分频寄存器,然后启动控制寄存器。启动模块之后,就在MCU命令寄存器里面输入要完成的功能。
3. LCD的测试平台
LCD的验证平台主要是以事务处理的方式产生激励,检查测试响应。在Testbench中,LCD的激励由ARM产生,向LCD输入想要产生的事务,经过LCD输入的接口产生一系列响应,然后检查响应对应的数值是否正确。
500)this.style.width=500;" border="0" />
由于思路的局限性和重复性,模块的设计和仿真一般不由同一个人设计,要做到设计和仿真相分离。仿真人员不必了解里面代码里面具体实现过程,只需要了解所要完成的功能,实现的是黑盒测试。在这种层次上测试可以认为模块的接口是由一个输入和一个输出接口构成的。测试平台的目的就是向输入接口产生输入,从输出接口检查输出。模块端口的这些动作并不是随机的,在大多数数字系统中,对于某些端口只会产生有限的事务处理。通常的情况下,这些事务处理就是对模块中的存储单元进行读写数据的操作。
3.3LCD输出的时序图
3.3.1RGB控制部分
在RGB模式中,LCD数据的扫描是以行为单位的。HSYNC是水平同步信号。PCLK是象素时钟。ENABLE是数据使能信号,当它为高时,在PCLK的上升沿输出有效数据。P_DATA是输出的数据。
水平同步信号的上升沿到ENABLE的上升沿的间隔称为HBP。把ENABLE的下降沿到水平同步信号的下升沿的间隔称为HFP。把水平同步信号的低电平(非有效电平)持续时间称为HSW。
HSW存在的必要性:水平同步信号为低电平有效。在水平同步信号有效时,需要等待HBP的时间,才从数据线取数。由于水平同步信号的有效电平持续时间通常比无效电平长,因此占空比不是50%。无效电平短些比较好。
HBP和HFP存在的必要性:从道理上说,LCD使用矩阵寻址这两个阶段完全可以没有。但是考虑到从前CRT电子枪行扫描时,需要一个返回时间,而且目前的制式中,在有效信号的两端分别加入了消隐时间。就是为了做到一致,这二者才出来的。
500)this.style.width=500;" border="0" />
3.3.2MCU控制部分
当lcd_conf[1]为1的时候启动了MCU模式, MCU模式只有2种操作, 往LCD里面写数据或者从LCD里面读数据. 首先在IDLE状态判断是进行写操作还是读操作. 如果是进行写操作, 就转到写状态去, 把数据写到LCD里面去, 输出的写信号置为低状态, 当计数器等于低状态设置周期数的时候,把写信号置为高状态。当计数器等于高状态设置周期数的时候, 表示一个写操作已经完成. 读操作也是同样的道理。
500)this.style.width=500;" border="0" />
4. 结束语
经过测试和验证等,LCD输出的引脚HSYCN,VSYNC,DATA,CS等一些基本信号测试的结果跟设计的功能完全吻合,表明代码的设计已经完成,接下来要做的工作就是跑综合进行时序分析,最后就是后端布局布线等。