線路的尖峰毛刺造成FPGA工作不正常
使用EP2C35 FPGA 設(shè)計(jì)了多個(gè)串口工作,出現(xiàn)了幾個(gè)問題. 第一次, 由于內(nèi)核電源1.2V 供電不是完整平面,而是帶狀線供電,EP2C35 在代碼容量大的情況下,而且輸入FPGA 信號(hào)變換頻繁, 造成整個(gè)EP2C35 所有的D觸發(fā)器停止翻轉(zhuǎn). 經(jīng)過多次驗(yàn)證, 只要輸入的FPGA 的IO 信號(hào) 太多, 并且有2M 串口信號(hào)進(jìn)入, 任何一個(gè)可能動(dòng)作, 都會(huì)造成FPGA 的時(shí)鐘在D觸發(fā)器停止翻轉(zhuǎn). 查閱Alter 的關(guān)于電源方面的資料
altera 提供此方面的資料顯示, 如果FPGA電源的完整性得不到保證, FPGA可能會(huì)出現(xiàn)意想不到的后果! 聯(lián)想到本次FPGA內(nèi)核電源的PI 特性不好, 估計(jì)出現(xiàn)這個(gè)問題可能是 FPGA 電路板的問題引起.
為了驗(yàn)證上面想法的正確性, 我們對(duì)FPGA的內(nèi)核1.2V電源的平面重新進(jìn)行分割并制板,然后把在上面電源完整行不好造成D觸發(fā)器停止翻轉(zhuǎn)的程序,在新板上測(cè)試,居然發(fā)現(xiàn)問題解決了! 得出一個(gè)結(jié)論,FPGA正??煽康墓ぷ? 需要一個(gè)優(yōu)質(zhì)的電源來保證的.
第二次, 串口模塊在新設(shè)計(jì)板上工作時(shí), 出現(xiàn)一個(gè)怪現(xiàn)象. 單個(gè)串口程序模塊與另外一塊板進(jìn)行串口通信時(shí),串口通信工作正常.然而, 多個(gè)串口模塊在新的FPGA板上工作時(shí),發(fā)現(xiàn)一個(gè)問題, 串口通信居然不正確,頻繁的出錯(cuò). 串口模塊在兩塊相同的EP2C35板上通信, 結(jié)果串口通信模塊正常工作. 問題怪哉乎!
經(jīng)過多次,對(duì)比和比較驗(yàn)證,發(fā)現(xiàn)問題居然還是出現(xiàn)在EP2C35的硬件設(shè)計(jì)上, EP2C35用作輸入IO時(shí),所有IO線并行走線,線路間干擾造成串口通信接收工作不正常. 當(dāng)兩個(gè)EP2C35模塊相互通信工作正常,由于所有的IO翻轉(zhuǎn)時(shí)鐘都是同源,線路間干擾較小.當(dāng)EP2C35模塊與其他FPGA 的串口通信模塊串口通信時(shí),由于時(shí)鐘翻轉(zhuǎn)與別的串口輸入翻轉(zhuǎn)存在相位誤差,產(chǎn)生高頻干擾(線路間),引起串口通信不正常工作
找到問題存在,解決這個(gè)問題方法:1.增加PCB層數(shù),輸入FPGA的IO線特別處理,增加間距和線寬;2.輸入FPGA IO 口線串電阻,加電容,進(jìn)行高頻濾波;3. 軟件濾波.