LCD控制器的FPGA实现

2017-11-03 00:46陈东成胡敬营曾范昌
电子器件 2017年5期
关键词:解码串口分辨率

陈东成,胡敬营,曾范昌

(江苏自动化研究,江苏 连云港 222061)

LCD控制器的FPGA实现

陈东成*,胡敬营,曾范昌

(江苏自动化研究,江苏 连云港 222061)

为实现PC输出在LCD原屏上的显示,设计了一种基于FPGA的LCD控制器,采用IP核搭建系统的框架,系统核心控制CPU采用了Xilinx的MicroBlaze软核,系统对外通信通过串口实现;通过Xilinx的集成逻辑分析仪IP核ILA在线采集输入、中间以及输出数据,验证系统的可行性及数据处理的正确性;最终的实验结果表明,所设计的控制器能够驱动LCD原屏,并且支持多种接口的视频输入,显示画面稳定,同时实现了两路视频的画中画显示,并可作为PC输出设备及视频监视设备。

FPGA;视频接口;LCD控制器;IP核;ILA

计算机的显示设备已经从传统的CRT显示器过度到当前的液晶显示器,目前液晶显示器已经是计算机显示设备的主流,并且显示器的分辨率正朝着越来越大的方向发展,显示接口类型也越来越多样化。常用的显示器接口类型有VGA、DVI接口,较新型的显示器具有HDMI或者DisplayPort显示输入接口,然而接口中用到的最多的依然是VGA接口,几乎所有的显示器均具有VGA接口,主流计算机通常都有VGA和DVI两类输出类型。目前生产显示器的厂商众多,各大PC厂商均有自己的显示器品牌,其他公司如三星、AOC等厂商则专门研发生产显示设备,并占有较大的视场。LCD控制器是显示器的核心控制部分,用来控制显示器的输入类型、使显示器适应输入视频的分辨率以及调整输入视频的亮度、对比度等参数。当前各大厂商的LCD控制器多采用专用芯片作为控制核心,芯片的核心技术被少数几个厂商掌握,国内则在核心芯片方面受国外厂商制约;另外,国外厂商生产的LCD控制器芯片更新换代的周期极快,通常3年~5年就会停产,无法满足一些国产显示设备的保障需求。针对以上的问题,设计了一种基于FPGA的LCD控制器,该控制器核心框架由IP核搭建,通过Xilinx的软核MicroBlaze控制IP和的工作;并且设计的控制器能够支持多种类型接口的视频输入,LCD原屏驱动信号直接由FPGA的LVDS数据给出,对外通过串口实现对系统的控制,能够满足某些特殊应用的多功能综合显示的需求,并且显示驱动控制器的核心技术采用IP核实现,将逻辑在FPGA芯片上实现,使得功能不受特定芯片的影响,满足某些特殊产品保障周期长的要求[1-3]。

所设计的LCD控制器支持普通计算机的常用输出接口,具有VGA、DVI、HDMI,并且本系统中还添加了PAL/NTSC接口,满足了科研生产使用中监视器的功能。目前实现了单路多种接口视频信号的输入及显示,已经两种视频的画中画显示。在后续的工作中,将研究实现多路视频的画面分割显示以及通过命令选择任意路视频的全屏显示,更加丰富显示设备的功能,满足特殊领域的应用。

1 系统设计

设计的LCD控制器主要包括输入接口、输出接口、解码模块、数据缓存模块、串口控制、电源模块、外部存储模块以及FPGA核心处理模块几个部分,系统框图如图1所示,以下分别介绍各个部分的组成及功能。

图1 系统功能框图

图2 LCD原屏驱动时序图

1.1 输出显示接口设计

本文所采用的LCD原屏是SHARP的TFT-LCD模块,该屏的分辨率为1 600×1 200,驱动数据为24 bit数据,分为R、G、B 3种数据,每种数据占8 bit。LCD的对外接口为两场800×1 200的LVDS信号,每场信号有4对数据线和一对时钟线[4]。图2为LCD原屏的LVDS驱动数据协议时序,由图可知LVDS信号中包含了所有的图像数据信息以及视频的同步信息。系统的图像数据在FPGA内根据显示屏的驱动接口协议进行编码,通过LVDS信号引脚输出,直接驱动LCD原屏[5-6]。

