劉 亮
(南京國(guó)電南自城鄉(xiāng)電網(wǎng)自動(dòng)化工程有限公司,江蘇 南京210032)
EDP系列繼電保護(hù)裝置的人機(jī)界面(MMI)組件采用LCD 控制器芯片S1D13505 作為液晶顯示驅(qū)動(dòng)器,該芯片外接EDO DRAM 作為顯存。EDO DRAM 屬于很多年前的設(shè)計(jì),其供貨量有限,經(jīng)常出現(xiàn)采購(gòu)困難的情況[1],對(duì)MMI組件的生產(chǎn)造成了嚴(yán)重影響。為保證工業(yè)生產(chǎn)的持續(xù)性,需要對(duì)MMI組件的硬件電路進(jìn)行升級(jí),使用新的LCD 控制模塊。
采用其他的商用專業(yè)LCD 控制器芯片進(jìn)行硬件電路升級(jí)并不是一個(gè)很好的解決方案。首先,商用專業(yè)芯片成本較高,且容易受到器件斷檔的影響[2];其次,現(xiàn)有LCD 控制器的驅(qū)動(dòng)軟件和EDP裝置的應(yīng)用程序聯(lián)系比較緊密,使用專業(yè)芯片進(jìn)行升級(jí)往往需要開發(fā)新的底層驅(qū)動(dòng),需要對(duì)裝置的軟件系統(tǒng)進(jìn)行較大規(guī)模修改,大大增加了方案實(shí)施的復(fù)雜度。
使用FPGA 自主實(shí)現(xiàn)LCD 控制器則可避免上述問(wèn)題。首先,F(xiàn)PGA 是市場(chǎng)上成熟的主流芯片[3],價(jià)格比專用LCD 控制器芯片低很多。FPGA 可以實(shí)現(xiàn)各種硬件邏輯,能夠很好支持多種主流顯存芯片和液晶顯示模塊,可以有效避免硬件成本高和芯片供貨短缺等問(wèn)題;其次,F(xiàn)PGA 具有數(shù)量眾多的通用管腳,可以很方便地復(fù)制MMI組件上處理器和S1D13505之間的硬件連線,保持LCD 控制器的地址空間、中斷向量、控制信號(hào)等資源分配不受電路升級(jí)的影響,通過(guò)合理的內(nèi)部邏輯開發(fā),可以兼容原驅(qū)動(dòng)程序,使不改動(dòng)軟件系統(tǒng)的同時(shí)實(shí)現(xiàn)硬件電路升級(jí)成為可能。
MMI組件硬件升級(jí)方案的物理結(jié)構(gòu)如圖1所示。FPGA 所實(shí)現(xiàn)的LCD 控制器和處理器之間的連線與原MMI組件的對(duì)應(yīng)部分相同;FPGA本身存儲(chǔ)容量有限,選擇搭配作為市場(chǎng)主流顯存芯片的SDRAM 來(lái)存儲(chǔ)圖像數(shù)據(jù);FPGA 還負(fù)責(zé)為TFT-LCD提供控制和數(shù)據(jù)信號(hào),將圖像數(shù)據(jù)轉(zhuǎn)換為液晶模塊對(duì)應(yīng)的RGB管腳信號(hào)后,通過(guò)掃描方式進(jìn)行展現(xiàn)。

圖1 MMI組件硬件升級(jí)的物理結(jié)構(gòu)Fig.1 Physical architecture of MMI hardware update
由圖1可以看出,硬件升級(jí)后,F(xiàn)PGA 需要實(shí)現(xiàn)和處理器、SDRAM 以及TFT-LCD 模塊之間的數(shù)據(jù)通信,對(duì)應(yīng)的邏輯業(yè)務(wù)包括驅(qū)動(dòng)程序響應(yīng)、SDRAM 訪問(wèn)控制和TFT-LCD 液晶驅(qū)動(dòng)。
驅(qū)動(dòng)程序響應(yīng)負(fù)責(zé)模擬S1D13505 芯片,向處理器提供寄存器空間和顯示緩沖區(qū)的訪問(wèn)。顯示緩沖區(qū)被FPGA 映射到顯存中,寄存器空間則位于FPGA 內(nèi)部。驅(qū)動(dòng)程序通過(guò)寄存器空間訪問(wèn)來(lái)獲取或設(shè)定LCD 控制器的配置,通過(guò)顯示緩沖區(qū)的訪問(wèn)將圖像數(shù)據(jù)寫入顯存。
SDRAM 訪問(wèn)控制功能負(fù)責(zé)產(chǎn)生符合SDRAM 芯片規(guī)格說(shuō)明書(datasheet)的讀、寫和自刷新操作信號(hào)。
TFT-LCD液晶驅(qū)動(dòng)功能負(fù)責(zé)產(chǎn)生液晶屏所需的控制信號(hào)和數(shù)據(jù)信號(hào)。
LCD 控制器的內(nèi)部邏輯采用模塊化設(shè)計(jì),可分解為圖2所示的功能模塊。各功能模塊對(duì)特定的輸入進(jìn)行響應(yīng),產(chǎn)生特定的輸出。功能模塊通過(guò)互聯(lián),在FPGA 外部管腳上產(chǎn)生特定規(guī)律的信號(hào),實(shí)現(xiàn)LCD 控制器的邏輯業(yè)務(wù)。

