馬 成,胡海波,賀 綱
(黑龍江工程學院 電氣與信息工程學院,黑龍江 哈爾濱150050)
目前,常用的液晶顯示控制器主要有兩種:一種是將LCD液晶顯示模塊的控制信號、驅動信號和動態(tài)顯示存儲器集成到單片IC中,做成專用的液晶控制芯片。例如SSD1289、SED1335等,這種專用集成控制芯片經(jīng)常與相對應的液晶屏做到一塊電路板中,或者將這些液晶驅動芯片以特殊的封裝形式直接集成到液晶屏中,形成液晶屏模塊,直接購買這些模塊進行實驗或產(chǎn)品開發(fā)。一種是以FPGA為核心,配合一些模擬驅動芯片和作為顯存的RAM芯片構成LCD液晶屏的控制系統(tǒng)。這兩種控制方法各有利弊,第一種利用專用芯片的控制方法,使用方便,可以縮短產(chǎn)品的開發(fā)周期,但是成本高,靈活性差。第二種利用分立元件的LCD控制系統(tǒng),利用系統(tǒng)現(xiàn)有的FPGA資源,增加液晶控制的靈活性,由于此時要加外部顯存,成本降低有限。
本文提出了第三種控制LCD顯示器的方法,本方法基于ATERA公司提供的FPGA內嵌Niosii內核構成的嵌入式系統(tǒng)平臺,再利用Niosii內核中SG-DMA和同步視頻信號發(fā)生器兩個組件相結合來控制LCD液晶顯示器,這種方法不用外擴RAM單獨作為顯存,而是利用Niosii系統(tǒng)RAM的部分單元作為顯存,進而降低了產(chǎn)品成本和體積,提高了LCD液晶顯示器的控制速度。
在ALTERA的開發(fā)環(huán)境quartus II中,直接利用Tools下面的SOPC Builder工具定制所需要的Niosii軟核[3]。這里必須選擇的組件有處理器Niosii Processor,分為經(jīng)濟型、快速型和標準型3種;橋接適配器Bridges and Adapters,內存和內存控制器Memories and Memory Controllers,還有用于調試的JTAG to Avalon Master Bridge。其余的組件,比如標準輸入輸出管腳IO、串行口、SPI、USB等外圍設備可以根據(jù)自己的需要定制,定制界面如圖1所示。
圖1 Niosii軟核及外圍組件的定制
ALTERA公司的開發(fā)工具Quartus ii的最新版本,除了原有的基于avalon-mm總線的DMA之外[8],增加了 SG-DMA(Scatter-Gather DMA Controller)這種基于avalon-ST流總線的DMA IP核,更適合于大量數(shù)據(jù)流傳輸?shù)膱龊?,使用起來比較靈活,增加了與外設流器件配合的能力。將CPU的數(shù)據(jù)存儲器SDRAM分割出一部分用作顯存是本文的核心思想。要想實現(xiàn)SDRAM共享,還不會產(chǎn)生數(shù)據(jù)沖突,就需要定制Nios ii內核中的一個重要組件,就是Memories and Memory Controllers下面的 SG-DMA (Scatter-Gather DMA Controller)組件。根據(jù)所需顯存位寬、顯存大小等要求對SGDMA組件進行設置。
SG-DMA控制器內核與外設存儲器的數(shù)據(jù)傳輸如圖2所示。SG-DMA數(shù)據(jù)傳輸模式一共有3種:1)存儲器到存儲器(Memory to memory),2)數(shù)據(jù)流到存儲器(Data stream to memory),3)存儲器到數(shù)據(jù)流(Memory to data stream)。SGDMA組件將非連續(xù)內存數(shù)據(jù)傳送到另一個連續(xù)的地址空間,反之亦可。在實際的應用中可以有不止一個DMA通道,每個通道具有單獨的描述符來定義數(shù)據(jù)傳輸模式。Nios ii用一個獨立的軟件模塊控制所有的DMA通道。
圖2 SG-DMA控制器內核與外設存儲器的數(shù)據(jù)傳輸
本文選擇的是存儲器到數(shù)據(jù)流傳輸模式,SGDMA組件之間將Nios ii CPU寫入SDRAM中的顯示數(shù)據(jù)傳到內部數(shù)據(jù)流部件FIFO中,F(xiàn)IFO再通過數(shù)據(jù)格式轉換組件把顯存數(shù)據(jù)送到同步視頻信號發(fā)生器,最后利用同步視頻信號發(fā)生器產(chǎn)生出合適的信號去控制液晶,直接顯示文字或圖形。由于SG-DMA增加了Descriptor Processor,可以實現(xiàn)批量工作,從而進一步減輕Nios ii主處理器的工作負擔,只需要將Descriptor命令字寫入到相應的Descriptor memory中即可。descriptor memory的設置,原則上只要帶有avalon-mm接口的存儲器都可以用來做descriptor memroy,因此,將decriptor memory與主存分離,由于要把主存的一部分作為顯存來用,本文直接使用主存的一部分作為descriptor memroy。另外,SG-DMA的有關設置,例如channel和error的位數(shù)控制可以參考avalon-st流接口數(shù)據(jù)手冊,依照需要設置接口。
ALTERA公司為了方便用戶對液晶屏幕的驅動,利用SOPC Builter為Nios ii處理器定制適應各種液晶屏幕的視頻信號發(fā)生器(video sync generator)。同步視頻信號發(fā)生器接收RGB格式的連續(xù)顯示數(shù)據(jù)流,按照合適的時序輸出到片外的液晶顯示控制器中。按照不同顯示分辨率和同步時序對視頻信號發(fā)生器進行配置。
為了使同步視頻信號發(fā)生器能夠得到合適的輸入信號,還需要在SG-DMA之后加入FIFO、Pixel Converter和Data Format Adapter 3個組件,連接方式如圖3所示。其中FIFO組件負責數(shù)據(jù)緩存,Pixel Converter組件負責把像素顯示數(shù)據(jù)轉換成適合同步視頻信號發(fā)生器接收格式的數(shù)據(jù),Data Format Adapter組件負責把1組24位的數(shù)據(jù)流轉換成3組不同顏色的8位數(shù)據(jù)流,最后輸送到視頻信號發(fā)生器組件的輸入端。這4個Nios ii軟核的組件詳細設置可查閱ALTERA的相關文檔。
圖3 顯示同步視頻信號發(fā)生器驅動流程
為了方便用戶控制SG-DMA組件,ALTERA公司將Nios ii底層驅動程序集成到一個稱作HAL的系統(tǒng)庫。直接調用HAL庫中的代碼控制SGDMA工作。應用時必須將altera_avalon_sgdma_descriptor.h、altera_avalon_sgdma_regs.h和altera_avalon_sgdma.h 3個文件包含到頭文件中?;舅悸肥牵合仍O置好SG-DMA的基本配置,然后設置好SG-DMA的回調函數(shù),最后啟動SG-DMA完成DMA發(fā)送。由于本文是利用SG-DMA來控制外圍設備液晶屏幕,因此,這里只涵蓋了SG-DMA從內存讀取數(shù)據(jù)到數(shù)據(jù)流的過程,具體程序流程如圖4所示。
4 SG-DMA軟件程序流程
按照上文的方案,構建出驅動LCD液晶顯示的整體系統(tǒng)如圖5所示。這里的FPGA控制板采用ALTERA公司官方發(fā)布的一款FPGA開發(fā)板(型號DE0),核心FPGA芯片是EP3C16F484C6。液晶屏采用夏普5.7寸LQ057Q3DG02,分辨率為320×240,信號接口是并行RGB信號。經(jīng)過實際驗證,本文提出的控制液晶屏顯示方案確實可行,可以方便地控制各種帶有標準RGB信號接口的液晶顯示器,應用到實際項目中。
圖5 開發(fā)板和液晶屏連接
實驗證明,利用本文Nios ii內核組件控制LCD液晶屏幕的方法是可行的。顯示文字和圖形的效果非常好,屏幕更新速度快,可以流暢地顯示動態(tài)圖像。本系統(tǒng)的創(chuàng)新點是巧妙地利用Nios ii內核SGDMA等組件,將Nios ii CPU本身使用的SDRAM部分空間作為顯存,即節(jié)省了硬件成本,又簡化了電路板布線的復雜程度,提高了系統(tǒng)的可靠性。本系統(tǒng)可以靈活定制顯存的大小,根據(jù)不同型號液晶屏來設置視頻信號發(fā)生器的數(shù)據(jù)輸出格式。本方案接口電路靈活,穩(wěn)定可靠,廣泛應用到各種工業(yè)顯示系統(tǒng)中。
[1]陳卓,楊愛良,王驥.基于PLB總線的多通道SGDMA設計[J].航空電子技術,2009(1):12-15.
[2]王慧,郭攀鋒.液晶顯示控制器ST7565R的研究與編程[J].電子技術應用,2009(12):53-56.
[3]李蘭英.Nios II嵌入式軟核SOPC設計原理及應用[M].北京:北京航空航天大學出版社,2006:25-40.
[4]彭宏,曾江波.基于SOPC的GPONONU硬件平臺設計與實現(xiàn)[J].光通信技術,2009(7):38-41.
[5]秦進平,劉海成,周正林.數(shù)字電子與EDA技術[M].北京:科學出版社,2011:108-135.
[6]劉建平,曾文海.采用FPGA的LCD轉VGA控制器的設計[J].計算機系統(tǒng)應用,2011(10):71-73.
[7]陳重,李浩,陳曦.新型高分辨率LCD控制器的設計與實現(xiàn)[J].電子技術應用,2011(6):123-126.
[8]鮑凱凱,彭華,鄭彪.MSP430采樣數(shù)據(jù)與外設間的DMA傳輸[J].信息技術,2011(10):139-141.
[9]李鋼.STM32直接驅動RGB接口的TFT數(shù)字彩屏設計[J].單片機與嵌入式系統(tǒng)應用,2011(8):28-30.
[10]彭晴晴,孟令軍.基于NiosⅡ的LVDS圖像數(shù)據(jù)緩存系統(tǒng)的設計[J].電視技術,2011(13):28-30.