LEON3開源軟核處理器動(dòng)態(tài)圖像邊緣檢測(cè)SoC設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
邊緣檢測(cè)是圖像處理和計(jì)算機(jī)視覺中的基本問題,邊緣檢測(cè)的目的是標(biāo)識(shí)數(shù)字圖像中亮度變化明顯的點(diǎn)。邊緣檢測(cè)是圖像處理和計(jì)算機(jī)視覺中,尤其是特征提取中的一個(gè)研究領(lǐng)域。
本文采用局部熵邊緣檢測(cè)算法,將圖像采集,邊緣檢測(cè)和圖像顯示三個(gè)部分封裝設(shè)計(jì)為IP(Intellectual Property)核,通過AMBA APB總線嵌入到LEON3的經(jīng)典SoC架構(gòu)中。實(shí)現(xiàn)了多路數(shù)據(jù)并行處理和DSP模塊加速處理,配合CPU軟核的協(xié)調(diào)參數(shù)配置功能,可以充分發(fā)揮硬件設(shè)計(jì)的高速性和靈活性。此外,由于動(dòng)態(tài)圖像邊緣檢測(cè)是圖像處理應(yīng)用中必不可少的一部分,因此文中設(shè)計(jì)的動(dòng)態(tài)圖像邊緣檢測(cè)SoC可以方便的移植到其他圖像處理應(yīng)用中,具有廣泛的應(yīng)用前景。
1 SoC和LEON3開源軟核處理器
SoC是系統(tǒng)級(jí)芯片的簡(jiǎn)稱,系統(tǒng)不僅包含了處理器內(nèi)核、存儲(chǔ)器等硬件系統(tǒng),同時(shí)還含有相應(yīng)的嵌入式軟件,是一個(gè)真正的軟、硬件均具備的完整體系。利用SoC設(shè)計(jì)方法,可以將一個(gè)復(fù)雜的系統(tǒng)集成到單一芯片中,并具有低功耗,低成本及高速性的特點(diǎn)。與利用ASIC實(shí)現(xiàn)的SoC相比,利用FPGA實(shí)現(xiàn)的SoC具有可配置性的特點(diǎn),因此具有更好的可擴(kuò)展性和可移植性。
LEON3開源軟核處理器是Gaisler Research公司提出的一款32位、符合SPARC V8結(jié)構(gòu)的開源軟核處理器。它具有高性能,低復(fù)雜性和低功耗的優(yōu)點(diǎn)。另外,所有屬于GRLIB的IP核及LEON3處理器的源代碼在GNU GPL(GNU General Public License,GNU通用公共許可證)授權(quán)協(xié)議下,可以免費(fèi)地應(yīng)用于研究和教學(xué)目的,因此,LEON3開源軟核處理器特別適合于SoC的開發(fā)設(shè)計(jì)。
2 SoC系統(tǒng)架構(gòu)設(shè)計(jì)
通過分析系統(tǒng)的功能與要求,結(jié)合LEON3自身架構(gòu)的特點(diǎn),設(shè)計(jì)基于APB總線的動(dòng)態(tài)圖像邊緣檢測(cè)Soc系統(tǒng)架構(gòu)如圖1所示。自定義IP核為本設(shè)計(jì)的重點(diǎn)。在LEON3的SoC架構(gòu)中,APB外圍低速總線為一些低速模塊提供了接口。若想要在APB總線實(shí)現(xiàn)動(dòng)態(tài)圖像的實(shí)時(shí)采集、處理和顯示,就要想辦法使采集到的數(shù)據(jù)不參與到總線傳輸中去。
在本設(shè)計(jì)中,通過采用片上存儲(chǔ)資源做FIFO的辦法,使得攝像頭采集到的數(shù)據(jù)得以緩存,最終在顯示器上顯示。在數(shù)據(jù)輸出顯示之前,可以選擇是否經(jīng)過圖像邊緣檢測(cè)算法模塊處理。若經(jīng)過模塊,則顯示圖像經(jīng)過邊緣檢測(cè)后的結(jié)果;若不經(jīng)過,則顯示原始圖像。
通過這種方法,避免大量圖像數(shù)據(jù)參與AHB與APB總線之間的數(shù)據(jù)傳輸,以減少不必要的中間過程,提高數(shù)據(jù)的實(shí)時(shí)性。這樣就避免了APB總線低速、低帶寬與動(dòng)態(tài)圖像邊緣檢測(cè)系統(tǒng)高速、高帶寬的矛盾。使得整個(gè)圖像的數(shù)據(jù)流都在白定義IP核內(nèi)部得到處理,這樣既滿足了APB總線的約束也實(shí)現(xiàn)了系統(tǒng)的功能需求。
3 動(dòng)態(tài)圖像邊緣檢測(cè)SoC的實(shí)現(xiàn)
本設(shè)計(jì)提出了一種集圖像采集、存儲(chǔ)、處理和顯示于一個(gè)IP核的設(shè)計(jì)方法,也是動(dòng)態(tài)圖像邊緣檢測(cè)SoC設(shè)計(jì)的核心部分。
3.1 局部熵算法的硬件實(shí)現(xiàn)
局部熵邊緣檢測(cè)算法的基本思想是:選擇待處理像素點(diǎn)的8鄰域,即以待處理像素點(diǎn)為中心的3×3窗口;再由局部熵的定義式(公式1)計(jì)算出圖像3×3窗口的局部熵;
然后通過與給定的閾值進(jìn)行比較,得到二值化圖像,即可得出圖像的邊緣。硬件實(shí)現(xiàn)的處理過程為流水線方式,處理的對(duì)象為3×3大小的圖像窗口。具體步驟如下:
①3×3窗口的產(chǎn)生。3×3窗口主要通過片上緩存和延時(shí)單元實(shí)現(xiàn)。圖2是以經(jīng)過3個(gè)時(shí)鐘為例說明了同步產(chǎn)生3×3窗口中一行數(shù)據(jù)的過程。
②熵值的計(jì)算。將步驟1中得到的3×3窗口的9個(gè)并行數(shù)據(jù)途經(jīng)兩路進(jìn)行處理。對(duì)于3×3窗口,式(1)化簡(jiǎn)為式(2):
3窗口的9路并行數(shù)據(jù),一邊送去做并行相加求和,再求平方,作為除法運(yùn)算的分母;同時(shí)把9個(gè)數(shù)據(jù)分別求平方,再求合,作為除法運(yùn)算的分子。在做除法運(yùn)算前,為確保其計(jì)算精度,要先將分子與分母轉(zhuǎn)換成IEEE-745浮點(diǎn)數(shù)后再進(jìn)行浮點(diǎn)除法運(yùn)算。最后還要把除法運(yùn)算的結(jié)算轉(zhuǎn)換成整數(shù),考慮到除法運(yùn)算的結(jié)果可能小于1,于是在轉(zhuǎn)換整數(shù)前放大1000倍,即保留3位有小數(shù)有效位,最后將轉(zhuǎn)換后的整數(shù)輸出,至此實(shí)現(xiàn)了局部熵值的計(jì)算過程。
③閾值比較及二值化處理。②中已經(jīng)得到了放大1000倍后的熵值,在這里只需通過一個(gè)比較電路,當(dāng)熵值大于閾值時(shí),輸出0;當(dāng)熵值小于閾值時(shí),輸出1。這樣就得到一幅二值化后的邊緣圖像。至此,完成了整個(gè)局部熵邊緣檢測(cè)算法的硬件實(shí)現(xiàn)。
3.2 自定義IP接口設(shè)計(jì)
自定義IP核包含以下幾個(gè)主要部分:圖像采集(D5M攝像頭接口);圖像制式轉(zhuǎn)換;圖像存儲(chǔ);圖像顯示(LTM顯示接口);圖像邊緣檢測(cè)模塊;自定義寄存器。
此IP核的接口信號(hào)可分為:
①系統(tǒng)時(shí)鐘與復(fù)位信號(hào):是整個(gè)LEON3架構(gòu)所共用的時(shí)鐘信號(hào)和復(fù)位信號(hào),而iCLK_50是由外部直接引入的頻率為50MHz的時(shí)鐘,未經(jīng)過PLL處理。
②IP核控制信號(hào):主要實(shí)現(xiàn)IP核的觸發(fā)功能和結(jié)束功能。
③APB總線的輸入信號(hào)和輸出信號(hào):此信號(hào)主要用于APB總線控制、IP核選擇、IP核使能等,其中包括對(duì)IP核內(nèi)部寄存器的設(shè)置都是通過APB總線信號(hào)來完成的。
④D5M攝像頭輸入信號(hào)和輸出信號(hào):此信號(hào)主要完成對(duì)D5M攝像頭的配置以及數(shù)據(jù)采集。
⑤LTM顯示器輸入信號(hào)和輸出信號(hào):此信號(hào)用于對(duì)LTM顯示器的配置。由于基于APB總線的IP核集成D5M攝像頭、LTM顯示器和邊緣檢測(cè)算法于一體,所以外部接口信號(hào)相對(duì)較多。但就APB總線本身而言,其信號(hào)并不多,這也是基于APB總線的設(shè)計(jì)方法相對(duì)簡(jiǎn)單的原因。
3.3 自定義IP核的結(jié)構(gòu)設(shè)計(jì)
有關(guān)“基于APB外圍低速總線圖像檢測(cè)IP核的實(shí)現(xiàn)基本思想部分”略——編者注。
4 實(shí)驗(yàn)結(jié)果
4.1 動(dòng)態(tài)圖像邊緣檢測(cè)算法硬件實(shí)現(xiàn)仿真與分析
文中首先利用Matlab驗(yàn)證局域熵邊緣檢測(cè)算法設(shè)計(jì)的正確性,然后采用Verilog HDL硬件描述語言編寫圖像邊緣檢測(cè)算法,在算法實(shí)現(xiàn)過程中,為提高算法的性能,采用了Quartus II中自帶的DSP加速宏模塊。同時(shí),為驗(yàn)證仿真算法的正確性,編寫Testbench系統(tǒng)測(cè)試文件,對(duì)其進(jìn)行仿真驗(yàn)證。
3×3窗口產(chǎn)生的過程,L1~L3為采用片上緩存的方法實(shí)現(xiàn)的三行數(shù)據(jù)的同步。X1~X9對(duì)應(yīng)3×3窗口中的9個(gè)像素點(diǎn)。圖中最終的數(shù)據(jù)輸出是有一定時(shí)延的,這是由于算法中存在大量的乘加運(yùn)算和浮點(diǎn)數(shù)運(yùn)算造成的。
在實(shí)現(xiàn)算法的同時(shí),考慮到所選芯片提供了可用于加速算術(shù)運(yùn)算的DSP模塊,于是為了加速算法的處理速度,在算法實(shí)現(xiàn)過程中,加入了大量的DSP加速處理模塊,如乘加器,浮點(diǎn)除法器等。表1給出了用硬件語言實(shí)現(xiàn)上述算法所使用的芯片資源情況。表2給出了該算法對(duì)DSP加速模塊的使用情況。
4.2 動(dòng)態(tài)圖像邊緣檢測(cè)SoC系統(tǒng)性能測(cè)試
測(cè)試采用的硬件開發(fā)平臺(tái)為FPGA CycloneIIEP2C70F896C6N,Quartus II版本為10.0(32位),LEON3開發(fā)包版本為grlib-gp1-1.0.22-b4095.zip。D5M攝像頭工作在25MHz頻率,所采集的圖像分辨率為400×240,R、G、B每種色彩以10-bit二進(jìn)制數(shù)據(jù)表示,D5M攝像頭每秒采集22~25幀圖像。LTM顯示屏的顯示分辨率為400×240,工作在33MHz頻率。
表3為測(cè)試得到的片上資源使用情況。從其結(jié)果可以分析得到,文中設(shè)計(jì)的動(dòng)態(tài)圖像邊緣檢測(cè)SoC占據(jù)的片上資源在可以接受的范圍內(nèi)。
且由實(shí)際測(cè)試可知,在外界環(huán)境適中的條件下,系統(tǒng)可以得到很好的圖像邊緣檢測(cè)效果。但由于圖像的分辨率較大,而邊緣檢測(cè)算法中所采用的窗口為3×3,相對(duì)于圖像來說較小,所以圖像上的一些小的陰影區(qū)域也會(huì)被檢測(cè)出來,形成陰影區(qū)域干擾,影響圖像的邊緣檢測(cè)效果。但總體來說,實(shí)現(xiàn)了動(dòng)態(tài)圖像邊緣提取的最終目的。
結(jié)語
本文介紹了基于LEON3開源軟核處理器的動(dòng)態(tài)圖像邊緣檢測(cè)SoC設(shè)計(jì)。
實(shí)驗(yàn)結(jié)果表明該SoC系統(tǒng)工作正常,可以實(shí)現(xiàn)每秒22~25幀,最佳分辨率為400×240和640×480的動(dòng)態(tài)圖像邊緣檢測(cè)功能,平均數(shù)據(jù)延時(shí)在70~80個(gè)系統(tǒng)時(shí)鐘。系統(tǒng)具有很好的可移植性與可配置性,占用資源少,速度快,具有廣泛的應(yīng)用前景。