圖2 LCD 控制器的功能模塊Fig.2 Function blocks of the LCD controller
圖2 所示的設(shè)計(jì)中,hclk 為處理器總線時(shí)鐘,pclk 為液晶屏的像素時(shí)鐘,sclk 為SDRAM的工作時(shí)鐘。功能模塊的工作時(shí)鐘及其他時(shí)鐘信號(hào)由時(shí)鐘發(fā)生器模塊(CLK)根據(jù)倍頻模塊(PLL)提供的原始時(shí)鐘產(chǎn)生;主機(jī)端接口模塊(HIF)負(fù)責(zé)與處理器進(jìn)行信息交互,將讀寫請(qǐng)求進(jìn)行分發(fā);寄存器模塊(REG)負(fù)責(zé)模擬S1D13505的寄存器空間,對(duì)驅(qū)動(dòng)程序命令進(jìn)行解析,實(shí)現(xiàn)芯片標(biāo)識(shí)讀取、顯示模式設(shè)定等工作;色彩查找表模塊(LUT)負(fù)責(zé)把顯存中的圖像數(shù)據(jù)轉(zhuǎn)換為對(duì)應(yīng)的RGB 信號(hào)數(shù)據(jù);訪問(wèn)仲裁模塊(ARB)負(fù)責(zé)對(duì)SDRAM 芯片的操作進(jìn)行優(yōu)先級(jí)仲裁和訪問(wèn)排序,防止訪問(wèn)沖突;顯存控制模塊(RC)負(fù)責(zé)產(chǎn)生對(duì)外部SDRAM 芯片的控制信號(hào)及數(shù)據(jù)讀寫;寫緩沖模塊(WFIFO)對(duì)要寫入顯存的圖像信息進(jìn)行緩存,解決處理器和SDRAM 工作時(shí)鐘的異步問(wèn)題;讀緩沖模塊(RFIFO)對(duì)顯存中取出的圖像數(shù)據(jù)進(jìn)行緩存,解決SDRAM 和TFT-LCD 工作時(shí)鐘的異步問(wèn)題。
有限狀態(tài)機(jī)建模是解決復(fù)雜邏輯的有效方法,也是FPGA 開發(fā)中常用的方法。一個(gè)有限狀態(tài)機(jī)對(duì)應(yīng)一個(gè)特定時(shí)鐘域的邏輯,在Verilog程序中對(duì)應(yīng)一個(gè)always語(yǔ)句塊。方案采用了有限狀態(tài)機(jī)方法對(duì)LCD 控制器的各功能子模塊進(jìn)行建模編程,然后將子模塊互聯(lián),進(jìn)行時(shí)序測(cè)試調(diào)整,實(shí)現(xiàn)所期望的LCD 控制器業(yè)務(wù)邏輯。
通用TFT-LCD驅(qū)動(dòng)的關(guān)鍵是提供符合標(biāo)準(zhǔn)的控制信號(hào)。控制信號(hào)主要指行同步信號(hào)HSYN、場(chǎng)同步信號(hào)VSYN 以及數(shù)據(jù)有效信號(hào)DE[4]。控制信號(hào)需要與時(shí)鐘信號(hào)、數(shù)據(jù)信號(hào)滿足特定的時(shí)序關(guān)系,如圖3所示。
對(duì)于不同分辨率的TFT-LCD 模塊,控制信號(hào)時(shí)序關(guān)系都符合圖3 所示規(guī)律,參數(shù)的取值(THm和TVn)都有標(biāo)準(zhǔn)值可 遵循[2]。編程實(shí)現(xiàn)進(jìn)行參數(shù)化配置,使用常量來(lái)定義不同的參數(shù),可以很方便地產(chǎn)生多種顯示模式所需的控制信號(hào)。控制信號(hào)對(duì)應(yīng)的有限狀態(tài)機(jī)模型如圖4所示。其中,HSYN 和DE的基準(zhǔn)時(shí)鐘為PCLK,VSYN 的基準(zhǔn)時(shí)鐘為HSYN。

