梁皓東,張國平
(華中師范大學(xué)物理科學(xué)與技術(shù)學(xué)院,湖北武漢 430079)
基于ARM9+FPGA的便攜式視頻展示臺(tái)的設(shè)計(jì)
梁皓東,張國平
(華中師范大學(xué)物理科學(xué)與技術(shù)學(xué)院,湖北武漢 430079)
目前市場上的便攜式視頻展示臺(tái)普遍功耗大、成本高。針對(duì)此問題,基于對(duì)ARM9和FPGA的嵌入式實(shí)時(shí)圖像處理平臺(tái)的研究,提出了一種便攜式視頻展示臺(tái)的設(shè)計(jì)方案。充分利用ARM9高性能、低功耗、低成本等特點(diǎn),結(jié)合FPGA傳輸處理高分辨率圖像的能力,設(shè)計(jì)了便攜式視頻展示臺(tái),其具有體積小、易攜帶、低功耗、低成本和高清顯示等特點(diǎn)。此外,詳細(xì)介紹了各模塊Linux設(shè)備驅(qū)動(dòng)的設(shè)計(jì)。
便攜式視頻展示臺(tái);嵌入式Linux;LCD控制器;SDRAM控制器;VGA時(shí)序
視頻展示臺(tái)是將實(shí)物、文稿、圖片和過程等信息轉(zhuǎn)換為圖像信號(hào)輸出在投影機(jī)、顯示器上展示出來的一種演示設(shè)備。便攜式視頻展示臺(tái)由于具有體積小、易于攜帶等優(yōu)點(diǎn),被廣泛用于教學(xué)、大型會(huì)議及產(chǎn)品展示等場合,具有較大的研究前景。市場上的視頻展示臺(tái)普遍存在體積大、功耗高、價(jià)格貴等特點(diǎn)。本文采用并行嵌入式處理結(jié)構(gòu),設(shè)計(jì)了基于ARM9和FPGA的便攜式視頻展示臺(tái),在最大限度實(shí)現(xiàn)高分辨率圖像實(shí)時(shí)處理與顯示的同時(shí),也使圖像處理平臺(tái)體積更小、功耗更低、成本更低。其內(nèi)容主要包括高清圖像的采集與存儲(chǔ),基于FPGA的SDRAM控制器的設(shè)計(jì)、ARM9和FPGA的通信方式以及各模塊基于Linux平臺(tái)的驅(qū)動(dòng)設(shè)計(jì)。此視頻展示臺(tái)輸出分辨率為1 024×768,60 Hz。
本便攜式視頻展示臺(tái)的設(shè)計(jì)方案主要由兩個(gè)模塊構(gòu)成:ARM9主控模塊和FPGA從模塊,如圖1所示。ARM9主控模塊采用具有極快讀寫速度的2片32 Mbit/s的SDRAM來保證Linux操作系統(tǒng)的流暢運(yùn)行。主要功能是控制實(shí)物、文稿、圖片和過程等視頻信號(hào)的采集與存儲(chǔ),并把采集到的信號(hào)通過自身攜帶的LCD控制器并行送入FPGA從模塊,這能很好地解決其他設(shè)計(jì)通過SPI總線串行傳送圖像導(dǎo)致的傳輸圖片大小和速率受限的問題。

