摘 要: 结合ARM操作灵活和FPGA实时处理的优点,提出采用ARM+FPGA结构驱动高分辨率RGB888液晶显示屏。ARM接口丰富、操作灵活可以满足客户操作方便的需求;FPGA模块采用FPGA+DDR形式,数据存取速度达到400 MB/s可以满足画面刷新速度较快的需求;FPGA操作DDR方式采用双端口64 bit模式,设计32 bit数据读取宽度,实现RGB888数据无失真显示。通过ARM处理器LPC1788和Xilinx公司XC6SLX9硬件平台搭建形成产品,在很大程度上满足了工业液晶显示市场的需求。

传统工业液晶显示方案一般采用ARM结构[1],即ARM响应用户操作的同时又驱动液晶显示屏,实现人机交互操作。随着工业液晶显示的不断提高,高分辨率显示屏应用于工业场合,传统ARM方案驱动高分辨率显示屏已力不从心,操作反应迟钝、刷屏速度慢、显示效果差等缺点暴露出来。为解决上述缺点,本文给出一种ARM+FPGA结构驱动高分辨率液晶显示设计方案。

1 方案设计及工作原理

本文方案架构如图1所示,主要分为ARM操作处理和FPGA接收显示数据两大部分,其核心是用FPGA取代ARM内部显示缓冲区,提高ARM处理速度的同时,将ARM显示数据宽度由16 bit提升到32 bit,从整体上提升工业液晶显示器性能。

1.1 ARM操作处理

ARM操作处理结构如图2所示。画面信息通过人机交互接口和MCU下载到NAND Flash中,需要显示时,MCU将画面读出,根据要求送出需要显示的数据至FPGA。为达到高画质、刷屏速度快的效果,NAND Flash及SDRAM采用32 bit数据宽度的设计,MCU内部处理使用32 bit模式,需要显示的数据直接送出32 bit。

1.2 FPGA接收显示数据

FPGA操作处理结构如图3所示。FPGA主要完成以下任务:根据液晶显示时序产生读写显示控制部分;将接收的数据存储到DDR中;从DDR中读取需要显示的数据,将需要显示的数据转换为LVDS信号格式,输出驱动液晶显示屏。

1.2.1读写显示控制单元设计

根据液晶显示时序设计读写显示控制单元。各种液晶显示屏虽然时序有差异,但原理[2]相同,如图4所示,包括显示时钟DCLK、显示数据RGB_data、场频Vs、行频Hs、场消隐和行消隐,只要满足以上条件即可驱动显示屏。在行消隐期间将每行需要显示的数据从DDR中读取到读FIFO中用于该行的显示,完成每行的读操作后将写FIFO中数据存储到DDR中。

1.2.2 LVDS信号设计

LVDS信号中传输的数据是按照LVDS信号格式排列显示的,LVDS信号设计就是将需要显示的RGB888数据、DE使能信号和时钟信号转换为图5所示的LVDS信号格式[3]。

2 硬件设计

硬件设计主要分为ARM硬件设计模块和FPGA硬件设计模块。

2.1 ARM硬件设计

ARM硬件设计部分主要由ARM芯片1788、4片8 bit NAND Flash存储芯片及两片16 bit SDRAM组成,如图6所示。LPC1788通过并口、串口或者USB接口接收画面信息,经过处理预先存储到NAND Flash中;根据用户需求再从NAND Flash中读取将要显示的画面信息,同时配合SDRAM操作,将需要显示的画面送至FPGA硬件设计模块,进行下一步驱动显示屏操作。

2.2 FPGA硬件模块设计

FPGA硬件设计模块主要由一片Xilinx公司的XC6SLX9芯片和一片镁光公司的MT46V32M16-5B组成,如图7所示。在XC6SLX9内部需要设计的硬件结构包括:接收LPC1788送出的需要显示的数据;从MT46V32M16-5B中读取显示数据转换至LVDS驱动显示屏。

