天天看點

lvds傳輸距離标準_不會用示波器的HDL碼農不是一個好碼農(LVDS與SpaceWire接口)...LVDS信号線間串擾問題SpaceWire接口信号品質問題1、實驗環境2、實驗過程3、 實驗結果

在FPGA調試過程中,除了邏輯代碼本身的品質之外,FPGA闆子上PCB走線、接插件品質等因素的影響也非常重要。在剛上闆調試不順利的時候,不妨拿示波器看一下信号的品質,比如時鐘信号的品質、差分信号的品質、高速串行信号的品質等等,這是上闆調試之前首先要做的一步。沒有高品質的FPGA外圍管腳信号的輸入,再好的代碼風格和規範都無濟于事。是以,調試FPGA之前一定要上示波器看一下關鍵信号的品質。

LVDS信号線間串擾問題

近日,在300Mbps的LVDS接口的調試過程中,出現了部分接口無法正确接收資料的現象,動用了一系列手段都無法使其老實下來踏踏實實接收資料,實可謂頑固不化。而在實驗室老師的建議和要求下,經過一番折騰之後,我們終于見到了經過LVDS驅動晶片解差分後輸入到FPGA的單端信号的真容。它是這樣的:

lvds傳輸距離标準_不會用示波器的HDL碼農不是一個好碼農(LVDS與SpaceWire接口)...LVDS信号線間串擾問題SpaceWire接口信号品質問題1、實驗環境2、實驗過程3、 實驗結果

(上圖隻抓了一位資料信号和一位時鐘信号,其實是通過兩位資料信号并行傳輸實作300Mbps的)

藍色的波形是時鐘吧,反正在上面資料信号不變化的時候還是時鐘,頻率也對,150MHz的……但是後面怎麼就放飛自我了,這跟我們說好的不一樣呀……

在此之前,有必要介紹一下我們這邊調試所用硬體的情況,項目要接好多個LVDS接口,多到一個闆子根本放不下,但是接口最終都是要連到一塊FPGA上的,顯然一塊FPGA隻能放在一塊闆子上,那這麼多接口怎麼辦呢,不怕,反正還有别的闆子,索性就把剩餘接口都放在别的闆子上吧。那接口需要的LVDS32和31的收發晶片怎麼辦,也沒法都放在FPGA所在的那塊闆上,那就也都散開吧,LVDS接口收到的信号直接在接口旁邊的LVDS32驅動晶片上解差分,單端信号通過各個闆子間的接插件傳到FPGA闆上;發送則相反。所使用的接插件大概就類似于下面這種:

lvds傳輸距離标準_不會用示波器的HDL碼農不是一個好碼農(LVDS與SpaceWire接口)...LVDS信号線間串擾問題SpaceWire接口信号品質問題1、實驗環境2、實驗過程3、 實驗結果

當然接插件上相鄰信号線間的間隔沒有這麼大就是了,而且是三排一起。一共用了四塊闆子(别的闆子還有CPU啥的實作其他功能)互相疊在一起,如下圖:

lvds傳輸距離标準_不會用示波器的HDL碼農不是一個好碼農(LVDS與SpaceWire接口)...LVDS信号線間串擾問題SpaceWire接口信号品質問題1、實驗環境2、實驗過程3、 實驗結果

綠點就表示接插件上的信号線,闆間的這個接插件順着箭頭方向一直穿透到最後的FPGA闆上,實作接口LVDS晶片和FPGA之間單端信号的傳輸。

硬體情況就是這樣了,我們在測試中發現無法正确接收資料的接口全部集中在距離FPGA闆最遠的兩塊闆子上,當把時鐘降頻之後,例如降頻到60MHz時,所有的接口都可以正确接收資料,這基本排除了FPGA代碼邏輯的問題。

然後在與實驗室老師交流了情況之後,了解到可能是硬體這邊線間串擾的問題,然後想辦法找了從最遠的闆子某個接口傳到FPGA闆上單端信号的接插件管腳圖,并使用示波器幫助我們對傳輸的資料和時鐘信号進行了檢測:

lvds傳輸距離标準_不會用示波器的HDL碼農不是一個好碼農(LVDS與SpaceWire接口)...LVDS信号線間串擾問題SpaceWire接口信号品質問題1、實驗環境2、實驗過程3、 實驗結果

上面就是闆子接插件的管腳圖,上面點亮的每一列的三個信号就對應着LVDS晶片恢複出來的一位單端時鐘和兩位單端資料信号,可以看到它們是相鄰的,并且相距很近,可知硬體設計上并沒有考慮線間串擾的問題。

然後我們就使用示波器對上述管腳的信号進行了檢測,就看到了開頭的那個畫面……

自從上了研主要工作變成了寫代碼之後,感覺自己已經很久沒有接觸過硬體這塊的東西了。這次的情況花費了我們不少的時間與精力,同時我們也明白了搞FPGA開發終歸還是要對硬體有些許了解的,于是接下來我們就找了找資料,了解了一下什麼是線間串擾。