圖1 硬件系統(tǒng)圖
FPGA從模塊的主要功能是把從LCD控制器傳送過來的LCD接口信號(hào)送入高速SDRAM進(jìn)行緩存,并通過SDRAM控制器把SDRAM中緩存的信號(hào)讀出送入具有模數(shù)轉(zhuǎn)換功能的權(quán)電阻網(wǎng)絡(luò)中,將LCD接口信號(hào)轉(zhuǎn)換成與VGA掃描邏輯相匹配的時(shí)序信號(hào)。
此外,為了給實(shí)物、文檔、圖片或者演示過程提供照明光源,本方案在OV9655攝像頭旁邊加了一圈LED小燈,并通過步進(jìn)電機(jī)來控制照明小燈的高度,保證良好的采集視野,小燈的暗滅與高度變化采用按鍵來操作。硬件采用基于ARM9內(nèi)核的三星S3C2440A處理器,其具有高性能、低功耗、低成本等特點(diǎn)。采用Altera公司的FPGA處理器EPC3T14417N,這是一款性能較好但成本較低的FPGA芯片,滿足本設(shè)計(jì)圖像數(shù)據(jù)的處理要求。
本部分采用攝像頭接口控制單元CAMIF和I2C總線來控制和傳輸具有130萬像素的OV9655攝像頭采集實(shí)物、圖片、文檔或者過程等視頻數(shù)據(jù)。選擇CMOS傳感器是因?yàn)樗泄牡汀⒕幊谭奖恪⒊杀镜偷葍?yōu)點(diǎn)。其主要引腳及功能描述如下:CAMCLKOUT是CPU輸出的采樣時(shí)鐘,幀同步信號(hào)VSYNC、行同步信號(hào)HREF、像素時(shí)鐘信號(hào)PCLK由OV9650內(nèi)部產(chǎn)生,輸入到S3C2440A芯片中,用于對(duì)圖像采集進(jìn)行控制[1]。此外,本設(shè)計(jì)充分利用了OV9655攝像頭在Linux系統(tǒng)下的照相功能,可把實(shí)物或者文檔的照片保存在Flash中進(jìn)行回放。按照系統(tǒng)的要求,在配置攝像頭信號(hào)輸出模式時(shí),選擇P通道模式,輸出數(shù)字RGB556信號(hào)。
在 Linux 2.6.30/drivers/media/video 目錄下建立OV9655.c、CAMERAIF.c 和 SCCB.c 三 個(gè) 源 文 件。OV9655.c負(fù)責(zé)設(shè)備初始化、與內(nèi)核的通信;CAMERAIF.c管理攝像頭寄存器的配置;SCCB.c用于I2C數(shù)據(jù)傳送[2]。其驅(qū)動(dòng)設(shè)計(jì)流程圖如圖2所示。

圖2 攝像頭驅(qū)動(dòng)設(shè)計(jì)流程圖
修改 Linux 2.6.30/drivers/media/video目錄下的Kconfig、Makefile文件,添加新增攝像頭驅(qū)動(dòng)信息,把驅(qū)動(dòng)設(shè)置為<M>類型,表示屬于可加載型驅(qū)動(dòng)以避免重新編譯內(nèi)核。編譯源文件,生成3個(gè)加載模塊:V9655.ko,CAMERAIF.ko 和 SCCB.ko,通過串口復(fù)制到開發(fā)板[3]。
S3C2440A帶有LCD控制器,可以很方便地控制驅(qū)動(dòng)掃描式接口的TFT顯示。其主要功能引腳有:像素時(shí)鐘信號(hào)引腳 VCLK/LCD,場同步信號(hào)引腳 VFRAME/VSYNC,行同步信號(hào)引腳 VLINE/HSYNC,VD[23:0]是RGB數(shù)字信號(hào)輸出端口。LCD控制器能夠傳輸圖像數(shù)據(jù)和產(chǎn)生需要的控制信號(hào)、本設(shè)計(jì)中ARM9通過并行接口按照24位傳送給FPGA.
VGA接口使用模擬RGB通道,逐點(diǎn)、逐行掃描,其關(guān)鍵信號(hào)有5個(gè),分別是行同步信號(hào)、場同步信號(hào)、紅色模擬信號(hào)、綠色模擬信號(hào)和籃色模擬信號(hào)[4]。
本設(shè)計(jì)引入FPGA從模塊對(duì)高分辨率圖像進(jìn)行緩存,并根據(jù)VGA接口時(shí)序,把LCD接口信號(hào)轉(zhuǎn)換成XVGA接口信號(hào)輸出,同時(shí)可以利用FPGA內(nèi)異步FIFO解決不同時(shí)鐘域間通信速率匹配的問題。
FPGA從模塊的重點(diǎn)是實(shí)現(xiàn)對(duì)SDRAM的讀寫控制,本文借助FPGA內(nèi)部的邏輯資源設(shè)計(jì)SDRAM控制器實(shí)現(xiàn)SDRAM讀寫控制,達(dá)到用SDRAM緩存高分辨率實(shí)時(shí)圖像的目的。
3.2.1 SDRAM 控制器
本文借助FPGA片內(nèi)的2個(gè)異步FIFO作為SDRAM的讀寫緩存。SDRAM控制器結(jié)構(gòu)圖如圖3所示。

圖3 SDRAM控制器結(jié)構(gòu)圖
SDRAM控制器主要由接口控制模塊、數(shù)據(jù)通路模塊與命令解析模塊、命令響應(yīng)模塊組成[5]。各模塊功能為:
1)接口控制模塊:SDRAM初始化完成后,用戶可以通過控制器的接口模塊輸入指令控制SDRAM數(shù)據(jù)的讀寫。
2)命令響應(yīng)模塊:響應(yīng)外部讀寫要求并產(chǎn)生狀態(tài)指令給命令解析模塊。
3)命令解析模塊:命令解析模塊用于接收狀態(tài)指令并生成合適的操作命令給SDRAM存儲(chǔ)器。
4)數(shù)據(jù)通路模塊:負(fù)責(zé)對(duì)SDRAM進(jìn)行數(shù)據(jù)讀寫,使數(shù)據(jù)按照一定的時(shí)序有效地寫入寫出。
本方案的SDRAM采用頁模式突發(fā)讀寫方式以提高SDRAM的數(shù)據(jù)吞吐量。根據(jù)SDRAM的寄存器特點(diǎn),F(xiàn)PGA對(duì)SDRAM的讀寫控制如圖4狀態(tài)機(jī)所示[6]。FPGA從模塊使用Verilog HDL硬件描述語言實(shí)現(xiàn)。

