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