安全行為和非安全行為
由于條件語句的描述在很多情況下,導致生成鎖存器。這些鎖存器將上游的毛刺傳輸至下游,并且鎖存器的使能信號(源自組合電路)也帶有毛刺,引起的冒險競爭,導致下游邏輯出現錯誤的捕獲,這種現象稱為非安全行為。
一旦非安全行為發生錯誤,典型的特征是:前仿正確,后仿不正確,下板不正確,而且很難以找到問題所在。
因此,現代EDA,要求寫安全行為的HDL,一旦出現非安全行為,大多數工具直接給出警告。又由于非安全行為的根源在鎖存器,因此,“消滅鎖存器”為EDA綜合編譯和時序收斂過程一個必然步驟。也就是說,一旦生鎖,將給出警告。
安全行為的編碼原則:
1.開節點輸出的信號,必須滿足:“全條件”+“全線與”
2.閉節點輸出的信號,這些信號中的條件譯碼信號,必須寫“全條件”+“全線與
安全行為編碼例子:摩爾流水燈
設計需求
開發板的4個led燈,輪流點亮
每一個燈亮200ms,然后熄滅50ms
任何時候,按下start_n,流水燈開始運行
任何時候,按下stop_n,流水燈停止運行,全部熄滅
二段摩爾狀態機
工作時鐘clk頻率為100KHz(10us)
頂層框圖
頂層架構
ET:使能信號觸發器,在start_n為真時觸發ena為真,在stop_n為真時觸發ena為假。復位rst_n為真觸發ena為假。
CNT:cnt_en為假,cnt清零;cnt_en為真,cnt加一計數
TS:shift_rst_n為真,給出temp的初始值4’b1110;shift_en為真,temp左移一次
引用TPS:
狀態轉移圖(非安全行為)
狀態轉移圖(安全行為)
編輯:jq
-
led燈
+關注
關注
22文章
1592瀏覽量
107836 -
eda
+關注
關注
71文章
2708瀏覽量
172868 -
編碼
+關注
關注
6文章
935瀏覽量
54760 -
鎖存器
+關注
關注
8文章
904瀏覽量
41444
原文標題:FPGA學習:全行為和非安全行為
文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設計論壇】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論