《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 基于FPGA的多路視頻通道控制
基于FPGA的多路視頻通道控制
電子設計工程 曾晶 唐湘成 劉怡
摘要: 視頻監(jiān)控以其直觀,、方便、信息內容豐富而廣泛應用于許多場合,。視頻監(jiān)控成為人們生活中不可缺少的技術,。在一些危險場所,用視頻監(jiān)控代替人工監(jiān)視,,可以保證人們的生命安全,。鑒于一路視頻的視野范圍有限,要充分收集目標的信息,,就需要有多路視頻來對同一個物體在不同方位進行監(jiān)控,。因此需要有一個良好的控制手段,,確保多路視頻控制穩(wěn)定,,可靠。針對織布機告警系統(tǒng)的需求,,提出一種基于FPGA的多路視頻通道控制系統(tǒng),,本系統(tǒng)設計利用FPGA間接控制2塊MAX4312選通所需要的視頻通道,實現(xiàn)各個視頻通道間相互切換。根據(jù)開關控制信號的設計思想在FPGA中對撥動開關輸入信號做去抖動處理,,然后對不同的開關操作進行編碼,,最后將信號送給DSP進行處理。
Abstract:
Key words :

 

 視頻監(jiān)控以其直觀,、方便,、信息內容豐富而廣泛應用于許多場合。視頻監(jiān)控成為人們生活中不可缺少的技術,。在一些危險場所,,用視頻監(jiān)控代替人工監(jiān)視,可以保證人們的生命安全,。鑒于一路視頻的視野范圍有限,,要充分收集目標的信息,就需要有多路視頻來對同一個物體在不同方位進行監(jiān)控,。因此需要有一個良好的控制手段,,確保多路視頻控制穩(wěn)定,可靠,。針對織布機告警系統(tǒng)的需求,,提出一種基于FPGA的多路視頻通道控制系統(tǒng),本系統(tǒng)設計利用FPGA間接控制2塊MAX4312選通所需要的視頻通道,,實現(xiàn)各個視頻通道間相互切換,。根據(jù)開關控制信號的設計思想在FPGA中對撥動開關輸入信號做去抖動處理,然后對不同的開關操作進行編碼,,最后將信號送給DSP進行處理,。
 
  l 系統(tǒng)總體結構
  系統(tǒng)總體結構如圖1所示。在1臺工業(yè)織布機上安裝了16個CCD圖像傳感器對布匹進行圖像監(jiān)控,,通過2片MAX4312選擇16路圖像視頻信號中的一路,,經可編程視頻輸入器件SAA7111處理后從VP0輸出數(shù)字圖像信號。同時SAA7111輸出相應的行,、場同步信號HS,,VS以及與HS鎖定的時鐘信號LLC、LLC2,,利用這些信號在EP3C25F324C8中對圖像進行預處理,。然后將處理后的圖像通過PPI口送給BF561中進行算法處理,最后將處理結果送給報警和狀態(tài)指示裝置,,實現(xiàn)織布機告警功能,。為了使圖像監(jiān)控更方便,該系統(tǒng)設計增添了電平撥動開關和脈沖撥動開關,。電平開關使輸入圖像停止切換,,固定于其中一路視頻輸人圖像,。脈沖開關可以左右撥動,每次向左或向右撥動都會產生一個很短的上升沿脈沖,,同時圖像向前或向后進行切換,,實現(xiàn)手動選擇視頻輸入通道的功能。
 
  2 軟件模塊設計
  2.1 開關控制信號
  實際工程中,,BF56l連接在FPGA上的PF引腳比較少,。為了節(jié)約資源,只通過BF561中的BF9來識別2個撥動開關的動作,。因此首先需要將2個撥動開關輸入信號在FPGA中進行處理整合,,得到合適的信號。
 
  本系統(tǒng)開關控制信號的設計思想:由于設計這個信號的目的是識別開關控制動作,。因此,,只要任何一個開關發(fā)生了動作就需要產生一個脈沖。如果只有脈沖信號就只能知道開關發(fā)生了動作,,而不知道是哪個開關發(fā)生了什么動作,。所以,要識別具體是哪個開關發(fā)生了什么動作就必須配合雙口RAM中的數(shù)據(jù)進行解碼,。該系統(tǒng)設計的脈沖持續(xù)時間對BF561來說并不重要,,只要BF561能識別這個脈沖即可。由于系統(tǒng)中的2個撥動開關,,一個是電平撥動開關,,另一個是脈沖撥動開關,因此,,只要根據(jù)電平撥動開關的動作制作相應的脈沖信號,,再用這個信號與脈沖撥動開關產生的原始信號邏輯相與,就能得到所需要的目的信號,。
 
  由于撥動開關是機械觸點,,當其斷開、閉合時會有相應的前沿,、后沿抖動,,為了使每次動作都只做一次響應,就必須對原始開關信號做去抖動處理,。抖動信號可以分為2種:一種是時間很短的干擾信號,,如高頻毛刺;另一種是時間較長的干擾信號,,如開關抖動,。這里的撥動開關都是人為操作,因此每次觸發(fā)的時間都不會很短,,一般小于10 Hz,。根據(jù)上述分析開關抖動信號屬于后一種,。因此在每次開關操作后,,對其產生的信號進行連續(xù)采樣,,如果每次采樣都是低電平或者都是高電平,就認為此信號不是抖動,,確實開關狀態(tài)發(fā)生了變化,。整個設計過程使用VerilogHDL硬件描述語言編寫,然后在QuartusⅡ平臺上編譯,,并采用SignalTapⅡLogic Arlalvzer對信號采樣分析,,調試通過后連同其他程序一起燒寫進FPGA的配置器件EPCSl6中。圖2~圖4分別是各個開關動作去抖動前和去抖動后的實時信號采樣圖,。去抖動模塊中的部分代碼如下:
  其中,,clk為13.5 MHz頻率的時鐘信號,clk_cnt為采樣時間間隔計數(shù)器,,當clk_cnt為135 000時采樣1次,,即每隔10 ms采樣1次。寄存器shuru_temp存儲前一次開關信號狀態(tài),,shum存儲當前開關信號狀態(tài),。如果shuru_temp的值等于shtlm的值,則計數(shù)器test_cnt自動加l,。如果連續(xù)4次采樣值相等,,即test_cnt=4時去抖動輸出才隨輸入變化。
  用電平撥動開關信號作為輸入,,制作了一個脈沖信號用于識別開關動作,,其代碼如下:
 
 
  代碼中寄存器level_contrl_TEMP存儲level_contrl延時256個時鐘周期后的信號,然后用level_eontrl_TEMP中存儲的信號與level_co-ntrl的值相異或產生所需要的脈沖信號,。
 
  調試中發(fā)現(xiàn),,去抖動后的信號經常混有持續(xù)時間很短的高頻脈沖干擾信號,,因此設計中使用兩級D觸發(fā)器延時來徹底消除高頻脈沖干擾,,其程序代碼如下:
 2.2 雙口RAM及開關信號編碼設計
 
  雙口RAM分為真、假2種雙口,。真雙口2個端口都可以讀寫,,互不干擾。本次設計根據(jù)實際需要,,添加的RAM模塊一端只讀,,另一端只寫,讀寫互不干擾,。根據(jù)上述分析可知,,開關控制信號只能知道有開關控制動作發(fā)生,,但是不能識別具體哪個開關發(fā)生了動作。因此,,設計中首先利用MegaWizardPlug_In Manager中的宏功能塊RAM:2_PORT產生1個雙口RAM存儲塊,,然后對這個宏功能模塊的參數(shù)進行適當調整,產生一個滿足自己特定要求的模塊,,如圖5所示,。
  設計過程中,首先將開關動作進行編碼,。然后將編碼后的數(shù)據(jù)存進空間大小為8的雙口RAM中,。當BF561檢測到PF9上的脈沖后,在PF中斷中讀取RAM中指定地址的數(shù)據(jù),,然后根據(jù)這個數(shù)據(jù)進行開關狀態(tài)解碼并按解碼后的控制信息對2塊MAX4312器件進行操作以控制視頻通道,。對開關動作進行的編碼程序代碼如下:
  整個設計有4種開關動作,程序中分別將其編碼成數(shù)據(jù)0l,、02,、03、04,,然后將編碼后的這4個數(shù)據(jù)存入雙口模塊中,,等待BF561來讀取并進行解碼。圖6是SignalTapⅡLogic Analyzer中對脈沖開關向右撥動后存入RAM中的數(shù)據(jù)進行采樣,。
  程序中RAM的讀信號rden_signal是由DSP發(fā)送的地址信號DSP_A,、BANK選擇信號DSP_AMSl以及DSP讀信號DSP_ARE進行控制的。當DSP不從雙口讀取數(shù)據(jù)時,,必須給DSP的數(shù)據(jù)線賦值高阻,,以免影響SDRAM對DSP數(shù)據(jù)線的操作。賦值指令如下:assignDSP_D=(rden_signal=l 'b1),?DSP_D_TEMP,;8 'hzz;其中DSP_D_TEMP是從雙口中讀取的數(shù)據(jù),。
 
  3 結論
  首先介紹了整個系統(tǒng)的工業(yè)背景和硬件架構,,然后著重闡述了怎樣在FPGA中處理開關控制信號,以達到可靠響應每個開關動作的目的,。整個設計程序是在QuartusⅡ平臺上用Verilog硬件描述語言編寫,,利用QuartusⅡ中的下載工具和SignalTapⅡLogic Analyzer工具進行下載、實時采樣,,并多次調試驗證,。本次設計已經成功應用于布機告警系統(tǒng)中,每次撥動開關都能準確,、可靠的切換視頻通道,。雖然此系統(tǒng)中只有兩種開關,,但是整個程序的設計思想對多種開關控制也是通用的,只需在細節(jié)上稍作改變就能識別多種開關動作,。
此內容為AET網(wǎng)站原創(chuàng),,未經授權禁止轉載。