楊宏亮,金炎勝,王剛毅
(1.穆棱卷煙廠,黑龍江穆棱157500; 2.哈爾濱工業大學電子與信息工程學院,黑龍江哈爾濱150001)
隨著EDA技術的不斷發展,FPGA在各個領域都得到了廣泛的應用,而在這些FPGA應用中,絕大部分都使用到狀態機的方法,狀態機對于每個各自的設計都起著至關重要的作用,一旦狀態機出現卡死,也就是出現了通常說的“狀態機跑飛”現象,整個設計將無法繼續工作。鑒于狀態機的設計的重要性,有必要對狀態機的安全性進行深入的研究。
本文的研究內容如下:首先,從狀態機編碼討論狀態機出現卡死的可能性;然后,詳細分析狀態機“跑飛”現象的原因,并提供幾種解決狀態機“跑飛”問題的方法;最后,深入研究了EDA工具軟件Quartus II中“Safe State Machine”選項選中后對狀態機電路帶來的影響。
在對狀態機進行編碼的時候,總是不可避免地會出現大量的剩余狀態[1],即未被定義的編碼組合,這些編碼組合由于在狀態機正常運行時是不需要出現的,所以通常被稱為非法狀態。
正是由于非法狀態的存在,為狀態機跑飛現象提供了可能性。
這個原因比較容易理解,如果最后的產品工作環境比較惡劣,比如工作在太空中,眾所周知,太空中存在著各種粒子,受輻射程度很高,FPGA中的存儲單元就有可能因為受到各種粒子的撞擊而改變其中存儲的值[1]。如果狀態機中的狀態存儲器中的一位突然改變了,那么狀態機就有可能進入到非法狀態。……