1.2 视频输入模块

系统采用了ADV7842作为视频解码芯片,该芯片可解码多种类型的视频信号,包括HDMI、DVI、VGA以及PAL/NTSC接口类型的视频,这包含了显示器常用的接口类型。解码芯片支持HDMI 1.4a协议,由于DVI与HDMI的兼容性,并且该芯片有两组HDMI解码接口,因此该芯片同时也能够解码DVI 1.0信号。该解码芯片的模拟视频接口支持VGA,最大支持1 920×1 200@75 frame/s的UXGA模拟视频。视频解码后的输出格式可选择RGB或YCbCr格式,对于PAL/NTSC制的各行扫描视频可转换成逐行扫描视频输出。该解码芯片的上述几种数据接口并行存在,但是同一时刻只能有一种接口工作,满足了显示器多种接口类型的要求[7]。

1.3 数据缓存单元设计

由于所设计的LCD控制器支持多种分辨率的视频输入,将输入的视频都将在一块1 600×1 200的LCD显示屏上输出,对于输入分辨率不等于1 600×1 200的视频,需要将视频转换成1 600×1 200的分辨率输出显示,然而所用的FPGA资源宝贵并且非常有限,并且系统需要缓存的数据量较大,片上资源无法满足需求,因此这里采用外部DDR3存储芯片作为数据处理的中间缓存芯片。系统目前的硬件设计是4路输入视频,为后续研究4路画面分割器等其他功能做了准备,并且为以后3 840×2 160视频的显示设备的研发做准备,系统在设计时采用了4片DDR3芯片组成了64 bit的外部存储空间,DDR3芯片的实际运行速度可达800 MHz,这里设DDR3的对写效率为60%,那么系统的外部缓存带宽可达800 MHz×2×64 bit×60%=7.68 Gbit/s,完全满足系统的带宽要求,也足以支持帧频为60帧的3 840×2 160视频的数据缓存需要。

1.4 FPGA处理单元设计

FPGA作为系统的核心处理单元承担绝大部分数据处理任务,FPGA采用Xilinx的XC7V485T系列芯片,该芯片片上资源丰富,满足系统当前的资源需求,同时也能够满足3 840×2 160视频显示控制系统开发的需求。开发环境采用Xilinx公司专门用来开发7系列FPGA的集成开发环境vivado,该开发环境可通过图形化界面操作,用多种ip核模块搭建复杂的数据处理系统[8]。

图3 FPGA内部功能框图

图4 MicroBlaze软核处理器结构

系统的核心处理工作均在FPGA中完成,数据在FPGA中的处理流程原理框图如图3所示,图3所示为系统的关键IP核,MicroBlaze核是系统的控制核心,通过axi总线同LogiWin、LogiCVC以及MIG等IP核进行数据交换,控制IP核的工作模式。图像数据通过解码芯片解码输入到FPGA中的LogiWin核,该核的作用是对输入的图像做初步的处理,如输入图像和LCD的分辨率不匹配时,该IP核能够将图像缩放到LCD分辨率的尺寸,该IP核也能够对输入数据做颜色空间以及亮度、对比度等基本的图像变换,由于系统将实现输入视频的画中画显示,因而系统采用了两个LogiWin核,每一个核对应了一个解码芯片输出;LogiWin处理过的图像通过MIG核存储到片外DDR3。以便LogiCVC核从中读取数据,DDR3的另一个作用是输入输出帧率的转换,系统中输出LCD的帧率是60 frame/s,而当输入数据为模拟视频PAL时,其帧频只有25帧,通过DDR3就能够使输出、输入帧频平缓过渡;LogiCVC核的作用是按照LCD的接口协议生成标准视频时序,同时LogiCVC从DDR3中读取视频数据插入到生成的标准视频时序中,如需将两路输入视频合成一路画中画视频输出,LogiCVC则可将一路作为背景,另一路在图像的任意位置输出。由于本系统所用的LCD原屏的驱动数据有两场LVDS信号,这里采用编写的Single to Dual核将LogiCVC输出的并行LCD驱动时序按奇偶时钟分成两组并行数据,分完的两组并行数据通过parellel to LVDS核转成LVDS信号输出直接驱动LCD原屏。

