# 加速計 ADXL345 Pmod 控制器（VHDL）

**URL:** <https://forum.digikey.com/t/adxl345-pmod-vhdl/58936>\
**Category:** 產品技術提示\
**Tags:** analog-devices-inc, digilent-inc, tech-tips\
**Created:** [August 18, 2025, 1:29am UTC](https://forum.digikey.com/t/adxl345-pmod-vhdl/58936 "2025-08-18T01:29:42Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![Kevin\_6462](https://sea2.discourse-cdn.com/digikey/user_avatar/forum.digikey.com/kevin_6462/32/8856_2.png) [@Kevin\_6462](https://forum.digikey.com/u/Kevin_6462)\
**Post date:** [August 18, 2025, 1:29am UTC](https://forum.digikey.com/t/adxl345-pmod-vhdl/58936/1 "2025-08-18T01:29:42Z")

</div>

[邏輯主頁](https://forum.digikey.com/t/topic/47590)

# 程式碼下載

**加速計Pmod 控制器（頂層檔案）：**

版本 1.1：[pmod\_accelerometer\_adxl345.vhd](https://forum.digikey.com/uploads/short-url/2HatqK2AIgqceAJmR3kCRb1i5hB.vhd) (14.2 KB)  
修復重置後可能出現的間歇性問題

版本 1.0：[pmod\_accelerometer\_adxl345\_v1\_0.vhd](https://forum.digikey.com/uploads/short-url/nQUE3nRSnucnvDjsAnDakE54837.vhd) (14.0 KB)  
首次公開發布

**SPI 主控（也必須包含在項目中）：**

[spi\_master.vhd](https://forum.digikey.com/uploads/short-url/tYoYkuAGflmFLeGEKOxcxkKFYeg.vhd) (8.8 KB)

# 特點

- [Digilent PmodACL](https://www.digikey.tw/zh/products/detail/digilent-inc/410-097/3902808)（適用於 [ADI](https://www.digikey.tw/zh/supplier-centers/analog-devices) 的 [ADXL345](https://www.digikey.tw/zh/products/base-product/analog-devices-inc/505/ADXL345/117031) 加速計的 Pmod）精簡介面的 VHDL 原始碼
- 透過 3 條平行匯流排持續輸出最新的 3 軸加速度數據
- 處理 SPI 通訊以配置和檢索加速計 Pmod 的數據
- 可配置加速計資料範圍
- 可配置加速計資料速率
- 可設定系統時脈頻率

# 介紹

本文詳細介紹了一個 VHDL 組件，用於處理與 Digilent 加速計 ADXL345 Pmod 的接口，如圖 1 所示。圖 2 展示了此加速計 Pmod 控制器整合到系統中的典型範例。如圖所示，加速計 Pmod 控制器連接到 Pmod 連接埠並執行傳輸以配置加速計並收集資料。資料會持續更新並顯示在 3 條簡單的平行匯流排上（分別對應 3 個軸），這些匯流排可以連接到使用者邏輯或 FPGA 上的輸出埠。

 ![image](https://global.discourse-cdn.com/digikey/original/3X/4/e/4e33c8c2cbe432b061123c6960ddb4eb1ce52769.jpeg)

**圖 1**. Digilent 加速計 ADXL345 Pmod

 ![image](https://global.discourse-cdn.com/digikey/original/3X/7/4/74614e47ef92e937a755dd094b51857f3023e144.jpeg)

**圖 2**. 範例實現

# 工作原理

加速計 Pmod 控制器主要由一個狀態機和一個 SPI 主控組件組成。

## 狀態機

此設計使用圖 3 所示的狀態機來實現其操作。啟動後，元件立即進入 _start_ 狀態，初始化其他狀態中使用的參數。然後進入 _pause_ 狀態。在此狀態下，元件暫停 200ns，以確保滿足 SPI 傳輸之間的最小時間間隔（ADXL345 規格書中指定）。然後，元件選擇執行加速計的 4 個傳輸中的哪一個。前 3 個傳輸由 _configure_ 狀態執行（設定加速計的資料範圍、資料速率，並最終啟用測量）。完成每個傳輸後，元件返回 pause 狀態。所有 3 個設定傳輸完成後，_pause_ 狀態會重複選擇第 4 個傳輸，並進入 _read\_data_ 狀態執行此傳輸。此狀態讀取所有 3 個軸的加速計數據，然後繼續進入 _output\_result_ 狀態。_output\_result_ 狀態將資料寫入 _acceleration\_x_、_acceleration\_y_ 和 _acceleration\_z_ 輸出匯流排，然後返回 _pause_ 狀態。任何時候重置組件都會使其回到 _start_ 狀態。

 ![image](https://global.discourse-cdn.com/digikey/original/3X/c/2/c2a2ead88ee1da704eafeb1585f6f0a8751143ca.png)

**圖 3**. 狀態圖

## SPI 主控

在 _configure_ 和 _read\_data_ 狀態下，狀態機控制 SPI 主控元件與 Pmod 上的加速計通訊。SPI 主控的文件可在[此處](https://forum.digikey.com/t/spi-vhdl/60347)取得。

本設計在 CPOL = 1 和 CPHA = 1 模式下實作 SPI 主控。它根據系統時脈頻率（由 clk\_freq 通用參數指定，見下文）設定 clk\_div 參數，以便以 ADXL345 規格書中指定的最大 SPI 頻率（即 5MHz）與加速計通訊。

本設計也利用 SPI 主控的連續模式功能執行不同長度的傳輸。configure 狀態下的傳輸長度為 16-bit，而 read\_data 狀態下的傳輸長度為 56-bit。

本設計在 CPOL = 1 和 CPHA = 1 模式下實作 SPI 主控。它根據系統時脈頻率（由 _clk\_freq_ 通用參數指定，見下文）設定 _clk\_div_ 參數，以便以 ADXL345 規格書中指定的最大 SPI 頻率（即 5MHz）與加速計通訊。

本設計也利用 SPI 主控的連續模式功能執行不同長度的傳輸。_configure_ 狀態下的傳輸長度為 16-bit，而 _read\_data_ 狀態下的傳輸長度為 56-bit。

# 配置加速計 Pmod 控制器

加速計 Pmod 控制器的配置是透過設定實體中的通用參數來實現的。

## 系統時脈頻率

通用參數 _clk\_freq_ 必須設定為加速計 Pmod 控制器在其 _clk_ 連接埠上提供的系統時脈頻率。

## 數據速率

通用參數 _data\_rate_ 定義了 ADXL362 加速計進行測量的頻率。此參數本身是與所需資料速率相對應的速率程式碼，定義在 ADXL345 規格書的表 7 中。數據速率越高，頻寬和功耗就越高。表 1 描述了相關選項並列出了速率程式碼。預設速率編碼為「0100」，它將加速計的輸出資料速率配置為 1.56Hz。

 ![image](https://global.discourse-cdn.com/digikey/original/3X/7/2/72d4f58267b82f8882dcdf4671e900c2b036f9b7.jpeg)

**表 1**. 資料速率選項

## 數據範圍

通用參數 _data\_range_ 定義了加速計測量的加速度值範圍。此參數本身由用於配置加速計資料格式暫存器的位元組成，這些位元定義在 ADXL345 規格書的表 21 中。增加範圍也會提高輸出分辨率，以維持 4mg/LSB 的比例因子。表 2 描述了這些選項並列出了參數設定。預設為「00」，將加速度計的輸出資料範圍配置為 ±2g。

 ![image](https://global.discourse-cdn.com/digikey/original/3X/d/f/df5a7584a0b0bb5ab0d7ef74323400cb7416582a.png)

**表 2**. 資料範圍選項

# 連接埠描述

表 3 描述了加速計 Pmod 控制器的連接埠。

 ![image](https://global.discourse-cdn.com/digikey/original/3X/8/c/8c7a1265ca844ab9fd83999a40f5edd31c4149de.jpeg)

**表 3**. 連接埠描述

# 連接

此 Pmod 有一個 12 針連接器。表 4 提供了此連接器的引腳排列。加速計 Pmod 控制器的連接埠需要分配給連接到此連接器的 FPGA 引腳，具體如下表所示。

 ![image](https://global.discourse-cdn.com/digikey/original/3X/6/3/6343ef14a32f33f0cf21160b25ffb2ecda8a6f89.jpeg)

**表 4**. 加速計 Pmod 引腳排列及與加速計 Pmod 控制器的連接

# 重置

_reset\_n_ 輸入連接埠必須為邏輯高電平，加速計 Pmod 控制器元件才能運作。此連接埠上的邏輯低電平會非同步重置元件。在重置期間，元件會中止目前與 Pmod 的傳輸，並清除 _acceleration\_x_、_acceleration\_y_ 和 _acceleration\_z_ 資料輸出。重置解除後，加速度 Pmod 控制器將重新啟動工作。它會重新配置加速計，然後恢復加速度資料的採集和輸出。

# 結論

此加速計 Pmod 控制器是可編程邏輯元件，可與 Digilent 的 PmodACL（加速計 ADXL345 Pmod）進行介接。它負責處理與 Pmod 的所有通訊，以配置 Pmod 加速計的數據範圍和數據速率、激活測量，並在 3 條平行輸出總線（每個軸一條）上提供持續更新的加速度數據流。

# 附加資訊

ADI ADXL345 規格書 [ADXL345.pdf](https://forum.digikey.com/uploads/short-url/lIOWou8XdtLgzjxOLnxUEW2Lp2K.pdf) (839.9 KB)

# 相關主題

[SPI 主控（VHDL）](https://forum.digikey.com/t/spi-vhdl/60347)
