程式碼下載
環境光感測器 Pmod 控制器(頂層檔案):ambient_light_sensor.vhd (4.0 KB)
SPI 主控(必須包含在專案中):spi_master.vhd (8.8 KB)
特點
- Digilent 環境光感測器 Pmod (PmodALS) 精簡介面的 VHDL 原始碼
- 透過平行介面持續輸出最新的環境光數據
- 處理 SPI 通訊以及從 ALS Pmod 檢索所有數據
- 可設定的系統時脈頻率
介紹
本文詳細介紹了一個 VHDL 組件,用於處理與 Digilent 環境光感測器 Pmod 的接口,如圖 1 所示。圖 2 展示了此 ALS Pmod 控制器整合到系統中的典型範例。如圖所示,ALS Pmod 控制器連接到 Pmod 連接埠並執行傳輸以保護 ALS 資料。然後,資料呈現在平行介面上,該介面可連接到使用者邏輯或 FPGA 上的輸出連接埠。該組件使用 Vivado 2017.2 設計。資源需求取決於具體實現。
圖 1. Digilent ALS Pmod
圖 2. 範例實現
背景
ALS Pmod 使用 Vishay Semiconductor 的環境光感測器 TEMT6000X01 來測量可見光。TI 的類比數位轉換器 ADC081S021 將感測器的輸出電壓轉換為數位值,並根據請求透過 SPI 介面傳輸該值。
工作原理
ALS Pmod 控制器使用另一文章 SPI 主控元件持續啟動讀取並從 ALS Pmod 檢索結果資料。完成後,接收的資料將透過 als_data 連接埠提供,控制器會立即重新啟動讀取程序。這樣,使用者無需輸入即可獲得持續更新的環境光數據。
SPI 主控制器配置為 CPOL = 1 和 CPHA = 1,以滿足與其通訊的 SPI 從屬控制器(ALS Pmod 的 ADC)的要求。SPI 主控的啟用連接埠設定為高電平,因此此元件會在目前傳輸完成後一個系統時脈週期立即開始新的傳輸。
公式 1 定義了輸出資料更新的頻率。此頻率受使用者在 clk 輸入連接埠提供的系統時脈頻率以及指派給 spi_clk_div GENERIC 的值的影響。(有關如何正確分配 spi_clk_div 的詳細信息,請參閱「配置時脈」部分)。
ASL Pmod 控制器的設定旨在提供一個在已定系統時脈下最快的更新速率,同時將 SPI 時脈速率保持在 4MHz 的指定上限範圍內。當提供的系統時脈為 8 的整數倍時,可達到最快速率約為 242kHz。
配置時脈
此 ALS Pmod 控制器的時脈透過為 ENTITY 中定義的 GENERIC spi_clk_div 賦值來配置。公式 2 定義如何計算該值。
當中 fclk 是提供的系統時脈的頻率,單位為 MHz。系統時脈由 clk 輸入埠提供。
例如,程式碼中指定的預設值是 spi_clk_div = 13。這是因為在撰寫本文時最常見的 Digilent 開發套件 Basys3 的系統時脈為 100MHz。100/8 = 12.5,向上捨入為 13。
公式 3 定義了所得的 SPI 時脈頻率 fsclk。
此計算將 SPI 時脈保持在指定的最大 SPI 通訊頻率 4MHz 或接近該頻率(不超過該頻率),以提供給定系時脈可用的最大 ALS 資料更新頻率。
連接埠描述
表 1 描述了 ALS Pmod 控制器的連接埠。
表 1. 連接埠描述
連接
此 Pmod 有一個 6 針連接器。表 2 列出了此連接器的引腳排列。ALS Pmod 控制器的連接埠需要指派給連接到此連接器的 FPGA 引腳,具體如下表所示。
表 2. ALS Pmod 引腳排列和與 ALS Pmod 控制器的連接
重置
reset_n 輸入連接埠必須為邏輯高電平,ALS Pmod 控制器元件才能運作。此連接埠上的邏輯低電平會非同步重置元件。重置期間,元件會中止目前與 ALS Pmod 的傳輸,並清除 als_data 輸出。重置解除後,ALS Pmod 控制器將恢復工作。
結論
此 ALS Pmod 控制器是一款可編程邏輯元件,可與 Digilent 的環境光感測器 (ALS) Pmod 介接。它負責處理與 ALS Pmod 的所有通訊,並在平行輸出上提供持續更新的環境光資料流。