另外,系统所采用的解码芯片ADV7842需通过IIC总线配置工作模式,系统采用FPGA中的IIC核作为控制接口,控制核心MicroBlaze将IIC控制数据通过IP核发送到ADV7842;外部的控制命令通过串口发送到FPGA,使得系统能够根据命令情况配置ADV7842的工作方式,同时也能够将系统当前的状态发送到外部控制单元,系统的外部控制接口采用串口IP核,该核作为外部控制核心与MicroBlaze的传输中介,使得系统能够与外部友好交互;由于VGA视频支持的分辨率有很多种,对于目前的VGA视频解码芯片,通常都不能自适应不同分辨率的VGA视频,这里在LogiCVC输出端添加了vag_adapt核来判断是否有视频输入,如无视频输入,则vag_adapt核向GPIO核发送状态信号,GPIO向控制核心发出中断,使得系统能够自适应VGA输入;本LCD控制器系统的复杂性较高,综合后生成的bit文件较大,如直接将其烧写到Flash中,在系统上电启动时,由于系统中存储程序的ram存储资源有限,导致程序无法自启动,系统上电用Bootloader通过SPI将Flash中的程序引导到DDR3中,系统从DDR3执行程序,这样可以实现程序上电的自启动[9-10]。

2 MicroBlaze程序设计

所设计的LCD控制系统的FPGA设计部分包括硬件语言设计以及软件语言设计两部分,系统的硬件语言设计部分即上述通过IP核搭建系统的框架,所用的IP核为自己设计或Xilinx官方提供的IP核,框架搭建完成后即可生成相应的硬件描述语言。系统的核心控制工作有MicroBlaze软核来完成,该软核是一种针对Xilinx FPGA器件而优化的功能强大的32位处理器,是业界最快的软处理器IP核解决方案,支持CoreConnect总线的标准外设合集,具有兼容性和重复利用性,最精简的核只需将近400个Slice,软件程序用C语言编写[11]。图4为MicroBlaze软核处理器结构。

2.1 初始化设计

这里的核心控制MicroBlaze控制着整个系统中各个模块的初始化、工作模式的配置以及对数据的处理,软件控制程序占了整个系统工作量的一半以上。程序开始首先要初始化MicroBlaze软核,使MicroBlaze能够正常工作,然后通过IIC核初始化解码芯片ADV7842,配置解码芯片的工作模式;第3初始化视频读取IP核LogiCVC,配置IP核工作方式以及读取数据映射的内存地址;第4配置图像处理IP核LogiWin,配置IP核的工作方式以及处理完的数据存储的地址;最后就是设置控制单元接口的中断方式,即设置串口模块的中断触发方式及GPIO中断的出发方式[12]。

2.2 串口中断设计

系统的串口中断主要用来控制信号源的切换、输入图像的任意比例缩放处理等。当串口收发单元收到外部向系统发送命令时,串口单元立即向MicroBlaze核产生中断信号,程序进入串口中断处理部分,在中断中首先判断所接收到的命令,如接收到的是信号源的切换,则此时MicroBlaze核将ADV7842的控制命令通过IIC核发送到ADV7842,使得其切换解码信号源及解码方式,如接收到其他控制命令,则在中断中进行相应的处理。

图5 MicroBlaze软件流程图

2.3 VGA分辨率自适应设计

