基于Basys3的數(shù)字測距儀:采用傳感器和FPGA邏輯,提供快速,準(zhǔn)確,實(shí)時的距離測量
你有沒有想過,停車傳感器、障礙物探測機(jī)器人,甚至是自動水龍頭等日常設(shè)備是如何如此準(zhǔn)確地測量距離的?我想探索同樣的想法,但使用FPGA來實(shí)現(xiàn),其中一切都發(fā)生在硬件邏輯層面,而不是依賴于微控制器。這個項(xiàng)目就是這樣開始的。
我使用Basys 3 FPGA開發(fā)板和流行的HC-SR04超聲波傳感器構(gòu)建了一個距離測量系統(tǒng)。目標(biāo)很簡單:觸發(fā)超聲波傳感器,使用FPGA邏輯測量回波時間,并將其實(shí)時轉(zhuǎn)換為可讀距離。
但在FPGA上實(shí)現(xiàn)這一點(diǎn)帶來了有趣的挑戰(zhàn)。與Arduino不同的是,它沒有內(nèi)置延遲函數(shù)或定時器——我們自己設(shè)計定時器硬件。我實(shí)現(xiàn)了:
?脈沖發(fā)生器發(fā)送10 μs的觸發(fā)信號
?使用Basys 3的100兆赫時鐘的回聲計時計數(shù)器
?一個有限狀態(tài)機(jī)(FSM)來控制工作流
?把時鐘周期換算成厘米的距離計算器
?7段顯示驅(qū)動器實(shí)時顯示測量距離
結(jié)果呢?一個完全硬件級的距離測量系統(tǒng),以令人印象深刻的速度和精度輸出物體的距離。最令人滿意的時刻是看著7段顯示隨著物體的移動而瞬間更新。
這個項(xiàng)目讓我明白:
?超聲波傳感器是如何在信號層面工作的,
?如何在Verilog/VHDL中設(shè)計時序電路;
?FSMs如何有效地控制硬件操作,
?以及fpga與微控制器相比提供了多少控制和精度。
在未來的版本中,我計劃添加:
?過濾去噪;
?VGA圖形距離顯示,
?以及一個UART接口,將結(jié)果流式傳輸?shù)絇C機(jī)。
代碼
本文編譯自hackster.io





