在FPGA調(diào)試過程中,除了邏輯代碼本身的質(zhì)量之外,F(xiàn)PGA板子上PCB走線、接插件質(zhì)量等因素的影響也非常重要。在剛上板調(diào)試不順利的時(shí)候,不妨拿示波器看一下信號的質(zhì)量,比如時(shí)鐘信號的質(zhì)量、差分信號的質(zhì)量、高速串行信號的質(zhì)量等等,這是上板調(diào)試之前首先要做的一步。沒有高質(zhì)量的FPGA外圍管腳信號的輸入,再好的代碼風(fēng)格和規(guī)范都無濟(jì)于事。所以,調(diào)試FPGA之前一定要上示波器看一下關(guān)鍵信號的質(zhì)量。
LVDS信號線間串?dāng)_問題
近日,在300Mbps的LVDS接口的調(diào)試過程中,出現(xiàn)了部分接口無法正確接收數(shù)據(jù)的現(xiàn)象,動用了一系列手段都無法使其老實(shí)下來踏踏實(shí)實(shí)接收數(shù)據(jù),實(shí)可謂頑固不化。而在實(shí)驗(yàn)室老師的建議和要求下,經(jīng)過一番折騰之后,我們終于見到了經(jīng)過LVDS驅(qū)動芯片解差分后輸入到FPGA的單端信號的真容。它是這樣的:
(上圖只抓了一位數(shù)據(jù)信號和一位時(shí)鐘信號,其實(shí)是通過兩位數(shù)據(jù)信號并行傳輸實(shí)現(xiàn)300Mbps的)
藍(lán)色的波形是時(shí)鐘吧,反正在上面數(shù)據(jù)信號不變化的時(shí)候還是時(shí)鐘,頻率也對,150MHz的……但是后面怎么就放飛自我了,這跟我們說好的不一樣呀…… ? 在此之前,有必要介紹一下我們這邊調(diào)試所用硬件的情況,項(xiàng)目要接好多個(gè)LVDS接口,多到一個(gè)板子根本放不下,但是接口最終都是要連到一塊FPGA上的,顯然一塊FPGA只能放在一塊板子上,那這么多接口怎么辦呢,不怕,反正還有別的板子,索性就把剩余接口都放在別的板子上吧。那接口需要的LVDS32和31的收發(fā)芯片怎么辦,也沒法都放在FPGA所在的那塊板上,那就也都散開吧,LVDS接口收到的信號直接在接口旁邊的LVDS32驅(qū)動芯片上解差分,單端信號通過各個(gè)板子間的接插件傳到FPGA板上;發(fā)送則相反。所使用的接插件大概就類似于下面這種:
?
當(dāng)然接插件上相鄰信號線間的間隔沒有這么大就是了,而且是三排一起。一共用了四塊板子(別的板子還有CPU啥的實(shí)現(xiàn)其他功能)相互疊在一起,如下圖:
綠點(diǎn)就表示接插件上的信號線,板間的這個(gè)接插件順著箭頭方向一直穿透到最后的FPGA板上,實(shí)現(xiàn)接口LVDS芯片和FPGA之間單端信號的傳輸。 硬件情況就是這樣了,我們在測試中發(fā)現(xiàn)無法正確接收數(shù)據(jù)的接口全部集中在距離FPGA板最遠(yuǎn)的兩塊板子上,當(dāng)把時(shí)鐘降頻之后,例如降頻到60MHz時(shí),所有的接口都可以正確接收數(shù)據(jù),這基本排除了FPGA代碼邏輯的問題。 然后在與實(shí)驗(yàn)室老師交流了情況之后,了解到可能是硬件這邊線間串?dāng)_的問題,然后想辦法找了從最遠(yuǎn)的板子某個(gè)接口傳到FPGA板上單端信號的接插件管腳圖,并使用示波器幫助我們對傳輸?shù)臄?shù)據(jù)和時(shí)鐘信號進(jìn)行了檢測:
上面就是板子接插件的管腳圖,上面點(diǎn)亮的每一列的三個(gè)信號就對應(yīng)著LVDS芯片恢復(fù)出來的一位單端時(shí)鐘和兩位單端數(shù)據(jù)信號,可以看到它們是相鄰的,并且相距很近,可知硬件設(shè)計(jì)上并沒有考慮線間串?dāng)_的問題。 然后我們就使用示波器對上述管腳的信號進(jìn)行了檢測,就看到了開頭的那個(gè)畫面…… ? 自從上了研主要工作變成了寫代碼之后,感覺自己已經(jīng)很久沒有接觸過硬件這塊的東西了。這次的情況花費(fèi)了我們不少的時(shí)間與精力,同時(shí)我們也明白了搞FPGA開發(fā)終歸還是要對硬件有些許了解的,于是接下來我們就找了找資料,了解了一下什么是線間串?dāng)_。 線間串?dāng)_是電磁干擾的一種主要形式,當(dāng)多條較長并且距離很近的導(dǎo)線平行傳輸信號時(shí),其中每一條導(dǎo)線上的信號變化都會對其他導(dǎo)線的信號傳輸產(chǎn)生電磁干擾。 串?dāng)_的強(qiáng)弱受相鄰電路分布電容、互感和電路本身的阻抗影響。線間串?dāng)_對受干擾電路的影響來源于電路間的分布式電容和分布式電感引起的電磁耦合:由于每一條線路都對地存在寄生電容和電感,使得線路之間存在不同程度的耦合,當(dāng)其中一條線上存在電流或者電壓變化時(shí),相鄰線路上就會產(chǎn)生電磁感應(yīng)或靜電感應(yīng),這就是線間串?dāng)_。線間串?dāng)_有電容耦合和電感耦合兩種形式。 顧名思義,電容耦合是由于電子器件或線路之間存在的分布式電容,而產(chǎn)生電磁干擾的一種現(xiàn)象。導(dǎo)電傳輸線相互靠近時(shí)會存在一定大小的容抗,使得兩邊可以形成一個(gè)導(dǎo)電通路,一條傳輸線上的電壓變化會通過兩邊傳輸線之間的互容將能量耦合到另一邊,使其電位受到影響,具體影響效果如圖:
當(dāng)干擾傳輸線上升沿信號Vs通過時(shí),會在受干擾線上產(chǎn)生一個(gè)前向的耦合電壓Vf和后向的耦合電壓Vb,其中前向電壓產(chǎn)生的脈沖傳向受干擾線的遠(yuǎn)端,后向電壓產(chǎn)生的脈沖傳向受干擾線的近端。 電感耦合則是由于電磁感應(yīng),一條傳輸線上的電流變化產(chǎn)生的磁場在另一條被干擾的傳輸線上引起感應(yīng)電壓導(dǎo)致的電磁干擾。相對于電容耦合而言,電感耦合產(chǎn)生的前向電壓和后向電壓極性是相反的,效果如圖: 干擾信號在上升沿時(shí)間通過電感耦合在受干擾線上產(chǎn)生一個(gè)正的后向電壓和一個(gè)負(fù)的前向電壓。 其中電容耦合和電感耦合產(chǎn)生干擾的寬度和幅度變化是相似的,其脈沖寬度近似等于信號上升沿寬度,幅度與電壓(電流)變化斜率成正比。 電容耦合和電感耦合一般都是同時(shí)發(fā)生的,而對于非理想地平面或微帶傳輸線,電感耦合的影響要大于電容耦合。 在了解了這些之后,再結(jié)合我們這邊的情況來看,從示波器的波形中我們可以看到時(shí)鐘和數(shù)據(jù)信號相互的干擾情況(為使觀察更清晰,這里以60M時(shí)鐘下波形為例)
上圖中下方藍(lán)色信號為數(shù)據(jù)信號波形,實(shí)際理想波形應(yīng)如畫出的紅線所示,為一個(gè)整齊的方波,但是由于緊鄰時(shí)鐘信號線,受到時(shí)鐘信號串?dāng)_后數(shù)據(jù)波形上一直存在著幅度較小的與時(shí)鐘同頻的信號波動;而當(dāng)數(shù)據(jù)信號變化自身產(chǎn)生較大起伏時(shí),時(shí)鐘信號也受到影響出現(xiàn)了電壓的偏移。
根據(jù)時(shí)鐘和數(shù)據(jù)各自受到的影響來看,當(dāng)對方電壓信號上升時(shí),自身電壓信號便會下降,可知在該板間接插件中進(jìn)行信號傳輸時(shí),主要是電感耦合在串?dāng)_中起作用。
如果說上圖中時(shí)鐘頻率為60MHz時(shí)還能正常對數(shù)據(jù)信號進(jìn)行采樣,但時(shí)鐘頻率增加到150MHz以上就無法正確采樣了。如下圖為時(shí)鐘頻率為150MHz時(shí)數(shù)據(jù)與時(shí)鐘的波形,已經(jīng)全部亂掉了。
經(jīng)過查找資料,可以用一些措施來減少線間串?dāng)_:
1. ?布置電子裝置內(nèi)部信號線時(shí),盡量將其靠近接地底板,增大對地電容,從而減小串?dāng)_。 2. ?在允許的空間范圍內(nèi),應(yīng)盡量加大信號線與其他線之間的距離,減少線間耦合(3W原則:傳輸線中心距不少于3倍線寬時(shí),則可保持70%的線間電場不互相干擾)。 3. ?盡量縮短平行線長度,增加線間距離,如果可以,在信號線間加布隔離地線。 4. ?機(jī)箱內(nèi)板間的信號線越短越好。 5. ?端子線進(jìn)入印制板,可以在入口處增加RC去耦合電路,以便消除長線的傳輸串?dāng)_。 ?
https://wenku.baidu.com/view/401a805d312b3169a451a4ca.html
https://wenku.baidu.com/view/44c1d0cd27fff705cc1755270722192e453658ae.html?rec_flag=default
SpaceWire接口信號質(zhì)量問題
SpaceWire總線協(xié)議支持2~200M之間速率傳輸,但是筆者在測試中目前無法實(shí)現(xiàn)200M進(jìn)行跨板傳輸,因此通過示波器觀察在200M下D、S信號的質(zhì)量,從而進(jìn)一步確定到底是代碼質(zhì)量存在問題,還是當(dāng)前板卡的硬件質(zhì)量問題。
1、實(shí)驗(yàn)環(huán)境
本文采用的實(shí)驗(yàn)環(huán)境如圖1.1所示,該環(huán)境共有三塊板卡構(gòu)成。其中A、B板卡共同構(gòu)成地檢,實(shí)現(xiàn)將普通的以太網(wǎng)接口轉(zhuǎn)換為專用的SpaceWire接口,C板卡為另外一塊SpaceWire板卡。三塊板卡通過接插件互相連接。
2、實(shí)驗(yàn)過程
由于SpaceWire在鏈路建立的過程中會自動發(fā)送NULL字符,因此只需將板卡上電下載代碼即可進(jìn)行觀察傳輸信號的質(zhì)量。為了更具有說服力,本次實(shí)驗(yàn)選用10M、50M、100M、200M四種傳輸速率進(jìn)行對比,由于是同一套代碼通過在線手動設(shè)置vio中寄存器的配置值實(shí)現(xiàn)不同的傳輸速率(使用VIVADO中VIO模擬CPU接口進(jìn)行在線寄存器讀寫調(diào)試(附源代碼)),因此實(shí)驗(yàn)結(jié)果具有可對比性。
2.1?10M傳輸速率
如圖2.1所示,當(dāng)采用10M傳輸速率時(shí),D、S信號質(zhì)量很好,傳輸中可以正常檢測。
2.2?50M傳輸速率
如圖2.2、2.3所示,當(dāng)傳輸速率為50M時(shí),信號的質(zhì)量有下降的表現(xiàn),但對于FPGA來說,該信號質(zhì)量仍然很不錯,能夠正確的采樣。 ?
圖2.2 A板給C板發(fā)送的DS信號
圖2.3? C板給A板發(fā)送的DS信號
2.3?100M傳輸速率
將發(fā)送和接收速率設(shè)置為100M時(shí),可得如圖2.4和2.5所示結(jié)果。其中圖2.4為A板給C板發(fā)送的DS信號,2.5為C板給A板發(fā)送的DS信號。可以看出,當(dāng)前信號質(zhì)量已經(jīng)較差,但仍能正確識別與傳輸。
圖2.4 A板給C板發(fā)送的DS信號
圖2.5??C板給A板發(fā)送的DS信號
2.4?200M傳輸速率
在本文的實(shí)驗(yàn)環(huán)境下,C板內(nèi)部自己產(chǎn)生數(shù)據(jù)源,速率為200M時(shí),可以正確接收、解析,此時(shí)通過示波器觀察到的D、S如圖2.6所示,可以看出此時(shí)的信號質(zhì)量已經(jīng)很差了。
圖2.6 C板自環(huán)200M下D、S信號采集結(jié)果
但是當(dāng)通過A、B板和C板進(jìn)行通信時(shí),鏈路始終建立不成功,此時(shí)示波器觀察不到對應(yīng)的D、S信號。 ?
3、?實(shí)驗(yàn)結(jié)果
通過上述對比可以發(fā)現(xiàn),當(dāng)傳輸速率為200M時(shí),鏈路中信號質(zhì)量很差,經(jīng)分析顯然不是前面例子中如串?dāng)_造成的,但應(yīng)該是硬件的原因造成的。具體猜測有可能有以下幾點(diǎn)原因造成:1、A板通過FMC接插件和B板相連,此處的走線會對信號質(zhì)量產(chǎn)生較大的影響;2、FPGA程序中對于輸入、輸出管腳的時(shí)序約束仍有缺失;3、FPGA接收時(shí)鐘采用的是D、S異或得到的時(shí)鐘,這部分時(shí)鐘的約束缺失?!?/p>
評論
查看更多