《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于ARM和CPLD的嵌入式視覺系統設計
基于ARM和CPLD的嵌入式視覺系統設計
互聯網
摘要: 搭建一種低成本的嵌入式視覺系統,系統由CMOS圖像傳感器、CPLD、ARM7微處理器以及SRAM構成。其中,CPLD識別時序,解決了圖像采集系統存在的嚴格時序同步和雙CPU共享一片SRAM的總線競爭問題;用Verilog語言編寫Mealy狀態機控制圖像數據寫入SRAM,多路數據選擇器實現總線切換,避免了總線沖突。圖像處理算法注重效率,基于ARM實現,系統最終工作速率為25幀/s。
Abstract:
Key words :

  簡介:搭建一種低成本的嵌入式視覺系統,系統由CMOS圖像傳感器、CPLDARM7微處理器以及SRAM構成。其中,CPLD識別時序,解決了圖像采集系統存在的嚴格時序同步和雙CPU共享一片SRAM的總線競爭問題;用Verilog語言編寫Mealy狀態機控制圖像數據寫入SRAM,多路數據選擇器實現總線切換,避免了總線沖突。圖像處理算法注重效率,基于ARM實現,系統最終工作速率為25幀/s。

  目前,關于視覺系統的研究已經成為熱點,也有開發出的系統可供參考。但這些系統大多是基于PC機的,由于算法和硬件結構的復雜性而使其在小型嵌入式系統中的應用受到了限制。上述系統將圖像數據采集后,視覺處理算法是在PC機上實現的。隨著嵌入式微處理器技術的進步,32位ARM處理器系統擁有很高的運算速度和很強的信號處理能力,可以作為視覺系統的處理器,代替PC機來實現簡單的視覺處理算法。下面介紹一種基于ARM和CPLD的嵌入式視覺系統,希望能分享嵌入式視覺開發過程中的一些經驗。

  1 系統方案與原理

  在嵌入式視覺的設計中,目前主流的有以下2種方案:

  方案1圖像傳感器+微處理器(ARM或DSP)+SRAM

  方案2圖像傳感器+CPLD/FPGA+微處理器+SRAM

  方案1系統結構緊湊,功耗低。在圖像采集時,圖像傳感器輸出的同步時序信號的識別需要借助ARM的中斷,而中斷處理時,微處理器需要完成程序跳轉、保存上下文等工作[1],降低了圖像采集的速度,適合對采集速度要求不高、功耗低的場合。

  方案2借助CPLD來識別圖像傳感器的同步時序信號,不必經過微處理器的中斷,因而系統的采集速度提高,但CPLD的介入會使系統的功耗提高。

  為了綜合以上2種方案的優勢,在硬件上采用“ARM+CPLD+圖像傳感器+SRAM”。該方案充分利用了CPLD的可編程性,通過軟件編程來兼有方案1的優勢,具體體現在以下方面:

  ① 功耗的高低可以控制。對于功耗有嚴格要求的場合,通過CPLD的可編程性將時序部分的接口與ARM的中斷端口相連,僅僅是組合邏輯的總線相連,可以降低CPLD的功耗從而達到方案1的效果;對于采集速度要求高而功耗要求不高的情況,可以充分發揮CPLD的優勢,利用組合與時序邏輯來實現圖像傳感器輸出同步信號的識別,并將圖像數據寫入SRAM中。

  ② 器件的選擇可以多樣。在硬件設計上,所有總線均與CPLD相連;在軟件設計上,不同的模塊單獨按功能封裝。這樣以CPLD為中心,系統的其他器件均可更換而無需對CPLD部分程序進行改動,有利于系統的功能升級。

  作為本系統的一種應用,開發了視覺跟蹤的程序,可以在目標和背景顏色對比強烈的情況下對物體進行跟蹤。通過對CMOS攝像頭采集來的數據進行實時處理,根據物體的顏色計算出被追蹤物體的質心坐標。下面分別描述系統各部分的功能。

 

  2 系統硬件

 

  2.1 硬件組成及連接

  系統的硬件主要有4部分:CMOS圖像傳感器OV6620、可編程器件CPLD、512 KB的SRAM和32位微處理器LPC2214。

  OV6620是美國OmniVision公司生產的CMOS圖像傳感器,以其高性能、低功耗適合應用在嵌入式圖像采集系統中,本系統圖像數據的輸入都是通過OV6620采集進來的;可編程器件CPLD采用Altera公司的EPM7128S,用Verilog硬件編程語言在QuartusII下編寫程序;作為系統的數據緩沖,SRAM選用的是IS61LV5128,其隨機訪問的特性為圖像處理程序提供了便利;而LPC2214在PLL(鎖相環)的支持下最高可以運行在60 MHz的頻率下,為圖像的快速處理提供了硬件支持。

  OV6620集成在一個板卡上,有獨立的17 MHz晶振。輸出3個圖像同步的時序信號:像素時鐘PCLK、幀同步VSYNC和行同步HREF。同時,還可以通過8位或16位的數據總線輸出RGB或YCrCb格式的圖像數據。

  在硬件設計上,有2個問題需要解決:

  ① 圖像采集的嚴格時序同步;

  ② 雙CPU共享SRAM的總線仲裁。

  解決第一個問題的關鍵在于如何實時、準確地讀取OV6620的時序輸出信號,據此將圖像數據寫入SRAM中。這里采用的解決方案是用CPLD來實現時序信號的識別以及圖像數據的寫入。CPLD在硬件上可以識別信號的邊沿,速度更快,通過Verilog語言編寫Mealy狀態機來實現圖像數據的SRAM寫入,更加穩定。

  對于雙CPU共享SRAM,可以通過合理的連接方式來解決。考慮到CPLD的可編程性,將OV6620的數據總線,LPC2214的地址、數據總線以及SRAM的總線都連接到CPLD上。通過編程來控制總線之間的連接,只要在軟件上保證總線的互斥性,即在同一時刻有且僅有一個控制器(CPLD或者LPC2214)來操作SRAM的總線,就可以有效地避免總線沖突。這樣,硬件上的仲裁就可以通過軟件來保證,該過程可以通過在CPLD中編寫多路數據選擇器來實現。

  各器件之間的連接關系如圖1所示。

 

  按此在新窗口瀏覽圖片

  圖1 系統結構框圖

 

  由圖1可見,微處理器的總線接在CPLD上,在對功耗有嚴格要求的場合中,只需要在CPLD中,將OV6620的同步時序信號所對應的引腳與LPC2214連接在CPLD上的中斷引腳相連,系統就可以轉換成方案1的形式。對CPLD而言,引腳相連的僅僅是組合邏輯,降低了功耗。方案1的具體工作過程可見參考文獻[1]。

 

