勇敢的芯伴你玩轉Altera FPGA連載91:基于數碼管顯示的超聲波測距回響脈寬計數 特權同學(xué),版權所有 配套例程和更多資料下載鏈接: http://pan.baidu.com/s/1i5LMUUD ![]() 本實(shí)例是8.7節“數碼管驅動(dòng)實(shí)例”和9.1節“基于SignalTapII的超聲波測距調試”兩個(gè)實(shí)例代碼的集成整合,將超聲波測距的回響脈沖以時(shí)鐘周期計數值的形式顯示到數碼管上。 如圖10.1所示,本實(shí)例同樣是以10us計數器產(chǎn)生的10us脈沖TRIG給超聲波測距模塊,然后以10us為單位計算超聲波測距模塊返回的回響信號ECHO的高電平保持時(shí)間。采集到的ECHO高電平脈沖保持周期(以10us為單位)將以16進(jìn)制方式顯示到數碼管上。 ![]() 圖10.1 超聲波測距顯示實(shí)例功能框圖 如圖10.2所示,本實(shí)例一共5個(gè)模塊,頂層模塊cy4.v主要對各個(gè)子模塊進(jìn)行例化和連接;pll_controller.v模塊是IP核,例化PLL,產(chǎn)生FPGA內部需要的時(shí)鐘信號;clkdiv_generation.v模塊產(chǎn)生10us的基準時(shí)鐘使能信號;ultrasound_controller.v模塊對超聲波測距模塊的回響信號進(jìn)行高脈沖時(shí)間計數;seg7.v模塊驅動(dòng)數碼管顯示。 ![]() 圖10.2 超聲波測距顯示實(shí)例模塊層次 連接好下載線(xiàn),給CY4開(kāi)發(fā)板供電。 打開(kāi)Quartus II,進(jìn)入下載界面,將本實(shí)例工程下的cy4.sof文件燒錄到FPGA中在線(xiàn)運行。 此時(shí)我們在超聲波測距模塊前面擺放平整的障礙物,可以看到數碼管上的16進(jìn)制數據會(huì )發(fā)生變化;疽幝墒牵赫系K物距離超聲波測距模塊近,則數碼管的數值較;障礙物距離超聲波測距模塊遠,則數碼管的數值較大。 大家可以通過(guò)如下的公式計算當前數碼管顯示數據和實(shí)際超聲波測距模塊與障礙物距離是否一致。當然了,大家也不用著(zhù)急,接下來(lái)幾節我們就著(zhù)手進(jìn)行換算,將16進(jìn)制先轉換為10進(jìn)制,然后把下述的公式結果計算出來(lái)并顯示在數碼管上。 假設超聲波模塊與障礙物間的距離為S(單位:m),ECHO輸出的高脈沖寬度為T(mén)(單位:s),聲速在25°C條件下定義為346(單位:m/s)。那么ECHO脈沖寬度與測試距離的關(guān)系如下。 S = (T*346)/2 |