FPGA Verilog语言常用语法
本文介紹FPGA Verilog語言語法知識。
1. 邏輯值,Verilog語言中有四種邏輯值,分別代表4中邏輯狀態,邏輯1:高電平狀態、邏輯0:低電平狀態、邏輯X:不定狀態、邏輯Z:高阻狀態。
2. 標志符,Verilog語言中的標志符用于定義模塊名、端口號、信號名等,注意標識符的定義是區分大小寫的。
3. 數字的基數表示法:Verilog語言常用基數表示法表示數字,例如4’b1010表示二進制數據1010,其中4表示數據占4個bit位,4’h9表示16禁止數字9,4'o8表示8進制數字8,4‘d2表示10進制數字2.
4. 數據類型,Verilog語言中數據類型包括,寄存器類型、網線類型、參數類型三種,其中寄存器類型表示一個數據存儲單元,只能在always語句和initial語句中被賦值,常用寄存器類型是reg,使用方法如下:reg [31:0] delay;表示一個32位寄存器。網線類型表示邏輯單元之間的物理連線,常用的是wire,使用方法如下:wire [7:0] data; 參數類型表示一個常量,例如parameter STATUS=1;
常用于表示狀態機的狀態。
5. 運算符 ,Verilog算術運算符:+ 、-、*、/、%? 關系運算符:> 、< 、== 、>=、<= 、!=? 邏輯運算符:&& 、||、!條件運算符:
?: 位運算符:^、&、|、~移位運算符:<<、>>拼接運算符{}。
6. 運算符優先級:
7. 常用關鍵字:
8. 堵塞賦值(=)與非堵塞賦值(<=),堵塞賦值只有在上一條賦值語句結束時,下一條語句才會執行,非堵塞賦值,在一個時鐘周期下,位于同一個begin end 邏輯塊內的表達式全部被賦值。一般堵塞賦值用于assign語句和不帶時鐘的assign語句,非堵塞賦值用于帶時鐘的assign語句,即組合邏輯電路使用堵塞賦值,時序邏輯電路使用非堵塞賦值。
9.always與assign語句,assign 表示組合邏輯電路的起始,always語句,當輸入帶時鐘信號時,表示時序邏輯電路,不帶時鐘信號時表示組合邏輯電路,復雜的組合邏輯電路推薦使用always.
10.latch? 容易引發毛刺,應該盡量規避。latch只在組合邏輯電路中會出現,比如不帶是時鐘信號的always語句中,如果if? 結構缺少else 或 case 結構缺少default。
11.? 凡是在initial語句和always語句中被賦值得變量一定是reg類型,凡是在assign語句中被賦值得變量一定是wire類型。
12. 在仿真測試文件中,輸入信號一定是reg類型,輸出信號一定是wire類型。
13.對于組合邏輯電路使用阻塞賦值(=)例如assign語句和不帶時鐘得always語句。對于時序邏輯電路使用非阻塞賦值(<=)例如帶時鐘得assign語句。
14. 在仿真測試文件中,時鐘信號的初始值為1,且使用阻塞賦值,注意非阻塞賦值只能用于對寄存器變量進行賦值操作,因此只能用于initial和always語句中,不能用于assign語句中。
15.編寫時序邏輯電路,使用帶時鐘的always語句,要使用非阻塞賦值,編寫組合邏輯電路,推薦使用不帶時鐘的always語句,要使用阻塞賦值,一般建議在always語句中一次只對一個變量賦值。?
?
總結
以上是生活随笔為你收集整理的FPGA Verilog语言常用语法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: art-template提取某个重复字段
- 下一篇: 计算机组成原理知识点总结(第3篇 第6章