按此在新窗口瀏覽圖片

  圖2 OV6620輸出時序圖

 

  在Verilog語言中,對上升沿的檢測是通過always語句來實現的。例如檢測時鐘信號cam_pclk的上升沿:

 

 按此在新窗口瀏覽圖片

  圖3 行處理得到的線形圖

 

  根據得到的結果,可以計算出更多關于跟蹤物體的信息:

  ① 計算區域面積。計算每條線段的長度l(n),然后將l(n)進行累積疊加,即可獲得跟蹤區域面積值S。

  按此在新窗口瀏覽圖片

  ② 計算質心橫坐標。

  按此在新窗口瀏覽圖片

  ③ 計算質心縱坐標。

  

按此在新窗口瀏覽圖片

  ④ 識別物體的形狀。根據得到的每行跟蹤點的長度,以及同一行中有幾段符合要求的連續跟蹤點,可以得知物體從攝像頭角度看到的形狀。特別是在檢測平面上線條時,可以識別是否有分支,這一點是幀處理模式無法做到的。

  需要指出的是,行處理模式雖然會得到關于跟蹤目標的更多信息,但是每行處理的方式增大了處理器的負擔,處理速度也沒有幀處理快。

 

  簡介:搭建一種低成本的嵌入式視覺系統,系統由CMOS圖像傳感器、CPLD、ARM7微處理器以及SRAM構成。其中,CPLD識別時序,解決了圖像采集系統存在的嚴格時序同步和雙CPU共享一片SRAM的總線競爭問題;用Verilog語言編寫Mealy狀態機控制圖像數據寫入SRAM,多路數據選擇器實現總線切換,避免了總線沖突。圖像處理算法注重效率,基于ARM實現,系統最終工作速率為25幀/s。

  目前,關于視覺系統的研究已經成為熱點,也有開發出的系統可供參考。但這些系統大多是基于PC機的,由于算法和硬件結構的復雜性而使其在小型嵌入式系統中的應用受到了限制。上述系統將圖像數據采集后,視覺處理算法是在PC機上實現的。隨著嵌入式微處理器技術的進步,32位ARM處理器系統擁有很高的運算速度和很強的信號處理能力,可以作為視覺系統的處理器,代替PC機來實現簡單的視覺處理算法。下面介紹一種基于ARM和CPLD的嵌入式視覺系統,希望能分享嵌入式視覺開發過程中的一些經驗。

 

  1 系統方案與原理

 

  在嵌入式視覺的設計中,目前主流的有以下2種方案:

  方案1圖像傳感器+微處理器(ARM或DSP)+SRAM

  方案2圖像傳感器+CPLD/FPGA+微處理器+SRAM

  方案1系統結構緊湊,功耗低。在圖像采集時,圖像傳感器輸出的同步時序信號的識別需要借助ARM的中斷,而中斷處理時,微處理器需要完成程序跳轉、保存上下文等工作[1],降低了圖像采集的速度,適合對采集速度要求不高、功耗低的場合。

  方案2借助CPLD來識別圖像傳感器的同步時序信號,不必經過微處理器的中斷,因而系統的采集速度提高,但CPLD的介入會使系統的功耗提高。

  為了綜合以上2種方案的優勢,在硬件上采用“ARM+CPLD+圖像傳感器+SRAM”。該方案充分利用了CPLD的可編程性,通過軟件編程來兼有方案1的優勢,具體體現在以下方面:

  ① 功耗的高低可以控制。對于功耗有嚴格要求的場合,通過CPLD的可編程性將時序部分的接口與ARM的中斷端口相連,僅僅是組合邏輯的總線相連,可以降低CPLD的功耗從而達到方案1的效果;對于采集速度要求高而功耗要求不高的情況,可以充分發揮CPLD的優勢,利用組合與時序邏輯來實現圖像傳感器輸出同步信號的識別,并將圖像數據寫入SRAM中。

  ② 器件的選擇可以多樣。在硬件設計上,所有總線均與CPLD相連;在軟件設計上,不同的模塊單獨按功能封裝。這樣以CPLD為中心,系統的其他器件均可更換而無需對CPLD部分程序進行改動,有利于系統的功能升級。

  作為本系統的一種應用,開發了視覺跟蹤的程序,可以在目標和背景顏色對比強烈的情況下對物體進行跟蹤。通過對CMOS攝像頭采集來的數據進行實時處理,根據物體的顏色計算出被追蹤物體的質心坐標。下面分別描述系統各部分的功能。

 

  2 系統硬件

 

  2.1 硬件組成及連接

  系統的硬件主要有4部分:CMOS圖像傳感器OV6620、可編程器件CPLD、512 KB的SRAM和32位微處理器LPC2214。

  OV6620是美國OmniVision公司生產的CMOS圖像傳感器,以其高性能、低功耗適合應用在嵌入式圖像采集系統中,本系統圖像數據的輸入都是通過OV6620采集進來的;可編程器件CPLD采用Altera公司的EPM7128S,用Verilog硬件編程語言在QuartusII下編寫程序;作為系統的數據緩沖,SRAM選用的是IS61LV5128,其隨機訪問的特性為圖像處理程序提供了便利;而LPC2214在PLL(鎖相環)的支持下最高可以運行在60 MHz的頻率下,為圖像的快速處理提供了硬件支持。

  OV6620集成在一個板卡上,有獨立的17 MHz晶振。輸出3個圖像同步的時序信號:像素時鐘PCLK、幀同步VSYNC和行同步HREF。同時,還可以通過8位或16位的數據總線輸出RGB或YCrCb格式的圖像數據。

  在硬件設計上,有2個問題需要解決:

  ① 圖像采集的嚴格時序同步;

  ② 雙CPU共享SRAM的總線仲裁。

  解決第一個問題的關鍵在于如何實時、準確地讀取OV6620的時序輸出信號,據此將圖像數據寫入SRAM中。這里采用的解決方案是用CPLD來實現時序信號的識別以及圖像數據的寫入。CPLD在硬件上可以識別信號的邊沿,速度更快,通過Verilog語言編寫Mealy狀態機來實現圖像數據的SRAM寫入,更加穩定。

  對于雙CPU共享SRAM,可以通過合理的連接方式來解決。考慮到CPLD的可編程性,將OV6620的數據總線,LPC2214的地址、數據總線以及SRAM的總線都連接到CPLD上。通過編程來控制總線之間的連接,只要在軟件上保證總線的互斥性,即在同一時刻有且僅有一個控制器(CPLD或者LPC2214)來操作SRAM的總線,就可以有效地避免總線沖突。這樣,硬件上的仲裁就可以通過軟件來保證,該過程可以通過在CPLD中編寫多路數據選擇器來實現。

  各器件之間的連接關系如圖1所示。

 

  按此在新窗口瀏覽圖片

  圖1 系統結構框圖

 

  由圖1可見,微處理器的總線接在CPLD上,在對功耗有嚴格要求的場合中,只需要在CPLD中,將OV6620的同步時序信號所對應的引腳與LPC2214連接在CPLD上的中斷引腳相連,系統就可以轉換成方案1的形式。對CPLD而言,引腳相連的僅僅是組合邏輯,降低了功耗。方案1的具體工作過程可見參考文獻[1]。

 

