《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > SoPC技術(shù)在圖像采集和處理系統(tǒng)中的應(yīng)用設(shè)計(jì)
SoPC技術(shù)在圖像采集和處理系統(tǒng)中的應(yīng)用設(shè)計(jì)
張建榮,,林知秋
江西應(yīng)用技術(shù)職業(yè)學(xué)院,,江西 贛州 341000
摘要: 對(duì)基于FPGA以及NIOS的圖像采集與處理系統(tǒng)進(jìn)行了深入研究,,在完成硬件實(shí)驗(yàn)平臺(tái)設(shè)計(jì)的基礎(chǔ)上,完成了嵌入式操作系統(tǒng)的移植及應(yīng)用程序的設(shè)計(jì),。以PDF417二維條碼的識(shí)別為例,對(duì)識(shí)別過(guò)程及識(shí)別算法進(jìn)行研究,,并對(duì)所設(shè)計(jì)的系統(tǒng)進(jìn)行測(cè)試,,達(dá)到了較好的識(shí)別效果。
中圖分類號(hào): TP391.9
文獻(xiàn)標(biāo)識(shí)碼: A
Application and design of SoPC technique on image acquisitign and processing system
ZHAN Jian Rong,,LIN Zhi Qiu
Jiang Xi College of Applied Technology, Ganzhou 341000,,China
Abstract: In this paper, image acquisition and processing system based on NIOS and FPGA is studied for an in-depth. After experiment hardware platform is designed, embedded operating system is transplanted and Application is designed. PDF417 two-dimensional bar code identification as an example, the recognition process and identification algorithm are researched, and the system designed has been tested, it has been a better recognition results.
Key words : digital image;acquisition and processing,;embedded system,;NIOS;SoPC

    隨著計(jì)算機(jī)技術(shù)和人工智能技術(shù)的快速發(fā)展,,圖像識(shí)別技術(shù)已成為人工智能的基礎(chǔ)技術(shù),,它涉及的技術(shù)領(lǐng)域越來(lái)越廣泛,應(yīng)用越來(lái)越深入,。隨著現(xiàn)代工業(yè)生產(chǎn)向高速化,、自動(dòng)化方向的發(fā)展,以形狀為特征的圖像識(shí)別在現(xiàn)代生產(chǎn)中的應(yīng)用日益增加,,不論是材料,、工業(yè)自動(dòng)化、遙感技術(shù),,還是產(chǎn)品質(zhì)檢都需要對(duì)形狀進(jìn)行檢測(cè),。因此,開發(fā)集圖像信號(hào)的采集與處理于一體,、具有高集成度,、高保密性的圖像處理系統(tǒng)將成為行業(yè)的發(fā)展趨勢(shì),。此外,基于32 bit微處理器純嵌入式系統(tǒng)的圖像采集處理技術(shù)正處于方興未艾階段,,發(fā)展前景廣闊,,可廣泛應(yīng)用于工業(yè)自動(dòng)化生產(chǎn)、監(jiān)護(hù)/防盜系統(tǒng),、機(jī)器人視覺等技術(shù)中,。SoPC技術(shù)是Altera公司提出的一種靈活、高效的SoC解決方案,,是一種新的軟硬件協(xié)同設(shè)計(jì)的系統(tǒng)設(shè)計(jì)技術(shù),。本系統(tǒng)就是在這種背景下提出的。其主要工作是設(shè)計(jì)一個(gè)實(shí)用的圖像采集和處理平臺(tái),,能完成目標(biāo)圖像的采集輸入,,并能對(duì)采集到的圖像進(jìn)行處理和識(shí)別。
