羅盤 Pmod 控制器 (VHDL)

邏輯主頁

程式碼下載

Compass Pmod 控制器(頂層檔案):pmod_compass.vhd (13.7 KB)

I2C 主控(必須包含在專案中):i2c_master.vhd (14.1 KB)

特點

  • Digilent Pmod CMPS2(用於 MemsicMMC34160PJ 磁力計的 Pmod)精簡介面的 VHDL 原始碼
  • 透過 3 個平行介面(每個軸一個)持續輸出最新磁場數據
  • 處理 I2C 通訊以及從羅盤 Pmod 檢索所有數據
  • 處理磁感測器分辨率和測量頻率的配置
  • 使用者可選分辨率和測量頻率
  • 可設定系統時脈頻率

介紹

本文詳細介紹了一個 VHDL 組件,用於將 FPGA 連接到 Digilent 的三軸數位羅盤 Pmod,如圖 1 所示。圖 2 展示了此羅盤 Pmod 控制器整合到系統中的典型範例。如圖所示,羅盤 Pmod 控制器連接到 Pmod 連接埠並執行傳輸以配置 Pmod 並收集資料。資料會持續更新,並顯示在 3 個簡單的平行介面上,分別對應 x 軸、y 軸和 z 軸的磁場資料值。

圖 1. Digilent 三軸數位羅盤 Pmod

圖 2. 範例實現

工作原理

Compass Pmod 控制器主要由一個狀態機和一個 I2C 主控組件組成。

狀態機

此設計使用圖 3 所示的狀態機來實現其操作。組件啟動後立即進入 start 狀態。它會在該狀態保持 10ms,以確保 Pmod 有足夠的時間完成上電。然後,它會進入 configure 狀態,在此狀態下設定磁力計輸出的分辨率,將磁力計設於連續測量模式,並設定這些連續測量的頻率。pause 狀態會達到與測量頻率週期相同的暫停。在接下來的 read_data 狀態中,控制器會從 Pmod 收集最新的磁場資料。最後,它會在 output_result 狀態中輸出資料。然後,它會在 pauseread_dataoutput_result 狀態之間不斷循環,以保持磁場資料的更新。雖然狀態圖中未顯示,但隨時重置組件都會使其返回 start 狀態。

圖 3. 狀態圖

I2C 主控

configureread_data 狀態下,狀態機控制 I2C 主控元件與 Pmod 上的 MMC34160PJ 磁力計進行通訊。I2C 主控的文件可在此處取得。

配置羅盤 Pmod 控制器

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

系統時脈頻率

通用參數 sys_clk_freq 必須設定為羅盤 Pmod 控制器在其 clk 連接埠上提供的系統時脈頻率。

解析度

通用參數 resolution 用於設定磁場測量的分辨率。此參數也用於設定 xyz 資料輸出的寬度。有效選項為 12、14 和 16-bit。預設值為 16-bit。將 resolution 設為任何無效值也會導致解析度為 16-bit。

更新頻率

通用參數 update_freq 用於設定測量頻率以及 xyz 資料輸出更新的頻率。這些參數值對應於磁力計控制暫存器設定測量頻率所需的位元。表 1 列出了有效的參數設定和對應的更新頻率。預設為「11」(50 Hz)。

表 1. 更新頻率設定

連接埠描述

表 2 描述了羅盤 Pmod 控制器的連接埠。

表 2. 連接埠描述

連接

此 Pmod 有一個 6 針連接器。表 3 提供了此連接器的引腳排列。羅盤 Pmod 控制器的連接埠需要指派給連接到此連接器的 FPGA 引腳,具體如下表所示。

表 3. 羅盤 Pmod 引腳排列及與羅盤 Pmod 控制器的連接

Pmod 還配有兩條跳線。必須啟用(即連接)這些跳線才能連接 SCL 和 SDA 所需的 I2C 上拉電阻。

重置

reset_n 輸入連接埠必須為邏輯高電平,Compass Pmod 控制器元件才能運作。此連接埠上的邏輯低電平會非同步重置元件。在重置期間,元件會中止目前與 Pmod 的傳輸,並清除 xyz 資料輸出以及 i2c_ack_err 輸出。重置解除後,羅盤 Pmod 控制器將重新啟動運作。它會重新配置 Pmod,並恢復磁場資料的收集和輸出。

結論

羅盤 Pmod 控制器是一個可編程邏輯組件,可與 Digilent 的 Pmod CMPS2(三軸數位羅盤 Pmod)介接。它處理與 Pmod 的所有通訊,以配置 Pmod 的磁力計,並在平行輸出上提供持續更新的磁場資料流。

相關主題

I2C 主控(VHDL)