在許多高速數據采集系統中,數據正確鎖存是設計者必須要面對的問題。特別是在內部時鐘與外部時鐘采用同一個時鐘源的基于FPGA的高速數據采集系統中,由于走線延時、器件延時、FPGA輸入管腳延時,導致FPGA輸入數據與FPGA內部時鐘的相對相位關系不確定;在時鐘頻率可變的情況下,相對相位關系還會隨頻率變化。在FPGA內部一般采用D觸發器實現對輸入數據的采樣。為了避免亞穩態 ,D觸發器要求輸入數據相對時鐘沿滿足一定的建立、保持時間,即輸入數據與FPGA內部時鐘要滿足一定的相位關系。由于輸入數據與采樣時鐘相對相位的不確定性,就有可能不滿足FPGA內部D觸發器的建立、保持時間,出現亞穩態。針對上述情況,本文給出在FPGA中可以自適應地選擇時鐘上升沿或下降沿采樣的自適應同步器電路設計。該電路能夠檢測鎖存時鐘上升沿與輸入數據跳變的相位關系,由檢測結果選擇上升沿采樣或下降沿采樣,使數據變化避開時鐘沿的亞穩態窗 ,降低出現亞穩態的概率。
1 某雷達數據采集系統簡介
圖1所示為某雷達系統數據采集原理圖,該雷達系統有兩種帶寬,要求兩種采樣頻率,采樣時鐘由FPGA產生。設計采用了ECL輸出電平標準的ADC,FPGA輸入輸出采用LVTTL標準。因此,FPGA輸出時鐘以及ADC數據送入FPGA均需要采用電平轉換芯片。這樣,FPGA輸出時鐘的上升沿到相應FPGA輸入管腳上升沿之間(圖1中C點到D點)有8~9ns的延時。相同的延時,不同的采樣頻率,輸入數據與采樣時鐘的相對相位不同;而且由于FPGA內部布線延時的不確定性,采樣時鐘與輸入數據的相對相位會隨著每次重新布局布線而改變,這兩種情況都可能導致不滿足D觸發器的建立、保持時間,導致采樣失效。
如圖2所示,在FPGA內部若采用上升沿鎖存數據,對于115MHz采樣頻率可以保證正確采樣,對于85MHz的采樣頻率,有可能出現采樣失效;反之,若采用下降沿鎖存數據,115MHz的采樣頻率可能出現采樣失效。
解決上述問題的難點在于預測輸入數據與采樣時鐘的相位關系,從而選擇合適的采樣時鐘沿。采用圖1所示的采樣方案,經常出現某一種采樣頻率采樣失效的情況,如115MHz采樣頻率采樣正常,而85MHz采樣頻率采樣失效。自適應同步器可以預測采樣時鐘與輸入數據的相位關系,自適應地選擇上升沿或下降沿采樣,降低出現亞穩態的概率。
2 自適應同步器原理
自適應同步器能夠預測采樣時鐘上升沿與輸入數據的相位關系。如果相位關系不能滿足D觸發器的建立、保持時間,則自適應同步器能自適應地對數據或者時鐘作延時調整,直到滿足建立、保持時間。
根據同步器延時調整對象不同,同步器可以分為時鐘延時同步器和數據延時同步器。下面給出兩種同步器的實現原理。
2.1 時鐘延時同步器
圖3所示為時鐘延時同步器,沖突檢測電路檢測輸入數據與時鐘沿的相位關系,根據檢測結果由狀態機自適應選擇時鐘是否延時。圖3中時鐘延時單元可實現時間為T的延時,延時單元若為一非門,該電路就是一個簡單的時鐘上升沿采樣或者下降沿采樣的自適應選擇電路。
該電路具有相對簡單、容易實現的特點。但是由于時鐘延時只有兩種選擇,不可能實現相位的精確匹配,很難適應一些超高速電路的需求。該電路一般選取數據總線中的某一位做相位匹配,因此要求數據總線上各位數據延時盡可能相等。
2.2 數據延時同步器
圖4所示電路為數據延時同步器,輸入數據經過若干級延時單元的延時,沖突檢測電路檢測時鐘上升沿與各級延時數據的相位關系,由狀態機選擇較為理想的延時數據。
數據延時同步器可以實現對數據的精確延時,實現對超高速數據或DDR數據的鎖存。但是,由于大量延時單元的使用,增加了FPGA設計的復雜度,實現較為困難。
3 自適應同步器在采樣系統中的應用
圖5所示電路為自適應同步器在圖1所示的某雷達采樣系統中的應用。圖5中采樣時鐘、D觸發器組與圖1中相同,只是圖5中D觸發器組的時鐘改為同步時鐘,BUFG為Xilinx FPGA內部的全局時鐘緩沖。自適應同步器檢測同步時鐘與數據最低位data[0]的相對相位,自適應地選擇采樣時鐘,達到同步輸入數據的目的。由于數據總線只選取其中一位data[0],因此要求總線上各位數據延時盡可能相等。
4 自適應同步器的FPGA實現
數據延時同步器實現較為復雜,尤其對于位數較多的數據總線,需要占用很多資源,狀態機也較復雜。但其實現原理與時鐘延時同步器基本相同,本文只給出時鐘延時同步器的實現。圖6所示電路為自適應同步器,其中del為延時單元,延時時間計為T_del;me_p為data上升沿與時鐘上升沿的沖突檢測模塊,me_n為data下降沿與時鐘上升沿的沖突檢測模塊;fsm為有限狀態機。當data跳變發生在時鐘上升沿[-T_del,T_del]時間之內時,電路輸出sel有效。
4.2 突檢測單元me_p,me_n的實現
圖8為沖突檢測單元me_p的原理圖。該電路可以實現兩路輸入信號上升沿的相位檢測,如果輸入信號r1上升沿較r2的上升沿提前,則g1輸出為‘1’,g2為‘0’;否則g1輸出為‘0’,g2為‘1’。在FPGA實現時,采用基于四輸入查找表(LUT4)的設計,對于布局布線要盡可能保持對稱性,需要加入布局約束、甚至布線約束。圖9為經Synplify綜合后的原理圖。
沖突檢測單元me_n可以實現輸入信號r1下降沿與輸入信號r2上升沿的相位檢測,原理同me_p。對于me_n的實現,只要在配置FPGA查找表(LUT)時,將圖9中I0單元(LUT4_7FFF)改為“LUT4_DFFF”即可。
4.3 狀態機的實現
圖10為自適應同步器狀態機,輸入為conflict,輸出為sel。狀態機共8個狀態,狀態為S0、S1、S2、S3時,輸出為‘0’,選擇圖(5)所示‘sam_clk’;否則輸出為‘1’,選擇‘sam_clk’的反向時鐘‘~sam_clk’;中間態S0、S1、S2以及S4、S5、S6可以有效防止狀態機振蕩。圖10中′x′表示任意狀態。
上述自適應同步器已經過圖1所示的雷達采樣系統的驗證。采樣頻率在20MHz到140MHz范圍內變化時,未出現采樣失效。
4.1 延時單元的FPGA實現
圖7為延時單元電路,采用FPGA內部的LUT4作延時。由于FPGA內部布線延時與LUT4延時相比不可忽略,因此需要對LUT4作相對布局約束,必要時還要作布線約束。
評論
查看更多