圖3 TFT-LCD信號(hào)時(shí)序圖Fig.3 Signal sequence diagram of TFT-LCD

圖4 TFT-LCD控制信號(hào)的有限狀態(tài)機(jī)Fig.4 FSM of TFT-LCD control signals
RC 模塊負(fù)責(zé)產(chǎn)生標(biāo)準(zhǔn)的SDRAM 控制信號(hào)、地址信號(hào)和數(shù)據(jù)信號(hào),實(shí)現(xiàn)SDRAM 的訪問(wèn)業(yè)務(wù),包括SDRAM 初始化、圖像數(shù)據(jù)寫入、自刷新和圖像數(shù)據(jù)讀出。SDRAM 管腳信號(hào)的定義、操作命令的信號(hào)時(shí)序及RC模塊的有限狀態(tài)機(jī)模型可以參見相關(guān)文檔[5]。
SDRAM 芯片是單口RAM,只能同時(shí)支持一種操作。在同一時(shí)刻,對(duì)SDRAM 的操作請(qǐng)求有可能來(lái)自于不同的發(fā)起者,例如,處理器寫圖像數(shù)據(jù)時(shí)候,若FPGA 的定時(shí)器模塊觸發(fā)了刷新操作,就會(huì)產(chǎn)生顯存訪問(wèn)沖突。解決訪問(wèn)沖突問(wèn)題需要總線仲裁,該功能通過(guò)ARB模塊控制RC模塊的信號(hào)產(chǎn)生來(lái)實(shí)現(xiàn)。考慮到數(shù)據(jù)完整性和用戶體驗(yàn),方案所設(shè)計(jì)的ARB 模塊在實(shí)現(xiàn)時(shí)按照刷新請(qǐng)求高于寫請(qǐng)求、寫請(qǐng)求高于讀請(qǐng)求的次序進(jìn)行優(yōu)先級(jí)排序。ARB 模塊的有限狀態(tài)機(jī)模型如圖5所示。

圖5 ARB模塊狀態(tài)機(jī)Fig.5 FSM of the ARB block
MMI組件的處理器、SDRAM 芯片和TFTLCD 模塊的工作時(shí)鐘各不相同,數(shù)據(jù)接口的字長(zhǎng)也不相同。LCD 控制器的一些特定業(yè)務(wù),例如圖像的保存和顯示,需要在這些元件之間傳遞信息,從而在功能子模塊之間產(chǎn)生數(shù)據(jù)通信同步問(wèn)題。為此,方案引入了WFIFO 和RFIFO 模塊。
WFIFO 和RFIFO 都是雙口環(huán)形緩沖區(qū),其讀寫操作基于不同的工作時(shí)鐘,可以同時(shí)進(jìn)行。WFIFO 和RFIFO 的實(shí)現(xiàn)采用了基于Gray碼的異步FIFO 算法[6]。WFIFO 以單字節(jié)方式接收處理器發(fā)送過(guò)來(lái)的圖像數(shù)據(jù),再以4字節(jié)的Burst訪問(wèn)方式寫入SDRAM;RFIFO 以4 字節(jié)的Burst訪問(wèn)方式將SDRAM 中的圖像數(shù)據(jù)讀出,再以單字節(jié)長(zhǎng)度向LUT 模塊輸出。
樣本電路的LCD 控制器采用Lattice公司的LFXP2-5E-5FT256I 芯 片,SDRAM 顯 存 采 用Micron公司的MT48LC4M32B2芯片,處理器為freescale公司的產(chǎn)品MPC 8247。樣本電路采用25MHz晶振,LCD 控制器通過(guò)內(nèi)部的PLL 模塊提供150 MHz的系統(tǒng)工作時(shí)鐘。SDRAM 工作在150 MHz時(shí)鐘下,采用4字節(jié)突發(fā)訪問(wèn)模式。
測(cè) 試 的 TFT-LCD 液 晶 模 塊 采 用 的 是STCG057QVLAK(320×240,像 素 時(shí) 鐘6.25 MHz)。樣本電路上所設(shè)計(jì)的LCD 控制器的實(shí)驗(yàn)顯示效果如圖6 所示,圖像清晰無(wú)抖動(dòng),無(wú)閃屏、錯(cuò)行等現(xiàn)象。

