NAV Pmod 控制器 (VHDL)

邏輯主頁

程式碼下載

NAV Pmod 控制器(頂層檔案):pmod_nav.vhd (30.9 KB)

SPI 主控(也必須包含在專案中):spi_master.vhd (8.9 KB)

特點

  • Digilent Pmod NAV 精簡介面的 VHDL 原始碼(Pmod 適用於 STMicroelectronics 的 LSM9DS1 iNEMO 慣性模組和 LPS25HB 壓力感測器)
  • 透過 3 條平行匯流排持續輸出最新的 3 軸加速度計數據
  • 透過 3 條平行匯流排持續輸出最新的 3 軸陀螺儀數據
  • 透過 3 條平行匯流排持續輸出最新的 3 軸磁力計數據
  • 透過平行匯流排持續輸出最新的壓力數據
  • 處理 SPI 通訊以配置和檢索 NAV Pmod 的數據
  • 可配置的加速度計輸出資料速率和滿刻度範圍
  • 可設定的陀螺儀輸出資料速率和滿刻度範圍
  • 可設定的磁力計輸出資料速率和滿刻度範圍
  • 可配置的壓力感測器數據速率
  • 可設定的系統時脈頻率

介紹

本文詳細介紹了一個 VHDL 元件,用於處理與 Digilent 的 10-DOF NAV Pmod 接口,如圖 1 所示。圖 2 展示了此 NAV Pmod 控制器整合到系統中的典型範例。如圖所示,NAV Pmod 控制器連接到 Pmod 連接埠並執行傳輸以配置加速度計、陀螺儀、磁力計和壓力感測器。然後,它會持續收集數據。資料會在簡單的平行匯流排(每個自由度一個)上更新和呈現,這些匯流排可以連接到使用者邏輯或 FPGA 上的輸出埠。

圖 1. Digilent NAV Pmod

圖 2. 範例實現

工作原理

NAV Pmod 控制器主要由狀態機和 SPI 主控組件組成。

狀態機

此設計採用圖 3 所示的狀態機來實現其操作。啟動後,組件立即進入啟動狀態。此狀態會維持 200ms,以確保 Pmod 有足夠的時間完成上電。

然後,它會進入一系列配置狀態,寫入 iNEMO 慣性模組和 MEMS 壓力感測器上的各種控制暫存器,以配置各自的感測器並啟動其運作。configure_accelerometer 狀態用於設定加速度計的滿刻度範圍。configure_magnetometer 狀態將磁力計設定為所有軸的高效能模式和連續轉換模式,並設定其輸出資料速率和滿刻度範圍。configure_gyro 狀態用於配置加速度計和陀螺儀的輸出資料速率(它們必須相同),並設定陀螺儀的滿刻度範圍。configure_pressure 狀態將壓力感測器設定為活動模式並配置其輸出資料速率。

配置完成後,由於任何感測器的最大資料速率都小於 1kHz,因此暫停狀態會在資料讀取之間插入 1ms 的間隔。狀態機依序執行 read_data_accelerometerread_data_magnetometerread_data_gyroread_data_pressure 狀態,從每個感測器收集資料。最後,在 output_result 狀態期間,它會將結果資料輸出到平行輸出總線上,然後再次暫停,直到下一次資料擷取。

雖然圖中沒有顯示,但任何時候重置組件都會使其回到起始狀態。

圖 3. 狀態圖

SPI 主控

在各種 configureread_data 狀態下,狀態機控制 SPI 主控元件與 Pmod 上的感測器通訊。SPI 主控的文件可在此處取得。

本設計在 CPOL = 1 和 CPHA = 1 模式下實作 SPI 主控。它根據系統時脈頻率(由 clk_freq 通用參數指定,見下文)設定 clk_div 參數,以便以 5MHz 或接近 5MHz 的頻率與感測器通訊。

本設計也利用 SPI 主控的連續模式功能來執行不同長度的傳輸。

配置 NAV Pmod 控制器

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

系統時脈頻率

通用參數 clk_freq 必須設定為 NAV Pmod 控制器在其 clk 連接埠上提供的系統時脈頻率(以 MHz 為單位)。

加速度計和陀螺儀資料速率

通用參數 accelerometer_gyro_data_rate 定義了加速度計和陀螺儀進行測量的頻率。由於兩者必須具有相同的數據速率,因此只有一個參數。該參數本身是一個與所需資料速率相對應的代碼。下表 1 列出了可用的選項。預設值為「110」,即 952Hz。

表 1. 加速度計和陀螺儀資料速率選項

加速度計滿刻度

通用參數 accelerometer_full_scale 定義加速度計的資料範圍。這個參數本身是一個與所需範圍對應的編碼。下表 2 列出了可用的選項。預設值為「00」,即 ±2 g。

表 2. 加速度計滿刻度選項

陀螺儀全刻度

通用參數 gyro_full_scale 定義陀螺儀的資料範圍。這個參數本身是一個與所需範圍對應的編碼。下表 3 列出了可用的選項。預設值為「00」,即 245dps。

表 3. 陀螺儀全刻度選項

磁力計數據速率

通用參數 magnetometer_data_rate 定義磁力計測量的頻率。該參數本身是一個與所需資料速率對應的編碼。下表 4 列出了可用的選項。預設值為「111」,即 80Hz。

表 4. 磁力計資料速率選項

磁力計滿刻度

通用參數 magnetometer_full_scale 定義磁力計的資料範圍。這個參數本身是一個與所需範圍對應的編碼。下表 5 列出了可用的選項。預設值為「00」,即 ±4 gauss。

表 5. 磁力計滿刻度選項

絕對壓力數據速率

通用參數 pressure_data_rate 定義壓力感測器測量的頻率。該參數本身是一個與所需資料速率對應的編碼。下表 6 列出了可用的選項。預設值為「100」,即 25Hz。

表 6. 壓力感測器資料速率選項

連接埠描述

表 7 描述了 NAV Pmod 控制器的連接埠。

表 7. 連接埠描述

連接

此 Pmod 有一個 12 針直角連接器 J1。表 8 提供了此連接器的引腳排列。NAV Pmod 控制器的連接埠需要指派給連接到此連接器的 FPGA 引腳,具體如下表所示。

表 8. NAV Pmod J1 引腳排列及與 NAV Pmod 控制器的連接

重置

reset_n 輸入連接埠必須為邏輯高電平,NAV Pmod 控制器元件才能運作。此連接埠上的邏輯低電平會非同步重置元件。重置期間,組件將中止目前與 Pmod 的傳輸,並清除 acceleration_xacceleration_yacceleration_zangular_rate_xangular_rate_yangular_rate_zmagnetic_field_xmagnetic_field_ymagnetic_field_zpressure 數據輸出。重置解除後,NAV Pmod 控制器將重新啟動運作。它會重新配置感測器,然後恢復資料擷取和輸出。

結論

此 NAV Pmod 控制器是一個可編程邏輯元件,可與 Digilent 的 Pmod NAV(10 自由度導航模組)介接。它負責處理與 Pmod 的所有通訊,以配置 Pmod 的所有感測器、激活測量,並在 10 條平行輸出總線(每個自由度對應一條總線)上提供持續更新的數據流。

相關主題

SPI 主控 (VHDL)