|
Xilinx FPGA入門連載32:超聲波測距終極結(jié)果顯示之設(shè)計說明 特權(quán)同學(xué),版權(quán)所有 配套例程和更多資料下載鏈接: http://pan.baidu.com/s/1jGjAhEm
如圖所示,相比于上一個實例,本實例將“距離公式計算 & 進(jìn)制換算”功能模塊增加到了工程中。
所謂距離公式計算,主要是將超聲波測距采集到的ECHO脈沖高電平脈寬值(時間),對應(yīng)的換算為實際的距離值(距離)。 所謂進(jìn)制換算,則是將存儲在電腦中的16進(jìn)制數(shù)據(jù),通過除法求余計算,以我們比較習(xí)慣的10進(jìn)制方式顯示到數(shù)碼管上。 25°C時,聲音在空氣中傳播的速度為346m/s。因此取距離s的單位是米(m),時間t的單位是秒(s),有 s = 346*t/2。 若取距離s的單位是毫米(mm),時間t的單位是10微秒(10us),有s*0.001 =346*t*0.00001/2,即s = 1.73*t。 為了便于計算,取s = ((1.73*256)*t)/256 = (443*t)/256 在FPGA內(nèi)部的實現(xiàn)上,也非常簡單。如圖所示,例化一個乘法器IP核,它的兩個輸入分別為443和脈寬計數(shù)值,乘法器輸出結(jié)果右移8位就是我們的最終運算結(jié)果了。
由于我們的超聲波測距模塊最大量程為4m,精度為2mm,所以我們以mm為單位在數(shù)碼管上顯示超聲波測距模塊計算的距離。那么4位數(shù)就足夠了。因此我們把前面距離計算公式計算好的結(jié)果,通過“除法求余”的方法就可以分別得到4個需要顯示在數(shù)碼管上的數(shù)據(jù)。 如圖所示,只需要3次除法運算就可以分別得到數(shù)碼管上顯示的千位、百位、十位和個位數(shù)據(jù)。
連接好下載線,給SP6開發(fā)板供電。 打開ISE,進(jìn)入iMPACT下載界面,將本實例工程下的sp6.bit文件燒錄到FPGA中在線運行。 此時我們在超聲波測距模塊前面擺放平整的障礙物,可以看到數(shù)碼管上的數(shù)據(jù)會發(fā)生變化。這里顯示的數(shù)據(jù),是以mm為單位,實際換算好的距離信息。大家可以很直觀的獲得當(dāng)前障礙物和超聲波測距模塊之間的距離。 |