趙慶平,李素文,趙 鑫
(淮北師范大學物電學院,安徽淮北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.