程式碼下載
ADC AD7476A Pmod 控制器(頂層檔案):pmod_adc_ad7476a.vhd (6.0 KB)
具有雙 MISO 的 SPI 主控(必須包含在專案中):spi_master_dual_miso.vhd (9.5 KB)
特點
- Digilent PmodAD1(適用於 Analog Devices AD7476A 類比數位轉換器的 Pmod)精簡介面的 VHDL 原始碼
- 透過兩個平行介面持續輸出來自兩個 ADC 通道的最新數據
- 處理串列通訊以及從 ADC Pmod 檢索所有數據
- 可設定系統時脈頻率
介紹
本文詳細介紹了一個 VHDL 元件,用於處理與 Digilent ADC AD7476A Pmod 的接口,如圖 1 所示。圖 2 展示了該 ADC Pmod 控制器整合到系統中的典型範例。如圖所示,ADC Pmod 控制器連接到 Pmod 連接埠並執行傳輸,以保護來自 Pmod 兩個 ADC 通道的 ADC 資料。然後,資料呈現在兩個簡單的平行介面上,這兩個介面可以連接到使用者邏輯或 FPGA 的輸出埠。
圖 1. Digilent ADC AD7476A Pmod
圖 2. 範例實現
背景
ADC AD7476A Pmod 中包含兩個 ADI 的 AD7476A 12-bit 類比數位轉換器(ADC),以高達 1 MSPS 的速度同時進行 A/D 轉換。這兩組 ADC 連接在此 Pmod 上,共享晶片選擇單元和序列時脈訊號。正確應用這些訊號可以啟動轉換並控制來自 Pmod 的序列數據流。
工作原理
ADC Pmod 控制器使用邏輯主頁上提供的 SPI 主控元件的修改版本,持續啟動讀取並從 ADC Pmod 擷取結果資料。完成後,接收到的資料將透過 adc_0_data 和 adc_1_data 連接埠提供。然後,控制器等待 50ns 並重新啟動讀取程序(ADC 轉換之間需要 50ns 的靜默時間)。這使得用戶無需輸入即可獲得持續更新的 ADC 資料。
SPI 主控制器配置為 CPOL = 1 和 CPHA = 1,以滿足 AD7476A 轉換器的要求。此 SPI 主控制器組件經過修改,新增了第二個 MISO 通道,可作為第一個通道的直接副本運作。
公式 1 定義了輸出資料更新的頻率。此頻率受使用者在 clk 輸入連接埠提供的系統時脈頻率以及指派給 spi_clk_div GENERIC 的值的影響。(有關如何正確分配 spi_clk_div 的詳細信息,請參閱以下「配置時脈」部分)。所有頻率均以 MHz 為單位。
ADC Pmod 控制器設定為在給定系統時脈下提供最快的更新速率,同時將串列時脈速率保持在 AD7476A 規格書定義的 20MHz 上限範圍內。當系統時脈為 40MHz 的整數倍時,可達到最快的更新速率。
配置時脈
此 ADC Pmod 控制器的時脈透過 ENTITY 中定義的 GENERIC spi_clk_div 賦值來配置。公式 2 定義如何計算該值。
其中 fclk 是提供的系統時脈頻率(以 MHz 為單位)。系統時脈由 clk 輸入埠提供。
例如,程式碼中指定的預設值為 spi_clk_div = 3。之所以得出這個數值,是因為在撰寫本文時,最常見的 Digilent 開發套件 Basys3 的系統時脈為 100MHz。 100/40 = 2.5,向上取整為 3。
公式 3 定義了最終的串列時脈頻率 fsclk。
此計算使串列時脈保持在 ADC 的最大指定通訊頻率 20MHz 或接近該頻率,從而提供給定系統時脈下可用的最大 ADC 資料更新頻率。當輸入時脈頻率(以 MHz 為單位)為 40 的整數倍時,此參數會得到最佳化。
連接埠描述
表 1 描述了 ADC Pmod 控制器的連接埠。
表 1. 連接埠描述
連接
此 Pmod 有一個 6 針連接器 J1。表 2 提供了此連接器的引腳排列。ADC Pmod 控制器的連接埠需要指派給連接到此連接器的 FPGA 引腳,具體如下表所示。
表 2. ADC Pmod 腳位排列及與 ADC Pmod 控制器的連接
重置
reset_n 輸入連接埠必須為邏輯高電平,ADC Pmod 控制器元件才能運作。此連接埠上的邏輯低電平會非同步重置元件。在重置期間,元件會中止目前與 ADC Pmod 的傳輸,並清除 adc_0_data 和 adc_1_data 輸出。重置解除後,ADC Pmod 控制器將恢復工作。
結論
此 ADC Pmod 控制器是可編程邏輯元件,可與 Digilent 的 ADC AD7476A Pmod 介接。它處理與此 ADC Pmod 的所有通訊,從而透過兩個相應的平行輸出,從兩個 ADC 通道提供持續的更新數據流。