1 系統(tǒng)整體方案及硬件設(shè)計(jì)
    系統(tǒng)要求在FPGA片內(nèi)利用SoPC技術(shù)實(shí)現(xiàn)便攜式的圖像采集與處理,。它通過(guò)對(duì)原始圖像的掃描,,經(jīng)數(shù)字圖像處理與識(shí)別后即可將得到的大容量的承載信息(包括文字、頭像,、指紋等個(gè)人信息)在LCD上顯示,,并可通過(guò)USB接口將信息拷貝,或通過(guò)RS-232接口將信息上傳給PC機(jī),,也可以通過(guò)GPRS將獲得的信息方便快捷地發(fā)往數(shù)據(jù)中心作驗(yàn)證,。
    整個(gè)系統(tǒng)的核心部分是內(nèi)嵌Nios II軟核的FPGA,外圍設(shè)備和芯片包括圖像獲取設(shè)備,、顯示器及片外SDRAM和FLASH存儲(chǔ)器,、輸入設(shè)備等。系統(tǒng)結(jié)構(gòu)框圖如圖1所示,。


    系統(tǒng)的工作過(guò)程是:系統(tǒng)配置完成后,,視頻獲取設(shè)備獲取視頻圖像,每幀圖像經(jīng)模數(shù)轉(zhuǎn)換生成圖像數(shù)據(jù)進(jìn)入預(yù)處理模塊,,經(jīng)預(yù)處理后的圖像數(shù)據(jù)送入SDRAM存儲(chǔ)器,,由Nios II處理器進(jìn)行圖像的后續(xù)處理和控制。處理后的圖像經(jīng)數(shù)模轉(zhuǎn)換在監(jiān)視器上實(shí)時(shí)顯示,。
1.1 圖像采集接口電路設(shè)計(jì)
    本系統(tǒng)采用美國(guó)OmiVision公司的數(shù)字式彩色CMOS圖像傳感器OV7640,。該芯片分辨率為640×480像素,成像速度為30幀/s,,采取逐行掃描方式,,輸出為數(shù)字信號(hào)。工作原理如圖2,。

    圖像采集的程序流程是:首先Nios初始化OV7640的各個(gè)寄存器,,主要包括狀態(tài)寄存器(STA),、數(shù)據(jù)和時(shí)鐘控制寄存器(CLKRC)、自動(dòng)增益控制寄存器(AGC)的設(shè)置,;然后查詢等待,,條碼圖像被OV7640采集進(jìn)入數(shù)據(jù)寄存器后,通過(guò)DMA方式存入SDRAM,,Nios再?gòu)腟DRAM中提取數(shù)據(jù)進(jìn)行譯碼,。
