赵庆平,李素文,赵 鑫
(淮北师范大学物电学院,安徽淮北235000)
SOPC(System on Programmable Chip)是将处理器、存储器、I/O口、自定义外设等系统设计需要的功能模块集成到一块FPGA芯片上[1-2],SOPC根据外围器件的需求可以快速搭建硬件平台。FPGA(Field-Programmable Gate Array),即现场可编程门阵列,数据容量大,结构灵活,可编程性强,具有强大的并行数据处理能力[3]。在FPGA内构建片上系统,减小电路板面积和功耗,提高系统可靠性,根据需求可裁剪,可升级,增强FPGA的系统开发功能。NiosⅡ系列软核处理器是Altera的第二代FPGA嵌入式处理器,用户可以方便地在系统中加入IP核,且将应用程序固化到芯片中[1,4]。
液晶显示器LCD(Liquid Crys tal Display,)以其机身薄、低辐射、低功耗和接口数字化等特点广泛应用于现代电子产品中。目前生产LCD屏的厂商很多,液晶显示器的数字接口尚未形成统一标准,带有数字输出的显示卡在市面上并不多见,不同厂家的LCD屏常常不能与一般的LCD控制器无缝连接,外部接口逻辑需要重新设计。基于此,本文提出了基于SOPC技术,采用嵌入式NiosⅡ软核处理器、LCD控制器IP核,在FPGA(Field Programmable Gate Array)芯片上完成了高性能TFT-LCD控制器的设计。很好地解决了不同型号液晶屏之间的驱动差异问题[5]。
本设计采用的FPGA芯片是ALTERA公司的cycloneⅡ系列芯片 EP2C35F484C8N。该芯片有3 326个可配置逻辑单元和475个用户引脚,不仅满足本设计的要求,而且有较大的升级空间。采用台湾奇美电子公司生产的AT070TN83型TFT LCD,分辨率为800×480,18 bit色度信号(R、G、B 各6 bit)。它有4个控制信号:行信号、场信号、使能信号和扫描时钟信号。
本设计的目的是将图片显示在TFT-LCD。根据FPGA外围器件和内部功能的要求,在FPGA芯片上构建 SOPC硬件系统,包括 FLASH控制器、SDRAM控制器、TFT-LCD控制器、SG-DMA模块和FIFO模块。NiosⅡ是作为主控制核心,FLASH用于存储硬件配置、执行程序和图像数据,通过在SDRAM中开辟图像帧缓冲区,再将一帧图像数据存入缓冲区,利用Scatter-Gather DMA将SDRAM中的图像数据发送到TFT-LCD控制器并显示。通过SOPC自动生成的AVALON总线进行数据交换。方案设计的框图如图1所示。
图1 TFT-LCD设计方案
微电子技术的迅速发展,使得集成电路设计和工艺技术水平得到很大的提高,片上系统SOPC技术把系统的处理机制、模型算法和电路设计紧密结合,在单片芯片上实现复杂系统的全部功能[6]。
Altera在SOPC Builder中提供视频同步发生器核(Video Sync Generator Core)和像素转换器核(Pixel Converter Core)。TFT-LCD控制器由像素转换器核、数据格式适配器(Data Format Adapter)、视频同步发生器核组成,如图2所示。视频同步发生器接收RGB格式的像素数据流,以合适的时序输出到片外显示器。可以配置该核以支持不同的显示器分辨率和同步时序。像素转换器可以根据视频同步发生器要求的格式传输像素数据。
图2 TFT-LCD控制器
图片每个像素点数据以32 bit二进制数格式保存在SDRAM中,其中红绿蓝各8 bit,还有8 bit为0,是为满足32 bit系统而增加的无用数据。开启DMA,将图片像素数据发送到FIFO中。经由像素转换器读取FIFO中的像素数据,转换为只有有效像素数据的24 bit二进制数。此24 bit二进制数是按照蓝、绿、红各8 bit的格式存在的。通过视频同步发生器,将像素数据和同步控制信号同步,从而将像素数据显示在TFT-LCD上。
Video Sync Generator核参数可配置,支持多种像素格式和自定义颜色深度模式,支持不同分辨率显示器,像素数据可以按8 bit分3次输出,也可以一次输出24 bit。所选用的TFT-LCD是并行数据接口。每一次有效时钟周期内,24 bit像素数据是同时输出的。为适应本设计使用的TFT-LCD的要求,时序图采用如图3所示的格式输出。
图3 TFT-LCD时序图
本设计通过调用SOPC中的IP核构建TFT-LCD控制器,如图4所示。该SOPC系统主要包括Scatter-GatherDMA Controller、FIFO、Avalon-ST Timing Adapter、Pixel Converter和 Video Sync Generator。
SG-DMA(Scatter-Gather Direct Memory Access)Core可以用来实现两个SOPC组件之间的高速数据传输。与DMA不同的是,SG-DMA可以将非连续存储的数据搬移到连续地址空间,反之也行。
图4 TFT-LCD系统硬件结构
异步FIFO用作像素数据的缓冲。数据宽度为32 bit,深度为 1 024。
时序适配器(Avalon-ST Timing Adapter)用于匹配连接在AVALON上的源和目的地时序,使数据无损传输。
图片缓存区的像素数据有4 byte,分别是0,R,G,B,而视频同步发生器接收的像素数据是3 byte RGB,所以需要像素转换器(lcd_pixel_converter)去掉每点像素数据中不需要的字节。
硬件系统模块如图5所示。构建好SOPC后,在QuartusⅡ中添加倍频模块PLL锁相环,将FPGA输入的20 MHz倍频到100 MHz,作为NiosⅡ的工作频率,在 SOPC中分频得到 50 MHz,作为 SGDMA、时序适配器和FIFO的工作频率,得到25MHz作为DMA、TFT-LCD控制器的工作频率。经过编译,在QuartusⅡ中生成SOPC硬件系统模块。
图5 硬件系统模块
其中,可以看到的有TFT-LCD数据信号端和控制信号端以及外设存储器SDRAM和CFI Flash的端口。Reset_n用于NiosⅡ软核的复位。
NiosⅡ软核嵌入式处理器是Altera公司提供的SOPC解决方案。NiosⅡ是采用流水线技术和哈佛结构的通用RISC(Refined Instruct ion Set Computer,精简指令集计算机)处理器,而且可配置,它结合丰富的外设、专用指令和硬件加速单元可以低成本地提供极度灵活和功能强大的SOPC系统,开发者根据实际需要自行整合。将LCD驱动与NiosⅡ相结合,可以得到一个扩展性强、通用的IP核,从而能够适应不同LCD的驱动要求[7]。
本设计的程序流程图如图6所示。
图6 程序流程
系统启动后,将24 bit的像素格式转换为16 bit,因为TFT-LCD是16 bit数据输入口,而提取的图像数据是24 bit的。在SDRAM中开辟图片像素缓存区,打开DMA,DMA将像素数据输出到TFTLCD进行显示。DMA传输数据不占用CPU,大大提高了系统运行效率。
由取模软件提取的图片像素数据是3 byte RGB格式,而SG-DMA每次读取32 bit数据,首先要将图片原始像素数据转换为32 bit的0,R,G,B格式,以防止读取数据时发生错位的现象。转换程序如下:
在SDRAM中开辟图片像素数据缓存区,将转换好的32 bit像素数据拷贝到SDRAM中的显示缓存区,程序如下:
在图片所有的像素数据保存到SDRAM图片缓存区后,打开SG-DMA,对SG-DMA进行设置,指定源地址和目的地址,SG-DMA自动将像素数据从SDRAM图片存储区传输到TFT-LCD控制器。
TFT-LCD控制器将接收到的像素数据按照设定好的控制时序输出给TFT-LCD,即可实现图片的显示。
本设计采用QuartusⅡ内嵌的逻辑分析仪SignalTapⅡ对TFT-LCD控制器进行仿真测试。SignalTapⅡ是第二代系统级调试工具,可以捕获和显示实时信号,观察在系统设计中的硬件和软件之间的互相作用[8]。SignalTapⅡ的仿真测试反应了FPGA内部以及IO口的逻辑时序的真实情况。仿真结果如图7所示。
图7 TFT-LCD控制器仿真
仿真结果显示TFT-CLD控制器满足TFT-LCD逻辑功能,工作时序正确、稳定,控制端和数据端没有存在竞争冒险现象。仿真通过后,将片上系统连接TFT-LCD,运行系统,可以在TFT-LCD上看到所要显示的图片,如图8所示。
图8 TFT-LCD显示
本文介绍了一种基于FPGA的SOPC Builder和NiosⅡ软硬件结合的方案设计TFT-LCD控制器。SOPC硬件设计的灵活性,通过配置IP核的参数,可满足不同分辨率和时序的显示器,可以解决不同型号液晶屏之间的驱动差异问题。在FPGA内构建片上系统,利用C/C++软件编程,实现在FPGA上用高级语言进行开发,具有很好的可移植性。实验表明,该方法简便快捷,设计的TFT-LCD控制器功能正常,性能稳定,可用于多种液晶屏显示。
[1]王刚,肖铁军,时建雷.基于SOPC的LCD控制器IP核的设计与实现[J].计算机工程与设计,2009,30(6):1404-1406.
[2]尚媛园,杨新华,徐达维.基于SOPC技术的高速图像采集控制系统的设计与研究[J].传感技术学报,2011,6,24(6):864-869.
[3]李长庚,卢浩昌,潘雪伦,等.基于FPGA的wSNs低功耗节点设计与实现[J].传感器与微系统,2012,31(1):104-110.
[4]蔡刚刚,谢元平,樊振方.基于FPGA的激光陀螺自适应抖动剥除[J].压电与声光,2012,34(4):530-532.
[5]杨亮亮,凌朝东,李国刚,等.基于NiosⅡ的TFT-LCD控制器设计与实现[J].现代显示,2008(7):28-32.
[6]陈东明,叶玉堂,蒲亮,等.基于SOPC可重构的图像采集与处理系统设计[J].电子器件,2011,34(2):232-236.
[7]郑见灵,原亮,较文成,等.基于NiosⅡ的TFT-LCD控制器的设计与实现[J].计算机技术与发展,2009(4):192-195.
[8]潘松,黄继业.EDA技术实用教程[M].3版.2009:111-116.