在系統級不斷追求更高性能的過程中,集成設備制造商 (IDM) 已經精通開發能夠在電氣挑戰環境中高速運行的數字接口。標準接口,如 SPI 和 I2C,提供了一種相對簡單的方法,以可靠和有效的方式互連來自不同供應商的設備。其他類型的接口也是如此。
可以將數字域視為為希望使用“標準”技術快速構建復雜系統的開發人員提供的避風港。事實上,嵌入式行業很大程度上依賴于“正常工作”的基于標準的接口,因為它們為創新提供了框架。當它們不“正常工作”時,可能會導致混亂,尤其是在錯誤解釋錯誤原因的情況下。任何混淆都是可以理解的,因為這些接口在按照規范應用時是健壯和可靠的。底層物理接口固定在硅片中的事實也可以提供保證。
各種形式的系統噪音
信號的任何失真都可以被解釋為噪聲,并且可以合理地假設噪聲在通信環境中最常見;收到的信號不是發送的信號。這種直接相關性比較容易找到,但在某些情況下,因果關系并不那么容易確定。當故障變得間歇性時,挑戰變得更加復雜。
當今的微控制器旨在以最少的配置提供可靠的操作。在串行接口的情況下,這可能包括默認為 I/O 引腳上的高驅動電流,以對抗長 PCB 走線或高容性負載的影響。在某些情況下,這可能導致接口過度驅動,進而導致衍生效應被解釋為錯誤或故障。
例如,串行閃存設備提供了許多高級功能,可確??煽窟\行并允許對設備進行查詢。這可以包括噪聲過濾器、高級自適應編程和管理單元余量的擦除算法。一些制造商還在存儲元件中包含 ECC,以在每次寫入操作時保存額外的元數據,以允許檢測和糾正單個或多個位錯誤,但當噪聲破壞通信接口總線上的基本消息事務時,此 ECC 修復將無濟于事。
SPI 接口上的噪聲可能會被誤解為額外的時鐘脈沖。由于 SPI 是時鐘驅動的接口,因此會產生一些影響,例如命令被忽略、數據被誤解、使用錯誤命令等。但是,噪聲也帶有能量,在某些情況下,這種能量本身會在設備操作中引入錯誤。
電荷泵和過沖
在大多數情況下,數字接口可以容忍信號中的一些過沖或下沖。然而,不應忘記曲線下的能量仍然存在,并且在某些電路中這可能是破壞性的。
一個典型的例子是串行閃存中的電荷泵電路。如果 SPI 總線信號包含大量噪聲,則該信號中的能量可能會傳播到電荷泵并破壞其運行。
閃存中的電荷泵是一項關鍵功能,因為它提供了改變存儲單元偏置所需的功率,并有效地存儲邏輯 1 或 0。寫入/擦除過程是閃存操作的關鍵時刻存儲器,在此期間對電荷泵的任何中斷都可能導致寫入或擦除錯誤,雖然可以檢測到這些錯誤,但它們有可能不會很明顯。
這種錯誤很容易被解釋為閃存設備中的故障。嵌入式設計人員非常了解閃存具有制造商保證的有限數量的讀寫周期這一事實,但可能不太了解的是提供沒有太多過沖或下沖的干凈接口的重要性。
例如,考慮圖 1 中的圖像。它顯示了六個閃存設備的健康單元邊距。在用表示邏輯 1(2V 至 5V)和 0(》6v)的數據編程的單元之間出現了兩種不同的模式。相比之下,圖 2 中的圖像顯示了三個閃存設備的存儲單元余量,這些設備因控制線上的過沖和下沖而遭受數據損壞。
圖 1:該圖顯示了已編程和擦除的閃存的良好單元邊緣分離數據。(來源:阿德斯托)
圖 2:該圖顯示了閃存的單元邊緣分離數據較差,其中 SPI 線路上存在明顯的噪聲。(來源:阿德斯托)
多種因素會影響噪聲水平,例如工作頻率、信號幅度、MCU 驅動水平以及噪聲尖峰中包含的能量。PCB 設計和信號之間的串擾也可能是影響因素。
圖 2 中的數據顯示了過度過沖和下沖對串行接口的影響。下面的圖 3 顯示了這種過沖在實際應用中的樣子。
圖 3:該跡線圖像清楚地顯示了 SPI 線路上存在的過沖和下沖導致 5.65V 的峰峰值電壓,超過了閃存規范中記錄的絕對最大值。(來源:阿德斯托)
這種噪聲的結果是錯誤的設備操作,表現為串行閃存存儲值中的錯誤。最初,錯誤的真正影響被忽略了,因為以較低頻率輪詢狀態寄存器報告的錯誤較少,導致設計人員對故障的根本原因做出錯誤的假設。
確定真正的根本原因
盡管此故障表現為內存故障,但根本原因并非閃存設備。Adesto 工程師通過探測 SPI 信號并識別存在的系統噪聲發現了這一點。雖然噪聲可能部分歸因于 MCU 和閃存之間的 PCB 軌道上存在的阻抗不匹配,但這并不是全部。
噪聲的來源實際上是 MCU 接口,它在上電時默認為高驅動電平。過度驅動足以導致 SPI 線路上的過沖和下沖,在某些情況下可能會被誤解為信號轉換,從而導致讀取或寫入錯誤。然而,在這種情況下,發現過沖具有足夠的能量來破壞 Flash 電荷泵,這反過來又會導致錯誤。
在客戶的設計中,所使用的微控制器為其 I/O 提供了可配置的驅動電流,在啟動時默認為 HIGH。由于應用程序代碼在初始化期間沒有修改此級別,因此它在正常操作中保持高電平。
對于 SPI 總線上的其他設備,這種影響可能并不明顯,因為數字接口通常被設計成穩健的。閃存的敏感特性,需要以更高的頻率運行,特別是電荷泵的運行,使存儲器容易出現過沖/下沖。這導致了最初被誤解為閃存設備故障的錯誤操作。
糾正錯誤
通過固件降低驅動電流可將過沖和下沖有效地減少到零(圖 4),進而導致閃存的無錯誤運行。
圖 4:沒有明顯的過沖,串行閃存的電荷泵能夠正確運行并提供可靠的功能。(來源:阿德斯托)
故障的性質表明,Flash 設備正在盡一切努力補償錯誤的影響,即 SPI 接口上的系統噪聲過大。
也許這里最重要的一點是,原因實際上是所使用的 MCU 的設計特性,它默認為在大多數情況下完全可以接受的操作模式。高驅動輸出和不完美的 PCB 電感相結合造成了導致間歇性故障的條件。通過簡單的固件更改,減少 MCU 上的驅動輸出,解決了這個問題。
這突出了這里真正的教訓:看似真正的組件故障實際上可能是設計中的疏忽。更換存儲設備本來是對最初認為是故障的自然反應,但通過客戶和供應商以及硬件和軟件工程團隊之間的牢固工作關系,找到了實際原因并應用了正確的解決方案。 結果是明顯更好的設計、更高的系統性能和更高的可靠性。
結論
當沒有明顯影響時,系統噪音很容易被消除。在最佳條件下,間歇性錯誤特別難以定位,但當錯誤被誤解時,挑戰變得更加困難。
過沖可能是最不明顯的系統噪聲形式,但正如這里所解釋的,它的影響可能很大。閃存是一種可靠的技術,但它依賴于精心設計的接口。串行接口上??的過多噪聲有可能傳播到電荷泵電路,從而影響編程和擦除電路的操作。這會導致無法預料的特性,這些特性很容易被解釋為設備本身的故障,表現為存儲單元故障,以及不一致或不可靠的編程和擦除操作。
在這種情況下,更換閃存并假設問題已得到解決,可能會導致產品上市時可能會在某個時候失敗。相反,設計人員能夠將編程和擦除一致性提高一個重要因素,有效的耐久性從檢測到錯誤之前不可接受的約 20K 周期躍升至超過 250 萬個周期,沒有錯誤,并且不需要補充錯誤檢測和糾正例程。
現代微控制器提供的可配置性水平既可以看作是幫助,也可以看作是障礙。驅動電流可配置的事實可能是該示例中過沖的原因。然而,能夠降低驅動強度對于解決問題也很有效。
Paul Hill是 Adesto 的高級營銷總監,負責公司的特定應用非易失性存儲器產品線。他在航空電子系統設計等領域擁有超過 30 年的行業經驗;半導體、MCU、內存產品應用;和內存產品營銷。保羅畢業于南安普頓索倫特大學。他擁有多項關于內存產品架構和功能的專利。
Gordon MacNee是一名負責北歐的 Adesto 現場應用經理。他畢業于格拉斯哥大學,在那里他學習了物理學。Gordon 在電子行業工作了 30 多年,在廣泛的細分市場推廣、設計和支持涉及微控制器、有線通信、射頻和內存產品的項目。
-
mcu
+關注
關注
146文章
17173瀏覽量
351638 -
pcb
+關注
關注
4322文章
23120瀏覽量
398481 -
FlaSh
+關注
關注
10文章
1638瀏覽量
148180 -
存儲器
+關注
關注
38文章
7513瀏覽量
163984
發布評論請先 登錄
相關推薦
評論