何廣亮,湯曉云
(1.中國空空導彈研究院,河南洛陽,471009;2.空裝駐洛陽地區第一軍代表室,河南洛陽,471009)
在信號處理系統中,AD采樣發揮著至關重要的作用,要想保證信號處理結果的正確性,必須首先保證AD采樣數據的正確性。在FPGA的數據接收端,由于數據速率太高,隨路時鐘和數據延時不一致以及線路噪聲的影響[1],導致單個ADC的多位數據之間存在偏移。由于采樣時鐘不能正確的捕捉到數據有效窗口的中心位置,使通道內數據接收不準確產生數據位偏移[6]。
本文采用ADS4449采樣芯片,采樣率最高達250MSPS,所以在FPGA接收端需要加入校準算法來保證采樣數據的正確性,每次系統重新啟動或者復位后,都需要對系統進行自適應校準。該算法利用Xilinx FPGA中自帶的IDELAYE2[2]延時調整機制,調節IDELAYE2的延時tap,自適應的調整通道內隨路時鐘與數據的延時,實現數據對齊。
ADS4449為TI公司推出的高速AD采樣轉換芯片,采樣率最高為250MSPS,精度為14bit,信噪比為69dBFs,無雜散動態范圍為86dBc[3]。ADS4449芯片有多種工作模式,在實際應用中可通過FPGA對其進行配置,使AD芯片在最優性能下工作,配置接口為串行接口,最大工作頻率不超過20MHz,配置時序如圖1所示。

圖1 ADS4449芯片配置時序
ADS4449芯片與FPGA之間用過LVDS總線連接,其14bit四通道數據雙路輸出使用雙沿采樣DDR的源同步方式,以提高數據的吞吐率和總理論帶寬。LVDS模式優勢明顯,在低壓情況下,它的擺幅切換的時間很快,可有效的解決電磁干擾的問題,采用差分傳輸,可實現共模抑制,大大消除了傳輸過程中引入的噪聲干擾[4]。ADS4449的數據輸出接口時序如圖2所示。

圖2 ADS4449數據輸出接口時序
軟件設計采用Xilinx公司的Vivado軟件和Verilog HDL語言[5]。硬件上電時,通過FPGA對ADS4449芯片進行配置,首先把ADS4449配置成輸出測試序列模式,在FPGA內部,通過IDELAYE2調整隨路時鐘與數據的延時,使得FPGA采樣時鐘對準數據中間[7],并記錄下采樣正確時的延時值區間,找到區間的中間值,配置為隨路時鐘與數據的固定延時,最后把ADS4449配置為正常工作模式即可,軟件總體框圖如圖3所示。
圖3中IBUFDS、IDELAYE2、BUFG、IDDR和IDELA YCTRL均為Xilinx提供的原語,IBUFDS為差分I/O輸入時鐘緩沖器,用來把差分LVDS隨路時鐘和數據轉換成單端;IDELAYE2和IDELAYCTR配合使用,調整隨路時鐘的路徑延時;BUFG為全局時鐘緩沖器;IDDR完成雙邊沿高速數據流到單邊沿數據流的轉換工作。

圖3 軟件總體框圖
IDELAYE2是7 Series FPGA硬件原語,該原語用來調整時鐘或數據的相位,Tap為IDELAYE2的基本延遲單元,每個IDELAYE2有32個Tap,每個Tap的長度在0~78ps之間,能夠實現0~2.5ns的延時。通過在7 Series FPGA Data Sheet中規定的范圍內選擇IDELAYCTRL參考時鐘。IDELAYE2結構圖如圖4所示。

圖4 IDELAYE2結構圖
端口信號如表 1所示。

表1 IDELAYE2接口信號表
在例化IDELAYE2原語時,必須配合使用IDELAYCTRL原語,IDELAYCTRL模塊能夠根據參考時鐘對IDELAYE2的Tap延遲分辨率進行校驗。本設計中參考時鐘為200MHz,IDELAYCTRL單元能夠將Tap延遲值校驗固定為78ps。
IDDR(InputDouble Data Rate,輸入雙倍數據率)子模塊完成雙邊沿高速數據流到單邊沿數據流的轉換工作[8]。該組件為FPGA中專門用于接收外部雙倍數據速率信號的器件原語。它可以在時鐘的上升沿或下降沿將數據遞送給FPGA,也可以將轉換為只在上升沿傳遞數據,這樣就節省了片上資源,并減小了額外的時序復雜度。IDDR的結構如圖5所示。
我國擁有廣袤的農村區域,農村面積占據了國土的絕大多數。和城市相比較而言,我國的農村教育教學水平還存在一定的差距,從教師的教育教學理念,到教學資源的配備,到教育教學的環境,到社會的關注程度,農村都遠遠不及城市。為了大力推進我國教育的均衡化發展,國家已經投入了更大力度,在農村幼兒園及中小學加大了投資力度,大力改善辦學條件。作為一名農村幼兒園教師,也應當不等不靠,積極創新,廣泛利用農村極為普遍的各種教育資源,為幼兒提供更加豐富的活動材料,組織幼兒開展更加具有農村鄉土特色的區域活動,降低材料的成本,提高區域活動的效率,推動幼兒的全面發展,為農村幼兒教育事業的發展提供更加搶進的助推力量。

