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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于FPGA的嵌入式圖像監(jiān)控系統(tǒng)設計

          基于FPGA的嵌入式圖像監(jiān)控系統(tǒng)設計

          作者: 時間:2017-06-05 來源:網(wǎng)絡 收藏

          目前,大多采用PC和視頻采集卡作為系統(tǒng)主要部分,基于嵌入式技術(shù)的設備在我國還只是起步階段,沒有成熟的產(chǎn)品應用。這一現(xiàn)狀的根本原因就是我國在開發(fā)這類產(chǎn)品時,沒有統(tǒng)一的開發(fā)標準和共用的開發(fā)平臺,而且沒有可靠的功能和性能測試標準,各個企業(yè)的開發(fā)技術(shù)力量分散,極大的影響了該類產(chǎn)品開發(fā)的效率和可靠性。而制造出來的產(chǎn)品同國外同類產(chǎn)品相比,功能相差太大,沒有競爭力,市場基本上被國外公司所占領。因此,開發(fā)一個該類嵌入式系統(tǒng)勢在必行。

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

          系統(tǒng)總體方案

          為了實現(xiàn)自動圖像報警和圖像采集,本文設計了動體檢測算法,這是因為絕大多數(shù)情況下我們只對監(jiān)控區(qū)域中運動的物體感興趣,這樣可以過濾掉只包含靜態(tài)背景的圖像,從而降低了對有限的嵌入式硬件資源的消耗。由于活動物體大多是人,而且這也是圖像監(jiān)控的目標,為此加入了人體信號探測器,用以輔助動體檢測,以達到降低圖像報警誤報率的目的。本系統(tǒng)主要集成了圖像采集、控制和存儲等器件或芯片,組成了以為控制核心的實時。系統(tǒng)的總體方案如圖1所示。

          圖1 圖像監(jiān)控系統(tǒng)結(jié)構(gòu)圖

          系統(tǒng)工作流程為:系統(tǒng)上電后,從外部EEPROM自動加載程序,I2C模塊對CIS進行初始化工作參數(shù)配置。CIS向輸入圖像數(shù)據(jù)信號,F(xiàn)PGA將采集的原始數(shù)據(jù)(RAW)轉(zhuǎn)換成RGB格式,幀緩沖模塊(Frame Buffer)每次將相鄰兩幀圖像數(shù)據(jù)寫入SDRAM,然后比較這兩幀圖像的差值,如果差值大于設定的閾值,并且人體探測器輸出高電平,就認為檢測到了外界場景的運動,系統(tǒng)會自動將捕獲的圖像輸出到SD卡進行存儲。圖2給出了系統(tǒng)的工作流程。

          圖2 系統(tǒng)工作流程圖

          圖3 電源電路原理圖

          系統(tǒng)硬件設計與實現(xiàn)

          圖像監(jiān)控系統(tǒng)處理的數(shù)據(jù)量較大,同時還要滿足實時性要求,因此板載電路需要選用容量較大,速度較快的器件。本系統(tǒng)采集的一幀圖像分辨率大小為640×480,色深是24位,檢測時需要在SDRAM緩存兩幀,因此SDRAM的容量必須大于1.8M字節(jié)(640×480×3×2=1843200字節(jié)),由于每個像素位寬為24位,同時NIOS是32位的處理器,所以SDRAM的位寬最好是32位。外部提供給FPGA的晶振頻率必須大于CIS的像素時鐘25MHz。考慮到檢測算法需要較多的邏輯資源,因此FPGA的片內(nèi)LE要很豐富,另外FPGA的管腳必須要滿足外部器件連接的要求,在本系統(tǒng)中要實現(xiàn)所有器件的I/O口相連,F(xiàn)PGA的I/O管腳必須大于150個。由于電路原理圖較多,這里只給出其中的一部分。

          主控制芯片電路

          本系統(tǒng)選用的Cyclone系列FPGA器件的具體型號是EPlCl2Q240C8。邏輯資源達12060個邏輯單元(LE,Logic Elements),片內(nèi)RAM的容量為239616bits。完全可以滿足圖像采集的設計要求。其內(nèi)核供電采用1.5V、0.13um工藝,功耗較低。Cyclone器件支持各種單端I/O接口標準,如3.3V、2.5V、1.8V、LVTTL、LVCMOS、SSTL。Cyclone器件具有兩個可編程鎖相環(huán)(PLL)和八個全局時鐘線,提供健全的時鐘管理和頻率合成功能,實現(xiàn)最大的系統(tǒng)性能。Cyclone器件具有高級外部存儲器接口,允許設計者將外部單數(shù)據(jù)率(SDR)SDRAM,雙數(shù)據(jù)率(DDR)、SDRAM和DDR FCRAM器件集成到復雜系統(tǒng)設計中,而不會降低數(shù)據(jù)訪問的性能。Cyclone系列FPGA器件基于一種全新的低成本架構(gòu),從設計之初就充分考慮了成本的節(jié)省,因此可以為價格敏感的應用提供全新的可編程的解決方案。

          電源電路

          一般而言,F(xiàn)PGA器件出于芯片設計、多電平接口的需要,電源都分為兩組:VCCINT和VCCIO,即內(nèi)核電源和I/O電源,隨著芯片內(nèi)部連線尺度的逐漸減小,核心電源電壓和接口電壓也越來越低。本設計中EPlCl2器件的VCCINT為1.5V,VCCIO為3.3V。目前總的來說有三種電源解決方案,分別是線性穩(wěn)壓器電源(LDO)、開關(guān)穩(wěn)壓器電源和電源模塊。

          LDO線性穩(wěn)壓器適用于降壓變換,具體效果與輸入/輸出電壓比有關(guān)。從基本原理來說,LDO根據(jù)負載電阻的變化情況來調(diào)節(jié)自身的內(nèi)電阻,從而保證穩(wěn)壓輸出端的電壓不變。其變換效率可以簡單地看作輸出與輸入電壓之比。

          由于采用線性調(diào)節(jié)原理,LDO本質(zhì)上沒有輸出紋波。與LDO相比,DC/DC調(diào)整器輸出紋波電壓較大、瞬時恢復時間較慢、容易產(chǎn)生電磁干擾(EMI)。系統(tǒng)電源輸入電壓為5V,3.3V電壓供電部分采用了ASl084;此外,對于FPGA的PLL工作需要的1.5V電源部分,采用AMS1117-1.5 LDO來實現(xiàn)。

          由于Altera的PLL是模擬電路實現(xiàn)的,其對電源噪聲比較敏感,所以在設計PCB的時候,對給PU的供電部分要做一些特殊的處理。即使在設計中沒有用到PLL也必須給其供電。

          本系統(tǒng)中選用的EPlCl2F400C8芯片的輸入輸出接口電壓為3.3V,內(nèi)核電壓降低到1.5V,這樣可以降低功耗,有利于系統(tǒng)的穩(wěn)定,但也給電源供電和其它芯片的選擇帶來了麻煩,系統(tǒng)中其它芯片的接口電壓必須為3.3V,至少也要兼容3.3V,電源設計中需要考慮的主要問題是功率是否滿足的問題。

          SD卡接口電路

          在各種存儲設備中,SD卡不僅小巧,而且功耗很低,另外市面上常見SD卡的容量可達到2GB以上,因此非常適合用于對體積和功耗要求嚴格的嵌入式圖像存儲。如圖4所示,SPI的兩個數(shù)據(jù)線DAT0、CMD分別接上拉電阻,這是為了使本電路可以與MMC卡的接口兼容??ǖ墓╇姴捎每煽胤绞剑@是為了防止SD/MMC卡進入不確定狀態(tài)時,可以通過對卡重新上電使卡復位而無需拔出卡??煽仉娐凡捎肞型MOS管,由FPGA的GPIO口SDPC進行控制,當SDPC輸出高電平時,MOS管關(guān)斷,不給卡供電;當SDPC輸出低電平時,MOS管開通,VCC3V3電源給卡供電。考慮管子開通時,漏極與源極之間的壓降要足夠小(保證SD/MMC卡的工作電壓在允許范圍內(nèi)),管子允許通過的電流也要滿足卡的要求,一般一張SD/MMC卡工作時的最大電流通常為45mA左右,所以選用的MOS管要允許通過100mA左右的電流。采用2SJ355的目的是當它開通時,管子上的壓降比較小。

          圖4 SD卡電路原理圖

          圖5 圖像傳感器電路原理圖

          卡檢測電路包括兩部分:卡是否完全插入到卡座中和卡是否寫保護。檢測信號由卡座的兩個引腳以電平的方式輸出。當卡插入到卡座并插入到位時,SDIN(第10腳)由于卡座內(nèi)部觸點連接到GND,輸出低電平;當卡拔出時,該引腳由于上拉電阻R2的存在而輸出高電平,該輸出由FPGA的輸入引腳來檢測??ㄊ欠駥懕Wo的檢測與卡是否完全插入到卡座中的檢測原理是一樣的。

          圖像傳感器電路

          圖像的輸入端的采集模塊是CMOS圖像傳感器,與CCD傳感器相比,CMOS傳感器不僅成本遠低于CCD產(chǎn)品。而且CMOS傳感器可輕松實現(xiàn)較高的集成度(比如CMOS被廣泛用于拍攝手機的微型攝像頭),另外CMOS傳感器擁有超低功耗的優(yōu)點。本系統(tǒng)圖像采集用于監(jiān)控領域,對于圖像的質(zhì)量要求不是非常高,而對傳感器的功耗要求必須很低,而且可以直接輸出系統(tǒng)需要的數(shù)據(jù)格式,因此本系統(tǒng)的圖像采集部分選用了CMOS圖像傳感器。

          在本設計中采用美光科技公司的MT9M011型號CMOS圖像傳感器,MT9M011是一塊SXGA(super extended graphics array,超大擴展圖像陣列)制式的1/3英寸主動式數(shù)字圖像傳感器,其有效圖像序列范圍為1280×1024,結(jié)合了眾多數(shù)碼照相機具有的功能如開窗取景、行列跳躍、快照模式等等,可以通過一個兩線的串口來實現(xiàn)可編程操作,并且具有功耗低的特點。片載A/D轉(zhuǎn)換器將提供每像素I/O位的輸出精度,幀有效和行有效信號將在特定的引腳上輸出,并且還配有像素時鐘同步響應的有效數(shù)據(jù)。

          NiOS系統(tǒng)軟件設計及實現(xiàn)

          本系統(tǒng)的軟件設計是以C語言形式在利用Altera公司的軟件集成開發(fā)工具IDE所提供的硬件配置模塊(HAL)的函數(shù)支持下來完成編寫的。系統(tǒng)啟動后,進行初始化工作,初始化程序主要完成初始化DMA通道及清FIFO控制接口的FIFO緩沖器等。隨后系統(tǒng)進入主循環(huán)狀態(tài),并檢測按鍵。當檢測到DETECT時,啟動FIFO控制接口開始保存數(shù)據(jù),當檢測到data_avaible有效時,啟動一次DMA傳輸。如此循環(huán),直到檢測到SAVE_DONE為止,就實現(xiàn)了圖像數(shù)據(jù)的采集功能。

          UART傳輸程序設計

          uart傳輸程序主要是將圖像數(shù)據(jù)傳輸?shù)诫娔X進行顯示,用于調(diào)試。在PC端,通過串口接收工具和Matlab將圖像顯示出來。Nios II系統(tǒng)中,可以通過ANSI C文件操作的標準庫函數(shù)來執(zhí)行UART傳輸(uart 0),即將UART作為文件來處理。執(zhí)行過程為:打開外設UART并獲得外設旬柄——fopen();向外寫入數(shù)據(jù)——fWrite();關(guān)閉外設——fclose()。

          SD存儲卡的程序設計

          SD卡程序設計包括驅(qū)動程序和文件系統(tǒng)兩部分設計。兩部分通過文件系統(tǒng)的接口函數(shù)相連接。驅(qū)動程序包括硬件配置模塊和命令應用模塊。硬件配置模塊包括訪問SD卡的硬件環(huán)境配置、SPI接口實現(xiàn)通訊的基本函數(shù)、內(nèi)存變量初始化以及SPI中斷的處理。命令應用模塊提供訪問SD卡的讀數(shù)據(jù)函數(shù)和寫數(shù)據(jù)函數(shù)。

          結(jié)論

          本文主要完成了嵌入式圖像監(jiān)控系統(tǒng)的設計,該系統(tǒng)克服了模擬圖像監(jiān)控技術(shù)具有的弊端,在普通家庭、臨時性作業(yè)場所中具有很強的應用前景。這些領域一般對視頻傳輸指標的要求不一定很高,但要求便于攜帶,同時功耗較小(例如臨時性場合等),具有體積小、功耗低、成本低、速度快、穩(wěn)定性好等特點,可以有效地克服傳統(tǒng)的基于計算機的監(jiān)控系統(tǒng)的缺點。系統(tǒng)可做為一個智能部件“嵌入”到各種應用系統(tǒng)中,如將其配上網(wǎng)絡接口接上計算機系統(tǒng),即可構(gòu)成一個監(jiān)控網(wǎng)絡系統(tǒng),是一種相對獨立的OEM部件。



          評論


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