现在东芝、飞利浦、泰鼎(Triend)、爱普生(EPSON)等公司都在生产高性能的图形显示控制器。EPSON公司的显示控制器可分为小规模、中小规模和大规模三大类。其中,小规模控制器用于字符或低分辨率显示场合;中小规模控制器用于单色640×480,彩色320×240显示场合,它的显存一般只有几十KB;大规模控制器用于800×600显示场合(64K色),具有高解像度,配用EDO-DRAM,显存可高达2MB。在实际系统中,选用了EPSON公司的视频接口芯片SED1356用于显示图像数据。
1、SED1356显示控制芯片介绍
SED1356(S1D13506)是EPSON大规模显示控制器家族中较新的一款,是以SED1354为基础控制器发展起来的更多功能的LCD显示控制器(SED1354只支持LCD接口,SED1355不支持TV接口)。它内置RAMDAC硬件X-Y轴转置2维加速器,共有114个寄存器,可以灵活地对各种不同的显示方式进行设置,功能非常强大,可以和目前市场上流行的多种CPU总线兼容。它主要应用于低功率、低价位的嵌入式系统,如PDA、GPS、商务自动化等。
SED1356支持最高为16位数据宽度的LED接口,使用FRM和调谐(dithering)技术,可以在TFT LCD、CRT和TV上最高显示64K颜色。它配置一个16位内存接口,可以支持最高2MB的EDO-DRAM。支持6色,256色和真彩色的颜色结构。对于TV电路,它支持TV的NTSC制式和PAL制式显示。在NTSC制式中它支持从400×396到720×484多种分辨率。图1所示为SED1356的典型应用框图。
1.1总线兼容性能
SED1356可以和多种CPU总线兼容,对于不同的CPU有不同的时序结构,通过对硬件的设计来选择。SED1356支持以下CPU总线类型(对于其它CPU的时序可以通过选择类似的时序结构来实现):
*SH-4/SH-3 Bus interface;
*Motorola MC68000/MC68030 Bus;
*Motorola PowerPC MPC82x;
*MIPS/ISA;
*PC Card(PCMCIA);
*Philips PR31500/PR31700/Toshiba TX3912;
*StrongARM;
*通用类型总线。
另外它还可以通过寄存器来设置多种内装存类型。具体可以使用以下内存:
512KB的EDO-DRAM(25×16);
512KB的FPM-DRAM(256×16);
2MB的EDO-DRAM(1×16);
2MB的FPM-DRMA(1×16)。
1.2 输出信号的类型和模式
*可以同时输出数字信号和模拟信号,并且这两种信号可以是各自独立的,即可以同时管理LCD和CRT/TV并显示不同的图像。它支持16色,256色和真彩色的颜色结构。
*对于TV通道,它通过嵌入式RAMDAC(一种数模转换方式)支持NTSC制式和PAL制式显示。对于CRT通道,它通过嵌入式RAMDAC支持最高64K颜色显示。对于数字RGB LCD通道,它支持最高64K颜色的TFT LCD显示。
*可以旁通LUT,每个像素可直接映射15/16位颜色深度。
1.3 显示特性
*它支持光标和墨水层,对于LCD和CRT或复合视频接口,支持独立的64×64×2硬光标和2位的黑水层。可以在内存中存储多个光标图像,并且通过寄存器的设置,在一定时间,使用其中的一个。通过寄存器的设置可以设定光标在屏幕上的位置。
*具有SwivelView特性,支持图像翻转,可以对显示图像进行90°、180°、270°的硬翻转。
*它支持虚拟图像,可以通过对寄存器的设置在内存中存储一个比实际图像大的虚拟图像,而屏幕就相当于一个窗口,可以移动它来显示虚拟图像的一部分。
*在SED1356内部有一个2D的数据加速内核,可以实现数据块的快速写、读、移动、填充等等。用以加速显示图像的刷新。
2、硬件设计
2.1 EP7312的总线接口
选用Cirrus LogIC公司ARM720T微处理器的EP7312作为MPU。EP7312的内核电路工作在2.5V,而外围电路工作3.3V,工业级产品的工作温度为-40℃~85℃。集成了SDRAM和增强数字音频接口,可动态编程18MHz、36MHz、49MHz、74MH四种时钟速率,其中在74MHz时钟下,其稳定处理能力达到66MIPS,峰值处理能力达到74MIPS,近似等同于100MHz奔腾处理器。EP7312主要为超低功耗所设计,其功耗最大不超过90mW。本平台选用74MHz时钟。
EP7312配备以下接口:
①支持两个外部存储器接口,第一个是ROM/SRAM/Flash接口,具有可编程等待态和突发模式能力,6个片选控制6个256MB片(section)的可寻址空间,第二个是16或32位宽的可编程SDRAM接口,允许与2个256MB的SDRAM段直接连接。②2个16550兼容UARTs接口;③2个同步串行口;④8×8键盘口;⑤2个可编程占空比的96kHz时钟输出PWM脉冲宽度调制器(Pulse Width Modulator)接口;⑥四个通用目的输入/输出口(GPIO);⑦直接与DAC、ADC和CODEC相连的数字音频接口。
2.2 SED1356与MPU总线接口
虽然SED1356可以和许多厂家的多种MPU直接相接,但它不支持具有ARM7内核的EP7312。因此通过分析SED1356这几种现成的总线连接模式,笔者认为PC卡总线连接模式较为简单,稍加修改,配以必要的时序逻辑转换关系就可以进行对接。可用MD[0:15]配置所使用的具体总线。
2.3 接口分析及实现
从上述接口信号的定义以及时序关系分析得出,EP7312的A[1:20]、DB[0:15]、NRST、NCS2、EXPRDY、NWR、NRD信号引脚和SED1356的A[1:20]、DB[0:15]、RESET、CS、WAIT、WE0、RD信号引脚可以分别进行连接。对于SED1356的M/R信号引脚,可以用EP7312的A21进行控制。这样可以选择不同的地址,进而控制SED1356对应的内存和寄存器。
对于SED1356上的WE1和RD/WR信号引脚,处理起来稍微麻烦。经分析得出:EP7312对外进行读写时,根据半字(16位)和字(32位)操作方式的区别,HALFWORD和WORD引脚会产生相应信号变化,由于SED1356的显存最高为16位,因此这两个引脚将不加以区分。由于WE1控制高位读写,RD/WR控制低位读写,可用EP7312的A0信号确定半字和字节的区别。时序转换关系由CPLD完成。总线连接框图如图2所示。
CPLD中的VHDL语言如下:
CPLD_RD/WR=not((not A0)or WORD orHALFWORD);
CPLD_WE1=not(A0 or WORD or HALFWORD);
上述逻辑完全实现了SED1356对字节的读写,其中CPLD_RD/WR控制低位的读写,CPLD_WE1控制高位的读写。
3、 软件实现
本电路的底层测试软件均用C语言编程实现。图3是SED1356的初始化流程图。
下面对软件实现中的主要部分进行说明。
3.1 虚拟图像的设置
在2M内存中开辟2块显存,1块用于虚拟显示(较大)、1块用于屏幕尺寸显示。前1块主要用于地图显示目的,可以通过横竖2个滚动条实现地图的全尺寸浏览,需开辟的空间主要取决于需要浏览的最大图形尺寸大小;后1块主要显示较为固定的信息,像菜单、固定图像、界面等。本方案如采用每像素16bpp显示方式,这样在640×480的屏幕上至少需要开辟614400B的显示内存。这样做的好处是不必等待图像数据的再次写入,屏幕图形可以进行快速切换,大大减少了转向地图显示等待的时间。
3.2 调色板的设置
对于真彩色,也即15/16bpp的颜色格式,不必使用调色板,对于4/8bpp颜色格式,SED1356有1个LUT表格,有3组各自表示R-G-B三种颜色,每组有256个位置,每个位置可以存放4位数据。可以通过寄存器来读写LUT表。当按照数据格式在内存中写入数据后,SED1356通过LUT表格来查找与显示数据相对应的R-G-B颜色,从而在显示器上显示出相应的色彩。
3.3 光标图像的设置
对于光标图像,采用的是2bpp的颜色格式,SED1356控制的光标是64×64大小的,共有4096个点,也就是使用1024个字节就可以储存一个光标图像。光标的起始位置为左上角,可用寄存器设定它的X、Y值,如图4所示。
图5和图6
在SED1356中有6个寄存器,分成2组,1组3个。每1组寄存器可以设定一种颜色,从而可以设置出两种默认的颜色:颜色0、颜色1。这两种默认颜色是按照16bpp的格式设置,即R-G-B:5-6-5。从而,对于光标图像2bpp表示的颜色如下,00表示默认颜色0,01表示默认颜色1,10表示背景色。这样用2位就可以设置光标一个点的颜色了,但光标的颜色只能在默认颜色0、1和背景色之间选。如果需要更改颜色,则需要对储存默认颜色的寄存器进行重新设置。
设置光标的2bpp的数据如图5所示。
3.4 RGB-565颜色显示格式
本接口使用RGB-565格式的真彩色显示数据格式,每种颜色需要占用2个字节,颜色排列并不规律,如图6所示,图6显存设置为小端格式。
本软件实现的特点是尽量模块化,尽量将整个程序分成众多模块,用子程序来实现,这样便于调试、修改。
结语
在全天候导航项目中,本液晶显示模块占用体积小,功耗低。能够很好的对存储的地图数据进行显示取得了良好的应用效果。