为方便处理,保证系统稳定可靠,FPGA芯片XC6SLX9内部时钟资源分配如图8所示。外部时钟40 MHz输入到FPGA内部时钟锁相环,经设计分别输出200 MHz至MT46V32M16-5B;80 MHz至DDR操作控制单元、写FIFO的读时钟和读FIFO的写时钟;400 MHz至LVDS信号产生模块的同时,经7分频输出57.14 MHz至读FIFO中的读时钟。其中,写FIFO的写时钟来自LPC1788的MCU_CLK。

3 系统方案设计和整体显示效果测试

3.1系统方案设计要点及解决方法

FPGA程序时序逻辑基于Xilinx ISE软件提供的编程环境和相关资源[4],通过VHDL语言编写完成。结合系统特点,在进行时序逻辑设计时需要解决以下问题。

(1)ARM送出的显示数据是一种随机位置的像素点,所以在存储数据时只能是单个数据的存储,不能批量操作,否则会导致存取速度降低。

(2)高分辨率显示屏像素点一般在1 280×1 024以上,此类显示屏要求驱动数据是奇偶列数据分离驱动,即双路LVDS接口(见图5)。因此在实现LVDS数据接口操作时,就需要将显示的数据进行奇偶分离处理,同时送出至显示屏。

为解决上述问题,本方案采用双端口操作DDR控制器模块,即其中一个端口负责ARM送出奇地址数据的接收至DDR和奇地址显示屏数据的读取至读奇FIFO;同时,另一端口负责偶地址的存取并最终至读偶FIFO。在进行显示时,采用双路LVDS信号转换方式,同时送出LVDS信号驱动液晶显示屏。

3.2 系统方案硬件搭建

LCD液晶显示屏采用三星公司的LTM170ET01。系统采用ARM底板+FPGA核心板组合的方式实现,ARM模块电路板(底板)如图9所示,FPGA模块电路板(核心板)如图10所示。在图9中,上位机通过USB接口或者串口与ARM实现人机交互,ARM将需要显示的数据送至FPGA模块;FPGA将接收到的数据根据需要通过LVDS接口送出至LCD液晶显示屏。

3.3显示效果评测

传统ARM显示处理模式为16 bit,即RGB656结构。显示屏接口数据为RGB888结构,就需要将RGB565结构通过高位补低位的方式扩展到RGB888模式。而本文设计的数据接口为32 bit,即xRGB8888模式,实现了与显示屏接口的无损失对接,显示全彩无失真,如图11所示。

传统ARM方式既要响应用户操作,又要驱动显示屏,占用了ARM较多的资源。而本文采用ARM+FPGA结构,将显示部分由FPGA完成,节省了ARM资源的同时,提高了ARM的响应速度。

为了节约成本,将LVDS信号接口放在FPGA内部实现,省掉外部专用LVDS接口转换芯片,降低了产品硬件成本,提高了产品竞争力。

参考文献

[1] NXP Semiconductors. LPC178x/7x.32-bit ARM Cortex-M3 microcontrolle r; up to 512 KB Flash and 96 KB SRAM; USB Device/Host/OTG;Ethernet;LCD;EMC.Rev.00.08.1.[Z]. 2011.

[2] Lux Display. AT070TN83 V.1[Z].

[3] Samaung Electronics.Samaung TFT-LCD.LTM-170ET01[Z].21.2009.

[4] Xilinx. Spartan-6 FPGA memory controller UG388(v2.3)[Z]. 2010.

打开APP精彩内容

点击阅读全文

