很多人認為,IC/FPGA屬于設計范疇。設計是一個需要設計師自由創作的過程,怎么可能被一些條條框框所局限呢?其實,設計規范化與自由創作之間沒有任何矛盾。它只是制約了那些可能出錯或者低效的行為,令設計思路更加明朗、設計效率得到提高、設計質量充分保證。還有人認為,目前在IC/FPGA設計方面,并沒有類似工業ISO質量管理體系的國際通用標準規范體系,到底有沒有這樣的規范呢?
其實這是一個創造、發展、完善、規范的過程。比如ISO,就是在現代工業發展很多年后,才建立并逐步完善起來,又經過一段時間才大規模的推廣使用。相比較之下,FPGA,甚至整個IT產業,都還屬于正處于高速發展期,尚未完全成熟。其二,任何大型國際通用規范體系的雛形,都是由一些企業內部規范、行業內部規范逐步整合發展而成。目前有少量企業、研究所都有其相應的標準,成為通用規范需要一個過程。
來看一份計數器規范:
逐一考慮初值、加1條件、結束值三要素,且初值必須為0;
使用某一計數值,須同時滿足加1條件;
結束條件必須同時滿足加1條件,且結束值必須是結束值-1形式(計數是從0開始的);
取某個數時,assign形式必須為:(加1條件)&&(cnt==計數值-1);
每輪計數周期結束,計數器必須歸0;
若要限定范圍,推薦>=和<兩種符號;
先寫always段,條件用名字代替;再assign寫加1條件;最后assign寫結束條件;
加1條件必須與計數器嚴格對齊,其它信號一律向計數器對齊;
命名規范。如:add_cnt表示加1條件;end_cnt表示結束條件。
在實際設計中,考慮邊界值通常要認真思考,而且很容易出錯。在這條規則中,需要限定范圍推薦使用“>=”和“<”兩種符號。這里嚴格限制一定是“大于或等于”和“小于”,而不能用“大于”“小于或等于”。如要取前8位數,就取cnt>=0 && cnt<8。
該規則參考編程里的for循環語句。假如要循環8次,for循環的條件通常寫成“i=0;i<8;i++”,前面的0表示開始值,后面的8表示循環次數。當然,也可以寫成“i=0;i<=7;i++”,但是這些數字的意義令人費解。盡管7是從8-1得來,但是多一個-1的思考,完全是畫蛇添足。代碼不夠簡明,而且容易出現混亂。
在這份規范中,每一條原則都有其內在的原因,是從實際工作中凝練而出的,可以用于指導以后工作中通用需求的依據。
規范的意義不止于此,更重要的是對于學習者而言是一條捷徑。在初期,不必過多的去糾結其原因,也就是說你不必去想“規則是怎么來的”,只需要按照規則要求去做,即可避免自己慢慢摸索所需要走的彎路。至于規則的原理,在長期的使用中慢慢就會理解并體會。按照正確的方法在實際中運用,接著在實際工作中反過來加深理解。這是“在戰爭中學習戰爭”的精髓。
-
FPGA
+關注
關注
1626文章
21665瀏覽量
601816
原文標題:FPGA規范化的重要性
文章出處:【微信號:ALIFPGA,微信公眾號:FPGA極客空間】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論