哈哈,前一個(gè)項(xiàng)目終于完成了,費(fèi)了那么多天的勁,確實(shí)也找到了一些設(shè)計(jì)上的缺陷和不合理的地方,在代碼中也找到了幾個(gè)BUG.呵呵. 現(xiàn)在將我在FPGA部分設(shè)計(jì)的一點(diǎn)心得記錄下來(lái).
故障情況: 
外部EEPROM存儲(chǔ)器在設(shè)備上電過(guò)程中,出現(xiàn)數(shù)據(jù)被改寫(xiě)情況.導(dǎo)致數(shù)據(jù)丟失.
故障定位:
對(duì)設(shè)備進(jìn)行反復(fù)的加斷電實(shí)驗(yàn),發(fā)現(xiàn)故障出現(xiàn),用獨(dú)立的讀存儲(chǔ)器代碼將存儲(chǔ)器中相關(guān)字節(jié)讀出通過(guò)串口發(fā)送回計(jì)算機(jī),可看到相關(guān)字節(jié)無(wú)規(guī)律的被改寫(xiě)為FF,但無(wú)規(guī)律可尋.更換存儲(chǔ)器,故障依舊,排除存儲(chǔ)器損壞可能.
使用邏輯分析儀,觀(guān)察上電時(shí)存儲(chǔ)器CE,WE,OE三個(gè)管腳時(shí)序, 用CE信號(hào)做觸發(fā)信號(hào),發(fā)現(xiàn)在正常讀時(shí)序前有時(shí)間長(zhǎng)度為60uS的不規(guī)律脈沖出現(xiàn)在三個(gè)管腳上.
故可懷疑為代碼問(wèn)題或者FPGA問(wèn)題.
檢查讀EEPROM字節(jié)代碼,未發(fā)現(xiàn)問(wèn)題,使用MODELSIM做前仿和后仿,時(shí)序正確.故排除代碼問(wèn)題.
設(shè)置一測(cè)試信號(hào),FPGA在上電完成配置后,即刻將該測(cè)試信號(hào)拉高.
使用示波器觀(guān)察FPGA核電壓建立到該測(cè)試信號(hào)變高間時(shí)間約為720mS,CE第一次動(dòng)作到該測(cè)試信號(hào)變高見(jiàn)時(shí)間為12mS,故可確定與代碼無(wú)關(guān).
最后將故障定位為FPGA上電配置時(shí)管腳電平狀態(tài)翻轉(zhuǎn)造成EEPROM誤動(dòng)作問(wèn)題.
解決方法:
   在FPGA管腳約束時(shí)將EEPROM的CE,WE,OE全部PULL UP .
利用RC電路做一延時(shí)電路,延時(shí)電路加電時(shí)保持2s高電平后變低,利用這一電路來(lái)關(guān)閉EEPROM在上電2S中的寫(xiě)操作.
 
舉一反三:
   利用FPGA,CPLD,ARM,單片機(jī)設(shè)計(jì)的系統(tǒng),設(shè)備上電時(shí)候應(yīng)該對(duì)敏感信號(hào)管腳加以控制,以得到更高的可靠性.
我的解決辦法可能不是最好的,如果大家有更好的解決辦法,留言告訴我,大家共同學(xué)習(xí),共同進(jìn)步.活活 ,睡了.