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