部落客的微信公衆号:FPGA動力聯盟
部落客的個人微信:fpga_start
部落格原文連結:FPGA與ADC的SPI配置實戰篇4_ADS52j90四線SPI配置 (qq.com)
前幾篇咱們介紹了ADI公司的ADC和FPGA的三線、四線SPI配置方法,本篇咱們将以TI公司的多通道高速ADC—ADS52J90為執行個體,向大家示範FPGA是如何通過SPI協定向該ADC讀寫寄存器配置資料的。如下圖所示為ADS52J90的功能框圖,其為8/16/32通道、10/12/14bit采樣精度、65/80/100 MSPS的多通道高速ADC,且其SPI接口隻為4線模式:
本篇實作的方式同樣采用的是kintex7系列的FPGA,操作軟體為vivado2017.4。如下圖所示為本人設計過的基于該款ADC的多通道資料采集系統:
TI的該款ADC的SPI寫配置時序圖如下所示:
簡單描述就是SEN為低電平期間,SCLK的上升沿時,SDIN依次串行寫入8bit的位址和16bit的資料,經過24個SCLK周期完成一次SPI寫操作。
其 SPI讀配置時序圖如下所示:
簡單來說,就是在在SEN低電平期間,SCLK上升沿時,SDIN寫入8bit的位址和16bit任意數,共24個SCLK周期完成。而從第9個SCLK上升沿到第24個SCLK上升沿期間,FPGA從SDOUT依次擷取16bit的寄存器資料。
本次的4線配置邏輯的頂層邏輯接口如下圖所示:
本例程實作了76個寄存器的寫操作以實作ADC的正常操作,以及11個寄存器的讀操作來驗證寫操作的正确性,配置個數可以任意改動,隻要改變Wr_n這個寫參數和Rd_n讀參數個數即可,如下圖所示:
如下圖所示為寫操作的邏輯,隻需要兩個狀态即可循環完成76個的寄存器的寫操作:這裡的操作方法和前幾篇所說的完全一樣。
如下圖所示為讀操作的邏輯,同樣隻需要兩個狀态即可,然後一直循環11次:
如下圖所示為讀11個寄存器的時序圖,大家對照datasheet就可以發現,最終咱們讀到的寄存器值與預期值完全一緻,配置成功!
咱們再看看邏輯實作的寫過程的具體時序圖吧,下圖所示為寫某個寄存器的實際時序:
咱們再看讀某一個寄存器的時序圖:
本篇的說明很少,主要是想告訴大家,無論是ADI還是TI公司的adc配置,其實都是一樣的,代碼都相同,隻不過這兩家公司的資料定義格式有差別罷了。TI公司的三線SPI配置其實和前幾篇所說的是一樣的,本人就不再另篇說明了~
至此,咱們最常用的兩家公司ADC的SPI配置就完全的介紹完了,應該來說,對所有需要SPI配置的ADC來說都适合,以後就不再介紹ADC和FPGA的SPI配置了,希望這幾篇能幫到大家~