<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于DSP和FPGA的通用圖像處理平臺(tái)設(shè)計(jì)

          基于DSP和FPGA的通用圖像處理平臺(tái)設(shè)計(jì)

          ——
          作者: 時(shí)間:2010-01-29 來源:電子產(chǎn)品世界 收藏

            1 引言

          本文引用地址:http://www.ex-cimer.com/article/104401.htm

            隨著數(shù)字化技術(shù)不斷發(fā)展和完善,數(shù)字技術(shù)已廣泛應(yīng)用于工業(yè)、軍事、生物醫(yī)療、電信等領(lǐng)域。實(shí)際應(yīng)用中能夠運(yùn)行復(fù)雜靈活的算法和大數(shù)據(jù)量的數(shù)據(jù)傳輸處理能力成為平臺(tái)穩(wěn)定運(yùn)行的前提,而系統(tǒng)實(shí)時(shí)性、體積、功耗等因素也至關(guān)重要。傳統(tǒng)數(shù)字圖像處理平臺(tái)大多采用通用PC機(jī)、高速圖像采集卡和基于VC++的軟件平臺(tái)來實(shí)現(xiàn),但很難滿足當(dāng)前對系統(tǒng)體積、功耗和實(shí)時(shí)性要求。因此這里提出的基于的通用圖像處理平臺(tái),充分發(fā)揮靈活性強(qiáng)和運(yùn)算速度快、尋址方式靈活的優(yōu)點(diǎn),更好地提高圖像處理系統(tǒng)的集成度,降低系統(tǒng)功耗,并滿足實(shí)時(shí)性要求。

            2 高速圖像處理平臺(tái)的工作原理

            為實(shí)現(xiàn)高速圖像的實(shí)時(shí)處理,該系統(tǒng)采用線性流水線陣列結(jié)構(gòu),將FPGA可在通用接口設(shè)計(jì)和簡單信號(hào)處理等方面的優(yōu)點(diǎn)與DSP的快速數(shù)字信號(hào)處理能力相結(jié)合,充分發(fā)揮這兩者的優(yōu)點(diǎn)。該系統(tǒng)主要由DSP和FPGA的子系統(tǒng)構(gòu)成,為保證大量圖像數(shù)據(jù)流快速穩(wěn)定通訊,DSP與FPGA間通過外擴(kuò)的SDRAM實(shí)現(xiàn)大容量數(shù)據(jù)交換。DSP子系統(tǒng)則實(shí)現(xiàn)較為復(fù)雜的圖像處理算法,并提供圖像存儲(chǔ)功能。而FPGA子系統(tǒng)完成CCD傳感器圖像數(shù)據(jù)的預(yù)處理以及微控制器通用接口功能。

            系統(tǒng)結(jié)構(gòu)原理圖如圖1所示。CCD傳感器輸入的圖像數(shù)據(jù)經(jīng)FPGA預(yù)處理后,將數(shù)據(jù)傳送至DSP,DSP對輸入數(shù)據(jù)進(jìn)行實(shí)時(shí)圖像處理,并將處理后的圖像通過EMIF接口發(fā)送并保存至外擴(kuò)SDRAM。同樣,F(xiàn)PGA也能夠讀取外擴(kuò)SDRAM的圖像數(shù)據(jù),通過VGA接口實(shí)時(shí)顯示。對于少量數(shù)據(jù)流,如系統(tǒng)參數(shù)或圖像數(shù)據(jù)傳輸?shù)钠鹬剐畔⒌龋瑒t通過SPI接口實(shí)現(xiàn)。DSP子系統(tǒng)內(nèi)部擴(kuò)展有SD卡接口和USB主機(jī)接口,主要用于圖像數(shù)據(jù)的存儲(chǔ)和傳輸?shù)取PGA子系統(tǒng)外擴(kuò)的主要接口包括:I2C、SPI、UART、PS/2和VGA等接口,用于系統(tǒng)升級(jí)和調(diào)試,提高系統(tǒng)通用性。

            

          系統(tǒng)結(jié)構(gòu)原理圖

           

            3 系統(tǒng)硬件結(jié)構(gòu)設(shè)計(jì)

            系統(tǒng)硬件設(shè)計(jì)采用模塊化設(shè)計(jì)思想,將整個(gè)系統(tǒng)分為DSP子系統(tǒng)和FPGA子系統(tǒng)。這兩者間的數(shù)據(jù)交換通過雙端口RAM方式實(shí)現(xiàn)。

            3.1 器件選型

            該系統(tǒng)設(shè)計(jì)選用TI公司的TMS320VC5509A型DSP。該款DSP功耗低,片上資源豐富,主頻最高可達(dá)200 MHz,片上帶有128 K×16 bit RAM和32 K×16 bit ROM,內(nèi)置6個(gè)DMA通道,1個(gè)I2C接口,3個(gè)McBSP接口,1個(gè)RTC模塊,其外部存儲(chǔ)器接口(EMIF)能與SDRAM無縫連接,同時(shí)還帶有USB接口。FPAG選用ALTERA的Cyclone-II系列處理器,具有強(qiáng)大的邏輯處理能力,從而實(shí)現(xiàn)微處理器通用接口設(shè)計(jì)和簡單信息預(yù)處理功能。

            3.2 DSP與FPGA的接口設(shè)計(jì)

            為保證系統(tǒng)實(shí)時(shí)性,DSP與FPGA之間的接口需實(shí)現(xiàn)大數(shù)據(jù)流通訊流暢的功能。將FPGA內(nèi)部結(jié)果緩沖器模擬為SDRAM接口,一端輸入CCD圖像信號(hào),一端輸出圖像數(shù)據(jù)并連接至DSP數(shù)據(jù)線。DSP的EMIF接口外接一片4 M×16 bit的SDRAM MT48LC4M16A2-75,通過將處理后的圖像數(shù)據(jù)回傳至外擴(kuò)SDRAM,由FPGA實(shí)時(shí)讀取并通過VGA接口顯示,從而實(shí)現(xiàn)DSP與FPGA之間數(shù)據(jù)通訊功能。這兩者之間配置的雙端口RAM連接如圖2所示。

            

          這兩者之間配置的雙端口RAM連接

           

            3.3 DSP子系統(tǒng)

            DSP子系統(tǒng)主要包括電源管理單元、EMIF接口、SD卡接口、USB接口、JTAG調(diào)試接口和引導(dǎo)裝載(Bootload)電路等。電源管理單元主要為系統(tǒng)提供穩(wěn)定電源;EMIF接口主要用于外部擴(kuò)展存儲(chǔ)器;SD卡接口用于掉電后圖像數(shù)據(jù)的存儲(chǔ);USB接口用于外接其他外設(shè);JTAG接口用于電路調(diào)試等。

            3.3.1 電源管理單元

            DSP子系統(tǒng)供電可分為1.6 V和3.3 V兩種,DSP內(nèi)核需1.6 V供電,外設(shè)及I/O端口采用3.3 V供電,并需保證內(nèi)核先于I/O上電,I/O先于內(nèi)核掉電。該系統(tǒng)采用電源器件TPS767D301配置不同電壓值。該器件包括兩路電壓輸出,每路最大輸出電流可達(dá)1 A.輸出電壓穩(wěn)定。圖3為電源管理單元電路。

            

          電源管理單元電路

           

            3.3.2 外部存儲(chǔ)器接口

            TMS320VC5509A內(nèi)部集成的EMIF接口除了支持異步存儲(chǔ)器,還支持同步突發(fā)靜態(tài)存儲(chǔ)器(SBSRAM)和同步動(dòng)態(tài)存儲(chǔ)器(SDRAM)。在此通過編程寄存器配置EMIF和SDRAM的連接。設(shè)置CE空間控制寄存器1的MTYPE=011b表明連接存儲(chǔ)器是SDRAM。圖4為配置的4 M×16 bit的SDRAM MT48LC4M16A2-75的連接電路。由于單個(gè)CE空間的限制是4 MB,故使用2個(gè)CE空間,并將CEO引腳作為片選,CE1引腳懸空。外擴(kuò)的SDRAM主要用于存儲(chǔ)處理后的圖像數(shù)據(jù)。

            

          配置的4 M×16 bit的SDRAM MT48LC4M16A2-75的連接電路

           

            3.3.3 SD卡接口

            TMS320VC5509A內(nèi)置MMC控制器支持對MMC卡和SD卡的讀寫,支持MMC/SD協(xié)議和SPI協(xié)議,MMC控制器的運(yùn)行頻率可通過程序設(shè)置,并與McBSP接口引腳復(fù)用,使用時(shí)需設(shè)置外部總線選擇寄存器(EBSR)。圖5所示為MMC控制器與SD卡信號(hào)連接圖,連接信號(hào)有:時(shí)鐘信號(hào)(CLK)、控制信號(hào)(CMD)和數(shù)據(jù)信號(hào)(DAT0~DAT3)。

            

          MMC控制器與SD卡信號(hào)連接圖

           

            3.3.4 Bootload電路

            Bootload的功能是在系統(tǒng)上電后,將用戶程序從片外的慢速存儲(chǔ)器加載至片內(nèi)RAM中,并使其高速運(yùn)行。這里選用EEPROM作為外部非易失性程序存儲(chǔ)器。TMS320VC5509A的Bootload方式支持EMIF模式,SPI模式和McBSP模式等。其中SPI模式的EEPROM自舉有兩種,一種是基于16位字節(jié)地址,最大可達(dá)64 K尋址空間;另一種是基于24位字節(jié)地址,最大可達(dá)16 M尋址空間。在此選用第一種方式,并引出Bootload模式選擇引腳BOOTM[3:0],便于系統(tǒng)升級(jí)。

            3.4 FPGA子系統(tǒng)組成及功能

            為實(shí)現(xiàn)該圖像處理平臺(tái)通用性和實(shí)時(shí)性,F(xiàn)PGA子系統(tǒng)需實(shí)現(xiàn)的功能包括:開放式的圖像數(shù)據(jù)采集總線,DSP圖像處理實(shí)時(shí)數(shù)據(jù)總線,100 MB以太網(wǎng)接口,UART接口,VGA實(shí)時(shí)顯示模塊,I2C存儲(chǔ)器接口和PS/2接口等。其中UART接口方便系統(tǒng)軟件開發(fā)及調(diào)試,VGA接口用于圖像數(shù)據(jù)實(shí)時(shí)顯示,I2C接口外接EEPROM用于系統(tǒng)參數(shù)的掉電存儲(chǔ)。為實(shí)現(xiàn)多個(gè)系統(tǒng)的網(wǎng)絡(luò)化,F(xiàn)PGA子系統(tǒng)還設(shè)有以太網(wǎng)接口,用于多個(gè)系統(tǒng)將處理結(jié)果回傳至PC端口。PS/2接口為預(yù)留端口,后期根據(jù)需要增加鍵盤等輸入設(shè)備。

            4 系統(tǒng)軟件設(shè)計(jì)

            4.1 軟件開發(fā)開具

            該系統(tǒng)軟件設(shè)計(jì)采用TI公司CCS3.1(Code ComposerStudio)作為開發(fā)環(huán)境,并利用CCS自帶的DSP/BIOS實(shí)時(shí)操作系統(tǒng)進(jìn)行設(shè)計(jì)。在CCS中完成軟件的編輯、編譯、調(diào)試、代碼性能測試和項(xiàng)目管理等工作。通過使用DSP/BIOS提供的一系列豐富的內(nèi)核服務(wù),快速創(chuàng)建滿足實(shí)時(shí)性能要求的精細(xì)復(fù)雜的多任務(wù)應(yīng)用程序。DSP/BIOS內(nèi)核具有跨平臺(tái)的標(biāo)準(zhǔn)API接口,能被用戶程序調(diào)用,易于移植。此外,這些服務(wù)除支持多線程調(diào)度管理外,還支持系統(tǒng)實(shí)時(shí)分析以及資料管理。DSP/BIOS內(nèi)核具有很大的尺寸伸縮性,多線程配置下的內(nèi)核鏡像的代碼量最小僅有1 K字,占用DSP資源非常少。

            4.2 軟件系統(tǒng)總體設(shè)計(jì)

            在硬件平臺(tái)基礎(chǔ)上,利用CCS集成開發(fā)環(huán)境中的DSP/BIOS實(shí)時(shí)操作系統(tǒng)內(nèi)核,開發(fā)具有可擴(kuò)展性的軟件系統(tǒng)。系統(tǒng)軟件部分采用模塊化和層次化設(shè)計(jì)思想。軟件結(jié)構(gòu)主要包括:設(shè)備驅(qū)動(dòng)層、操作系統(tǒng)層、應(yīng)用程序接口(API)層和應(yīng)用層。設(shè)備驅(qū)動(dòng)層負(fù)責(zé)與硬件有關(guān)的各個(gè)模塊或外設(shè)的驅(qū)動(dòng)程序設(shè)計(jì);操作系統(tǒng)層負(fù)責(zé)嵌人式實(shí)時(shí)操作系統(tǒng)移植;應(yīng)用程序接口層完成系統(tǒng)控制功能、數(shù)據(jù)讀寫等,并實(shí)現(xiàn)硬件無關(guān)性;應(yīng)用層則設(shè)計(jì)與系統(tǒng)應(yīng)用背景有關(guān)的控制程序。圖6為系統(tǒng)軟件運(yùn)行流程。軟件設(shè)計(jì)主要分為CCD圖像預(yù)處理后的接收任務(wù)、快速數(shù)字圖像處理任務(wù)、邏輯控制任務(wù)和圖像數(shù)據(jù)回傳任務(wù)。系統(tǒng)上電后,程序首先執(zhí)行DSP的初始化和DSP/BIOS初始化,接著執(zhí)行函數(shù)主體并啟動(dòng)DSP/BIOS操作系統(tǒng),以后的任務(wù)均由操作系統(tǒng)進(jìn)行調(diào)度。采用嵌入式實(shí)時(shí)操作系統(tǒng)DSP/BIOS構(gòu)建的圖像處理軟件平臺(tái)能較好滿足任務(wù)對實(shí)時(shí)性的要求,且結(jié)構(gòu)穩(wěn)定緊湊,可移植性高。

            

          系統(tǒng)軟件運(yùn)行流程

           

            5 實(shí)驗(yàn)結(jié)果

            為驗(yàn)證該系統(tǒng)的通用性與實(shí)時(shí)性,將其應(yīng)用于某型號(hào)貼片機(jī)的器件檢測中,并進(jìn)行以下3個(gè)實(shí)驗(yàn):DMA方式下大容量數(shù)據(jù)傳輸實(shí)驗(yàn),閾值分割測試實(shí)驗(yàn)和模板匹配測試實(shí)驗(yàn)。其中DMA方式下大容量數(shù)據(jù)傳輸實(shí)驗(yàn),通過DMA方式將片內(nèi)數(shù)據(jù)傳輸至片外SDRAM內(nèi)部,圖像大小為600×480字節(jié)。閾值分割和模板匹配實(shí)驗(yàn)則直接讀取片外SDRAM中的圖像數(shù)據(jù),并對圖像分別進(jìn)行閾值分割和8×8模板匹配實(shí)驗(yàn),圖像處理算法采用TI公司圖像處理庫甬?dāng)?shù)。IMG threshold()和IMG_mad_8×8()。設(shè)置DSP運(yùn)行時(shí)鐘為208 MHz,采用定時(shí)器0計(jì)時(shí),DMA通道選用通道0,圖像數(shù)據(jù)大小為600×480字節(jié)。實(shí)驗(yàn)結(jié)果如表1所示。

            

          系統(tǒng)性能評(píng)估實(shí)驗(yàn)

           

            以上實(shí)驗(yàn)數(shù)據(jù)表明,當(dāng)采用600×480面陣CCD數(shù)據(jù)采集,并要求每幀圖像處理時(shí)間限定在30 ms以內(nèi)時(shí),該系統(tǒng)能很好滿足當(dāng)前系統(tǒng)需要。

            6 結(jié)論

            系統(tǒng)能夠滿足600×480面陣CCD和普通線陣CCD傳感器對系統(tǒng)處理能力的需要,具有較強(qiáng)的通過性和實(shí)時(shí)性。其設(shè)計(jì)創(chuàng)新之處在于,充分運(yùn)用DSP的強(qiáng)大運(yùn)算能力和靈活的尋址方式,結(jié)合FPGA在通用接口設(shè)計(jì)和簡單信號(hào)處理速度方面的優(yōu)點(diǎn),采用基于DSP/BIOS的軟件架構(gòu),使得系統(tǒng)集成度高,功耗低,具備更高的實(shí)時(shí)性和可移植性。



          關(guān)鍵詞: DSP FPGA 圖像處理

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();