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