当前位置:首页 > 嵌入式 > 嵌入式软件
[导读]基于ARM与FPGA的LCD控制器设计

随着显示屏技术的不断发展,真彩液晶显示屏以其高分辨率、高对比度及高清晰度等优势逐渐在嵌入式显示系统中占据重要地位。目前,基于嵌入式平台的LCD显控技术的实现主要有两种方式:ARM内嵌LCD控制器和独立的控制器件。但是这两种实现方式都存在着不足之处,内嵌控制器的使用可能增大处理器的负担和限制显示帧率,而外部控制器件不仅成本高,而且专用性比较强,很难适应不同类型的液晶屏。

据此存在的问题,这里提出一种基于ARM与FPGA的LCD控制器设计方案,该设计方案一方面能够通过操作LINUX OS下的Framebuffer设备提高显存的写入速率及减轻处理器的负担,另一方面用FPGA来实现LCD控制器的设计,开发周期短、功耗低,同时具有灵活的移植性,可应用于不同中小尺寸的液晶显示屏。

1 系统组成及工作原理

系统主要有微控制器、FPGA(LCD控制器)、存储单元以及外设接口组成,系统组成框图如图1所示。

系统的工作流程:在FPGA内部的时序发生电路所产生的时序控制信号作用下,LCD控制器通过Framebuffer接口从微控制器读出显示所需的数据存入显示缓存SRAM中。同时LCD显示屏从显存SRAM中读取显示数据,并通过数据格式转换电路直接将数据信息实时显示。

2 系统硬件设计

2.1 LCD控制器

LCD控制器是基于FPGA实现的。本方案采用Altera公司的CvclONe(飓风)系列EPlC6Q240。FPGA具有高速的数据传输I/O接口,可实现高速的显存读取速率,大大提高LCD显示的帧率。而同时FPGA是可编程逻辑器件,可实现复杂的逻辑运算及提供复杂的控制时序。LCD显示屏采用LQ035Q3DG01型的TFT-LCD液晶显示屏,分辨率为320×240,图像信号为RGB格式。

由于SRAM有较高的读写速度,该设计方案的显示缓存采用1片IS61LV51216AL型SRAM,其容量为512 KB,读写速度为10ns左右。而显示一帧图像的大小为125 KB(320x240x2/l024),FPGA对显存的读写速度约为200 ns,因此满足系统要求。图2为LCD控制器电路连接图。

2.2 ARM9微控制器

该系统设计的主控单元采用ATMEL公司的AT9lRM9200(简称9200)作为MCU,该处理器是基于ARM920T内核,工作主频为180 MHz。性能可达到200 MI/s,系统采用开源的LINUX OS。但是ARM9作为系统的控制终端,需要完成信息采集、处理以及与外部通信等多项工作,而LCD控制器如果也要从内存中读出数据显示,这就会造成处理器负担,从而降低显示缓存读入数据的速率,影响LCD的实时显示。因此这里提出一种基于LINUX 0S下的Framebuffer接口的应用方法,大大提升显存读入数据的速率,从而提升整个显示系统的实时性。图3为AT91RM9200接口电路连接。

3 系统软件设计

系统的软件设计主要分为基于FPGA的LCD控制器设计与LINUX OS下Framebuffer驱动程序设计2部分。

3.1 LCD控制器设计

3.1.1 LCD控制器组成

该设计方案的LCD控制器主要由缓存读写、MCU接口及LCD时序控制等模块组成,具体组成如图4所示。

3.1.2 LCD控制器设计原理

由TFT-LCD液晶屏显示原理可知,显示所需的主要控制信号有像素时钟信号、行/场同步信号以及使能信号。该方案的显示屏分辨率为320x240,要求设计液晶显示屏的刷新频率为60 Hz,即场同步信号(VSYNC)为60Hz,刷新一屏所需时间为1/60 s,而一场则由240个行同步信号组成,那么一个行同步信号的周期为1/(60x240)s,即可得行同步信号(HSYNC)为15 kHz。同理可得像素时钟信号(CK)为5MHz。

采用FPGA内置的锁相环IP模块(PLL)将FPGA 50 MHz时钟信号F_CLK 10分频为5 MHz的像素时钟信号。应用状态机方法,用Verilog硬件描述语言设计时序控制模块,它为LCD提供满足时序要求的控制信号VSYNC、HSYNC以及ENAB。设计完成后在QuatuslI环境下完成时序仿真,得到的仿真结果满足时序要求,仿真图如图5所示。

SRAM为显存模块,由图2可知LCD控制器与微控制器之间的数据传输是在ARM的时钟控制下读入,而同时LCD屏显则是在像素时钟信号CK的控制下从SRAM中读取数据。针对该异时钟域之间数据的传输问题本方案采用FPGA设计实现异步FIFO来完成。

3.2 Framebuffer驱动设计

Framebuffer是Linux内核中的一种驱动程序接口,该接口将显示设备映射为帧缓冲区。平台使用Linux2.6.25内核。在Linux2.6内核当中,通常采用分层的驱动设计框架。对设备进行分层和分类管理,驱动底层为总线驱动,上层为具体设备驱动。在Framebuffer驱动程序中,其软件设计流程为:首先需要针对该具体的设备和硬件连接注册总线类型及申请系统总线资源;其次,将具体设备驱动程序注册进入总线链表,Linux内核根据设备驱动程序中提供的探测函数检测总线设备类型;最后在驱动探测函数中实现具体设备类型的注册。以下为其具体的实现过程。

1)资源申请 系统中,9200通过外部总线接口的BANK7与FPGA FIFO接口连接,采用16位静态总线方式对FIFO数据进行写入操作。根据驱动设计框架,驱动程序设计的第一步需要通过系统调用platform_device_regiSTer函数申请总线资源,示意代码如下:

2)驱动注册 在具体设备驱动中,通过使用module_init宏与module_exit定义驱动模块的加载与卸载方法,在模块注册函数中使用plat-form_driver_register函数将具体设备的platform_driver结构体注册进入系统总线链表,platform_driver中为总线提供具体设备的probe与remove等操作方法,其示意代码如下:

3)Framebuffer设备注册 在Linux中,通过fb_info结构体对帧缓冲设备信息进行描述。在fb_info中,较为重要的结构有fb_var_scree-ninfo、fb_var_screeninfo、fb_ops。其中,fb_var_screeninfo记录用户可修改的显示控制器参数,包括屏幕分辨率;fb_fix_screeninfo记录用户不能修改的显示控制器的参数,如屏幕缓冲区的物理地址等;fb_ops记录了具体显示设备IO操作的实现方法。驱动通过register_-framebuffer函数将fb_info记录的显示设备信息注册进Framebuffer设备链表。

在Linux文件系统中,Framebuffer设备的主设备号为29,次设备号为帧缓冲序号。Framebuffer设备注册后通过mknod指令在系统dev目录下创建Framebuffer设备文件节点,应用层程序可通过Framebuffer设备文件实现Framebuffer设备的访问和操作。

4 结束语

该设计方案的LCD控制器达到实时性及显示帧率的要求,每秒显示至少25帧。基于FPGA设计的LCD控制器技术具有应用广泛、移植性强、开发周期短以及成本低等优点,可以适用于众多的需要LCD液晶显示的系统或场合。
 

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