FPGA基礎設計(6)使用DAC的Interleaved模式
本文介紹DAC晶片的Interleaved模式的使用,或者叫交錯模式。
硬體設計與介面協議
Interleaved模式即用一組數字介面控制兩個模擬訊號輸出,比如ADI公司的AD9763/AD9765/AD9767系列,具有雙路10/12/14位元輸出,最高時鐘125M,可以採用dual-port模式或Interleaved模式。雙口模式的用法和本系列第5篇中的介紹基本相同,本文著重講述一下交錯模式。
Red Pitaya開發板搭載的便是AD9767晶片,主要是因為這款開發板使用的晶片是Zynq的7010系列,PL部分管腳資源不是很多,使用Interleaved模式可以節省一組數字訊號介面。相關部分的原理圖如下所示:
DAC晶片的MODE管腳接地,即為Interleaved模式(拉高為dual-port模式)。只使用DDA一組介面控制OUT1和OUT2兩路訊號輸出。Interleaved模式下17-20號管腳啟用第二功能,IQWRT、IQCLK、IQRESET和IQSEL。ADI的官方晶片手冊中可以查閱到Interleaved模式下的控制時序:
IQWRT和IQCLK保持同步即可,或者IQWRT的上升沿要早於IQCLK的上升沿。在IQCLK的上升沿,資料會重新整理到DAC輸出埠。IQSEL控制資料的輸出通道,但注意只有在IQCLK為低電平的時候才能改變狀態。這樣在IQCLK設定為最高的125MHz情況下,每路訊號輸出最高支援62.5Mhz的重新整理率。IQRESET訊號是高電平有效的復位訊號。
晶片手冊中還著重強調了資料與時鐘之間的時序關係,兩者一定不能保持同步變化關係。如上圖所示,當兩者同步變化時,SNR只有10dB左右,輸出訊號質量很差。兩者的變化起碼要錯開1ns的時間,保證達到60dB以上的訊雜比。
FPGA設計
編寫Verilog程式碼時照著時序圖設計即可。首先要理清設計思路,IQSEL本質上就是IQCLK的2分頻時鐘,但是帶有一個初始相位,具體是多少可以根據時鐘週期來計算。如果IQCLK工作在125Mhz,IQSEL即為62.5Mhz,初始相位設定為90°即可。使用一個Clock Wizard IP核,由主時鐘生成這兩個時鐘。整體設計的框圖如下:
這裡主時鐘由ZYNQ7 IP核的FCLK_CLK0提供。DAC驅動模組中,復位訊號IQRESET無需多言,系統復位時為高、正常工作時為低即可。需要注意的便是資料訊號的切換,根據上面的時序圖可以看出兩種切換方式:在IQCLK的下降沿切換、在IQSEL的雙邊沿切換。一般來說比較忌諱時鐘的雙邊沿同時做邏輯(因為比較難保證時序),因此最好使用前一種方式。
如果不是在Zynq中,只要將主時鐘和clock wizard模組放在RTL設計中即可。假設OUT1和OUT2的訊號源是一個相同的正弦波,首先最好通過模擬來確實時序設計的正確性,然後在板子中測試,結果如下:
兩路訊號都正確輸出,完成了一組資料控制兩路輸出的設計。當然,雙時鐘控制法只是博主根據時序圖自己構思的方法,還不知道是否有更好的解決方案,如果有歡迎各位留言。
相關文章
- FPGA基礎設計(7)雙口RAM乒乓操作FPGA
- java 設計模式基礎Java設計模式
- FPGA的DAC轉換部分遇到的問題FPGA
- 【FPGA基礎】Latch基礎FPGA
- Java基礎篇--設計模式Java設計模式
- 基於FPGA的DDS研究與設計FPGA
- 設計模式-UML關係基礎設計模式
- Vivado使用技巧(11):設定FPGA配置模式FPGA模式
- Python類的基礎--設計、使用Python
- 西安交大獲得DAC19系統設計競賽FPGA賽道亞軍,這裡是他們的設計方案FPGA
- 設計模式系列 6– 命令模式設計模式
- JAVA-Spring AOP基礎 - 代理設計模式JavaSpring設計模式
- javascript設計模式 之 6 命令模式JavaScript設計模式
- 設計模式 #6 (觀察者模式)設計模式
- 設計模式基礎 之 4 高階函式設計模式函式
- 設計模式“6”大原則!設計模式
- FPGA程式設計從零開始 使用VerilogFPGA程式設計
- Python基礎入門(6)- 物件導向程式設計Python物件程式設計
- 《設計模式》 - 6. 橋接模式( Bridge )設計模式橋接
- Java設計模式(6)----------介面卡模式Java設計模式
- Java 多執行緒設計模式之基礎概念Java執行緒設計模式
- 收藏: 全面解析FPGA基礎知識FPGA
- Python學習之旅(核心程式設計基礎篇6基礎資料型別③)Python程式設計資料型別
- Spring中使用的設計模式Spring設計模式
- Netty中使用的設計模式Netty設計模式
- 基於FPGA的乘法器原理介紹及設計實現FPGA
- JAVA設計模式 1 設計模式介紹、單例模式的理解與使用Java設計模式單例
- 《java程式設計基礎》java的基礎知識(三)Java程式設計
- 6.java設計模式之介面卡模式Java設計模式
- UI設計師需要掌握的平面設計基礎!UI
- Java的設計模式和6大原則Java設計模式
- Flutter使用MVVM設計模式的示例FlutterMVVM設計模式
- Socket程式設計基礎程式設計
- Go程式設計基礎Go程式設計
- Shell程式設計-基礎程式設計
- python程式設計基礎Python程式設計
- shell程式設計基礎程式設計
- 設定模式基礎 之 3閉包模式