1.2 基于Nios的SoPC系統(tǒng)硬件設(shè)計(jì)
    基于Nios軟核的SoPC系統(tǒng)設(shè)計(jì)是整個(gè)系統(tǒng)硬件設(shè)計(jì)的核心,包括Nios軟核處理器的設(shè)計(jì),、數(shù)據(jù)采集控制的設(shè)計(jì),、圖像信號(hào)FFT分析的實(shí)現(xiàn)、參數(shù)顯示以及RS232通信模塊的設(shè)計(jì)等,。另外,,使用Nios進(jìn)行嵌入式設(shè)計(jì)在硬件上必需使用Altera公司的FPGA。
    Nios處理器核的硬件設(shè)計(jì)是根據(jù)系統(tǒng)的功能要求定制合適的CPU和外設(shè),,然后在SoPC和Quartus II中實(shí)現(xiàn),。在硬件設(shè)計(jì)流程中,可以靈活定制Nios CPU的許多特性甚至指令,,可以使用Altera提供的IP Core來(lái)加快設(shè)計(jì)者開發(fā)Nios外設(shè)的速度并提高外設(shè)性能,,也可以使用第三方的IP Core,或者使用VHDL,、Verilog自行定制外設(shè)。
    系統(tǒng)Nios外設(shè)主要包括:
    (1)CMOS圖像傳感器接口模塊,。由于Altera沒有提供CMOS圖像傳感器接口模塊,,所以使用VHDL編程自行定制。通過(guò)VHDL編程設(shè)計(jì)一個(gè)CMOS圖像傳感器控制模塊,,采用接入Avalon總線的方式自定制外設(shè),。
    (2)由于要對(duì)數(shù)字圖像信號(hào)進(jìn)行FFT運(yùn)算,所以采集的數(shù)據(jù)必須先進(jìn)行存儲(chǔ),,然后再作FFT計(jì)算,。因此,必須設(shè)計(jì)FIFO存儲(chǔ)器和FFT實(shí)現(xiàn)的硬件,。
    (3)RS232通信電路模塊,。RS232通信可以通過(guò)串行口UART加上一個(gè)轉(zhuǎn)換芯片來(lái)實(shí)現(xiàn)。所以,,本系統(tǒng)利用SoPC中提供的UART組件來(lái)實(shí)現(xiàn)RS232通信接口的設(shè)計(jì),。
    (4)LCD液晶顯示模塊。LCD液晶顯示是通過(guò)配置Nios的PIO接口來(lái)控制的,。
    除上面所述之外,,根據(jù)系統(tǒng)要求,,Nios處理器核應(yīng)當(dāng)配置以下組件及接口模塊:cpu、boot_rom(用于系統(tǒng)引導(dǎo)),、uart1(用于系統(tǒng)的仿真調(diào)試),、uart_rs232(用于串口通訊)、Timer1(系統(tǒng)內(nèi)部時(shí)鐘),、lan_timer(以太網(wǎng)通信用時(shí)鐘),、button_pio(用于參數(shù)設(shè)置)、lcd_pio(用于參數(shù)顯示),、user_logic_ad_nv_ctl和user_logic_ad_power_ctl(自定義的AD轉(zhuǎn)換的接口模塊),、Ethernet(用于以太網(wǎng)通信)、ext_ram(外部SRAM),、dma(用于將采集的數(shù)據(jù)直接存入SRAM中)和ext_flash(外部flash),。
    本系統(tǒng)中數(shù)據(jù)的存儲(chǔ)是通過(guò)設(shè)計(jì)FIFO存儲(chǔ)器電路實(shí)現(xiàn)的。FIFO存儲(chǔ)器電路主要由一個(gè)雙口RAM模塊(Dual-Port RAM)和狀態(tài)機(jī)模塊(State Machine Table)組成,,通過(guò)先進(jìn)先出(FIFO)堆棧把數(shù)據(jù)存儲(chǔ)在雙口RAM中,。其設(shè)計(jì)是在Matlab環(huán)境下利用Altera DSP Builder設(shè)計(jì)工具實(shí)現(xiàn)的。
    電路設(shè)計(jì)完成并仿真驗(yàn)證成功后,,應(yīng)用DSP Builder中的signal Compiler進(jìn)行編譯分析,,經(jīng)signal Compiler轉(zhuǎn)換后可以變成VHDL語(yǔ)言的程序。同時(shí),,在Quartus II中,,可以將VHDL語(yǔ)言程序轉(zhuǎn)換成電路符號(hào),便于應(yīng)用原理圖的方法設(shè)計(jì)硬件系統(tǒng),。由FIFO存儲(chǔ)器的VHDL程序生成的電路符號(hào)如圖3所示,。在設(shè)計(jì)過(guò)程中,需要用到Quartus II軟件和其內(nèi)嵌的IP Toolbench,。按照本系統(tǒng)的要求設(shè)置FFT的參數(shù)為:點(diǎn)數(shù)為1 024點(diǎn),,數(shù)據(jù)寬度為12 bit。最后設(shè)計(jì)生成FFT的MegaCore Function模塊,,包含一些VHDL程序及其他相關(guān)的文件,。由VHDL程序生成的FFT模塊電路符號(hào)如圖4所示。

2 系統(tǒng)軟件設(shè)計(jì)
    系統(tǒng)軟件部分包括實(shí)時(shí)操作系統(tǒng)μC/OS-II和數(shù)據(jù)采集與處理部分的應(yīng)用程序,。在Nios II IDE中將軟件開發(fā)分為兩大部分,,一部分是底層系統(tǒng)軟件的開發(fā),主要完成BSP(板級(jí)支持包)的功能,;另一部分則是用戶應(yīng)用軟件的開發(fā)(包括用戶硬件驅(qū)動(dòng)及用戶上層應(yīng)用軟件),。整個(gè)用戶軟件的開發(fā)及調(diào)試工作都可以在Nios II IDE中完成。
2.1 實(shí)時(shí)操作系統(tǒng)μC/OS-II在Nios上的移植
    在本課題中使用的是μC/OS-II的v2.83版本,,源碼可以從Micrium的網(wǎng)站上獲得,。同時(shí)還要從網(wǎng)站上獲得μC/OS-II在EDK中使用的配置文件μCOS-II_v2_1_0.mld和μCOS-II_v2_1_0.tcl,。將這兩個(gè)文件放到EDK能找到的路徑下,這樣在EDK中才能配置使用μC/OS-II,。在EDK中通過(guò)菜單Software->Software Platform Settings打開配置窗口,,在OS中選擇μC/OS-II,OS Version中選擇 v2.83a,,然后進(jìn)入OS & Library對(duì)μC/OS-II進(jìn)行配置,。
    在Nios II IDE中,可以對(duì)μC/OS-II的源碼位置,、BSP包源碼位置,、移植程序文件位置、應(yīng)用程序文件位置進(jìn)行修改,,同時(shí)還可對(duì)μC/OS-II進(jìn)行剪裁配置,,如是否使用事件、互斥信號(hào)量,、消息郵箱及任務(wù)是否可刪除等,。
