問題解決思路:找到問題來源點,解決方法就多種多樣了。在此筆者推薦三種方法一起用:1. 對PCIE_PERST_N復位信號加濾波;2. 做好整機/模塊的ESD保護;3. FPGA對PCIE_PERST_N信號做判斷后再引入FPGA的PCIe IPCORE復位端,即對PCIE_PERST_N信號做低脈沖時間計數(shù),大于規(guī)定的ms級低電平才判斷為復位,否則則判斷為干擾信號,FPGA控制邏輯不去復位PCIE IPCORE。
3.第二個問題定位及解決過程
該問題的定位比第一個問題定位簡單。因為該問題是在帶電池低電量時必發(fā),在插上交流電時則沒有該現(xiàn)象,因此可以排除軟件和FPGA邏輯問題,因此把問題聚焦在電源上。通過示波器實地測試,發(fā)現(xiàn)在電池低電量且工作于該模式下,電流有突然增大的現(xiàn)象,導致此時電壓跌落,引發(fā)FPGA邏輯時鐘失鎖,由于FPGA邏輯的設計是使用邏輯系統(tǒng)時鐘鎖定信號作為PCIe IPCORE部分邏輯的復位信號,因此此時會導致FPGA的PCIe IPCORE被復位,進而產(chǎn)生PCIe通訊失效的現(xiàn)象?,F(xiàn)在來分析一下整個過程,該時刻波形記錄如下圖所示: