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