線間串擾是電磁幹擾的一種主要形式,當多條較長并且距離很近的導線平行傳輸信号時,其中每一條導線上的信号變化都會對其他導線的信号傳輸産生電磁幹擾。

串擾的強弱受相鄰電路分布電容、互感和電路本身的阻抗影響。線間串擾對受幹擾電路的影響來源于電路間的分布式電容和分布式電感引起的電磁耦合:由于每一條線路都對地存在寄生電容和電感,使得線路之間存在不同程度的耦合,當其中一條線上存在電流或者電壓變化時,相鄰線路上就會産生電磁感應或靜電感應,這就是線間串擾。線間串擾有電容耦合和電感耦合兩種形式。

顧名思義,電容耦合是由于電子器件或線路之間存在的分布式電容,而産生電磁幹擾的一種現象。導電傳輸線互相靠近時會存在一定大小的容抗,使得兩邊可以形成一個導電通路,一條傳輸線上的電壓變化會通過兩邊傳輸線之間的互容将能量耦合到另一邊,使其電位受到影響,具體影響效果如圖:

lvds傳輸距離标準_不會用示波器的HDL碼農不是一個好碼農(LVDS與SpaceWire接口)...LVDS信号線間串擾問題SpaceWire接口信号品質問題1、實驗環境2、實驗過程3、 實驗結果

當幹擾傳輸線上升沿信号Vs通過時,會在受幹擾線上産生一個前向的耦合電壓Vf和後向的耦合電壓Vb,其中前向電壓産生的脈沖傳向受幹擾線的遠端,後向電壓産生的脈沖傳向受幹擾線的近端。

電感耦合則是由于電磁感應,一條傳輸線上的電流變化産生的磁場在另一條被幹擾的傳輸線上引起感應電壓導緻的電磁幹擾。相對于電容耦合而言,電感耦合産生的前向電壓和後向電壓極性是相反的,效果如圖:

lvds傳輸距離标準_不會用示波器的HDL碼農不是一個好碼農(LVDS與SpaceWire接口)...LVDS信号線間串擾問題SpaceWire接口信号品質問題1、實驗環境2、實驗過程3、 實驗結果

幹擾信号在上升沿時間通過電感耦合在受幹擾線上産生一個正的後向電壓和一個負的前向電壓。

其中電容耦合和電感耦合産生幹擾的寬度和幅度變化是相似的,其脈沖寬度近似等于信号上升沿寬度,幅度與電壓(電流)變化斜率成正比。

電容耦合和電感耦合一般都是同時發生的,而對于非理想地平面或微帶傳輸線,電感耦合的影響要大于電容耦合。

在了解了這些之後,再結合我們這邊的情況來看,從示波器的波形中我們可以看到時鐘和資料信号互相的幹擾情況(為使觀察更清晰,這裡以60M時鐘下波形為例)

lvds傳輸距離标準_不會用示波器的HDL碼農不是一個好碼農(LVDS與SpaceWire接口)...LVDS信号線間串擾問題SpaceWire接口信号品質問題1、實驗環境2、實驗過程3、 實驗結果

上圖中下方藍色信号為資料信号波形,實際理想波形應如畫出的紅線所示,為一個整齊的方波,但是由于緊鄰時鐘信号線,受到時鐘信号串擾後資料波形上一直存在着幅度較小的與時鐘同頻的信号波動;而當資料信号變化自身産生較大起伏時,時鐘信号也受到影響出現了電壓的偏移。

根據時鐘和資料各自受到的影響來看,當對方電壓信号上升時,自身電壓信号便會下降,可知在該闆間接插件中進行信号傳輸時,主要是電感耦合在串擾中起作用。

如果說上圖中時鐘頻率為60MHz時還能正常對資料信号進行采樣,但時鐘頻率增加到150MHz以上就無法正确采樣了。如下圖為時鐘頻率為150MHz時資料與時鐘的波形,已經全部亂掉了。

lvds傳輸距離标準_不會用示波器的HDL碼農不是一個好碼農(LVDS與SpaceWire接口)...LVDS信号線間串擾問題SpaceWire接口信号品質問題1、實驗環境2、實驗過程3、 實驗結果

經過查找資料,可以用一些措施來減少線間串擾:

1. 布置電子裝置内部信号線時,盡量将其靠近接地底闆,增大對地電容,進而減小串擾。

2. 在允許的空間範圍内,應盡量加大信号線與其他線之間的距離,減少線間耦合(3W原則:傳輸線中心距不少于3倍線寬時,則可保持70%的線間電場不互相幹擾)。

3. 盡量縮短平行線長度,增加線間距離,如果可以,在信号線間加布隔離地線。

4. 機箱内闆間的信号線越短越好。

5. 端子線進入印制闆,可以在入口處增加RC去耦合電路,以便消除長線的傳輸串擾。

參考資料

  1. https://wenku.baidu.com/view/401a805d312b3169a451a4ca.html
  2. https://wenku.baidu.com/view/44c1d0cd27fff705cc1755270722192e453658ae.html?rec_flag=default

SpaceWire接口信号品質問題

