宋 宇, 劉 彬, 耿益營
(長春工業(yè)大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院, 吉林 長春 130012)
基于FPGA的實(shí)時圖像采集系統(tǒng)
宋 宇, 劉 彬, 耿益營
(長春工業(yè)大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院, 吉林 長春 130012)
基于FPGA的實(shí)時圖像采集系統(tǒng)包括視頻圖像采集、SDRAM圖像數(shù)據(jù)存儲、FPGA圖像數(shù)據(jù)發(fā)送,以及VGA終端顯示。系統(tǒng)選擇FPGA芯片、128 MBit SDRAM芯片、ADV7123視頻編碼芯片等硬件以及Quartus Ⅱ13.0軟件開發(fā)工具。 采用Modelsim10.0實(shí)現(xiàn)了系統(tǒng)仿真。
圖像采集系統(tǒng); FPGA; CMOS SENSOR; SDRAM; VGA
圖像采集是圖像處理的前提。傳統(tǒng)的圖像采集與處理技術(shù)一般由采集卡完成圖像采集后再由計(jì)算機(jī)對其進(jìn)行處理,這種設(shè)計(jì)與實(shí)現(xiàn)方法存在著系統(tǒng)后續(xù)改造與擴(kuò)展困難、體積大、成本高、開發(fā)周期長等不足[1]。而近年來,可編程片上系統(tǒng)(System On a Programmable Chip, SOPC)發(fā)展迅速,它融合了處理器、存儲器、I/O口等模塊,并集成到現(xiàn)場可編程門陣列(FPGA)上。在當(dāng)前技術(shù)下,為了有效地實(shí)現(xiàn)各類圖像處理算法,許多用于視頻圖像采集和處理的芯片隨之應(yīng)運(yùn)而生,芯片的處理功能也越來越強(qiáng)大,使用也越來越方便[2]。用FPGA來實(shí)現(xiàn)外圍芯片的控制,將圖像算法移植到SOPC平臺上來實(shí)現(xiàn),具有設(shè)計(jì)靈活、可移植性高、速度快等優(yōu)勢,并可以在此基礎(chǔ)上進(jìn)一步對圖像進(jìn)行處理,例如對圖像進(jìn)行直方圖統(tǒng)計(jì)、均衡、濾波等[3]。文中設(shè)計(jì)了一種基于FPGA的視頻采集系統(tǒng),實(shí)現(xiàn)了圖像信息的采集、轉(zhuǎn)換、緩存、顯示等功能。
1.1 硬件結(jié)構(gòu)
系統(tǒng)采用Altera公司Cyclon Ⅳ 系列FPGA作為主控芯片,OV7725作為CMOS圖像傳感器采集數(shù)字圖像信息, Hynix的HY57V283220作為SDRAM緩存圖像數(shù)據(jù),最后通過視頻編碼芯片ADV7123連接至VGA接口。系統(tǒng)硬件結(jié)構(gòu)如圖1所示。
圖1 系統(tǒng)硬件結(jié)構(gòu)
1.2 系統(tǒng)各硬件模塊
1.2.1 FPGA
EP4CE15F17C8N包括1.5 W個邏輯單元,166個用戶I/O,31.5 K*16 Bit的Flash,4個能級聯(lián)具有動態(tài)配置功能的PLL。
1.2.2 SDRAM
Hynix的HY57V283220芯片有4個區(qū)塊(BANK),每個BANK 有1 M*32 Bit存儲單元,12 Bit行地址,8 Bit列地址,共4 M*32 Bit=128 MBit存儲容量。
1.2.3 攝像頭
OV7725是低功耗的CMOS傳感器,內(nèi)部集成A/D轉(zhuǎn)換模塊,可直接輸出數(shù)字信號,最高支持640*480@60 Hz分辨的視頻輸出。
1.2.4 視頻D/A轉(zhuǎn)換芯片
ADV/GM7123具有轉(zhuǎn)換速度快、同步性好、精度高的特點(diǎn),可以達(dá)到30位RGB數(shù)模信號轉(zhuǎn)換(本系統(tǒng)只使用24位)的需要。
1.2.5 VGA
24位VGA視頻輸出接口,可以顯示真彩色圖像,通過FPGA編程實(shí)現(xiàn)VGA來驅(qū)動,完成視頻信號的輸出。FPGA并行計(jì)算的優(yōu)勢,使它可以滿足VGA顯存數(shù)據(jù)更新與顯示同步進(jìn)行的要求。
1.3 系統(tǒng)工作原理
系統(tǒng)上電復(fù)位之后,各模塊初始化,由主控芯片F(xiàn)PGA,驅(qū)動攝像頭、SDRAM、D/A轉(zhuǎn)換芯片,提供它們工作所需要的時鐘,配置它們的內(nèi)部寄存器。在初始化完成之后,CMOS攝像頭將采集到視頻數(shù)據(jù)(RGB格式)傳輸給FPGA,F(xiàn)PGA通過verilog程序把傳輸過來的數(shù)據(jù)轉(zhuǎn)換成RGB565,并最終轉(zhuǎn)換為RGB888格式緩存到SDRAM中,再通過一塊D/A視頻編碼轉(zhuǎn)換芯片把數(shù)字VGA信號轉(zhuǎn)換成模擬VGA信號,連接至顯示器顯示。
視頻采集系統(tǒng)的軟件設(shè)計(jì)以Altera公司的QuartuesⅡ13.0為開發(fā)工具,以VerilogHDL硬件描述語言來進(jìn)行各個模塊的編程,其中包括CMOS視頻圖像采集接口設(shè)計(jì)、OV7725寄存器初始化、SDRAM控制器、VGA驅(qū)動、全局時鐘模塊,系統(tǒng)軟件結(jié)構(gòu)如圖2所示。
圖2 系統(tǒng)軟件結(jié)構(gòu)
2.1 FPGA控制時鐘模塊
在系統(tǒng)剛剛上電的時候,無論是FPGA還是外設(shè)均處于不穩(wěn)定的狀態(tài),如果時鐘信號(clk)上升沿與復(fù)位信號(rst)的上升沿或者下降沿同時達(dá)到,將會產(chǎn)生競爭冒險。為了保證電路各模塊正常工作,文中設(shè)計(jì)了一個帶PLL的全局時鐘管理模塊,包括100 MHz的SDRAM控制時鐘,延時1/4周期的SDRAM驅(qū)動時鐘(100 MHz),25 MHz的VGA分辨率在640*480@60 Hz下的掃描時鐘,24 MHz的CMOS時鐘,以及全局復(fù)位信號。這個模塊保證了復(fù)位信號與全局時鐘信號的同步,并為整個系統(tǒng)的各個模塊提供工作時鐘。
2.2 OV7725寄存器的初始化模塊
模塊主要實(shí)現(xiàn)的兩個功能:
1)FPGA與OV7725的I2C通信,也就是配置CMOS SENSOR的SCCB接口。I2C總線在寫寄存器時先寫設(shè)備地址,再寫寄存器地址,最后寫入寄存器的數(shù)據(jù)[3]。I2C總線寫入時序如圖3所示。
圖3 I2C寫入時序
I2C總線在讀寄存器的時候,需要先寫入設(shè)備地址、寄存器地址,然后在主控端(FPGA)重新發(fā)送起始信號后,再讀取數(shù)據(jù),時序圖如圖4所示。
圖4 I2C讀取時序
2)OV7725寄存器配置。OV7725默認(rèn)輸出的是YUV422格式,為了達(dá)到設(shè)計(jì)需要,必須將它的內(nèi)部寄存器com10(地址為0x12)的值設(shè)置為0x06,即以VGA分辨率輸出RGB565格式。
2.3 CMOS視頻流數(shù)據(jù)采集模塊
這個模塊的作用就是在I2C配置OV7725和SDRAM初始化完成前提下提取圖像信息:將攝像頭采集到的10 Bit數(shù)據(jù)(僅高8位有效)經(jīng)過延時、同步、拼接輸出16 Bit RGB565數(shù)據(jù),即OV7725圖像的傳輸、轉(zhuǎn)換。采用Modelsim仿真,得到的測試波形如圖5所示。
圖5 視頻數(shù)據(jù)采集仿真波形
由圖中可以看出,在行同步信號href為高電平期間,輸出了16 Bit的RGB565信號(cmos_565_data)。這個信號是由高8位{R[4:0],G[5:3]}與低8位 {G[2:0],B[4:0]}拼接成的,這是RGB565的完整讀取過程。
2.4 SDRAM控制器模塊
這個模塊實(shí)現(xiàn)的是SDRAM控制器與SDRAM的連接,產(chǎn)生驅(qū)動SDRAM所需的驅(qū)動時鐘、片選等信號。在視頻流數(shù)據(jù)采集模塊得到了16 Bit RGB565信號,由于SDRAM與VGA都是24 Bit接口,所以采用高位補(bǔ)低位的方式,得到24 Bit RGB888數(shù)據(jù)作為寫入SDRAM的數(shù)據(jù)。模塊最終輸出的是FIFO數(shù)據(jù)讀取信號,連接至VGA驅(qū)動模塊,作為VGA的輸入信號。
關(guān)于SDRAM,有一種“乒乓操作”,在本系統(tǒng)中,因?yàn)橹徊捎靡黄瑂dram,所以需要實(shí)現(xiàn)片內(nèi)乒乓來防止當(dāng)前讀取的圖像與上一次存入的圖像出現(xiàn)交錯。簡單說,就是通過MUX選擇器,2個BANK讀2個BANK寫交替進(jìn)行。
片內(nèi)乒乓原理如圖6所示。
圖6 片內(nèi)乒乓原理圖
2.5 VGA驅(qū)動模塊
VGA模塊主要實(shí)現(xiàn)的功能就是驅(qū)動ADV7123把SDRAM傳送過來的數(shù)據(jù)(數(shù)字信號)轉(zhuǎn)換成模擬信號,最終在顯示器上顯示出來。參照《VGA時序標(biāo)準(zhǔn)》,VGA的系統(tǒng)時鐘計(jì)算方法為[4]:
(1)
文中所用的640*480@60 Hz ,它的f=800*565*60=25.175 MHz(約為25 MHz),與上述控制時鐘模塊吻合。
VGA的掃描流程如圖7所示。
圖7 VGA掃描流程圖
圖中hcnt是行像素點(diǎn)寄存器,計(jì)數(shù)滿800使得行同步信號lcd_hs有效。vcnt是行數(shù)寄存器,計(jì)滿525使得場同步信號lcd_vs有效。lcd_rgb就是最終提供給ADV7123轉(zhuǎn)換的RGB信號。
完成以上各個模塊的設(shè)計(jì)和仿真之后分配管腳,將編譯好的工程文件下載到FPGA中。
系統(tǒng)上電之后,整個系統(tǒng)運(yùn)行如圖8所示。
圖8 基于FPGA的視頻采集系統(tǒng)
可以看到系統(tǒng)畫面清晰、可靠,系統(tǒng)的實(shí)時性、穩(wěn)定性都達(dá)到了設(shè)計(jì)要求。
基于可編程邏輯器件所設(shè)計(jì)的視頻采集系統(tǒng)方便移植、改進(jìn),是后續(xù)加入圖像處理算法的基礎(chǔ)部分。在后面的研究過程中,將實(shí)現(xiàn)實(shí)時顯示系統(tǒng)的圖片存儲以及加入一些圖像處理算法,并使用按鍵來切換不同算法的顯示效果。
[1] 朱奕丹,方怡冰.基于FPGA的圖像采集與VGA顯示系統(tǒng)[J].計(jì)算機(jī)應(yīng)用,2011,31(5):1258-1261.
[2] 陳友榮,楊海波.基于FPGA技術(shù)視頻采集系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].中國有線電視,2008(4):382-387.
[3] 閏豐,吳川,王延杰.一種基于FPGA的實(shí)時圖像處理系統(tǒng)[J].長春工業(yè)大學(xué)學(xué)報(bào):自然科學(xué)版,2003,24(4):50-52.
[4] 廖裕評,陸瑞強(qiáng).邏輯電路設(shè)計(jì)DE2-115實(shí)戰(zhàn)寶典[M].武漢:有晶科技研發(fā)團(tuán)隊(duì),2012.
[5] 原魅,何文浩,肖晗.基于FPGA的嵌入式圖像處理系統(tǒng)設(shè)計(jì)[M].北京:電子工業(yè)出版社,2007.
[6] 應(yīng)芳琴.基于I2C總線的視頻信息采集系統(tǒng)的IP核設(shè)計(jì)[D].杭州:浙江工業(yè)大學(xué),2005.
[7] 劉波.精通Verilog HDL語言編程[M].北京:電子工業(yè)出版社,2007.
[8] 葉少朋.基于FPGA的嵌入式視頻采集系統(tǒng)設(shè)計(jì)[J].信息化研究,2011(2):39-43.
A real-time image collection system based on FPGA
SONG Yu, LIU Bin, GENG Yiying
(School of Computer Science & Engineering, Changchun University of Technology, Changchun 130012, China)
The FPGA based real-time image collection system is composed of video image sampling, SDRAM data storage, FPGA data transfer and VGA display. FPGA chip, SDRAM chip with 128 MBit and ADV7123 video coding chip are used as hardware, while Quartus II13.0 as software. Modelsim10.0 is applied for simulation.
image collection system; FPGA; CMOS SENSOR; SDRAM; VGA.
2016-04-10
教育部“春暉計(jì)劃”基金資助項(xiàng)目(Z2011139)
宋 宇(1969-),男,漢族,吉林長春人,長春工業(yè)大學(xué)教授,碩士,主要從事嵌入式系統(tǒng)方向研究,E-mail:.songyu@ccut.edu.cn.
10.15923/j.cnki.cn22-1382/t.2016.6.10
TP 752
A
1674-1374(2016)06-0565-05