摘 要:提出了一種基于FPGA的平面兩點測距的實現(xiàn)方案,在1280*1024分辨率下實現(xiàn)平面上兩點的精確測距。方案中利用FPGA對視頻信號進行處理,在FPGA內(nèi)實現(xiàn)了目標定位,測量計算等主要功能,大大簡化了硬件電路,并且較之傳統(tǒng)方案具有明顯優(yōu)越的可擴展性。
關(guān)鍵詞:兩點測距;現(xiàn)場可編程門陣列;視頻信號
中圖分類號:TM文獻標識碼:A文章編號:1672-3198(2008)08-0366-01
1 系統(tǒng)結(jié)構(gòu)
圖1
本系統(tǒng)(圖1)用FPGA為處理芯片,處理視頻信號,做出兩個十字線,再送出到顯示器上,可以在屏幕中顯示,用這兩個十字線,我們可以定位距離的兩個端點。
另外,我們接入四個按鍵(key_a_hor_move,key_a_ver_move,key_b_hor_move,key_b_ver_move),分別控制十字線A,B的左右,上下移動。還有兩個按鍵(key_init,key_calc)用來初始化和執(zhí)行計算。
2 數(shù)學模型
x1≠x2,y1≠y2
P1P2=(x1-x2)+(y1-y2)2
圖2
本系統(tǒng)的數(shù)學模型(圖2)簡單,實現(xiàn)起來非常的穩(wěn)定,并能達到相當?shù)母叩念l率,滿足在1280*1024的分辨率下的測量。
3 系統(tǒng)實現(xiàn)
圖3
(1)在屏幕(圖3)中顯示兩個小十字線A,B,用來對準要測量的目標的兩個端點。
(2)首先要測出屏幕中兩個像素點的距離代表在屏幕中的物體的實際長度,用來作為基本的單位來計算其他物體的長度,取1M的長度,通過調(diào)整A,B十字線的位置,定位1m長度,由于我們知道A,B十字線的水平坐標,通過計算:A的水平坐標:a_hor_local,B的水平坐標:b_hor_local,兩個像素點之間的距離n=1000/|a_hor_local-b_hor_local|(單位為mm)。
(3)通過按鍵:key_a_hor_move可以調(diào)整A十字線在屏幕中的水平位置,key_a_ver_move可以調(diào)整十字線A在屏幕中的垂直位置。key_b_hor_move可以調(diào)整B十字線在屏幕中的水平位置,key_b_ver_move可以調(diào)整B十字線在屏幕中的垂直位置;通過這四個按鍵,我們就可以定位要測量的距離的兩個端點。
(4)由于我們知道A與B的水平和垂直坐標,我們可以計算出A,B兩點的水平距離和垂直距離。A與B的水平距離:|a_hor_local-b_hor_local|;A與B的垂直距離:|a_ver_local-b_ver_local|。
(5)由勾股定理c2=a2+b2,我們可以用這個公式知道, 兩個點之間的距離的平方等于他們的水平距離的平方
加上垂直距離的平方,構(gòu)成一個直角三角形底邊:bottom=|a_hor_local-b_hor_local|,高邊:high=|a_ver_local-b_ver_local|,我們由兩個端點的聯(lián)線上的像素點的個數(shù)來計算他們的距離,由于之前我們已經(jīng)計算出了兩個相鄰的像素點之間的距離代表實際的長度n,所以我們想要的結(jié)果可以通過這樣的公式得出result*result=bottom*bottom*n*n+high*high*n*n。
(6)在硬件上的實現(xiàn)為:用綜合出的除法器計算n ,用綜合出的乘法器和加法器計算出result*resule,再通過開平方的算法實現(xiàn)開方的運算,最終得到result。
(7)在獲取基本單位n時,我們用一個帶刻度的尺子,水平放置,使其與我們在屏幕中出現(xiàn)的一條水平線水平對齊,這條水平線,是我們做出來用來做水平對齊的。通過調(diào)整兩個小十字線A,B的位置,使他們在一個水平線上,并定位1m距離的兩個刻度的位置。
(8)當我們調(diào)整了A與B的位置,置于直尺的兩個端點后,并且直尺也水平對齊了屏幕中的水平線,這時我們就可以按下按鍵:key_init,就得到n的值(單位為mm),并寄存在寄存器中,后面的計算可以隨時調(diào)用。
(9)當我們初始化了n值后,我們就可以測量其他的物體的長度了。調(diào)整A與B的位置,到達欲測目標的兩個端點,定位好后,我們就可以按下按鍵:key_calc得到結(jié)果result。
4 仿真結(jié)果
初始狀態(tài)A,B水平放置,為1000個像素點的距離,假設AB間的距離為1m,這樣相鄰的兩個像素的距離,代表實際距離為1mm原A的位置為(400,600),B的位置為(1400,600),按下key_init得到n,再按下key_calc得到result等于1000,這個結(jié)果是正確的。經(jīng)過一系列的左右上下的移動后,A的位置變?yōu)椋?400,76),B的位置為(270,900),按下key_calc,得到result等于1398,這個結(jié)果是正確的。
在仿真軟件MODENSIM下,進行功能仿真,系統(tǒng)的每個模塊的功能,系統(tǒng)的各個功能都實現(xiàn)了,設計達到目的。
5 結(jié)論
FPGA是Filed Programmable Gate Array 的縮寫,即現(xiàn)場可編程邏輯陣列。FPGA是在CPLD的基礎上發(fā)展起來的新型高性能可編程邏輯期間,它是一般采用SRAM工藝,也有一些專用器件采用FLASH工藝或反熔絲工藝等。FPGA的集成度很高,其器件密度從數(shù)萬系統(tǒng)門到數(shù)千萬系統(tǒng)門不等,可以完成極其復雜的時序與組合邏輯電路功能,適用于高速,高密度的高端數(shù)字邏輯電路設計領(lǐng)域。FPGA的基本組成部分有可編程輸入/輸出單元,基本可編程邏輯單元,嵌入式塊RAM,豐富的布線資源,底層嵌入功能單元,內(nèi)嵌專用硬核等。
參考文獻
[1]姚琮,張興敢,肖文書.中頻采樣中希爾伯特變換器的FPGA實現(xiàn)[J].電子技術(shù)應用, 2004,(09).
[2]何玉東,劉濤.基于FPGA的離散傅立葉變換[J].安徽電子信息職業(yè)技術(shù)學院學報, 2006,(02).
[3]郭廷廷,李敬,唐昆.多相結(jié)構(gòu)采樣率變換器的FPGA實現(xiàn)[J].電子技術(shù)應用, 2006,(09).
[4]趙嵐,畢衛(wèi)紅,劉豐.基于FPGA的分布式算法FIR濾波器設計[J].電子測量技術(shù), 2007,(07).
[5]于坤林. 基于FPGA控制的DSP數(shù)據(jù)采集和處理系統(tǒng)[J].長沙航空職業(yè)技術(shù)學院學報, 2004,(03).
[6]賴先志. 基于FPGA的簡單CPU設計[J].重慶職業(yè)技術(shù)學院學報, 2005,(01).
[7]韋忠善, 朱海燕. 基于FPGA的精簡指令CPU的實現(xiàn)[J].廣西梧州師范高等專科學校學報, 2005,(01).