程式碼下載
加速計 ADXL362 Pmod 控制器(頂層檔案):
版本 1.1:pmod_accelerometer_adxl362.vhd (14.2 KB)
修正了重置後出現的間歇性問題
版本 1.0:pmod_accelerometer_adxl362_v1_0.vhd (14.1 KB)
首次公開發布
SPI 主控(也必須包含在項目中):
spi_master.vhd (8.8 KB)
特點
- Digilent PmodACL2(適用於 ADI 的 ADXL362 加速計的 Pmod)精簡介面的 VHDL 原始碼
- 透過 3 條平行匯流排持續輸出最新的 3 軸加速度數據
- 處理 SPI 通訊以配置和檢索加速計 Pmod 的數據
- 可配置加速計資料範圍
- 可配置加速計資料速率
- 可設定系統時脈頻率
介紹
本文詳細介紹了一個 VHDL 組件,用於處理與 Digilent 加速計 ADXL362 Pmod 的接口,如圖 1 所示。圖 2 展示了此加速計 Pmod 控制器整合到系統中的典型範例。如圖所示,加速計 Pmod 控制器連接到 Pmod 連接埠並執行傳輸以配置加速計並收集資料。資料會持續更新並顯示在 3 條簡單的平行匯流排上(分別對應 3 個軸),這些匯流排可以連接到使用者邏輯或 FPGA 上的輸出埠。
圖 1. Digilent 加速計 ADXL362 Pmod
圖 2. 範例實現
工作原理
加速計 Pmod 控制器主要由一個狀態機和一個 SPI 主控組成。
狀態機
此設計使用圖 3 所示的狀態機來實現其操作。啟動後,元件立即進入 start 狀態,在此狀態中初始化其他狀態中使用的參數。然後,組件進入pause 狀態。此時,元件在 SPI 傳輸之間暫停 200ns。然後,元件選擇執行與加速計相關的 3 個傳輸中的哪一個。前兩個傳輸由 configure 狀態執行(設定加速計的資料範圍和資料速率,然後啟用測量)。每個傳輸完成後,元件都會傳回 pause 狀態。兩個設定傳輸完成後,pause 狀態會重複選擇第三個傳輸,並進入 read_data 狀態執行該傳輸。此狀態讀取所有 3 個軸的加速計數據,然後進入 output_result 狀態。output_result 將資料寫入acceleration_x 、acceleration_y 和 acceleration_z 輸出匯流排,然後返回 pause 狀態。隨時重置組件都會使其回到 start 狀態。
圖 3. 狀態圖
SPI 主控
在 configure 和 read_data 狀態下,狀態機控制 SPI 主控元件與 Pmod 上的加速計通訊。 SPI 主控的文件可在此處取得。
本設計在 CPOL = 0 和 CPHA = 0 模式下實作 SPI 主控。它根據系統時脈頻率(由 clk_freq 通用參數指定,見下文)設定 clk_div 參數,以便以 ADXL362 規格書中指定的最大 SPI 頻率(即 8MHz)與加速計通訊。
本設計也利用 SPI 主控的連續模式功能執行不同長度的傳輸。configure 狀態下的傳輸長度為 24-bit,而 read_data 狀態下的傳輸長度為 64-bit。
配置加速計 Pmod 控制器
加速計 Pmod 控制器的配置是透過設定實體中的通用參數來實現的。
系統時脈頻率
通用參數 clk_freq 必須設定為加速計 Pmod 控制器在其 clk 連接埠上提供的系統時脈頻率。
數據速率
通用參數 data_rate 定義了 ADXL362 加速計進行測量的頻率。此參數本身是與所需資料速率相對應的速率程式碼,定義在 ADXL362 規格書的表 17 中。數據速率越高,頻寬和功耗就越高。表 1 描述了相關選項並列出了速率代碼。預設速率代碼為「011」,它將加速計的輸出資料速率配置為 100Hz。
表 1. 資料速率選項
數據範圍
通用參數 data_range 定義了加速計測量的加速度值範圍。此參數本身由用於配置加速計資料格式暫存器的位元組成,定義見 ADXL362 規格書的表 17。靈敏度隨範圍變化。表 2 描述了這些選項並列出了參數設定。預設為「00」,將加速計的輸出資料範圍配置為 ±2g。
表 2. 資料範圍選項
連接埠描述
表 3 描述了加速計 Pmod 控制器的連接埠。
表 3. 連接埠描述
連接
此 Pmod 有一個 12 針連接器。表 4 提供了此連接器的引腳排列。加速計 Pmod 控制器的連接埠需要分配給連接到此連接器的 FPGA 引腳,具體如下表所示。
表 4. 加速計 Pmod 引腳排列及與加速計 Pmod 控制器的連接
重置
reset_n 輸入連接埠必須為邏輯高電平,加速計 Pmod 控制器元件才能運作。此連接埠上的邏輯低電平會非同步重置元件。在重置期間,元件會中止目前與 Pmod 的傳輸,並清除 acceleration_x、acceleration_y 和 acceleration_z 資料輸出。重置解除後,加速度 Pmod 控制器將重新啟動工作。它會重新配置加速計,然後恢復加速度資料的採集和輸出。
結論
此加速計 Pmod 控制器是可編程邏輯元件,可與 Digilent 的 PmodACL2(加速計 ADXL362 Pmod)進行介接。它負責處理與 Pmod 的所有通訊,以配置 Pmod 加速計的數據範圍和數據速率、激活測量,並在 3 條平行輸出總線(每個軸一條)上提供持續更新的加速度數據流。
附加資訊
ADI ADXL362 datasheet.pdf (11.1 MB)