2.2 實(shí)時(shí)操作系統(tǒng)下的軟件設(shè)計(jì)
    μC/OS-II在ALTERA的Nios微處理器上移植并測(cè)試完成后,建立了基于μC/OS-II實(shí)時(shí)多任務(wù)內(nèi)核的硬件開發(fā)平臺(tái),,但μC/OS-II僅是一個(gè)有源碼的內(nèi)核,,在實(shí)際應(yīng)用中,對(duì)外設(shè)的操作需要自行編寫底層的代碼,。在此平臺(tái)下進(jìn)一步開發(fā),,實(shí)現(xiàn)數(shù)據(jù)采集功能,需要建立相關(guān)的應(yīng)用程序,,也就是要根據(jù)整個(gè)系統(tǒng)的要求,,劃分不同的任務(wù),這些任務(wù)交由實(shí)時(shí)內(nèi)核來(lái)調(diào)度管理,。一般一個(gè)任務(wù)對(duì)應(yīng)于一段獨(dú)立的主程序,它可能調(diào)用各種子程序,,并使用各種系統(tǒng)資源,,以完成某種特定的功能,并且實(shí)時(shí)內(nèi)核允許多個(gè)任務(wù)并行運(yùn)行,。采用實(shí)時(shí)操作系統(tǒng),,使應(yīng)用程序的編寫簡(jiǎn)單且易于調(diào)試。
    主程序用C語(yǔ)言編寫,,其主要程序如下:
    void main()
        {sys_initialize(),;//系統(tǒng)初始化
        while(1)
        {ad_fft_ctl();//數(shù)據(jù)采集及FFT計(jì)算子程序
            case collection_order:    //圖像采集命令
            image_collection(),;//圖像采集
            image_process(),;//圖像處理
            image_save(),;//圖像保存
            mps_decoder();//調(diào)用相應(yīng)的解碼算法
            case rs232_transfer://傳輸數(shù)據(jù)命令
            lcd_display(p1,,p2,,p3);//LCD液晶顯示子程序
        }
    }
3 系統(tǒng)調(diào)試與應(yīng)用實(shí)例
    調(diào)試包括硬件和軟件調(diào)試,。硬件調(diào)試分析電路的設(shè)計(jì)合理性及焊接工藝的可靠性,,以保證所設(shè)計(jì)的各個(gè)模塊合理,重點(diǎn)放在調(diào)試自己所設(shè)計(jì)的IP核和硬件邏輯的可靠性與適用性,。軟件調(diào)試主要是集中在系統(tǒng)內(nèi)核的應(yīng)用程序,,以保證各個(gè)功能都成功實(shí)現(xiàn)。這是一個(gè)相當(dāng)復(fù)雜的過(guò)程,。
3.1 系統(tǒng)硬件調(diào)試
    為了驗(yàn)證FPGA能否正常工作,,把CMOS圖像傳感器的輸出連接到Nios II開發(fā)板的擴(kuò)展插座上,編寫VHDL程序,,讀取CMOS圖像傳感器的輸出并存儲(chǔ)到FPGA的內(nèi)部RAM中,,利用Quartus II的工具In-System Memory Content Editor,讀取內(nèi)部RAM的值,。
    要設(shè)計(jì)用戶邏輯或者外設(shè),,除了要編寫實(shí)現(xiàn)特定功能的邏輯之外,還要編寫與Avalon總線的接口,,這就要求對(duì)Avalon總線的規(guī)范很熟悉,。測(cè)試結(jié)果表明,程序能夠通過(guò)JTAG接口成功下載到FPGA上,,顯示在LCD上的運(yùn)行結(jié)果也正確,。這說(shuō)明FPGA、JTAG接口,、電源,、晶振和LCD顯示等電路均能正常工作。
3.2 系統(tǒng)軟件調(diào)試
    Nios II集成開發(fā)環(huán)境(IDE)是Nios II系列嵌入式處理器的基本軟件開發(fā)工具,,所有的開發(fā)任務(wù)都可以在Nios II IDE下完成,,包括編輯、編譯,、調(diào)試程序和下載,。系統(tǒng)的軟件設(shè)計(jì)和調(diào)試全部在Nios II IDE下完成,使用C/C++語(yǔ)言編程,。
