日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

verilog小结

發布時間:2023/12/15 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 verilog小结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1B4AAP346HJXSA9EWKU942M82
是看一份資料小結的,圖傳不上來,以后能有個人空間了再傳吧,(北航夏宇聞的書不錯)。


一:基本
Verilog中的變量有線網類型和寄存器類型。線網型變量綜合成wire,而寄存器可能綜合成WIRE,鎖存器和觸發器。


二:verilog語句結構到門級的映射
1、連續性賦值:assign
連續性賦值語句邏輯結構上就是將等式右邊的驅動左邊的結點。因些連續性賦值的目標結點總是綜合成由組合邏輯驅動的結點。Assign語句中的延時綜合時都將忽視。


2、過程性賦值:
過程性賦值只出現在always語句中。


阻塞賦值和非阻塞賦值就該賦值本身是沒有區別的,只是對后面的語句有不同的影響。


建議設計組合邏輯電路時用阻塞賦值,設計時序電路時用非阻塞賦值。


過程性賦值的賦值對象有可能綜合成wire,latch,和flip-flop,取決于具體狀況。如,時鐘控制下的非阻塞賦值綜合成flip-flop。


過程性賦值語句中的任何延時在綜合時都將忽略。


建議同一個變量單一地使用阻塞或者非阻塞賦值。


3、邏輯操作符:
邏輯操作符對應于硬件中已有的邏輯門


4、算術操作符:
Verilog中將reg視為無符號數,而integer視為有符號數。因此,進行有符號操作時使用integer,使用無符號操作時使用reg。


5、進位:
通常會將進行運算操作的結果比原操作數擴展一位,用來存放進位或者借位。如:
Wire [3:0] A,B;
Wire [4:0] C;
Assign C=A+B;
C的最高位用來存放進位。


6、關系運算符:
關系運算符:<,>,<=,>=
和算術操作符一樣,可以進行有符號和無符號運算,取決于數據類型是reg ,net還是integer。


7、相等運算符:==,!=
注意:===和!==是不可綜合的。
可以進行有符號或無符號操作,取決于數據類型


8、移位運算符:
左移,右移,右邊操作數可以是常數或者是變量,二者綜合出來的結果不同。


9、部分選擇:
部分選擇索引必須是常量。


10、BIT選擇:
BIT選擇中的索引可以用變量,這樣將綜合成多路(復用)器。
11、敏感表:
Always過程中,所有被讀取的數據,即等號右邊的變量都要應放在敏感表中,不然,綜合時不能正確地映射到所用的門。


12、IF:
如果變量沒有在IF語句的每個分支中進行賦值,將會產生latch。如果IF語句中產生了latch,則IF的條件中最好不要用到算術操作。Case語句類似。Case的條款可以是變量。


如果一個變量在同一個IF條件分支中先贖值然后讀取,則不會產生latch。如果先讀取,后贖值,則會產生latch。


13、循環:
只有for-loop語句是可以綜合的。


14、設計時序電路時,建議變量在always語句中賦值,而在該always語句外使用,使綜合時能準確地匹配。建議不要使用局部變量。


15、不能在多個always塊中對同一個變量贖值


16、函數
函數代表一個組合邏輯,所有內部定義的變量都是臨時的,這些變量綜合后為wire。


17、任務:
任務可能是組合邏輯或者時序邏輯,取決于何種情況下調用任務。


18、Z:
Z會綜合成一個三態門,必須在條件語句中賦值


19、參數化設計:
優點:參數可重載,不需要多次定義模塊


四:模塊優化
1、資源共享:
當進程涉及到共用ALU時,要考慮資源分配問題。可以共享的操作符主要有:關系操作符、加減乘除操作符。通常乘和加不共用ALU,乘除通常在其內部共用。


2、共用表達式:
如:C=A+B;
D=G+(A+B);
兩者雖然有共用的A+B,但是有些綜合工具不能識別.可以將第二句改為:D=G+C;這樣只需兩個加法器.


3、轉移代碼:
如循環語句中沒有發生變化的語句移出循環.


4、避免latch:
兩種方法:1、在每一個IF分支中對變量賦值。2、在每一個IF語句中都對變量賦初值。


5:模塊:
綜合生成的存儲器如ROM或RAM不是一種好方法。最好用庫自帶的存儲器模塊。


五、驗證:
1、敏感表:
在always語句中,如果敏感表不含時鐘,最好將所有的被讀取的信號都放在敏感表中。


2、異步復位:
建議不要在異步時對變量讀取,即異步復位時,對信號贖以常數值。

總結

以上是生活随笔為你收集整理的verilog小结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。