|
勇敢的芯伴你玩轉Altera FPGA連載93:基于進制換算的超聲波測距結果顯示 特權同學,版權所有 配套例程和更多資料下載鏈接: http://pan.baidu.com/s/1i5LMUUD
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image002.jpg 如圖10.7所示,相比于10.2節的實例,本實例將“距離公式計算 & 進制換算”功能模塊增加到了工程中。 file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image004.jpg
所謂距離公式計算,主要是將超聲波測距采集到的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內部的實現上,也非常簡單。如圖10.8所示,例化一個乘法器IP核,它的兩個輸入分別為443和脈寬計數值,乘法器輸出結果右移8位就是我們的最終運算結果了。 file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image006.jpg
進制換算實現 由于我們的超聲波測距模塊最大量程為4m,精度為2mm,所以我們以mm為單位在數碼管上顯示超聲波測距模塊計算的距離。那么4位數就足夠了。因此我們把前面距離計算公式計算好的結果,通過“除法求余”的方法就可以分別得到4個需要顯示在數碼管上的數據。 如圖10.9所示,只需要3次除法運算就可以分別得到數碼管上顯示的千位、百位、十位和個位數據。 file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image008.jpg
板級調試 連接好下載線,給CY4開發板供電。 打開Quartus II,進入下載界面,將本實例工程下的cy4.sof文件燒錄到FPGA中在線運行。 此時我們在超聲波測距模塊前面擺放平整的障礙物,可以看到數碼管上的數據會發生變化。這里顯示的數據,是以mm為單位,實際換算好的距離信息。大家可以很直觀的獲得當前障礙物和超聲波測距模塊之間的距離。 |