SpaceWire總線協定支援2~200M之間速率傳輸,但是筆者在測試中目前無法實作200M進行跨闆傳輸,是以通過示波器觀察在200M下D、S信号的品質,進而進一步确定到底是代碼品質存在問題,還是目前闆卡的硬體品質問題。

1、實驗環境

本文采用的實驗環境如圖1.1所示,該環境共有三塊闆卡構成。其中A、B闆卡共同構成地檢,實作将普通的以太網接口轉換為專用的SpaceWire接口,C闆卡為另外一塊SpaceWire闆卡。三塊闆卡通過接插件互相連接配接。

lvds傳輸距離标準_不會用示波器的HDL碼農不是一個好碼農(LVDS與SpaceWire接口)...LVDS信号線間串擾問題SpaceWire接口信号品質問題1、實驗環境2、實驗過程3、 實驗結果

2、實驗過程

由于SpaceWire在鍊路建立的過程中會自動發送NULL字元,是以隻需将闆卡上電下載下傳代碼即可進行觀察傳輸信号的品質。為了更具有說服力,本次實驗選用10M、50M、100M、200M四種傳輸速率進行對比,由于是同一套代碼通過線上手動設定vio中寄存器的配置值實作不同的傳輸速率(使用VIVADO中VIO模拟CPU接口進行線上寄存器讀寫調試(附源代碼)),是以實驗結果具有可對比性。

2.1 10M傳輸速率

如圖2.1所示,當采用10M傳輸速率時,D、S信号品質很好,傳輸中可以正常檢測。

lvds傳輸距離标準_不會用示波器的HDL碼農不是一個好碼農(LVDS與SpaceWire接口)...LVDS信号線間串擾問題SpaceWire接口信号品質問題1、實驗環境2、實驗過程3、 實驗結果

2.2 50M傳輸速率

如圖2.2、2.3所示,當傳輸速率為50M時,信号的品質有下降的表現,但對于FPGA來說,該信号品質仍然很不錯,能夠正确的采樣。

lvds傳輸距離标準_不會用示波器的HDL碼農不是一個好碼農(LVDS與SpaceWire接口)...LVDS信号線間串擾問題SpaceWire接口信号品質問題1、實驗環境2、實驗過程3、 實驗結果

圖2.2 A闆給C闆發送的DS信号

lvds傳輸距離标準_不會用示波器的HDL碼農不是一個好碼農(LVDS與SpaceWire接口)...LVDS信号線間串擾問題SpaceWire接口信号品質問題1、實驗環境2、實驗過程3、 實驗結果

圖2.3 C闆給A闆發送的DS信号

2.3 100M傳輸速率

将發送和接收速率設定為100M時,可得如圖2.4和2.5所示結果。其中圖2.4為A闆給C闆發送的DS信号,2.5為C闆給A闆發送的DS信号。可以看出,目前信号品質已經較差,但仍能正确識别與傳輸。

lvds傳輸距離标準_不會用示波器的HDL碼農不是一個好碼農(LVDS與SpaceWire接口)...LVDS信号線間串擾問題SpaceWire接口信号品質問題1、實驗環境2、實驗過程3、 實驗結果

圖2.4 A闆給C闆發送的DS信号

lvds傳輸距離标準_不會用示波器的HDL碼農不是一個好碼農(LVDS與SpaceWire接口)...LVDS信号線間串擾問題SpaceWire接口信号品質問題1、實驗環境2、實驗過程3、 實驗結果

圖2.5 C闆給A闆發送的DS信号

2.4 200M傳輸速率

在本文的實驗環境下,C闆内部自己産生資料源,速率為200M時,可以正确接收、解析,此時通過示波器觀察到的D、S如圖2.6所示,可以看出此時的信号品質已經很差了。

lvds傳輸距離标準_不會用示波器的HDL碼農不是一個好碼農(LVDS與SpaceWire接口)...LVDS信号線間串擾問題SpaceWire接口信号品質問題1、實驗環境2、實驗過程3、 實驗結果

圖2.6 C闆自環200M下D、S信号采集結果

但是當通過A、B闆和C闆進行通信時,鍊路始終建立不成功,此時示波器觀察不到對應的D、S信号。

3、 實驗結果

通過上述對比可以發現,當傳輸速率為200M時,鍊路中信号品質很差,經分析顯然不是前面例子中如串擾造成的,但應該是硬體的原因造成的。具體猜測有可能有以下幾點原因造成:1、A闆通過FMC接插件和B闆相連,此處的走線會對信号品質産生較大的影響;2、FPGA程式中對于輸入、輸出管腳的時序限制仍有缺失;3、FPGA接收時鐘采用的是D、S異或得到的時鐘,這部分時鐘的限制缺失。歡迎看到本文的大牛告知真正的原因。

lvds傳輸距離标準_不會用示波器的HDL碼農不是一個好碼農(LVDS與SpaceWire接口)...LVDS信号線間串擾問題SpaceWire接口信号品質問題1、實驗環境2、實驗過程3、 實驗結果

全文完。