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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 新型網(wǎng)絡(luò)數(shù)字攝像系統(tǒng)的設(shè)計

          新型網(wǎng)絡(luò)數(shù)字攝像系統(tǒng)的設(shè)計

          作者: 時間:2012-10-29 來源:網(wǎng)絡(luò) 收藏
          目前將攝像機拍攝的圖像傳送到計算機中進行播放、處理主要有兩種方式:一是通過圖像采集卡;二是利用攝像機自帶的USB接口。第一種方式雖然可以保證圖像采集的實時性,但不能脫離計算機單獨工作,應(yīng)用領(lǐng)域有局限性;后一種方式在圖像傳輸實時性和圖像播放質(zhì)量上又不盡人意。隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,使網(wǎng)絡(luò)接入技術(shù)直接嵌入到攝像機中成為可能。本文介紹一種基于DSP芯片和嵌入式微控制器的。該系統(tǒng)內(nèi)部集成了圖像傳感芯片和數(shù)字圖像處理芯片,不需要借助計算機,直接連接到互聯(lián)網(wǎng)上(見圖1),向互聯(lián)網(wǎng)上的計算機傳輸高質(zhì)量的實時視頻圖像,根據(jù)網(wǎng)絡(luò)通信狀況和計算機的命令改變傳輸圖像的分辨率和幀率等指標(biāo)。該系統(tǒng)硬件集成度高、圖像傳輸實時性好、操作簡單、控制靈活。

          該系統(tǒng)包括兩大部分:圖像處理模塊和NetMCU模塊。系統(tǒng)框圖見圖2。由圖像處理模塊負責(zé)對圖像進行采集和壓縮,先將模擬圖像信號轉(zhuǎn)變成YUV格式的數(shù)字信號,然后由DSP芯片按照JPEG標(biāo)準進行圖像壓縮編碼。Ne tMCU模塊將接收到的壓縮圖像數(shù)據(jù)按TCP/IP協(xié)議打包,發(fā)送至互聯(lián)網(wǎng)的計算機上,并接收計算機傳來的控制命令,對系統(tǒng)進行配置。以下分別介紹各個模塊的工作原理和軟件設(shè)計方法。

          1 圖像處理模塊

          1.1 芯片介紹 圖像采集芯片采用OmniVision公司的CMOS彩色圖像傳感器OV6620[1]。在它內(nèi)部集成了一個356×292的彩色圖像陣列。該圖像傳感器能對所拍攝的圖像進行預(yù)處理,包括自動曝光控制、自動白平衡調(diào)節(jié)、gamma校正、自動圖像增強;并可通過與DSP芯片相連的串行通信接口,對傳感器內(nèi)部的92個寄存器的參數(shù)進行設(shè)置。

          圖像壓縮芯片采用TI公司的TMS320VC5416[2]定點運算數(shù)字信號處理器(DSP),其內(nèi)部采用一種改進型的哈佛總線結(jié)構(gòu)(一條程序總線,三條數(shù)據(jù)總線),數(shù)據(jù)總線寬度為16
          bit。分開的數(shù)據(jù)和指令空間使該芯片具有高度的并行操作能力,在單周期內(nèi)允許指令和數(shù)據(jù)同時存取,再加上其高度優(yōu)化的指令集,使得該芯片具有很高的運算速度,最高可達
          160MIPS。

          VC5416芯片的外部程序存儲空間為8M×16bits,外部數(shù)據(jù)存儲空間為64K×16bits。在芯片內(nèi)部還集成了128K×16bits片上存儲器。該芯片具有多種片上外部設(shè)備單元,包括一個16位計時器,一個6通道DMA傳輸控制器,三個帶緩沖器的串行通信接口(McBSP
          )和一個8/16位的主機通信接口(HPI8/16)。

          1.2 功能介紹

          圖像處理模塊主要負責(zé)模擬圖像的采集、數(shù)字化、壓縮等工作。首先,在系統(tǒng)加電運行后,由NetMCU模塊對VC5416芯片復(fù)位,然后VC5416芯片運行固化在芯片內(nèi)的BootLoader程序,將存儲在外部程序存儲器上的應(yīng)用程序復(fù)制到內(nèi)部存儲器中,并開始運行應(yīng)用程序。應(yīng)用程序的任務(wù)主要有以下三個方面:

          (1)通過VC5416芯片的1號串行通信接口(McBSP1)對OV6620的內(nèi)部寄存器進行參數(shù)配置。主要參數(shù)包括:將輸出圖像分辨率設(shè)置為352×288,將輸出圖像幀的速率設(shè)置為25幀/秒,將數(shù)字圖像的輸出格式設(shè)置為YUV分量4:2:2格式。

          (2)將OV6620芯片輸出的圖像數(shù)據(jù)利用JPEG算法進行數(shù)字圖像壓縮。在本設(shè)計中采用一種改進的JPEG算法[4]。將二維DCT變換分解成兩次一維快速DCT變換。對8×8象素塊的DCT變換,共需176次乘法和464次加法,比標(biāo)準DCT算法的1024次乘法和896次加法在運算速度上有極大提高。

          (3)VC5416芯片通過與NetMCU模塊相連的0號串行通信接口(Mc BAP0),接收改變傳輸圖像的分辨率、幀速、曝光時間等參數(shù)的命令,并及時調(diào)整OV6620芯片的內(nèi)部寄存器參數(shù)。

          OV6620芯片和VC5416芯片之間存在大量的數(shù)據(jù)傳輸,因此在系統(tǒng)中采用一片ALTERA公司的FPGA(FLEX10K20)芯片作為數(shù)據(jù)傳輸接口,代替VC5416芯片管理外部數(shù)據(jù)存儲區(qū)。在FPGA芯片中集成了一個512×16bits的FIFO和一個存儲控制器。通過OV6620芯片輸出的圖像象素移位脈沖和圖像的行、場同步脈沖的控制,將原始圖像數(shù)據(jù)存入FIFO中。由于JPEG圖像壓縮以8×8象素塊基本運算單位,需要存儲控制器將FIFO中以行順序輸入的原始圖像數(shù)據(jù)進行存儲地址調(diào)整,變換成按8×8像素塊順序存入外部數(shù)據(jù)存儲區(qū)。同時,由于受VC5416芯片的外部數(shù)據(jù)存儲區(qū)容量的限制,存儲控制器將一幀原始圖像數(shù)據(jù)分成上下兩個半?yún)^(qū),各占用一個64KB地址空間。當(dāng)VC5416芯片讀數(shù)據(jù)時,存儲控制器會自動在這兩個半?yún)^(qū)之間切換,使得DSP芯片能夠處理一幀圖像。

          2 NetMCU模塊

          2.1 芯片介紹

          本系統(tǒng)采用三星公司的[3]芯片作為主控制器。芯片內(nèi)部結(jié)構(gòu)見圖3。芯片集成了公司的32位精簡指令集處理器ARM7TDMI核。ARM7TDMI核采用馮·諾依曼體系結(jié)構(gòu),使用單-32位總線傳送指令和數(shù)據(jù),使用三級流水線操作以提高處理器執(zhí)行速度。ARM7TDMI核可以使用兩種指令集:一種是32位指令集;一種是16位Thumb指令集。Thumb指令集是指令集的子集,但它能提供比16位體系結(jié)構(gòu)更高的性能、比32位體系結(jié)構(gòu)更高的代碼密度。因此,Thumb指令集使ARM7TDMI核非常適合有存儲器寬度和代碼密度限制的嵌入式場合。 芯片的存儲空間最大可達16M×32bits(包括程序存儲區(qū)、數(shù)據(jù)存儲區(qū)和I/O設(shè)備區(qū)),它內(nèi)部集成了一個存儲控制器,具有自動刷新存儲區(qū)數(shù)據(jù)和自動插入可編程等待周期的功能,可以支持多種類型的存儲芯片(包括ROM、SRAM、FLASH和DRAM)。在芯片內(nèi)部還集成有8K×8bits的指令/數(shù)據(jù)Cache,采用pseudo-LRU(Least Recently Used)算法,大大提高了芯片的性能。


          上一頁 1 2 下一頁

          評論


          相關(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); })();