程式碼下載
溫度感測器 Pmod 控制器(頂層檔案):pmod_temp_sensor_tcn75a.vhd (11.7 KB)
I2C 主控(也必須包含在專案中):i2c_master.vhd (14.1 KB)
特點
- Digilent PmodTMP3(適用於 Microchip 的 TCN75A 溫度感測器的 Pmod)精簡介面的 VHDL 原始碼
- 透過平行介面持續輸出最新溫度數據
- 處理 I2C 通訊以及從溫度感測器 Pmod 檢索所有數據
- 處理溫度感測器解析度的配置
- 可設定系統時脈頻率
介紹
本文詳細介紹了一個 VHDL 組件,用於處理與 Digilent 溫度感測器 TCN75A Pmod 的接口,如圖 1 所示。圖 2 展示了該溫度感測器 Pmod 控制器整合到系統中的典型範例。如圖所示,溫度感測器 Pmod 控制器連接到 Pmod 連接埠並執行交易以配置溫度感測器並收集數據。資料會持續更新並顯示在一個簡單的平行介面上,該介面可以連接到使用者邏輯或 FPGA 的輸出連接埠。
圖 1. Digilent 溫度感測器 TCN75A Pmod
圖 2. 範例實現
工作原理
溫度感測器 Pmod 控制器主要由狀態機和 I2C 主控組件組成。
狀態機
此設計使用圖 3 所示的狀態機來實現其操作。啟動後,組件立即進入start狀態。它會在該狀態保持 100ms,以確保 Pmod 有足夠的時間完成上電。然後,它會進入 set_resolution 狀態,用於配置溫度感測器的解析度。完成後,它會進入 set_reg_pointer 狀態,設定溫度感測器以讀取資料。在接下來的 read_data 狀態中,它會從 Pmod 的溫度感測器收集最新的溫度數據。最後,它會在 output_result 狀態中輸出溫度資料。然後,它會在 read_data 和 output_result 狀態之間不斷循環,以保持溫度資料持續更新。隨時重置組件都會使其返回 start 狀態。
圖 3. 狀態圖
I2C 主控
在 set_resolution、set_reg_pointer 和 read_data 狀態期間,狀態機控制 I2C 主控組件與 Pmod 上的溫度感測器通訊。 I2C 主控的文件可在此處取得。
配置溫度感測器 Pmod 控制器
透過設定實體中的通用參數來配置溫度感測器 Pmod 控制器。
系統時脈頻率
通用參數 sys_clk_freq 必須設定為溫度感測器 Pmod 控制器在其 clk 連接埠上提供的系統時脈頻率。
解析度
通用參數解析度定義了 TCN75A 溫度感測器的配置解析度(以 bit 為單位)。表 1 列出了相關選項及其權衡。預設值為 9bit 解析度。任何無效的解析度設定都將恢復為 9bit。
Pmod I2C 地址
溫度感測器 Pmod 控制器必須具有 Pmod 的 7-bit I2C 位址才能進行通訊。最高 4bit 為「1001」,接下來的 3bit 分別由 Pmod 的跳線塊 JP3、JP2 和 JP1 設定。
通用參數 temp_sensor_addr 必須設定為此位址。預設值「1001000」對應於連接到 GND 的所有 3 個跳線。
連接埠描述
表 2 描述了溫度感測器 Pmod 控制器的連接埠。
連接
此 Pmod 有一個 8 針連接器。表 3 提供了此連接器的引腳排列。溫度感測器 Pmod 控制器的連接埠需要分配給連接到此連接器的 FPGA 引腳,具體如下表所示。 J1 連接器的兩排在 Pmod 板上連接在一起,因此只需將一側連接到 FPGA。
重置
reset_n 輸入連接埠必須為邏輯高電平,溫度感測器 Pmod 控制器組件才能運作。此連接埠上的邏輯低電平會非同步重置元件。重置期間,元件會中止目前與 Pmod 的傳輸,並清除溫度數據輸出和 i2c_ack_err 輸出。重置解除後,溫度感測器 Pmod 控制器將重新啟動工作。它會重新配置溫度感測器,並恢復溫度數據的收集和輸出。
總結
此溫度感測器 Pmod 控制器是一款可程式邏輯元件,可與 Digilent 的 PmodTMP3(溫度感測器 TCN75A Pmod)介面連接。它負責處理與該 Pmod 的所有通訊,以配置 Pmod 的溫度感測器,並在平行輸出上提供持續更新的溫度數據流。
附加資訊
TCN75A.pdf (498.7 KB)