1. 程式人生 > >FPGA通過SPI對ADC配置簡介(三)-------3線SPI配置時序分析

FPGA通過SPI對ADC配置簡介(三)-------3線SPI配置時序分析

上篇以德州儀器(TI)的高速ADC晶片——ads52j90為例,介紹完了4線SPI配置時序。本篇將以Analog Device(ADI)的多通道高速ADC晶片AD9249為例,介紹3線SPI讀寫配置時序。另外,大家如果想詳細瞭解Analog Device(ADI)公司的關於SPI的所有內容,推薦大家在其官網閱讀AN-877。

                                                

AD9249的SPI控制模組包含4根訊號線,即CSB1、CSB2、SDIO以及SCLK。但CSB1、CSB2可以一起由CSB來控制,實際上就是3線SPI。由於3線SPI資料的讀、寫操作在同一根訊號線SDIO上實現,因此其配置方式與4線的配置稍微有些不一樣。下面我們將詳細介紹讀寫操作:

 CSB:SPI控制讀寫使能訊號;

 SDIO:SPI的資料、地址讀寫埠;

SCLK:FPGA提供給ADC的SPI介面時鐘;

如下圖1所示為該ADC的SPI讀、寫配置時序圖。其中CSB和SCLK的操作和上篇介紹的4線SPI配置相同,圖上的時序引數在其datasheet上也有明確的說明,這裡就不介紹了。3線SPI與4線SPI配置的主要不同之處在傳輸的資料格式以及I/O轉換上。3線的讀寫資料格式由控制命令+地址+資料組成,而上篇提到的4線配置只有地址+資料。其中R/~W為高電平時,表示讀操作,低電平表示寫操作。W1,W0表示要讀寫的資料位元組數,一般都設為0,代表每次讀寫一個暫存器地址的資料。A12~A0表示13bit的暫存器地址。D7~D0表示要讀寫的8bit暫存器資料。

圖1:SPI讀、寫時序圖

因此我們在SPI寫操作時,只需寫入1bit 1 + 2bit 0 +13bit地址+ 8bit資料 即可。其配置的方法和上篇的4線SPI寫操作相同。但當我們在執行SPI讀操作時,就需要注意了。首需寫入1bit 0 + 2bit 0 +13bit 地址,當最後1bit的地址A0SCLK的上升沿寫入SDIO後,SDIO會由輸入口變為輸出口,然後在接下來的8個SCLK下降沿,SDIO會輸出暫存器的8bit資料。因此,在ADC的SDIO由輸入變為輸出口時,FPGA端的SDIO必須同步由輸出口變為輸入口,並在SCLK上升沿接收這8bit資料最穩定,FPGA埠的這種I/O轉換可以通過其內建的三態門來實現。

如圖2所示為SDIO由輸入口變為輸出口的時序控制圖,tEN_SDIO為轉換時間,其最小時間為10ns,參考零點為SCLK下降沿。

                    

圖2:SDIO輸入轉換為輸出的時序圖

如圖3所示為SDIO由輸出口變為輸入口的時序控制圖,tDIS_SDIO為轉換時間,其最小時間也為10ns,參考零點為SCLK上升沿。

                       

圖3:SDIO輸出轉換為輸入的時序圖

3線SPI的讀寫時序分析就介紹到這裡了,同樣強調幾個關鍵點:

關鍵點1CSB在讀寫操作時,必須拉低。讀寫完成之後,必須拉高。

關鍵點2SDIO作為輸入口時,資料每次必須在SCLK的上升沿寫入SPI。

關鍵點3SDIO作為輸出口時,暫存器資料每次在SCLK的下降沿輸出SPI,FPGA端在SCLK的上升沿處捕獲資料最穩定。

關鍵點4一定要滿足datasheet給出的SPI的時序引數,並在程式碼實現時要留有適當的時序裕量。

關鍵點5注意FPGA端的SDIO口的三態控制邏輯,以便正確讀寫ADC暫存器。

本篇以Analog Device(ADI)的多通道高速ADC晶片AD9249為例,簡要介紹了ADC的3線SPI配置時序,希望我們能一起學習、一起進步!下篇將具體介紹如何用verilog實現FPGA通過SPI對ADC進行配置。

如有問題,請掃碼關注或者微信搜尋小青菜哥哥的那些事”聯絡本人!