圖5 IDDR結構圖
IDDR端口信號功能如表 2所示。

表2 IDDR端口信號表
IDDR具有3種工作模式,分別為OPPOSITE_EDGE模式、SAME_EDGE模式以及SAMEEDGE_PIPEL1NED模式,其區別在于兩路輸出數據與輸入數據相位關系不同。本文中采用SAME_EDGE_PIPELINED模式,該模式下IDDR的數據分流情況如圖6所示。圖中的雙時鐘沿數據經過IDDR后,輸出兩路數據。該模式的弊端是Q1,Q1信號變化時需要消耗一個額外的時鐘周期延遲。

圖6 IDDR的SAMEEDGE_PIPEL1NED時序圖
此模塊是本文設計的核心內容,主要用來控制IDELAYE2中的延時值以控制隨路時鐘的延時。自校準需要通過特定的訓練序列來實現,本設計中,通過配置ADS4449在測試模式下輸出累加數特征序列。本文中IDELAYE2的Tap值為78ps,一共可以調整32次,即隨路時鐘的最大路徑延時可以達到2.5ns左右。動態相位自校準的核心是通過特征序列從0到1的跳變,找到數據窗口的前沿和后沿,通過計算數據窗口前沿與后沿之間的Tap延時級數確定數據窗口的中心,校準流程如圖7所示。

圖7 工作流程圖
校準的流程如下:
(1)系統剛上電或復位時,配置ADS4449為測試模式,輸出累加數測試序列;
(2)找到數據窗口邊沿。ADS4449輸出數據穩定時,進行采樣比較,由于測試序列為累加序列,在連續200個周期數據都是累加時,即認為當前的Tap延時值正確,表示數據窗口邊沿被找到。
(3)找到數據窗口前沿。當數據窗口前沿被找到時,使Tap的延時級數加1,待輸出數據穩定后,連續比較200個周期的累加數是否正確,如果不正確,則表示時鐘還處在數據邊沿的亞穩態區域,需要繼續增加Tap的延時級數,直到采樣結果正確為止,表示數據窗口前沿被找到,將此延時級數記為N1。

圖8 校準示意圖
(4)找到數據窗口后沿。找到數據窗口前沿時,繼續增加Tap延時級數,直到輸出數據錯誤時為止,表示數據窗口后沿被找到,記錄下此時Tap延時級數為N2;
(5)確定數據窗口中心。數據窗口的中心位置就是前沿和后沿的中心,重新配置Tap延時級數為(N1+N2)/2,以此當作Tap的固定延時;
(6)重新配置ADS4449為正常工作模式。
硬件采用V7 690t型號FPGA加ADS4449架構,為了便于觀察,設置輸入信號為1MHz的正弦波信號,ADS4449采樣率配置為最高的250MSPS。
首先測試不采用本算法時,隨機配置一個Tap延時值得AD采樣數據,結果如圖9所示,可見FPGA接收到的信號含有許多毛刺,信號幅度偏小,有時候甚至看不出是正弦波信號。

圖9 不采用本算法時FPGA接收數據
測試采用本算法時的FPGA接收端數據,可見FPGA收到的信號是平滑的正弦波信號,接收數據正確。

圖10 采用本算法時FPGA接收數據
測試條件:(1)常溫上電,找到數據窗口中心,然后溫度逐漸降到-50℃,保持一段時間,溫度在逐漸上升到+50℃,并保持一段時間,測試過程中數據一直保持正確;(2)-50℃溫度下分別上電,在-50℃找到數據窗口中心,溫度在逐漸上升到+50℃,并保持一段時間,測試過程中數據一直保持正確;(3)+50℃溫度下分別上電,在﹢50℃找到數據窗口中心,溫度在逐漸下降到-50℃,并保持一段時間,測試過程中數據一直保持正確。
本文根據Xilinx FPGA的IDELAYE2延時機制,設計了一種AD動態相位自校準算法,使FPGA數據接收端采樣時鐘邊沿與數據窗口中心對齊,保證了FPGA接收數據的正確性。通過±50℃的高低溫試驗,驗證了該算法穩定可行。