圖6 實(shí)驗(yàn)顯示效果Fig.6 Display effect of the experiment
為解決MMI組件在生產(chǎn)上所面臨的芯片供應(yīng)短缺問(wèn)題,本文提出了基于FPGA 開發(fā)兼容原MMI驅(qū)動(dòng)軟件的LCD 控制器、對(duì)MMI組件進(jìn)行相關(guān)硬件升級(jí)的解決方案,并對(duì)該LCD 控制器的設(shè)計(jì)實(shí)現(xiàn)進(jìn)行了描述。方案運(yùn)用了模塊化思想來(lái)分解LCD 控制器的業(yè)務(wù)邏輯,各功能子模塊以有限狀態(tài)機(jī)方法進(jìn)行建模,采用了參數(shù)化的配置,在實(shí)現(xiàn)上以Verilog語(yǔ)言進(jìn)行編程開發(fā),充分保證了所開發(fā)LCD 控制器的功能可配置性、模塊可復(fù)用性和代碼可移植性。實(shí)際測(cè)試表明,方案所設(shè)計(jì)的LCD 控制器能夠滿足MMI組件對(duì)顯示模式的需求,可以實(shí)現(xiàn)無(wú)需改動(dòng)軟件系統(tǒng)的硬件電路升級(jí),保證了裝置生產(chǎn)的持續(xù)性,為類似問(wèn)題的解決提供了一種有效的思路。
[1] 愛普生(中國(guó))有限公司.S1D13505/13506外接EDO DRAM 說(shuō)明[EB/OL].[2014-03-12].http://www.epson.com.cn/ed/lcdc/q_a.html.EPSON China,Limited.The explanation of the external EDO DRAM for S1D13505/13506[EB/OL].[2014-03-12].http://www.epson.com.cn/ed/lcdc/q_a.html.(in Chinese)
[2] 王鳴浩,吳小霞.基于FPGA 的通用液晶顯示控制器的設(shè)計(jì)和實(shí)現(xiàn)[J].液晶與顯示,2012,27(1):87-92.Wang M H,Wu X X.Design and realization of general LCD controller based on FPGA [J].Chinese Journal of Liquid Crystals and Displays,2012,27(1):87-92.(in Chinese)
[3] 王海力.中國(guó)FPGA 產(chǎn)業(yè)如何在市場(chǎng)上占有一席之地[J].世界電子元器件,2012(9):72-73.Wang H L.How to have a place in the market for Chinese FPGA industry[J].Global Electronics China,2012(9):72-73.(in Chinese)
[4] 唐 徐 立,黃君凱,劉 明 峰,等.基 于FPGA 的TFT-LCD 控制器設(shè) 計(jì) 與 實(shí) 現(xiàn)[J].半 導(dǎo) 體 技 術(shù),2010,35(11):1134-1137.Tang X L,Huang J K,Liu M F,et al.Design and REalization of the TFT-LCD CONTROLLER Based on FPGA[J].Semiconductor Technology,2010,35(11):1134-1137.(in Chinese)
[5] Lattice Semiconductor.SDR SDRAM controller-reference design RD1010[EB/OL].[2014-04-08].http://www.latticesemi.com/~/media/Documents/ReferenceDesigns/1D/AdvancedSDRSDRAMController-DesignDocumentation.PDF.
[6] 汪東,馬劍武,陳書明.基于Gray碼的異步FIFO 接口計(jì)數(shù)及其應(yīng)用[J].計(jì)算機(jī)工程與科學(xué),2005,27(1):58-60.Wang D,Ma J W,Chen S M.The interface technology of asynchronous FIFOs based on gray code and its application[J].Computer Engineering and Science,2005,27(1):58-60.(in Chinese)