按此在新窗口瀏覽圖片

  圖2 OV6620輸出時序圖

 

  在Verilog語言中,對上升沿的檢測是通過always語句來實現的。例如檢測時鐘信號cam_pclk的上升沿:

 

 按此在新窗口瀏覽圖片

  圖3 行處理得到的線形圖

 

  根據得到的結果,可以計算出更多關于跟蹤物體的信息:

  ① 計算區域面積。計算每條線段的長度l(n),然后將l(n)進行累積疊加,即可獲得跟蹤區域面積值S。

  按此在新窗口瀏覽圖片

  ② 計算質心橫坐標。

  按此在新窗口瀏覽圖片

  ③ 計算質心縱坐標。

  

按此在新窗口瀏覽圖片

  ④ 識別物體的形狀。根據得到的每行跟蹤點的長度,以及同一行中有幾段符合要求的連續跟蹤點,可以得知物體從攝像頭角度看到的形狀。特別是在檢測平面上線條時,可以識別是否有分支,這一點是幀處理模式無法做到的。

  需要指出的是,行處理模式雖然會得到關于跟蹤目標的更多信息,但是每行處理的方式增大了處理器的負擔,處理速度也沒有幀處理快。

 

  4 提高系統的工作速率

 

  目前,系統工作在幀處理模式下的工作速率是25幀/s,作為系統功能的驗證,這里采用的算法是顏色跟蹤。如果僅做純粹的圖像采集,而不做圖像處理,那么系統可以達到OV6620的最高工作速率,即60幀/s。而在圖像處理方面,不同的圖像處理程序效率對系統的工作頻率有較大的影響。下面給出在通用ARM處理器下提高程序效率的幾個建議:

  ① 內嵌(inline)可通過刪除子函數調用的開銷來提高性能。如果函數在別的模塊中不被調用,一個好的建議是用static標識函數;否則,編譯器將在內嵌譯碼里把該函數編譯成非內嵌的。

  ② 在ARM系統中,函數調用過程中參數個數≤4時,通過R0~R3傳遞;參數個數>4時,通過壓棧方式傳遞(需要額外的指令和慢速的存儲器操作)。通常限制參數的個數,使它為4或更少。如果不可避免,則把常用的前4個參數放在R0~R3中。

  ③ 在for(), while() do…while()的循環中,用“減到0”代替“加到某個值”。比如:

  for (loop = 1; loop <= total; loop++) //ADD和CMP

  替換為:for (loop = total; loop != 0; loop--) //SUBS

  第1種方式比較需要2條指令ADD和CMP,而第2種方式只需一條指令SUBS。

  ④ ARM核不含除法硬件,除法通常用一個運行庫函數來實現,運行需要很多個周期。一些除法操作在編譯時作為特例來處理,例如除以2的操作用左移代替余數的操作符“%”,通常使用模算法。如果這個值的模不是2的n次冪,則將花費大量的時間和代碼空間避免這種情況的發生。具體辦法是使用if()作狀態檢查。

  比如,count的范圍是0~59:

  count = (count+1) % 60;

  用下面語句代替:

  if (++count >= 60)

  count = 0;

  ⑤ 避免使用大的局部結構體或數組,可以考慮用malloc/free代替。

  ⑥ 避免使用遞歸。

  結語

  本文介紹了一種基于ARM和CPLD的嵌入式視覺系統,可以實現顏色跟蹤。在硬件設計上,圖像采集和圖像處理分離,更利于系統功能的升級。而視覺處理算法更注重處理的效率和實時性,同時根據不同的需要有兩種模式可供選擇。最后給出了提高程序效率的一些建議和方法。與基于PC機的視覺系統相比,該系統功耗低、體積小,適合應用于移動機器人等領域。

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
一本一本久久a久久精品综合妖精 一本一本久久a久久精品综合麻豆 | 制服诱惑一区二区| 亚洲国产女人aaa毛片在线| 国产午夜精品理论片a级探花 | 在线欧美不卡| 在线观看国产精品网站| 黑人一区二区| 国内精品国语自产拍在线观看| 国产日韩欧美二区| 国产精品日韩在线播放| 国产精品久久久久久久久久三级 | 国产精品久久久久影院亚瑟| 国产精品swag| 国产精品高潮呻吟视频| 国产精品久久久久久五月尺| 国产精品久久久久aaaa九色| 欧美日韩在线一区二区| 欧美性大战久久久久久久蜜臀| 欧美视频在线一区| 国产精品成人免费精品自在线观看| 欧美日韩一本到| 欧美日韩一级大片网址| 国产精品成人一区二区三区吃奶| 国产精品chinese| 国产女主播视频一区二区| 国产深夜精品福利| 国产综合色在线| 亚洲国产老妈| 一区二区三区福利| 亚洲自拍偷拍一区| 欧美在线网址| 亚洲精品在线视频| 亚洲午夜91| 久久国产精品网站| 女同一区二区| 欧美日韩久久久久久| 国产精品入口夜色视频大尺度| 国产一区二区三区精品欧美日韩一区二区三区| 国产亚洲欧美一区二区三区| 在线精品亚洲| 一区二区三区www| 午夜精品网站| 亚洲精品欧洲| 午夜欧美理论片| 久久一本综合频道| 欧美日韩国产一级片| 国产伦一区二区三区色一情| 国内精品久久久久久久影视麻豆| 亚洲激精日韩激精欧美精品| 亚洲一区二区免费在线| 亚洲成人在线网| 亚洲天堂激情| 久久久欧美精品| 欧美精品少妇一区二区三区| 国产精品日韩欧美一区二区| 尤妮丝一区二区裸体视频| 日韩一区二区免费高清| 欧美一区二区视频观看视频| 亚洲裸体视频| 欧美在线欧美在线| 欧美激情小视频| 国产伦精品一区二区三区视频黑人 | 一区二区三区**美女毛片| 欧美夜福利tv在线| 日韩午夜在线| 久久精品人人做人人爽| 欧美精品久久天天躁 | 韩国福利一区| 一本色道久久综合狠狠躁篇怎么玩| 香蕉av777xxx色综合一区| 亚洲人成网站精品片在线观看| 亚洲免费网址| 欧美福利电影在线观看| 国产目拍亚洲精品99久久精品| 亚洲精品国精品久久99热一| 欧美一区2区三区4区公司二百| 日韩午夜免费| 麻豆精品国产91久久久久久| 国产精品推荐精品| 最新日韩在线视频| 久久精品国产一区二区电影| 亚洲欧美日韩国产一区二区| 欧美大片免费观看| 国产亚洲精品v| 一区二区三区高清| 亚洲精品视频免费观看| 久久久噜噜噜久久狠狠50岁| 欧美日韩高清在线| 亚洲第一级黄色片| 欧美一区二区三区免费视| 亚洲男女毛片无遮挡| 欧美精品18+| 18成人免费观看视频| 欧美亚洲一区| 欧美一区二区黄色| 国产精品二区三区四区| 亚洲日韩欧美视频一区| 亚洲经典视频在线观看| 久久久久久亚洲精品中文字幕| 国产精品xxxxx| 亚洲美女免费视频| 日韩网站免费观看| 欧美国产乱视频| 伊人精品视频| 亚洲第一久久影院| 久久精品国产精品亚洲精品| 国产精品国产三级欧美二区| 亚洲美女电影在线| 一二三区精品| 欧美日韩国产成人精品| 亚洲精品一二| 99re热精品| 欧美日韩国产在线观看| 亚洲精品久久久蜜桃| 99riav1国产精品视频| 欧美电影在线观看| 亚洲高清三级视频| 亚洲精品字幕| 欧美黄色免费网站| 最新国产乱人伦偷精品免费网站| 亚洲精品国产精品国自产在线| 蜜臀av一级做a爰片久久| 在线精品福利| 亚洲欧洲一区二区在线播放| 免费在线看成人av| 亚洲激情视频在线播放| 99精品久久| 欧美午夜视频在线观看| 亚洲一区二区精品在线观看| 午夜欧美精品| 国产一区二区三区久久悠悠色av| 久久丁香综合五月国产三级网站| 久久艳片www.17c.com| 在线免费观看视频一区| 亚洲精品在线二区| 欧美日精品一区视频| 亚洲一区二区三区中文字幕| 欧美一区二区三区的| 国产一区清纯| 亚洲国产色一区| 欧美精品一级| 亚洲视频免费| 久久精品国产77777蜜臀| 一区二区三区在线观看视频| 日韩视频免费观看高清完整版| 欧美日韩视频在线第一区| 亚洲视频一区二区免费在线观看| 西瓜成人精品人成网站| 国内精品国产成人| 亚洲美女网站| 国产精品老女人精品视频| 欧美一级视频一区二区| 欧美77777| 亚洲视频精选在线| 久久精品主播| 亚洲激情网址| 欧美一级专区| 亚洲二区精品| 亚洲制服av| 伊人成人在线| 亚洲一级在线| 国产夜色精品一区二区av| 亚洲日本激情| 国产精品久久久久久久久久久久久久| 欧美一区二区三区在线视频| 欧美激情视频给我| 亚洲欧美www| 欧美高清影院| 亚洲欧美日韩综合| 欧美电影打屁股sp| 亚洲资源在线观看| 欧美肥婆在线| 欧美一级理论片| 欧美日韩精品一本二本三本| 亚洲欧美综合一区| 欧美国产一区视频在线观看| 亚洲影院色无极综合| 欧美顶级艳妇交换群宴| 亚洲欧美在线高清| 欧美日本韩国一区二区三区| 亚洲一区影音先锋| 欧美激情精品久久久六区热门| 亚洲欧美另类在线观看| 欧美片第一页| 久久国产黑丝| 国产精品视区| 夜夜爽www精品| 在线观看精品| 欧美在线999| 一本色道久久88综合亚洲精品ⅰ| 久久免费精品日本久久中文字幕| 亚洲美女视频网| 欧美成人精品福利| 欧美在线播放一区| 国产精品久久久久久av福利软件| 亚洲精品影院| 黑人极品videos精品欧美裸| 午夜免费电影一区在线观看| 99视频精品免费观看| 欧美国产精品劲爆|