圖4 SDRAM控制器狀態(tài)機(jī)圖
3.2.2 SDRAM控制器的實(shí)現(xiàn)及時(shí)序仿真
用Verilog語言在Quartus9.0的開發(fā)環(huán)境中進(jìn)行仿真,并通過Modelsim工具對(duì)SDRAM的工作狀況進(jìn)行仿真驗(yàn)證[7],圖5、圖6、圖7分別為SDRAM 在初始化、突發(fā)寫、突發(fā)讀時(shí)的工作時(shí)序。其中SDRAM_CMD包括:[4]CKE,[3]CS,[2]RAS,[1]CAS,[0]WE。初始化過程依次發(fā)出了將近200 μs的空閑狀態(tài)、預(yù)充電、自動(dòng)刷新和模式寄存器設(shè)置等命令;寫過程依次發(fā)送激活、寫命令以及一些時(shí)間要求(tRCD,tRCD,tRP);讀過程依次發(fā)出激活、讀命令以及一些時(shí)間要求(tRCD,CAS Latency,tAC,tRP)。

圖5 SDRAM初始化時(shí)序時(shí)序仿真圖(截圖)

圖6 SDRAM寫時(shí)序?qū)憰r(shí)序仿真圖(截圖)

圖7 SDRAM讀時(shí)序仿真圖(截圖)
在FPGA從模塊中,把緩存在SDRAM中的LCD接口信號(hào)送到FPGA片外的權(quán)電阻網(wǎng)絡(luò)進(jìn)行模數(shù)轉(zhuǎn)換就能送往VGA接口顯示。VGA顯示是借用了S3C2440自帶的LCD控制器功能實(shí)現(xiàn)的,只要根據(jù)VGA時(shí)序修改LCD控制器相關(guān)寄存器即可,這和普通的TFT液晶屏的驅(qū)動(dòng)類似,此方式在很大層面上降低了VGA驅(qū)動(dòng)開發(fā)的難度。
在本設(shè)計(jì)中S3C2440A的HCLK=100 MHz,VCLK=40 MHz,根據(jù)公式VCLK=HCLK/[(CLKVAL+1)×2],故需設(shè)置CLKVAL=0.25。VSYNC(幀頻)的計(jì)算式為Frame_Rate=1/{[(VSPW+1)+(VBPD+1)+(LINEVAL+1)+(VFPD+1)]×[(HSPW+1)+(HBPD+1)+(HFPD+1)+(HOZVAL+1)]×[2×(CLKVAL+1)/(HCLK)]},則幀頻為25.78 Hz,經(jīng)過 FPGA 從模塊的SDRAM高速緩存后,幀頻可以達(dá)到60 Hz,分辨率是1 024×768。根據(jù)XVGA顯示時(shí)序特點(diǎn),配置S3C2440A的 LCD 控制寄存器 LCDCON1 ~ LCDCON5[8],就能實(shí)XVGA輸出。相關(guān)寄存器設(shè)置如下LCD初始化代碼所示。
由于Linux2.6.30內(nèi)核已經(jīng)很好地支持了LCD顯示,因此,驅(qū)動(dòng)并不需要重新編寫,只要進(jìn)行適當(dāng)?shù)男薷摹4蜷_內(nèi)核源代碼,找到arch/arm/mach-s3c2440/machsmdk2440.c文件,修改LCD的初始化代碼,包括寄存器的初始值、LCD的長寬等。LCD初始化代碼修改部分如下所示:


修改好LCD初始化代碼后,重新編譯內(nèi)核并生成內(nèi)核鏡像zImage,然后復(fù)制內(nèi)核鏡像zImage到/tftpboot/目錄中。
編譯內(nèi)核并生成內(nèi)核鏡像,然后將內(nèi)核鏡像移植入本便攜式顯示系統(tǒng)開發(fā)板中。將便攜式顯示系統(tǒng)與投影儀相連接,對(duì)本便攜式顯示系統(tǒng)進(jìn)行測試論證。圖8是本便攜式視頻展示臺(tái)的投影效果驗(yàn)證截圖,輸出分辨率為1 024×768,60 Hz。通過觀察測試結(jié)果,本方案切實(shí)可行,對(duì)實(shí)物、圖片、文檔或者過程的顯示效果清晰,無抖動(dòng)、無卡頓。

