關於高速信號傳輸的總結(多通道LVDS/CAN//camaralink/ADC等),第八天,重寫selectIO

這段時間一直在做某高速信號傳輸,在此做一個小的總結。關於idealy

一、前提:問題及描述

    高速信號傳輸最害怕什麼問題?干擾。

    高速信號傳輸,任何環境發生改變都會導致數據傳輸的不準確。比如接口、佈線、溫度、磁場、抖動等等,。這也是高速信號和低速信號傳輸最主要的區別。

    爲什麼會導致這種區別?

    低速信號一般設置採樣點,根據時鐘頻率,比如幾次甚至十幾次採集一次,靠譜點的都會加上crc校驗(crc以後再說),簡單的方式就是以中間採樣點作爲數據採集,用這種方式保證數據傳輸的穩定性。而高速信號傳輸一般只能採集一次,甚至目前大部分高速接口都是雙邊沿傳輸。如果外界環境變化,比如溫度變化就會讓時鐘發生抖動或者偏移等現象。時鐘抖動是晶振內部問題產生,在此不討論。在此主要討論兩個器件之間因爲佈線或者接口等問題導致時鐘偏移現象wp249。

    時鐘偏移理解,如下圖更加直觀。

以時鐘2爲基準時鐘,1和3都是偏移現象的一種。比如lvds傳輸,目前時鐘和數據一般不做同步處理。在發送過程中一定會產生時鐘採集與數據不對齊的現象。比如採集點在數據的建立或保持時間,導致數據採集錯誤。這篇博文就是問了解決這個問題。

2、怎麼處理

       對該問題的處理,其實屬於對時鐘的處理,FPGA中對時鐘的處理,無非就是設計和約束。設計是通過修改代碼邏輯和流程從而讓時序滿足時序要求,而約束即是設置時序條件,通過約束設置的方式來確定時序。

      針對時鐘約束,參考之前的文章瞭解,最主要的就是要確定CO,也就是時鐘通過電路的延遲,該延遲和芯片設計有關,一般也都是各類芯片的強約束。確定Tco後的輸入延遲,只是確定了大概的輸入路徑,對於低速信號,當然基本上能保證時鐘採集數據的穩定,也就是採集在數據的中間,但高速信號,本來時間間隔就很短,這時候就需要要更精確的方式來確定時鐘採集不在數據的建立和保持時間上,從而辦證數據採集的穩定性。

     時序設計,時序設計分兩類,一類的邏輯款圖類似的流程圖,保證數據之間的交互。而另一種,就是對時鐘偏移和抖動的設計。在xilinx的器件中,提供了IOdealy來保證數據採集的微小偏移,其偏移量主要和抽頭數量和一級抽頭的單位有關。T=n*1/(32*2*refclk),假設idealy總共只能移32次,因爲上升沿採集,低電平的週期不要。所以需要*2,也就是雖然等分了32份,但是調整的時候,只能調整上升沿採集的位置。然後再除以參考時鐘,就是一級抽頭能移動的時間,refclk一般大於200M,這樣數據一級能移動的就很小,從而保證約束後的時鐘可以通過調整抽頭位置來改動偏移值。剩下的就是慢慢調整抽頭值來保證數據的穩定。

3、訓練和驗證方法

針對第一種就很簡單了,通過vio一直改變抽頭,當數據發生變化開始,計數器清零,當數據再次發生變化時,記下此計數器的值,除以二就是抽頭值。自動訓練算法,思想就是在抽頭值爲零的時候,不做 不管數據如何。對串並轉換後的數據進行判斷,當出現零的時候,計數器爲0,當出現全1的時候,計數器爲n,抽頭值就是n/2,如果該值大於32,就減去32的倍數小於32。然後再對訓練字進行判斷。

 

 

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