本文介紹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按鍵消抖
硬體 鋯石a4開發板,altera ep4ce10f17c8 語言 verilog hdl 原理 機械式按鍵大概有20ms的抖動,所以檢測到按鍵變化後等20ms再判斷一次,如果鍵值相同才視為有效 頂級模組按鍵切換led顯示 module key led,key,clock,reset input c...
FPGA verilog學習筆記(二)命名規則
學習 zynq soc 修煉秘籍 記錄筆記 1 頂層檔案 物件 功能 top 例 video oneline top 2 邏輯控制檔案 介於頂層和驅動層檔案之間 物件 ctr 例 ddr ctr.v 3 驅動程式命名 物件 功能 dri 例 led dri.v uart rxd dri.v 4 引數...
從零開始學FPGA Verilog基礎語法
verilog hdl hardware description language 是在用途最廣泛的c語言的基礎上發展起來的一種硬體描述語言,具有靈活性高 易學易用等特點。verilog容易掌握,只要有c語言的程式設計基礎,通過比較短的時間,經過一些實際的操作,可以在1個月左右掌握這種語言。我們先看...