图5为系统软件流程图。当输入的VGA视频分辨率发生变化时,由于ADV7842并不能自适应输入视频分辨率的变化,此时解码芯片输出的数据为0,通过设计的vga_adapt核对解码芯片输出的数据进行统计分析,如判断此时无输入数据,则vga_adapt核将状态发送到GPIO核,此时GPIO核向MicroBlaze核发出中断,MicroBlaze核通过IIC核将ADV7842的配置参数发送到ADV7842,使得ADV7842的支持分辨率切换,如此轮询所有分辨率,直到ADV7842能够输出有效数据,此时vga_adapt核则不再向GPIO核发送切换分辨率状态。

3 实验及讨论

所设计的基于FPGA的LCD控制器支持VGA、DVI、HDMI以及PAL/NTSC几种接口,能够驱动分辨率为1 600×1 200的LCD原屏。由于系统的主要功能均是在FPGA中以IP核的形式实现的,因而设计过程中的结果验证能够影响本系统设计的效率,Xilinx的Vivado为基于IP核的设计过程中的行为验证提供了很好的解决方案,Vivado的集成逻辑分析仪(ILA)IP核能够测量任意IP核的任意信号的波形,可根据实际需求设定采集波形的深度,是系统设计过程中验证各个功能模块逻辑功能的有力工具[13-14]。

设计过程中,IP核LogiCVC的输出结果是需要观测的关键数据,而该数据是连接到其他IP核单元的,无法在外部直接通过示波器或逻辑分析仪测试,这里通过ILA核在线测试LogiCVC核输出结果。图6为通过ILA核采集的数据,图中可见,数据的行、场同步、24位数据均正常,因此可判断LogiCVC单元从内存中读取的数据正常。在视频数据处于行、场均有效时有图像数据,消隐期则数据均为0。另一个核心IP核是LogiWin核,该核将输入到FPGA的数据进行处理后写入到DDR3中,这里将LogiWin的axi总线连接到ILA核,观测axi总线的数据传输情况,如图7所示。由图7可见,在axi总线写有效后,WDATA的数据同过MIG写到DDR3,并且开始写时,系统根据当前数据情况分配对应的写地址。写无效时则无数据输出到MIG。

图8(a)为系统的PCB实物图,图8(b)、图8(c)为实验结果。其中图8(b)为计算机输出的VGA图像在系统驱动的LCD原屏上稳定的显示,图8(c)为VGA和PAL两路视频同时输入,其中PAL视频在VGA视频中画中画显示效果图,PAL视频为外部摄像机实时采集的视频。

系统选用的V7片上资源丰富,当前设计为功能验证系统,用来验证多种类型视频输入接口的解码及在LCD原屏上的显示,开发画中画功能,后面将开发思路视频的画面分割显示功能。以上实验中实现的功能所消耗的FPGA资源情况如表1所示,从表中可以看出,当前设计消耗了较少的偏上逻辑资源,并且系统中所涉及的信号速度最高为DDR3,远未达到当前所用FPGA的速度极限,速度级别低于V7的FPGA也可满足要求,因而后续设计转化成产品时可以采用逻辑资源较少的芯片,如K7系列FPGA,这样既保证了所要求的功能,同时又能够降低生产成本。

图6 LogiCVC输出的数据时序

图7 LogiWin写入DDR3的时序

图8 实验结果图

ResourceUtilizationAvailableUtilization%FF265476072004.37LUT288713036009.51MemoryLUT39041308002.98BRAM67.510306.55DSP48928000.32BUFG163250MMCM21414.29PLL31421.43

4 结论

所设计的基于FPGA的LCD控制器通过解码芯片ADV7842将视频数据输入到Virterx7 FPGA,在FPGA中通过软核CPU控制整个系统的工作。核心图像处理工作由LogiWin核实现,主要实现了图像尺寸的缩放、颜色空间的转换以及亮度对比度等基本图像处理;处理完成的图像通过MIG核存储到DDR3存储器进行缓存;然后通过LogiCVC核从DDR3中将待显示的数据读出,通过Single to Dual核将数据分成两路输出到LVDS转换模块,最终实现驱动LCD。系统的控制功能通过外部串口实现。最终结果表明,本LCD控制器能够实现多种输入接口类型视频的处理及稳定显示,并且实现了两路视频的画中画显示。

