程式碼下載
溫度感測器 Pmod 控制器(頂層檔案):pmod_temp_sensor_adt7420.vhd (10.4 KB)
I2C 主控(也必須包含在專案中):i2c_master.vhd (14.1 KB)
特點
- Digilent Pmod TMP2 Rev. B(適用於 ADI 的 ADT7420 溫度感測器的 Pmod)精簡介面的 VHDL 原始碼
- 透過平行介面持續輸出最新溫度數據
- 處理 I2C 通訊以及從溫度感測器 Pmod 檢索所有數據
- 處理溫度感測器解析度的配置
- 可設定系統時脈頻率
介紹
本文詳細介紹了一個 VHDL 組件,用於處理與 Digilent 溫度感測器 ADT7420 Pmod 的接口,如圖 1 所示。圖 2 展示了該溫度感測器 Pmod 控制器整合到系統中的典型範例。如圖所示,此溫度感測器 Pmod 控制器連接到 Pmod 連接埠並執行交易以配置溫度感測器並收集數據。資料會持續更新並顯示在一個簡單的平行介面上,該介面可以連接到使用者邏輯或 FPGA 的輸出連接埠。
圖 1. Digilent 溫度感測器 ADT4720 Pmod
圖 2. 範例實現
背景
ADI 的 ADT7420 是一款高精度數位溫度感測器,設定為 16-bit 時(如本設計所示),解析度可達 0.0078 攝氏度。
工作原理
溫度感測器 Pmod 控制器主要由一個狀態機和一個 I2C 主控組件組成。
狀態機
此設計使用圖 3 所示的狀態機來實現其操作。啟動後,組件立即進入啟動狀態。它會在該狀態保持 100ms,以確保 Pmod 有足夠的時間完成上電。然後,它會進入設定解析度狀態,將溫度感測器的解析度配置為 16bit。暫停狀態會根據 ADT7420 規格書的要求,在 I2C 交易之間插入 1.3us的「匯流排空閒時間」。在接下來的讀取資料狀態中,它會從 Pmod 的溫度感測器收集最新的溫度資料。最後,它會在輸出結果狀態中輸出溫度資料。然後,它會在暫停、讀取資料和輸出結果狀態之間不斷循環,以保持溫度資料的定期更新。雖然圖中沒有顯示,但任何時候重置元件都會使其回到啟動狀態。
圖 3. 狀態圖
I2C 主控
在 set_resolution 和 read_data 狀態下,狀態機控制 I2C 主控組件與 Pmod 上的溫度感測器進行通訊。 I2C 主控的文件可在此處取得。
配置溫度感測器 Pmod 控制器
透過設定實體中的通用參數來配置溫度感測器 Pmod 控制器。
系統時脈頻率
通用參數 sys_clk_freq 必須設定為溫度感測器 Pmod 控制器在其 clk 連接埠上提供的系統時脈頻率。
Pmod I2C 地址
溫度感測器 Pmod 控制器必須具有 Pmod 的 7-bit I2C 位址才能進行通訊。最高五個有效位元為「10010」,接下來的 2bit 分別由 Pmod 的跳線塊 JP2 和 JP1 設定。跳線斷開時,該位元設定為「1」,跳線閉合時,該位元設定為「0」。
通用參數 temp_sensor_addr 必須設定為此位址。預設值「1001011」對應於兩個跳線均保持斷開狀態(上拉至 VCC)。 (注意:Digilent 的參考手冊中有一個錯誤,錯誤地在該地址中插入了一個額外的「0」。)
I2C 上拉電阻
與大多數 Digilent Pmod 開發板不同,Pmod TMP2 不包含上圖 2 所示的 I2C 上拉電阻。如果沒有這些電阻,I2C 匯流排將無法正常運作。
使用者可以透過在電路中連接 2.2kohm 電阻來解決此問題,如圖所示。
連接埠描述
表 1 列出了溫度感測器 Pmod 控制器的連接埠。
表 1. 連接埠描述
連接
此 Pmod 有一個 8 針連接器。表 2 提供了此連接器的引腳排列。溫度感測器 Pmod 控制器的連接埠需要分配給連接到此連接器的 FPGA 引腳,具體如下表所示。J1 連接器的兩排在 Pmod 板上連接在一起,因此只需將一側連接到 FPGA。
表 2. 溫度感測器 Pmod 接腳排列及與溫度感測器 Pmod 控制器的連接
Pmod 還配有 2 個跳線。JP1 和 JP2 用於設定 Pmod 的 I2C 位址。詳情請參閱上文「Pmod I2C 地址」部分。
重置
reset_n 輸入連接埠必須為邏輯高電平,溫度感測器 Pmod 控制器組件才能運作。此連接埠上的邏輯低電平會非同步重置元件。重置期間,元件會中止目前與 Pmod 的傳輸,並清除溫度資料輸出和 i2c_ack_err 輸出。重置解除後,溫度感測器 Pmod 控制器將重新啟動工作。它會重新配置溫度感測器,並恢復溫度資料的收集和輸出。
結論
這款溫度感測器 ADT7420 Pmod 控制器是一款可程式邏輯元件,可與 Digilent 的 PmodTMP2(溫度感測器 ADT7420 Pmod)介接。它負責處理與該 Pmod 的所有通訊,以配置 Pmod 的溫度感測器,並在平行輸出上提供持續更新的溫度資料流。
附加資訊
ADT7420 datasheet.pdf (5.7 MB)