程式碼下載
版本 1.1:pmod_ultrasonic_range_finder.vhd (3.6 KB)
消除了一些綜合警告,與 v1.0 功能上沒有差異
版本 1.0:pmod_ultrasonic_range_finder_v1_0.vhd (3.2 KB)
首次公開發布
特點
- Digilent 超音波測距儀(MAXSONAR)Pmod 精簡介面的 VHDL 原始碼
- 透過平行介面持續輸出最新距離數據
- 處理 MAXSONAR Pmod 的所有數據檢索
- 將接收到的數據轉換為英吋
- 可設定的系統時脈頻率
介紹
本文詳細介紹了一個 VHDL 組件,負責將 FPGA 連接到 Digilent 的超音波測距儀 (URF)Pmod,如圖 1 所示。圖 2 展示了此 URF Pmod 介面元件整合到系統中的典型範例。如圖所示,URF Pmod 介面連接到 Pmod 的脈衝寬度 (PW)連接埠以收集距離資訊。它計算距離(以英吋為單位),然後將其顯示在一個簡單的平行介面上,該介面可以連接到使用者邏輯或 FPGA 的輸出連接埠。
圖 1. Digilent 超音波測距儀 Pmod
圖 2. 範例實現
背景
超音波測距儀 Pmod 使用 Maxbotix 超音波感測器 MB1010 LV-MAXSONAR-EZ1 進行測距。此感測器有 3 個輸出,每個輸出都傳遞相同的距離資訊:類比電壓、脈衝寬度和 UART。本 FPGA 介面設計使用脈衝寬度,因為它所需的 FPGA 資源最少。脈衝寬度輸出是一個可變寬度脈衝,其持續時間與偵測到的物體的距離相對應。
工作原理
URF Pmod 啟動延遲 350ms 後,每 49ms 在其脈衝寬度(PW)輸出端發送一個脈衝。此脈衝的寬度(持續時間)範圍為 0.88ms ≤ PW ≤ 37.5ms。每 147us 代表距離被測物體 1 吋。
URF Pmod 介面邏輯使用兩個計數器來計算距離。當 PW 訊號置位時,第一個計數器會計數系統時脈脈衝,直到達到相當於 147us 的值。此時,第一個計數器清除,第二個計數器遞增以記錄該英吋。此過程重複進行,直到 PW 訊號置位。
PW 訊號置位後,第二個計數器的值(即總英吋數)將轉換為標準邏輯向量,並以二進位數的形式輸出到距離連接埠。兩個計數器均清除,以準備下一次測量。
配置時脈
透過為 ENTITY 中定義的通用 clk_freq 分配一個值來配置此 URF Pmod 介面的時脈。此通用時脈必須設定為提供的系統時脈頻率(以 MHz 為單位)。
連接埠描述
表 1 描述了 URF Pmod 介面的連接埠。
表 1. 連接埠描述
連接
此 Pmod 有一個 6 針連接器。表 2 提供了此連接器的引腳排列。URF Pmod 介面代碼的連接埠需要分配給連接到此連接器的 FPGA 引腳,具體如下表所示。
表 2. URF Pmod引腳排列及與 FPGA URF Pmod 介面組件的連接
重置
reset_n 輸入連接埠必須為邏輯高電平,URF Pmod 介面才能正常運作。此連接埠上的邏輯低電平會非同步重置元件。重置期間,組件會中止目前讀數並忽略 URF Pmod 輸入。重置也會清除距離輸出及其內部邏輯。重置解除後,URF Pmod 介面將恢復工作。
結論
此 URF Pmod 介面是一個可程式邏輯組件,可與 Digilent 的超音波測距儀 Pmod 介接。它負責處理與 URF Pmod 的所有通訊,並在平行輸出上提供持續更新的距離數據流。