摘要:采用MAX II系列CPLD器件来实现LCD控制器。由于MAX II CPLD是唯一具有用户闪存(UFM)的CPLD,因此用一片CPLD 芯片就可完成LCD全部的时序控制、显示控制等功能,这样无需再加入其它的接口器件,使微处理器和LCD显示模块之间的接口电路变得更加简洁。 本文对LCD控制器的硬件及软件都给出了较详细的说明,并在EPM240ZM上实现了LCD控制器的功能。
关键词:CPLD,LCD 控制器,用户闪存
0前言
液晶显示屏(LCD)是薄型平面显示设备,由排列在光源或者反射器之前一定数量的彩色或者单色象素构成。这类显示屏已经成为大部分嵌入式系统不可缺少的组成部分。但是在嵌入式系统中八位和十六位微处理器大多没有内置的LCD控制器,又由于LCD屏的分辨率很高,即使有内置的LCD控制器,也较难进行控制;另外内置LCD控制器对内存带宽的占用较高,使控制器所能支配的资源也会变得非常有限。因此在微处理器和LCD屏之间加上一个LCD控制器是非常必要的。常用的LCD控制器主要有两种:专用的控制芯片和基于可编程器件的控制器。本文采用Altera公司的MAX II系列CPLD器件来实现LCD控制器。CPLD一般使用外加的串行EEPROM来存储非易失信息,而MAX II CPLD是唯一具有用户闪存(UFM)的CPLD,它支持用户存储高达8Kbits的非易失信息,因此不需要采用外部存储器,并且在实现LCD控制器时还可以利用CPLD的内部UFM振荡器来满足时钟需求,从而避免了采用外部时钟信号。这些独特的功能使MAX II CPLD成为实现LCD控制器最好的目标器件。
1 嵌入式系统的LCD接口电路结构
基于MAX II CPLD的LCD接口电路一般采用图1所示结构。图中LCD接口电路负责接受微处理器的配置,通过总线把DRAM上保存的显示数据读出,然后按照屏类型和显示设置转换为需要的格式,并按照屏时序要求发送出去。在设计显示控制器时,需要注意如下几个方面:支持的屏类型、总线类型的选择、同微处理器之间的交互方式、动态图像显示和中断设计。基于CPLD的LCD控制器可以提供合适的显示单元,它产生需要的时序信号,满足LCD的时序要求,同时卸载了微处理器和控制器繁重的LCD处理任务,从而提高了处理器和控制器执行其他操作的效率。
2 LCD 控制器组成与接口信号
2.1 LCD 控制器组成
由图1可知,LCD控制器有三个主要模块:有限状态机(FSM)、时钟分频器和用户闪存(UFM)模块。
1、初始化LCD和有限状态机模块
FSM模块有8个不同的状态。它用于初始化LCD,初始化完成后显LCD进行读写操作。图2所示为LCD模块的初始化步骤。为简化初始化过程,每次发送一条命令后,延时15ms(而不是检查忙标志的状态)。但是向LCD模块写入数据时,每一数据写操作之后,要检查忙标志的状态。这样就加速了写操作过程。
2、时钟分频器模块
时钟分频器模块主要是降低内部振荡器输出频率,从而满足了LCD模块的时序要求以及控制器的性能要求。该模块把振荡器输出信号osc的频率由.5MHz降低到43kHz左右。降低频率以后的信号(即Clk信号)从时钟分频器模块输出(见图3)。该模块主要代码为:
module divider (osc, clk);
input osc;
output clk;
reg clk;
reg [6:0]count;
initial
begin
count = 7'b0000000;
end
always @ (posedge(osc))
begin
count = count + 7'b0000001;
clk = count[6];
end
endmodule
来源:21IC电子网