3.3 系統(tǒng)應(yīng)用實(shí)例——PDF417二維條碼的識(shí)別
    二維條碼掃描器開始工作時(shí),,首先采集二維條碼圖像數(shù)據(jù),由于實(shí)際工作中條碼圖像會(huì)出現(xiàn)污損等情況,對(duì)碼字的正確譯出造成影響,,所以必須對(duì)采集到的圖像進(jìn)行降噪,、校正等預(yù)處理。條碼圖像為灰度圖像,,對(duì)其進(jìn)行二值化才能進(jìn)行碼字識(shí)別,。在將PDF417碼的所有碼字正確分割后,以查表方式在碼本中查找與碼字相對(duì)應(yīng)的值,,將編碼數(shù)據(jù)譯出,。為確認(rèn)掃描的有效性,必須進(jìn)行前向錯(cuò)誤校驗(yàn),。如出錯(cuò),,則進(jìn)行糾錯(cuò)。最后,,將譯碼的正確數(shù)據(jù)傳輸?shù)缴衔挥?jì)算機(jī)或LCD顯示,。識(shí)別過(guò)程如圖5所示。

    二維條碼數(shù)據(jù)全部識(shí)別完以后,,Nois控制輸出一個(gè)中斷申請(qǐng)信號(hào),,開始執(zhí)行中斷服務(wù)程序。首先選定數(shù)據(jù)傳輸口地址,,然后譯碼結(jié)果可通過(guò)RS-232接口被送至計(jì)算機(jī),,計(jì)算機(jī)接收該譯碼數(shù)據(jù)后,中斷結(jié)束,。重復(fù)該過(guò)程,,直至全部譯碼結(jié)果輸出結(jié)束。整個(gè)軟件處理過(guò)程控制在0.3 s以內(nèi),,完全可以滿足系統(tǒng)實(shí)時(shí)性要求,。
    本文對(duì)基于FPGA以及Nios的圖像采集與處理系統(tǒng)設(shè)計(jì)進(jìn)行了深入研究,并在設(shè)計(jì)完成硬件實(shí)驗(yàn)平臺(tái)的基礎(chǔ)之上,,完成了嵌入式操作系統(tǒng)的移植及應(yīng)用程序的設(shè)計(jì),。系統(tǒng)采用Nios處理器和FPGA,必要的外圍電路和處理器能集中在一塊芯片上,,減少了系統(tǒng)體積,,簡(jiǎn)化了系統(tǒng)規(guī)模,同時(shí)可以方便地進(jìn)行擴(kuò)展和升級(jí),。μC/OS-II操作系統(tǒng)移植到Nios處理器上,提高了系統(tǒng)的運(yùn)行效率和可靠性,。嵌入式圖像處理系統(tǒng)作為一種新型的智能化視覺系統(tǒng),,以其種種優(yōu)點(diǎn)使之具有廣闊的應(yīng)用前景和良好的經(jīng)濟(jì)價(jià)值。研究與推廣嵌入式圖像處理系統(tǒng)無(wú)疑是科技進(jìn)步的表現(xiàn),尤其當(dāng)嵌入式圖像處理系統(tǒng)應(yīng)用于工業(yè)生產(chǎn)上時(shí),,必能提高生產(chǎn)效率,,推動(dòng)生產(chǎn)力的發(fā)展。
參考文獻(xiàn)
[1] 章宵.數(shù)字圖像處理技術(shù)[M].北京:冶金工業(yè)出版社,, 2005.
[2] 楊述瑩.圖像模式識(shí)別[M].北京:北京交通大學(xué)出版社,,2005.
[3] 羅鋼.SoPC技術(shù)在雷達(dá)目標(biāo)識(shí)別系統(tǒng)設(shè)計(jì)中的應(yīng)用[碩士學(xué)位論文].長(zhǎng)沙:國(guó)防科學(xué)技術(shù)大學(xué),2004.
[4] SEGUINE D.Just add sensor-Integrating analog and digital signal conditioning in a programmable system on a chip,,Proc.IEEE Sensors,,2002,1(6).
[5] 周立功.SoPC嵌入式系統(tǒng)基礎(chǔ)教程[M].北京:北京航空航天大學(xué)出版社,,2006.

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。