fpga驱动rgb液晶屏_以ARM+FPGA结构驱动高分辨率液晶显示设计与效果测试相关推荐

  1. fpga驱动rgb液晶屏_正点原子开拓者FPGA开发板资料连载第五十四章基于的数字识别实验...

    1)实验平台:正点原子开拓者FPGA 开发板 2)摘自<开拓者FPGA开发指南>关注官方微信号公众号,获取更多资料:正点原子 3)全套实验源码+手册+视频下载地址:http://www.o ...

  2. fpga驱动rgb液晶屏_用FPGA设计LCD 转 VGA 其实vga和lcd驱动 非常类似

    这个东西其实是在上一个冬天就做完了,而且似乎已经产业化了,当时是为一位朋友做的,这个朋友再卖给产业化的人,就像流于俗套的故事一样,这个朋友拿到了钱,不过不像项目开始时说的那样与我有关.想想多年前一起吃 ...

  3. MCU驱动和RGB驱动的液晶屏的区别

    概况来讲,RGB驱动需要的硬件条件高,比如用STM32F429的LTDC+DMA2D模块,外加SDRAM作为显存.而MCU接口,STM32F407系列的控制器就整合了这个模块,包含6800和8080两 ...

  4. ESP32驱动LCD液晶屏选型、262K什么意思?SPI写LCD的GRAM时序、MCU液晶屏驱动IC的寄存器功能

    最近转战ESP32,ESP32-D0WDQ6 型号的GPIO只有那么20个左右,且还有几个GPIO只能做输入,非常捉襟见肘.所以如果要驱动LCD液晶屏,绝大多数都会选择SPI接口的MCU屏. 为了编写 ...

  5. 单通道驱动LVDS驱动1080P液晶屏

    上周末把单通道LVDS驱动1080P液晶屏调通了.通过FPGA接收单8的LVDS输入,内部一个倍频,数据组合格式如下:

  6. STM32F103软件模拟SPI接口驱动ILI9486液晶屏

    STM32F103软件模拟SPI接口驱动ILI9486液晶屏 ILI9486的工作模式 ILI9486的SPI总线方式简介 ILI9486的3线SPI总线底层驱动配置步骤 ILI9486的工作模式 I ...

  7. arduino下载库出错_arduino的I2C通讯 3:驱动1602液晶屏

    上个推送,我们学习了I2C功能的基础知识.而且知道了使用很多器件都需要安装库.本次,我们一起来做一个实例,用arduino驱动1602液晶屏 1602代表屏幕有16列,2行.传统的驱动方式占用了大量的 ...

  8. 通过 I2C 驱动 LCD1602 液晶屏(51单片机)

    通过 I2C 驱动 LCD1602 液晶屏(51单片机) 硬件实物 原理图 3.程序 #include <reg51.h> #include <intrins.h>#defin ...

  9. stm32 arduino 驱动jlx液晶屏

    stm32 arduino 驱动jlx液晶屏 1.说明 单片机这次用的是STM32F103C8T6,烧成arduino用,库还是我们的老朋友u8g2.液晶屏型号是JLX 240160G-676,SPI ...

最新文章

  1. javascript php 区别,PHP 或者 JavaScript 这些弱类型 的|| 和 | 的区别, 附代码;
  2. 第二十六期:HTTP 3的前世今生及尝鲜
  3. MySQL 引擎特性 · InnoDB Buffer Pool
  4. 3-7:类与对象下篇——static成员
  5. C语言 结构体的初次运用
  6. maven编译:target/surefire-reports for the individual test results
  7. 第15条:使可变性最小化
  8. CIA网攻中国11年,内网防护刻不容缓!
  9. 最简单的直播礼物连刷特效制作(带源码)
  10. 社交网络分析算法(SNA)
  11. 《设计模式》(精华集)
  12. Matlab三维绘图------三维曲线图
  13. 数据预测之BP神经网络具体应用以及matlab代码(转)
  14. 51单片机 74HC595应用实例+Proteus仿真
  15. Linux 之软连接
  16. 开源项目与J2EE架构介绍
  17. -bash: /usr/local/soft/jdk1.8.0_321/bin/java: 无法执行二进制文件
  18. 采取何种措施保护专利权?
  19. 用 python selenium 爬简书,Python自动化领域之 Selenium WebDriver 学习第2篇
  20. IBM WebSphere Portal宕机或性能低常见问题分析 及解决措施

热门文章

  1. 线性回归实验之成人死亡率预测
  2. python 六角形程序
  3. mongodb客户端操作(MongoRepository)
  4. openlayers6 使用svg格式图片作为Icon标记
  5. 我们怎样在工作中获得幸福感?
  6. 汇编语言 十六进制转换为二进制
  7. 微信小程序 view 内控件位置问题、以及定位问题(column(显示为多行) 和 row (显示为一行))
  8. 2022年有哪些性价比高的蓝牙耳机?学生党蓝牙耳机推荐
  9. 2021东华杯-Re-All
  10. 网络安全专业有哪些岗位