e-works数字化企业网  »  文章频道  »  产品创新数字化(PLM)  »  EDA

基于Niosll的TFT-LCD控制器设计与实现

2008/9/22    来源:万方数据    作者:杨亮亮  凌朝东  李国刚  刘一平      
关键字:NiosII  LCD控制器  IP核  
随着液晶显示器在便携式嵌入式产品中得到了愈来愈广泛的应用.本文基于Altera公司的NiosII软核处理器,在FPGA芯片上完成了一种TFT-LCD控制器的设计。该控制器具有支持多种颜色深度、根据不同LCD面板的参数而可配置等特点,支持大部分通用的TFT-LCD面板。使用硬件描述语言和Altera公司的EDA软件Quartus II V7.O进行设计.并完成KTL级仿真与布局布线后的后仿真及板级验证。

    引言

    液晶显示器(I.quid crystal display,LCD)以其体积小、平板化、无辐射、低功耗和接口数字化等特点在便携式嵌入式产品中得到了愈来愈广泛的应用,有着非常广阔的市场前景。但是LCD屏的生产厂商很多,标准也不统一,不同厂家的LCD屏常常不能与一般的LCD控制器无缝连接。而LCD屏厂家推荐使用的其为LCD屏专门设计的时序芯片价格较高,性能却不见得好,而且外部接口逻辑需要重新设计,附加功耗等。为了最大限度地解决以上的问题,同时为了实现单片系统的设计目标,本文提出了基于SOPC(system on programmable chip)技术,采用嵌入式Nios|I软核处理器,在FPGA芯片上完成了高性能TFT-LCD控制器的设计。

    1 设计要求与整体结构介绍

    本设计实现的TFT-LCD控制器采用VerilogHDL设计,支持多种颜色深度(每个像素采用几位编码)模式,同时适用于具有不同参数的TFT-LCD面板。控制器中图像数据缓存器image_fifo采用片内FIFO,大小为256x24bit,也可以根据需要进行调整。图像数据采用DMA传输方式,通过总线主端口突发块传输方式实现从原始图像数据存储器image-ram到片上图像数据缓存器image_fifo的自动数据读取。

    TFT-LCD控制器设计要求:独立的行/列同步信号:

    支持24bpp、18bpp、16bpp、8bpp、4bpp和自定义颜色深度模式:最大支持液晶屏幕大小是1,024×1,024像素;具有256x24bit的调色板;支持Avalon总线:输出数据24bitRGB(8:8:8);DMA传输模式。

    典型的液晶显示应用系统包括如下几个部件:液晶显示器,液晶显示控制器,总线,MCU,显示存储器。液晶显示控制器在显示系统中起着关键的作用。本设计采用自顶向下的设计方法,根据液晶显示控制器设计要求,可把其划分为4个主要组成模块:接口模块、内存模块、数据处理模块和时序产生模块,图1是系统的结构图。

    2详细设计

    2.1MCU与总线的选择

    MCU是一个显示系统的核心,它负责整个系统包括对液晶显示控制器的配置,同时处理生成需要被显示的数据并保存在显示存储器中,为控制器提供原始的显示数据。在系统初始化时,MCU负责根据软件的需要和液晶显示器的参数来配置显示控制器,待配置完成后启动显示控制器开始显示图像。在显示过程中,MCU负责接受处理控制器发出的中断信号,检查中断类型,并作出相应的处理。

    本设计选用的是Altera公司推出的嵌入式Niosll软核处理器,该处理器具有最高能达到200DMIPS的性能。Niosll处理器允许用户增加自定义指令和自定义硬件加速单元,无缝移植自定义外设和接口逻辑,在性能提升的同时,方便了用户的设计。

    图1 系统结构图

    基于NiosIl软核处理器的SOPC系统采用的是Avalon交换式总线,该总线是Altera开发的一种专用的内部连线技术。Avalon交换式总线由Altera开发的EDA设计工具SOPC Builder自动生成,是一种用于系统处理器、内部模块以及外设之间的内联总线。Avalon交换式总线使用最少的逻辑资源来支持数据总线的复用、地址译码、等待周期的产生、外设的地址对齐(包括支持原始的和动态的总线尺寸对齐)、中断优先级的指定以及高级的交换式总线传输。在传统的总线控制模式下,当一个master占用总线时,其它的单元不能同时使用,而Avalon总线却允许他们共享。

    2.2接口模块设计

    接口模块是作为Avalon总线的从接口,主要是实现Avalon总线从接口的信号定义与一组寄存器的定义。在系统启动之前,处理器通过Avalon总线对控制器的一组寄存器进行配置及读取状态。这组寄存器包括:控制寄存器、时序寄存器、状态寄存器、DMA传输地址寄存器和中断寄存器。具体的寄存器功能如表1所示。

    其中,控制寄存器的Edma位是用来启动DMA,Pmode位用来选择颜色显示模式(24bpp、18bpp、16bpp、12bpp、8bpp、4bpp和自定义颜色模式),Eirq位用来使能中断,5-14位为LCD屏水平尺寸大小,15-24位为LCD屏的垂直尺寸大小,由此可见该控制器最大支持屏幕大小是1,024X1,024像素,其他位为保留位。时序寄存器是用来产生LCD工作时所需要的时序参数,如LCD的像素扫描频率参数、行扫描频率参数、列扫描频率参数等。状态寄存器用来查询中断状态。DMA地址寄存器用来设置和查询DMA传输的起始地址。中断寄存器用来判断中断来源和清除中断状态。

    表1 LCD控制器的寄存器组

    2.3内存模块设计

    内存模块是Avalon总线的主接口部分,在系统启动之后,处理器对DMA控制器进行配置(设置DMA传输起始地址与开启DMA传输),然后进行DMA传输,完成图像数据存储器image-ram中的图像数据到片上图像数据缓存器image-fifo的独立读取。采用DAM传输方式是为了把NiosIl软核处理器从频繁地进行数据读取操作的工作中解脱出来,这样可以大大提高系统的工作效率。设计中采用有限状态机来实现Avalon总线主端口的DMA控制器。

    图2 Avalon总线主端口突发读传输时序

    根据Avalon总线突发块传输方式时序要求,如图2所示,该状态机可分为三个状态:Idle状态、Address状态、Data状态,如下图3所示。Idle状态为空闲状态,在该状态下主要是等待DMA启动信号的到来,根据状态寄存器中的LCD屏水平、垂直尺寸参数寄存器中的值对块传输数量进行初始化,同时根据DMA地址寄存器中的值对DMA起始地址进行初始化。当DMA使能信号开启和片上图像数据缓存器image_fifo空闲时,跳转到Address状态;在Address状态下,将等待总线上的等待信号waitrequest的取消便进入Data状态;在Data状态下,主要是读取DMA地址寄存器指向的内存中的数据,每连续读取一个数据后,块计数器减1,当读取一块数据(8个数据)后便回到Address状态下继续等待,同时地址自增;当读取完一帧图像数据后,又回到Idle状态,同时产生中断信号,通知处理器已经完成了一帧数据的传输,等待下一帧数据传输的开始。

    图3 DMA控制器状态机图

    2.4数据处理模块设计

    数据处理模块负责根据不同颜色深度模式对读取后的图像数据进行数据转换,产生适合LCD显示的数据。LCD输入RGB数据都是8位,一共为24位,例如在系统的内存SDRAM的图像数据缓存器image_fifo中存取了一幅颜色深度为16bpp的bmp图片,每个像素点的RGB分别为5:6:5位,而LCD的输入RGB各为8位,为了能使这幅图片在LCD显示,必须对读取过来的数据进行处理。这里把第4~O位后再补上3个0后形成8位作为LCD输入R的值,把第10-5位后补上2个O作为G的值,依此类推,把第15~11”位后补上3个0作为B的值。4bpp、8bpp和自定义模式由于颜色不足,在设计中加入了256X24bit的调色板。在自定义颜色模式可以手动对调色板的地址进行预设来定义图像输出的颜色。调色板采用了片上RAM,它的每个地址值所对应的颜色值都是24bit的,因此不需要经过处理可直接输出给LCD显示。

    2.5时序产生模块设计

    Niosll处理器根据LCD正常工作的时序要求来配置时序寄存器的各个参数值,以产生LCD工作所需的时序。其中,SYS-CLK为系统的工作时钟50M,通过配置时序寄存器中分频数的值,对50M的时钟进行一定的分频,得到LCD的像素扫描频率。时序产生模块还负责产生颜色深度模式锁定信号、image_fifo读请求信号、imagefifo数据有效信号。

    同时,在数据有效信号(DE)有效前,需检查image_fifo中是否存有数据,以确定是否进行数据读取和传输。在帧传输过程中需要进行颜色深度模式锁定,以免出现传输错误。根据不同颜色深度模式,image_fifo读请求信号fifo_rdreq-ext不同:24bpp与18bpp每次都读取,16bpp间隔1次读取,8bpp间隔4次读取,BPP_4间隔8次读取。因为Avalon数据总线的宽度为32位,如在16bpp模式下,即每一次在DMA传输的Data状态下完成一次块传输是连续读取了2个像素点的值,在读取到的32位数据中低16为前一像素点的值,高16位为后一个像素点的值,数据在image_fifo中要分2次读取。

    3仿真与验证

    完成了各个模块设计后,需要对整个设计进行前仿(功能仿真),前仿的目的是从逻辑上验证整体设计的正确性,经过仿真分析,IP核设计正确。完成功能仿真后运用SOPCBuilder工具搭建系统,系统包含NioslI软核处理器、SDRAM控制器、TFT-LCD控制器等部件,然后生成系统配置文件,最后对整个SOPC系统进行编译、综合,最终生成了对应于具体器件的逻辑网表EDF文件和可下载的sof文件。把生成的sof文件下载到1C20开发板上进行验证,验证用的LCD屏是LG320X240TFT-LCD。从存放有颜色深度为24bpp、大小为320X240bmp图片的SDRAM内存中读取数据到1C20开发板的TFT-LCD上显示。用EDA设计软件Quartus IIV7.0中的嵌入式分析仪Signal-tap对控制器中的关键信号进行在线仿真,仿真波形如图4所示。

    图4 LCD工作时序仿真图

    4 结束语

    本设计的最大特点就是克服了以往一些LCD控制器不够灵活的缺点,采用了SOPC设计技术,设计出了具有一定通用性的TFT-LCD控制器,可以适用于大部分的TFT-LCD,这样给在嵌入式系统设计中用到TFT-LCD控制器的设计者提供了方便。设计中采用了模块化设计方法,各个模块的结构与HDL代码都经过了优化,可以将其作为一个lP核接入到其他系统,即该控制器除了可以作为一个器件直接挂接到Avalon总线外,还可以通过稍微修改接口模块与DMA控制器就可以使控制器无缝的挂接到除Avalon总线外的其他总线上,如APB总线等

责任编辑:赵蔓
本文为授权转载文章,任何人未经原授权方同意,不得复制、转载、摘编等任何方式进行使用,e-works不承担由此而产生的任何法律责任! 如有异议请及时告之,以便进行及时处理。联系方式:editor@e-works.net.cn tel:027-87592219/20/21。
兴趣阅读
相关资料
e-works
官方微信
掌上
信息化
编辑推荐
新闻推荐
博客推荐
视频推荐