圖8 便攜式視頻展示臺(tái)的效果(截圖)
根據(jù)市場對(duì)視頻展示臺(tái)的大量需求但價(jià)格貴、功耗高的現(xiàn)狀,提出了基于ARM9+FPGA的便攜式視頻展示臺(tái)的設(shè)計(jì)方案。本方案充分發(fā)揮ARM和FPGA各自的特性,在實(shí)現(xiàn)便攜式視頻展示臺(tái)體積小、低成本和低功耗的基礎(chǔ)上,最大限度地實(shí)現(xiàn)圖像的高清流暢顯示。ARM9主控制模塊利用自身攜帶的Camera接口和LCD控制器,實(shí)現(xiàn)了高清圖像的采集和圖像數(shù)據(jù)在ARM9主控模塊和FPGA從模塊模塊之間的并行傳輸,提高了傳輸速度。FPGA從模塊設(shè)計(jì)了一種SDRAM控制器,實(shí)現(xiàn)了高分辨率圖像實(shí)時(shí)顯示,也解決了在多個(gè)時(shí)鐘域間進(jìn)行信號(hào)通信的問題。方案采用模塊化的設(shè)計(jì)原則,降低了開發(fā)成本和難度。
:
[1]張挺飛,樊永生,孫凌云.基于FPGA+ARM的智能圖像門控系統(tǒng)[J].電視技術(shù),2012,36(17):156-158.
[2]樊圍棟,石紅瑞,張健.嵌入式LINUX下CMOS攝像頭驅(qū)動(dòng)的設(shè)計(jì)與實(shí)現(xiàn)[J].工業(yè)儀表與自動(dòng)化裝置,2010(3):68-70.
[3]李亞峰,歐文盛.ARM嵌人式Linux系統(tǒng)開發(fā)從入門到精通[M].北京:清華大學(xué)出版社,2007.
[4]廖永清,丁旭昌,付建國,等.基于FPGA的VGA圖像動(dòng)態(tài)顯示控制器的設(shè)計(jì)與實(shí)現(xiàn)[J].電視技術(shù),2011,35(17):52-54.
[5]劉冬,焦明華,程飛龍.基于可編程邏輯器件的高速SDRAM控制器的實(shí)現(xiàn)[J].電腦知識(shí)與技術(shù),2012,32(8):7816-7825.
[6]侯宏錄,張文芳.基于FPGA的SDRAM 控制器設(shè)計(jì)方案[J].兵工自動(dòng)化,2012,31(2):57-60.
[7]向厚振,張志杰,王鵬.基于FPGA視頻和圖像處理系統(tǒng)的FIFO緩存技術(shù)[J].電視技術(shù),2012,36(9):41-43.
[8]尹柱霞,鄭喜鳳,于洪濤.ARM+FPGA控制的LED脫機(jī)屏系統(tǒng)設(shè)計(jì)[J].液晶與顯示,2010,25(2):262-266.
Design of Portable Video Showcase Based on ARM9 and FPGA
LIANG Haodong,ZHANG Guoping
(School of Physics and Technology ,Central China Normal University,Wuhan 430079,China)
Currently,portable video showcases on the market usually have big energy consumption and high cost.To solve this problem,a new kind of portable video showcase based on ARM9 and FPGA embedded real-time image processing platform is put forward.ARM9’s high performance,low power consumption,low cost and other characteristics are taken full advantage in this scheme.As the ability of FPGA which can transport and process high-resolution images is combined,the designed portable video showcase have some characteristics,such as small,easy to carry,low energy consumption,low cost,high definition display and so on.Additionally,the Linux device driver design of each module is discussed in detail.
portable video showcase;Linux;LCD controller;SDRAM controller;VGA timing
TP302.1;TP391
A
【本文獻(xiàn)信息】梁皓東,張國平.基于ARM9+FPGA的便攜式視頻展示臺(tái)的設(shè)計(jì)[J].電視技術(shù),2014,38(3).
湖北省自然科學(xué)基金項(xiàng)目(2012FFC023)
梁皓東(1988— ),碩士生,主研嵌入式系統(tǒng)設(shè)計(jì),嵌入式linux驅(qū)動(dòng)開發(fā);
張國平(1969— ),教授,博士生導(dǎo)師,主研光通信、光電子技術(shù)、圖像處理、認(rèn)知無線電。
責(zé)任編輯:魏雨博
2013-06-26