鄭雪峰,馬學(xué)條,湯 峻,陳 龍,楊 柳
(杭州電子科技大學(xué) 電子信息技術(shù)國家級虛擬仿真實驗教學(xué)中心,浙江 杭州 310018)
借助信息技術(shù)能有效解決實驗教學(xué)過程中時間、地域和安全等限制問題,對于探索實驗教學(xué)新模式具有重要意義[1]。我校數(shù)字電路教師團(tuán)隊為了實施全方位開放式教學(xué),圍繞拓展實驗內(nèi)涵、激發(fā)學(xué)生學(xué)習(xí)興趣、培養(yǎng)學(xué)生工程創(chuàng)新意識等,開發(fā)了“基于FPGA 的手勢信號實時采集綜合性實驗項目”,借助遠(yuǎn)程虛擬仿真實驗教學(xué)手段,實現(xiàn)了全方位開放式教學(xué),有效地拓寬了數(shù)字電路實驗教學(xué)的時空領(lǐng)域。
數(shù)字電路實驗教學(xué)一般是利用實驗室數(shù)字電路實驗箱,學(xué)生在實驗室里完成實驗設(shè)計,然后提交實驗總結(jié)報告。這種教學(xué)方式缺乏靈活性,不能激發(fā)學(xué)生的學(xué)習(xí)興趣和實驗熱情[2]。
經(jīng)過多年實驗教學(xué)改革與實驗平臺建設(shè),形成了“遠(yuǎn)程虛擬實驗”教學(xué)模式,如圖1所示。學(xué)生只需連接網(wǎng)絡(luò),通過開放式實驗教學(xué)管理系統(tǒng),即可在寢室、實驗室或教室等區(qū)域遠(yuǎn)程共享實驗教學(xué)資源,突破時間、空間限制,進(jìn)行數(shù)字電路虛擬仿真實驗操作,遠(yuǎn)程提交仿真結(jié)果,實現(xiàn)“處處能學(xué)、時時可學(xué)”的泛在化學(xué)習(xí)[3]。
圖1 遠(yuǎn)程虛擬仿真實驗教學(xué)流程圖
“基于FPGA 的手勢信號實時采集綜合性實驗項目”,旨在使學(xué)生綜合運用電子設(shè)計自動化(EDA)技術(shù),通過自主設(shè)計、虛擬仿真等環(huán)節(jié),完成實驗設(shè)計。使學(xué)生將理論和實驗知識融會貫通,提高設(shè)計復(fù)雜數(shù)字系統(tǒng)的能力及實踐創(chuàng)新能力[4]。
如圖2 所示,實驗系統(tǒng)由數(shù)據(jù)采集模塊、異步FIFO 模塊、SDRAM 模塊和VGA 顯示模塊等組成。通過I2C 配置好OV5640,將采集到的8 位特定分辨率信號轉(zhuǎn)化為RGB565 格式;將轉(zhuǎn)換好的16 位的像素信號通過FIFO1 緩存,同時存入SDRAM;存入每幀像素后,將SDRAM 輸出給FIFO2;再將FIFO2 輸出的每幀數(shù)據(jù)通過VGA 模塊進(jìn)行顯示。
圖2 “基于FPGA 的手勢信號實時采集綜合性實驗”系統(tǒng)框圖
數(shù)據(jù)采集模塊采用OV5640 攝像頭進(jìn)行圖像采集,外接18 根引腳。SCLK、SDAT 為I2C配置引腳;DB0~DB7為采集像素數(shù)據(jù);CMOS_HREF、CMOS_VSYNC 為攝像頭行同步信號和幀同步信號;PCLK 為I2C 配置好的像素時鐘;XCLK 為輸入時鐘;3.3 V 供電引腳和接地引腳;復(fù)位引腳,低電平有效;PWDN 為上電控制引腳,高電平有效。采集的過程為先通過攝像頭的上電時序之后,F(xiàn)PGA 通過I2C 配置其寄存器,設(shè)置輸出格式為RGB565,輸出分辨率為1024×720。由于攝像頭采集的是8 位像素數(shù)據(jù),而RGB565 格式為16位信號,所以需要將兩個8 位信號合成16 位信號。一個PCLK 上升沿,采集一個8 位信號,輸出一個16位RGB565 信號,則需要兩個PCLK。當(dāng)幀同步信號VSYNC 從低電平到高電平跳變時,標(biāo)志一幀采集的結(jié)束,當(dāng)滿足VSYNC 為低電平并且HREF 為高電平時,才是有效像素。由數(shù)據(jù)手冊可知,OV5640 采集的前10 幀是無效幀,因此有效幀應(yīng)該從第12 幀開始算起。寄存器配置及采集位拼接電路如圖3 所示。
FPGA 通過I2C 協(xié)議向攝像頭發(fā)送配置攝像頭所需的寄存器值,以下是常用的配置寄存器值。
分辨率設(shè)置:
Reg_Data<=24'h380804;
Reg_Data<=24'h380900;
Reg_Data<=24'h380a02;
Reg_Data<=24'h380bd0;
亮度調(diào)節(jié):
Reg_Data<=24'h558740;
Reg_Data<=24'h558801;
鏡像調(diào)節(jié):
Reg_Data<=24'h382107;
Reg_Data<=24'h382100;
翻轉(zhuǎn)調(diào)節(jié):
Reg_Data<=24'h382047;
Reg_Data<=24'h382047;
實驗設(shè)計中需采用兩個異步 FIFO,記為異步FIFO1 和異步FIFO2。異步FIFO1 主要負(fù)責(zé)緩沖來自攝像頭采集的像素,然后交給SDRAM 緩存;異步FIFO2 主要負(fù)責(zé)接收來自SDRAM 的像素信號,然后投到VGA 上顯示。攝像頭采集的視頻數(shù)據(jù)時鐘頻率為24 MHz,SDRAM 的驅(qū)動時鐘頻率為100 MHz,因此需要異步FIFO1 作為中間緩沖。VGA 顯示的時鐘頻率為65 MHz,與SDRAM 的驅(qū)動時鐘頻率也不同,因此需要通過異步FIFO2 進(jìn)行緩沖。如圖4 所示,當(dāng)兩個獨立的系統(tǒng)主頻不一樣時,需要通過異步FIFO作為緩沖,使得數(shù)據(jù)可以從一端傳送到另一端[5]。
圖3 寄存器配置及采集位拼接電路框圖
圖4 異步FIFO 框圖
設(shè)置異步FIFO 模塊的數(shù)據(jù)為16 位,深度為512 個單元。對FIFO 模塊進(jìn)行仿真,時序仿真結(jié)果如圖5 所示。其中,Wr_Req 為寫信號,Wr_Clk 為寫時鐘,Wr_Data為寫數(shù)據(jù),Wr_Full 為寫滿標(biāo)志,Wr_Empty 為寫空標(biāo)志,Rd_Req 為讀信號,Rd_Clk 為讀時鐘,Rd_Data 為讀數(shù)據(jù),Rd_Full 為讀滿標(biāo)志,Rd_Empty 為讀空標(biāo)志。
圖5 FIFO 模塊仿真圖
由異步FIFO 仿真圖可知,在輸入端24 MHz 頻率Wr_Clk 下寫入256 個數(shù)據(jù),寫請求信號Wr_Req 在寫入過程中一直呈現(xiàn)有效電平狀態(tài),寫滿后Wr_Full 信號拉高,寫請求信號Wr_Req 拉低。在n 個時鐘后,Rd_Full 讀滿信號拉高,于是在輸出端100 MHz 頻率的Rd_Clk 下,開始往外讀出數(shù)據(jù),在讀數(shù)據(jù)過程讀請求信號Rd_Req 一直呈現(xiàn)有效電平狀態(tài),在順利讀出256 個數(shù)據(jù)后,讀空信號Rd_Empty 拉高,讀請求信號拉低,n 個時鐘后,寫空信號Wr_Empty 開始拉高,準(zhǔn)備繼續(xù)寫入數(shù)據(jù)。之后,這一過程不斷循環(huán)執(zhí)行[6]。
SDRAM 采用型號為HY57V2562GTR 的芯片,256 M 容量,16 根數(shù)據(jù)線,13 根地址線,2 個區(qū)選線,5 根命令控制線。實驗設(shè)計中,SDRAM 模塊共分初始化、刷新、寫操作、讀操作等四個步驟。
在對SDRAM 進(jìn)行寫入讀出的過程中,常規(guī)操作是對Bank1 中寫入一幀數(shù)據(jù),然后由異步FIFO2 讀出并顯示,接著繼續(xù)寫入下一幀。這種操作使得在寫入SDRAM 過程中,異步FIFO2 無法讀取,只能等待一幀寫完才能讀取。如果實驗過程采用乒乓操作法原理,則在對Bank1 寫入第一幀數(shù)據(jù)后,異步FIFO2 開始讀出Bank1 中的一幀數(shù)據(jù),同時異步FIFO1 向SDRAM中的Bank2 中寫入下一幀數(shù)據(jù)。如此交替往復(fù)的讀寫過程,省去了大量等待時間,加快了視頻傳輸效率[7]。
SDRAM 模塊電路框圖如圖6 所示。其中:
Sdram_Clk(輸入時鐘頻率):100 MHz。
Data_In(寫數(shù)據(jù)):來自異步FIFO1 寫入的16位RGB565 數(shù)據(jù)。
Data_Out(讀數(shù)據(jù)):由異步FIFO2 讀出至顯示的16 位RGB565 數(shù)據(jù)。
Sdram_Sa(地址信號):讀寫地址,行列共用,A0—A12 為行地址,CA0—CA8 為列地址。
Sdram_Ba(區(qū)選信號):該塊SDRAM 共有4 個Bank 區(qū),每個Bank 可以存儲64 Mbits。
Sdram_Cke(命令信號):片選信號,拉低有效。
Sdram_Wen(命令信號):片選信號,拉低有效。
Sdram_Casn(命令信號):片選信號,拉低有效。
Sdram_Rasn(命令信號):片選信號,拉低有效。
Sdram_Csn(命令信號):片選信號,拉低有效。
圖6 SDRAM 模塊電路框圖
VGA 顯示模塊電路框圖如圖7 所示。實驗設(shè)計中,VGA 顯示分辨率為1024*768,控制時鐘為65 MHz。該電路設(shè)計中,需要描述VGA 的顯示時序,包括行、幀同步信號,行消隱、幀消隱像素以及相關(guān)時序參數(shù)。有效像素的顯示,行同步信號處于高電平;有效信號的顯示,幀同步信號處于高電平。其中:
Clk_65M(輸入時鐘):VGA 顯示時鐘。
Vga_Data(輸入數(shù)據(jù)):來自異步FIFO2 的16 位RGB565 數(shù)據(jù)。
Vga_En(使能信號):行幀同步的共同使能信號。
Vga_Hs(行同步信號):選擇出VGA 上有效行信號區(qū)間。
Vga_Vs(幀同步信號):選擇出VGA 上有效幀信號區(qū)間。
Vga_Rgb(輸出數(shù)據(jù)):顯示到VGA 顯示器上的數(shù)據(jù)
VGA 行幀同步信號仿真結(jié)果,如圖8 所示。其中:
H_Front 24 個像素時鐘 V_Front 3 個行時鐘
H_Sync 136 個像素時鐘 V_Sync 6 個行時鐘
H_Back 160 個像素時鐘 V_Back 29 個行時鐘
H_Disp 1024 個像素時鐘 V_Disp 768 個行時鐘
H_Total 1344 個像素時鐘 V_Total 806 個行時鐘
根據(jù)系統(tǒng)方案設(shè)計要求,在原理圖編輯文件中調(diào)用已生成的數(shù)據(jù)采集模塊元件、異步FIFO 模塊元件、SDRAM 模塊元件和VGA 顯示模塊元件,構(gòu)成圖像采集顯示系統(tǒng)頂層電路。選用FPGA 開發(fā)板進(jìn)行硬件測試,硬件測試系統(tǒng)包括OV5640 攝像頭、VGA 顯示器、數(shù)字示波器和數(shù)字可調(diào)電源等[8]。針對同一手勢信號,1024×768分辨率原圖、800×600 分辨率原圖、1024×768 分辨率鏡像、1024×768 分辨率翻轉(zhuǎn)、1024×768 分辨率亮度調(diào)節(jié)、1024×768 分辨率環(huán)境光調(diào)節(jié)等結(jié)果,如圖9 所示。
圖7 VGA 顯示模塊電路框圖
圖8 VGA 行幀同步信號仿真示意圖
圖9 “基于FPGA 的手勢信號實時采集綜合性實驗”測試結(jié)果
完成遠(yuǎn)程實驗仿真操作后,學(xué)生可利用實驗室配備的FPGA 測試系統(tǒng)開展虛實融合測試,實現(xiàn)仿真指導(dǎo)實體實驗、實體實驗驗證仿真的閉環(huán)流程。FPGA測試系統(tǒng)包括上位機(jī)、開發(fā)板、下載器、OV5640 攝像頭、VGA 顯示器等,在頂層文件設(shè)計的電路中定義輸入輸出引腳并進(jìn)行鎖定,編譯后下載.sof 文件,在VGA 上顯示各種處理后的圖像。硬件測試系統(tǒng)如圖10 所示。
圖10 硬件測試系統(tǒng)
數(shù)字電路實驗課程面向我校電子信息、通信、自動化等12 個電子類專業(yè)的學(xué)生,每年直接授課學(xué)生1800 多人。團(tuán)隊教師對傳統(tǒng)數(shù)字電路實驗教學(xué)在教學(xué)內(nèi)容、教學(xué)方法、課程組織及時間安排上存在的問題進(jìn)行了研究和改革,以電子設(shè)計自動化(EDA)技術(shù)的學(xué)習(xí)為手段,注重工程能力、分析能力和實踐能力的培養(yǎng),構(gòu)建了一個從基本實踐技能向創(chuàng)新能力逐級遞進(jìn)的實踐階梯?!盎贔PGA 的手勢信號實時采集綜合性實驗”項目,提高了學(xué)生設(shè)計復(fù)雜數(shù)字系統(tǒng)的能力和參與學(xué)科競賽的積極性[9]。
如表1 所示,學(xué)生在完成傳統(tǒng)數(shù)字電路實驗教學(xué)后(大學(xué)第四學(xué)期),其設(shè)計的電路規(guī)模僅為幾十個邏輯門(如交通燈等),而參加課程改革的學(xué)生(大學(xué)第二學(xué)期),其設(shè)計的復(fù)雜數(shù)字系統(tǒng)規(guī)模大都在10 000邏輯門以上,學(xué)生設(shè)計數(shù)字系統(tǒng)的能力和水平得到很大提升[10]。學(xué)生通過自主完成實驗項目設(shè)計、方案優(yōu)化、硬件測試、撰寫報告等工作,鍛煉和提升了實踐創(chuàng)新和工程應(yīng)用能力,這些學(xué)生近三年共主持國家級、省級創(chuàng)新創(chuàng)業(yè)計劃13 項。
表1 課程改革班與傳統(tǒng)實驗教學(xué)班情況對比
經(jīng)過多年實踐與改革,基于FPGA 開發(fā)設(shè)計的綜合創(chuàng)新性實驗教學(xué)項目已成功應(yīng)用于我校數(shù)字電路實驗教學(xué),具有如下特點:
(1)團(tuán)隊教師以開放式遠(yuǎn)程虛擬仿真實驗平臺建設(shè)為契機(jī),拓寬數(shù)字電路實驗教學(xué)時空領(lǐng)域,學(xué)生突破時空束縛,實現(xiàn)“處處能學(xué)、時時可學(xué)”的泛在學(xué)習(xí)[11]。
(2)采用“小班化、翻轉(zhuǎn)實驗室”模式進(jìn)行綜合創(chuàng)新性實驗教學(xué),激發(fā)了學(xué)生實驗的自主性和創(chuàng)新性,符合創(chuàng)新能力培養(yǎng)要求。
(3)將傳統(tǒng)數(shù)字技術(shù)與現(xiàn)代數(shù)字技術(shù)有機(jī)融合,采用FPGA 進(jìn)行實驗設(shè)計,有效解決了在有限課時內(nèi)完成復(fù)雜數(shù)字系統(tǒng)設(shè)計的難題[12]。