AD9910高速集成DDS芯片(芯片閱讀筆記-串行模式篇-22個寄存器SPI通信週期控制)

引言

本文爲AD9910的芯片閱讀筆記,本文並不是對芯片手冊的純粹照搬,所以建議結合芯片手冊閱讀。通過對AD9910芯片手冊的理解,然後再去配置寄存器,下一篇文章將介紹AD9910的Verilog程序。關於AD9910的Verilog程序,其實一拖再拖,終於在疫情期間寫了大部分,在2020.5.10左右重新看了看芯片手冊,對程序完成了調試。
另外AD9910有幾種模式,本篇文章以串行模式進行配置,經過我閱讀芯片手冊後的理解是,AD9910的串行模式需要通過SPI 三線/四線 模式 配置好33個寄存器,並且值得注意的是這22個寄存器的長度還不一樣。因此,如果要用Verilog來模塊化的化,需要實現考慮好這些問題,怎麼才能使代碼簡化,並且方便以後更改和複用,比如以後如果要用100個寄存器SPI配置,長度還不一樣,怎麼快速將這個代碼搬移過去。或許可以嘗試將寄存器的值寫到ROM中,我這裏是直接在Verilog中寫到寄存器裏面了,如有需要,你可以嘗試更改爲適合你的coding style。

串行編程

AD9910的串行通訊用的是SPI模式,支持三線或者兩線模式,另外,兩個可選的引腳I/O—RESET和CS/ 可以提高採用AD9910的設計系統靈活性。另外,AD9910支持四種運作模式,在本文中僅僅以單頻模式進行介紹,目的是生成一個200MHz的模擬信號即可。 其餘模式也是可以通過串行編程配置,所以,這裏不再介紹。

通用串行IO操作包括兩個階段,第一個階段是指令,第二個階段是數據。在寫入週期結束後,編程數據會駐留在串行端口緩衝器中,處於無效狀態,I/O—UPDATE將串行端口緩衝器中的數據傳輸到有效寄存器中。I/O更新可以在每完成一個通信週期後進行,也可以在所有串行操作結束後進行。

指令字節:
在這裏插入圖片描述
首先還是來看看如果用串行模式配置,需要哪些接口。這樣我們才能知道怎麼寫verilog。

在這裏插入圖片描述
串行模式下重要的引腳描述
SDIO:支持兩線或者三線模式,這裏不做讀的處理,用兩線即可。
SCLK:串行始時鐘,用於同步數據。
I/O reset:輸入/輸出復位。當輸入高電平,可以使當前的通信週期中斷。因此保持低電平即可
CS/ : 低電平有效,高電平時候SDO和SDIO處於高阻抗狀態
OSK:由於根據寄存器配置不做幅度調製,所以OSK保持低電平即可。
Profile:根據8個存儲的參數,選取其中一個單頻參數。如果使用profile 0那麼爲000即可。
I/O—UPDATE:輸入輸出更新,用於將I/O端口緩衝器中寫入的數據傳輸到有效寄存器中。I/O—UPDAE在上升沿有效,並且寬度必須大於一個SYNC—CLK週期。
MASTER_Reset:用於復位所有的寄存器。高電平有效,數字輸入,主機復位,全部寄存器默認值。

–分---------------------------------------------------------------------------
以上就是我們需要滿足時序要求的引腳。

DAC_reset:爲輸出管腳,模擬參考電壓引腳
iout和iout/:電流模式輸出
REFCLK:輸出參考時鐘。

值得注意的是同步使用SYNC_CLK的要求,文中多次出現。
在這裏插入圖片描述
在這裏插入圖片描述

利用官方軟件得到寄存器值

在這裏插入圖片描述
這裏隨機配置了8個DDS參數。當然,我們使用第一個即可。profile引腳輸入設置爲000即可。注意開啓反sinc濾波器

在這裏插入圖片描述
控制界面設置爲如圖所示,晶振爲40MHz,主頻時鐘1GHz

在這裏插入圖片描述
配置爲兩線,MSB優先

得到寄存器:如下所示:
在這裏插入圖片描述
下一篇,將對Verilog調試,配置進行介紹。

福利連接

中文高度清晰的AD9910芯片手冊+英文手冊+AD9910模塊電路pdf
https://download.csdn.net/download/ciscomonkey/12411527
官方寄存器配置軟件
https://download.csdn.net/download/ciscomonkey/12411530

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章