FPGA學習心得分享(二)

2021-09-25 04:01:18 字數 1506 閱讀 7273

掌握一門程式語言的最好方法是漸進式刷題

verilog語法原則要注意乙個reg最好只在乙個always塊裡進行賦值操作

if-else或case等條件選擇語句需要完備的條件,防止綜合出不必要的latch(關於 default和else的必要性——組合邏輯的case最好要有default,因為如果case不全,就會產生鎖存器。及時case都包含全了,但是還是建議加上default,因為萬一哪天改**把某個case給去掉了,就會產生隱含的latch,所以,最好加上default。對組合邏輯來講,case的default和if…else是需要特別注意要有default和else的。對時序邏輯來講,如果預設情況是什麼都不做的話,default和else是可以不要的。要跟不要沒有什麼區別)

reg或wire變數的位數定義盡量和需要的最小位數一致,減少無用bit綜合後的警告

減少觸發器之間的組合邏輯長度,縮短組合邏輯造成過長的時延影響時序的準確性

fpga 未標明位數的變數,如a <= 3;,預設"3"為32bit,因此要養成標明位數的好習慣

verilog +號 和或邏輯不可混用

想要對時鐘進行雙邊沿觸發:

①使用電平敏感觸發,能夠實現時鐘的雙邊沿觸發,但是一般不推薦這種方法觸發,這種方法雖然在邏輯上是可行的,但verilog終歸不是c一樣的高階語言,它的每段**都需經過綜合佈線實現的,因此在用verilog實現演算法的時候還需考慮**書寫風格的合理性,而對時鐘訊號使用電平觸發,很有可能在某些情況下就不能滿足時序。

②將上公升沿和下降沿分成兩個always塊來寫

區分邏輯運算子和按位運算子:&&與&、!與~、|與||

保持整體的同步設計不容易出現時序問題,在同一設計裡使用多個時鐘來驅動的非同步設計功夫不到家別採用

verilog中有四種邏輯數值:邏輯0,邏輯1,x:未知態,z高阻態;其中x、z是不區分大小寫的;在verilog中,表示式和邏輯門輸入的z通常解釋為x,也就是不定態(無關態),不能確定這個邏輯值是1還是0。實際電路中只有0或者1,沒有x和z,當你給電路中設定為x或z時,由編譯軟體或者綜合軟體等eda軟體決定電路最終是0或者1

fpga reset訊號設定注意:reset 可能會導致取樣丟失(鎖存),因此每乙個always塊裡的reset情況要對該快裡的reg或wire全覆蓋

程式可前**不一定可以綜合,設計布局佈線**正確可能在晶元上跑起來不正確

關於verilog變數索引:只要合成器能夠確定所選位的寬度是恆定的,向量索引就可以是可變的。特別是,使用變數索引從向量中選擇一位將起作用。但是有例外:因為一次只能選擇一位

例項連線要注意:模組a->模組b,模組a的輸出會滯後一些,總之連線後訊號會有輸出滯後而實際上不會像**訊號一樣和時鐘對齊,可以通過錯開半個時鐘週期解決

cocos2d x學習心得分享(二)

www.unitymanual.com 遊戲蠻牛 class helloworld public cocos2d cclayer 1.這是hello world的標頭檔案,裡面包含3個函式。2.create func 函式是cocos2d的乙個自動 機制,若不寫程式會報錯。ccscene hello...

FPGA學習心得 01

例 多 少位的什 麼進製數 4 d 8 4位 的十進位制 數8 例 多少位的什麼進製數 rightarrow 4 d8 4位的十進位制數8 例 多少位的 什麼進製 數 4 d8 4 位的十進 制數8 如果將 一撇讀作漢字 的 的的,verilog的數字表示語法符合口頭語言的習慣。verilog作為硬...

四色原型的學習心得分享

在討論四色原型之前,我想先狗膽討論下什麼是我所認識的 世界 我覺得世界由物質及其相互作用組成。物質 是不以人的意識為轉移的客觀存在 而 相互作用 則是我們平時所理解的各種活動,比如人與人之間的交談,打架,等等。還有一點需要特別分析一下,那就是 何為客觀 我覺得客觀是乙個相對的概念,可以這樣簡單的理解...