文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.2015.12.006
中文引用格式: 陳東旭,李宏. 多路圖像數(shù)據(jù)合成LCD顯示控制器設(shè)計[J].電子技術(shù)應(yīng)用,2015,41(12):28-31,35.
英文引用格式: Chen Dongxu,Li Hong. Design of LCD display controller for multi-channel image data synthesis[J].Application of Electronic Technique,2015,41(12):28-31,35.
0 引言
隨著嵌入式技術(shù)的發(fā)展,LCD在嵌入式系統(tǒng)中的廣泛應(yīng)用推動了LCD顯示控制器的發(fā)展和完善。隨著所需顯示的圖像信息增加、功能要求增多對LCD顯示控制器的功能提出了更高的要求[1]。
當前,嵌入式領(lǐng)域使用的LCD顯示控制器主要有微處理集成型和專用型兩種類型,如LPC1788自帶的LCD顯示控制器和ILI9320專用LCD顯示控制器,由于使用便捷、性能穩(wěn)定,在一般嵌入式系統(tǒng)的顯示領(lǐng)域應(yīng)用廣泛。但隨著嵌入式系統(tǒng)定制化需求提高、顯示要求增多,如需視頻和操作界面等多路圖像混合輸出顯示的場合,上述的LCD顯示控制器由于接口單一、功能固定,很難滿足實際需求。如依舊使用這類顯示控制器,則往往需嵌入式處理器完成顯示前的合成處理,極大地增加了嵌入式處理器的處理壓力,不但需要額外選擇性能高端的處理器,更是加大了編程開發(fā)難度[2]。
針對以上情況,結(jié)合實際工程需求,本文提出了一種基于FPGA的專用LCD顯示控制器,具有多路圖像協(xié)調(diào)存取、畫中畫顯示、OSD字符疊加等功能,可用于視頻信息和顯示數(shù)據(jù)混合輸入領(lǐng)域。
1 LCD顯示控制器總體構(gòu)架
1.1 具有多路圖像數(shù)據(jù)合成的改進型嵌入式系統(tǒng)
典型的具有視頻顯示功能的嵌入式系統(tǒng)如圖1(a)所示,主要由ARM最小系統(tǒng)、攝像頭、集成或?qū)S肔CD顯示控制器、顯存模塊、LCD組成。其中LCD顯示控制器由ARM處理器自帶或外接專用芯片,在需要多路圖像處理時需調(diào)用自身ARM處理器,極大增加了ARM處理器的負擔,不得不選用高端處理器來達到所需處理性能要求。
針對典型電路的不足,本設(shè)計將實時視頻直接接入LCD顯示控制器處理,而不經(jīng)過ARM處理器,系統(tǒng)結(jié)構(gòu)如圖1(b)所示。由LCD顯示控制器直接完成視頻數(shù)據(jù)與操作顯示數(shù)據(jù)的存取、合成、疊加等處理操作,降低了ARM處理器處理圖像數(shù)據(jù)的壓力,從而保證系統(tǒng)高效穩(wěn)定工作。
1.2 LCD顯示控制器的工作原理及構(gòu)架
LCD顯示控制器由視頻接口電路完成視頻數(shù)據(jù)的轉(zhuǎn)換、輸入,由8080、6800等協(xié)議接口電路完成ARM最小系統(tǒng)顯示數(shù)據(jù)的解析、輸入,再由主控器與存儲控制器把兩路數(shù)據(jù)分別存入片外存儲器中,再由后級合成顯示電路從顯存中讀取所需要的圖像數(shù)據(jù),合成處理后配合LCD顯示所需要時序一同送入LCD中,完成最終的顯示。
根據(jù)上述原理提出了如圖2所示的LCD顯示控制器構(gòu)架,主要由圖像接口、圖像緩存、協(xié)調(diào)存取、顯示合成等模塊組成,完成從圖像接入、處理、存取、輸出顯示等一系列工作[3]。
2 圖像接口電路設(shè)計
2.1 視頻接口電路設(shè)計
本設(shè)計選用OV7670作為接入攝像頭,不經(jīng)過ARM最小系統(tǒng)處理直接接入LCD顯示控制器中,通過SCCB總線對OV7670進行初始化配置,然后把配置完成信息傳遞給拼接模塊,由拼接模塊來接收OV7670攝像頭輸入的視頻像素信號、像素時鐘、行同步幀同步信號,最終輸出16位RGB565格式數(shù)據(jù)、拼接后像素的像素時鐘和幀有效信號,視頻最高分辨率為640×480 ppi,幀率達到30幀/秒。
2.2 8080接口協(xié)議解析電路設(shè)計
ARM最小系統(tǒng)顯示數(shù)據(jù)以8080時序輸入,8080接口協(xié)議解析電路,一方面配合其時序接收相應(yīng)的數(shù)據(jù)信息,另一方面對接收到的數(shù)據(jù)信息進行解析[4],具體設(shè)計的總線連接和寄存器設(shè)置如圖3所示。
在ARM最小系統(tǒng)部分,可以使用模擬8080方式或FSMC(可變靜態(tài)存儲控制器)進行時序信號的傳輸,其中使用FSMC方式速度更快、更便捷[5]。具體FPGA設(shè)置的控制功能和寄存器配置如表1所示,ARM處理器編程時只要按照以下數(shù)據(jù)時序要求,就可以方便地進行寄存器控制和數(shù)據(jù)讀寫。
3 協(xié)調(diào)存取電路設(shè)計
存取協(xié)調(diào)電路包括視頻與顯示數(shù)據(jù)的預(yù)處理、SDRAM協(xié)調(diào)控制器,其中SDRAM協(xié)調(diào)控制器是整個協(xié)調(diào)控制電路的核心,為了讓LCD顯示控制器靈活存取連續(xù)更新的視頻數(shù)據(jù)和非連續(xù)更新的ARM最小系統(tǒng)顯示數(shù)據(jù),改進了傳統(tǒng)的SDRAM控制器,總體結(jié)構(gòu)如圖4所示,使其在操作兩類不同數(shù)據(jù)時更加靈活高效便捷,并可以移植擴展。
3.1 SDRAM主協(xié)調(diào)器設(shè)計
SDRAM主協(xié)調(diào)器主要根據(jù)控制信息控制SDRAM從控制器工作,完成視頻數(shù)據(jù)與顯示數(shù)據(jù)的協(xié)調(diào)。其中視頻幀有效信號和起始、結(jié)束地址分別給出視頻數(shù)據(jù)和ARM顯示數(shù)據(jù)的幀完成信號,其中ARM顯示數(shù)據(jù)像素點與起始地址、結(jié)束地址關(guān)系如式(1)所示:
其中S為有效像素點個數(shù),H0、V0為起始行地址和起始列地址,H1、V1為結(jié)束行地址和結(jié)束列地址。
3.2 SDRAM從協(xié)調(diào)器設(shè)計
SDRAM從協(xié)調(diào)器會根據(jù)接收的信息對對應(yīng)數(shù)據(jù)進行存儲規(guī)劃,對于視頻數(shù)據(jù),從協(xié)調(diào)器使用順序存取,而在ARM顯示數(shù)據(jù)部分,則使用映射存取,具體對應(yīng)關(guān)系如圖5所示。
當ARM處理器需更新上圖所示區(qū)域時,可以根據(jù)式(2)計算出對應(yīng)SDRAM在存儲上述所更新數(shù)據(jù)時的地址值。
其中VM、HM為LCD顯示區(qū)域行像素點和列像素點,CM、RM為SDRAM存取列地址和行地址,AR為更新數(shù)據(jù)在SDRAM存儲時的起始行地址、AC為更新數(shù)據(jù)在SDRAM存儲時的起始列地址、NV為連續(xù)存儲的像素點值,NH為所需更新的區(qū)域塊,BA為連續(xù)存儲像素點結(jié)束后需跳過像素點個數(shù)。
3.3 SDRAM控制器設(shè)計
SDRAM控制器主要完成初始化、自刷新、行列地址輸出、讀寫控制等針對SDRAM的直接操作。在本設(shè)計中,SDRAM除了完成初始化和自刷新等基本控制功能外,其他的讀寫切換、分頁地址切換都受對應(yīng)SDRAM從協(xié)調(diào)器控制,最終完成單片SDRAM的部分乒乓存取,主要利用SDRAM高速讀寫來完成片內(nèi)的分頁讀寫切換。
4 合成顯示電路設(shè)計
4.1 合成控制電路設(shè)計
合成模塊從SDRAM中讀取所需顯示數(shù)據(jù),根據(jù)顯示方式進行數(shù)據(jù)的篩選調(diào)整,然后把相應(yīng)的顯示數(shù)據(jù)點輸出,合成控制功能示意圖如圖6所示,其中根據(jù)顯示方式的不同,分別可以顯示單視頻、單ARM顯示信息和畫中畫顯示,以方便嵌入式系統(tǒng)根據(jù)對應(yīng)顯示要求進行調(diào)節(jié)控制,達到最佳的顯示操作體驗[6]。
4.2 OSD字符疊加電路設(shè)計
OSD字符疊加是一種輔助信息顯示方法,可以在原本輸出顯示的圖像上疊加所需輔助顯示的字符信息,以達到顯示效果最優(yōu)化,本設(shè)計在最終數(shù)據(jù)輸出部分加入了OSD疊加模塊,ROM中數(shù)據(jù)有疊加所需給定,并通過分層疊加操作對輸入顯示數(shù)據(jù)進行處理,通過透明度的調(diào)節(jié)可以讓隨屏疊加字符有透明效果,用以表示輔助信息的次重點[7]。
4.3 LCD驅(qū)動時序產(chǎn)生電路設(shè)計
時序發(fā)生模塊接收最終處理完成的顯示數(shù)據(jù),并根據(jù)對應(yīng)顯示屏的驅(qū)動時序,產(chǎn)生相應(yīng)的驅(qū)動時序,把所需顯示數(shù)據(jù)送到LCD上完成顯示。本設(shè)計選取群創(chuàng)的7寸屏AT070TN83作為最終顯示屏幕。關(guān)鍵時序參數(shù)如表2所示,其中的tCLK的典型值為30 ns。
5 LCD顯示控制器的實現(xiàn)與功能測試
基于上述設(shè)計,用Verilog HDL編程在FPGA cyclone II EP2C35F484C8N上實現(xiàn),用兩片1 M×4 BANK×16 bit容量的SDRAM K4S641632作為數(shù)據(jù)顯存,并通過攝像頭OV7670、ARM STM32F103和群創(chuàng)7寸屏AT070TN83進行系統(tǒng)測試。
利用SignalTap II工具實時捕捉輸出端信號,主要包括驅(qū)動時鐘lcd_clk、行同步信號lcd_hs、幀同步信號lcd_vs、數(shù)據(jù)有效信號lcd_en、顯示數(shù)據(jù)藍色分量lcd_blue, 捕捉實時顯示驅(qū)動時序如圖7和圖8所示。
由測試時序分析可得 LCD顯示控制器產(chǎn)生的時序完全符合7寸屏AT070TN83驅(qū)動所需的時序要求。
LCD顯示控制器接入實際嵌入式系統(tǒng)中進行顯示效果測試,主要包括ARM、攝像頭和LCD屏等器件,最終實際的顯示界面如圖9所示。
上圖中A區(qū)域為實時視頻顯示區(qū)域,B區(qū)域為由ARM顯示數(shù)據(jù)確定的操作界面的顯示區(qū)域,C區(qū)域為由OSD字符疊加形成的字符區(qū)域,其中視頻顯示界面可對大小位置進行調(diào)節(jié),顯示界面可根據(jù)用戶自定義編程設(shè)置,并可以靈活加入各類隨屏顯示內(nèi)容。經(jīng)測試,LCD顯示控制器設(shè)計運行良好、顯示效果穩(wěn)定可靠,可以滿足設(shè)計需求。
6 結(jié)論
本文以FPGA+SDRAM為核心,完成特定功能LCD顯示控制器的設(shè)計。充分利用FPGA高效并行處理的特點,在帶視頻顯示功能的嵌入式系統(tǒng)設(shè)計時把復(fù)雜龐大的圖像數(shù)據(jù)處理合成功能放入到LCD顯示控制器內(nèi)部,極大地降低了ARM處理器的圖像處理壓力,讓一般ARM最小系統(tǒng)處理復(fù)雜圖像數(shù)據(jù)成為可能,同時LCD顯示控制器用Verilog HDL設(shè)計開發(fā),有良好的移植性和功能拓展性,稍作修改和調(diào)整就可以適應(yīng)不同的嵌入式系統(tǒng)顯示要求。經(jīng)實際測試,該LCD顯示控制器運行穩(wěn)定,顯示效果良好,可推廣用于視頻監(jiān)控、車載娛樂等具有視頻顯示功能的嵌入式系統(tǒng)中。
參考文獻
[1] MITHUNA C O,LIBIN T T,KRISHNAKUMAR R S,et al.System Verilog based design and implementation of LCD Controller IP Core(2015) 2015 International Conference on VLSI Systems,Architecture,Technology and Applications,VLSI-SATA 2015.
[2] 李鋼,王飛.STM32直接驅(qū)動RGB接口的TFT數(shù)字彩屏設(shè)計[J].單片機與嵌入式系統(tǒng)應(yīng)用,2011,11(8):28-30.
[3] LIU H,TANG W.Video Camera System Based on FPGA(2015) Proceedings-2014 7th International Symposium on Computational Intelligence and Design,ISCID 2014,2:249-252.
[4] SHI D,YE X,YE S.Design of microcontroller's display system based on FPGA.Proceedings of 4th International Conference on Intelligent Systems Design and Engineering Applications,ISDEA 2013:251-254.
[5] 湯莉莉,黃偉.基于STM32的FSMC接口驅(qū)動TFT彩屏設(shè)計[J].現(xiàn)代電子技術(shù),2013(20):139-141,144.
[6] 萬鵬,楊大偉.基于FPGA的視頻疊加融合系統(tǒng)設(shè)計與實現(xiàn)[J].電子技術(shù)應(yīng)用,2013,39(9):44-46.
[7] 黃燕群,李利品,王爽英,等.基于FPGA的OSD設(shè)計[J].液晶與顯示,2010,25(3):429-433.