[1] 任勇峰,王大伟,石永亮,等. 基于FPGA的视频转换系统设计[J]. 电子器件,2016,39(3):655-661.

[2] 王鸣浩,吴小霞. 基于FPGA的通用液晶显示控制器的设计和实现[J]. 液晶与显示,2012,27(1):87-92.

[3] 张宇嘉,杨晓非,姚行中. 基于AXI4的卫星接收机DDR3多端口存储的设计[J]. 电子器件,2016,39(3):617-622.

[4] 梅楠楠. 基于FPGA的特种TV-LCD显示驱动板的设计与实现[D]. 合肥:合肥工业大学,2007.

[5] 庄聪聪,王大明,李寒. 基于ARM与FPGA的LCD控制器设计[J]. 电子设计工程,2010(6):14-16.

[6] 刘建平,曾文海,黎福海,等. 采用FPGA的LCD转VGA控制器的设计[J]. 计算机系统应用,2011,20(10):71-73.

[7] Analog Devices. ADV7842 Dual HDMI 1.4 Fast Switching Receiver with 12-Bit,170 MHz Video and Graphics Digitizer and 3D Comb Filter Decoder[G]. 2011.

[8] 孔德彭,陈安妮,周一飞,等. 基于FPGA技术的WSN节点混沌保密通信设计[J]. 传感技术学报,2015,28(4):557-562.

[9] 俸文炯. 基于FPGA的TFT-LCD视频驱动系统设计[D]. 北京:北京化工大学,2013.

[10] 王庆春,何晓燕,崔智军. 基于FPGA的多功能LCD显示控制器设计[J]. 电子设计工程,2012(23):150-152.

[11] 巫忠正. 基于MicroBlaze的嵌入式系统设计[D]. 南京:南京理工大学,2014.

[12] 龙霞飞,李仁发. Microblaze微处理器IP Core的结构及应用[J]. 微处理机,2004,25(6):6-9.

[13] 李璐,余英. 基于FPGA的LCD动态显示控制系统设计与实现[J]. 信息系统工程,2016(1):96-97.

[14] 黄玉岗,李杰,秦丽,等. 基于FPGA和ADS8568的弹载实时记录系统设计[J]. 传感技术学报,2016,29(4):506-511.

TheImplementationoftheLCDControllerUsingFPGA

CHENDongcheng*,HUJingying,ZENGFanchang

(Jiangsu Automation Research Institute,Lianyungang Jiangsu 222061,China)

In order to display computer video on LCD,a LCD controller based on FPGA is designed. The system is formed of IP cores. The controlling CPU is Xilinx Microblaze soft core. The communication between PC and microblaze is the UART port. In order to survey the signals in the FPGA to identify the logic,the Xilinx integrated logic analyser IP core ILA is used to survey the critical signals. The result shows that the designed controller based on FPGA can drive the LCD,the system supports several kinds of video ports. The picture in picture displaying has been achived. The displaying picture is stable,which can be used as PC displaying device or displaying other videos.

FPGA;video port;LCD controller;IP core;ILA

10.3969/j.issn.1005-9490.2017.05.013

2016-08-29修改日期2016-11-21

TN941.1

A

1005-9490(2017)05-1115-06

陈东成(1987-),男,江苏连云港人,博士,江苏自动化研究所高级工程师,主要显示设备的研发,DSP、FPGA的应用研究,chendongcheng8710@163.com。

猜你喜欢
解码串口分辨率
《解码万吨站》
浅谈AB PLC串口跟RFID传感器的通讯应用
解码eUCP2.0
EM算法的参数分辨率
NAD C368解码/放大器一体机
Quad(国都)Vena解码/放大器一体机
原生VS最大那些混淆视听的“分辨率”概念
基于深度特征学习的图像超分辨率重建
一种改进的基于边缘加强超分辨率算法
USB接口的多串口数据并行接收方法探索