Verilog語言簡息

2020-08-15 13:11:21

Verilog語言簡息:
verilog是硬體描述語言,在編輯好下載到FPGA(可程式化邏輯閘陣列)之後,會生成電路,所以Verilog語言描述的行爲是可以併發執行的。
型別:
1:Verilog的原始檔主要由*,V檔案或者*.h檔案組成。
2:*。V檔案一般由一個或多個模組(module),或函數(functivn)組成。
3:一般情況下,一個模組,一個檔案,也可以多個模組使用一個檔案的情況。
4:.h檔案一般情況下用來儲存全域性的定義,是Verilog語法中的標頭檔案,在使用前一般需用include關鍵字包入。
組成要素:
*埠定義
*I/O說明
*內部信號宣告
*功能定義
Verilog抽象級別:
*系統級
  *演算法級
*RTL級
*門級
*開關級
其中系統級,演算法級屬於行爲級。
FPGA可分爲LUT,D觸發器,邏輯閘,PLL等基本元素組成。
硬體和軟體描述語言的區別:
硬體描述語言:順序執行,並行處理,時序描述。
軟體描述語言:順序執行,並行處理。
Verilog設計流程:
*設計輸入
*選定器件
*綜合編譯
*分配管腳
*綜合編譯
*邏輯佈線
*時序分析
*下載偵錯
FPGA基本結構邏輯單元,是FPGA的基本組成:
*查詢表
*D觸發器
*2—1選擇器
*邏輯電路
Verilog數據型別:
暫存器數據型別各類很多,如reg(常用),integer,real等。
*reg_(a0); //定義一個位寬爲1bit的暫存器a0。
*reg_ [3:0](a1); //定義一個位寬爲4bit的暫存器a1
*reg
[3:0]_a2,a3,a4; //定義3個位寬爲4bit的暫存器
鎖存器:
always@(enable)
If(enable) a<=d; //電平觸發
觸發器:
always@(posedge CLK)
If (enable) q<=d;
(reg___register)
Posedge==positive edge…….risingedge
always@(敏感表)
敏感表:由敏感量組成,當敏感量的值發生變化,程式將會執行一遍。
線網數據型別,種類很多如:(wire常用的),tri,wand等。
賦值方式:wire,a=1’b1;
Assign,b=4;b1010;
參數數據型別:(就是一個常數)
Parameter ADDR_BUS=8’d14; //定義地址匯流排位寬爲14;
Localoaram DATA_BUS=8’d10; //定義數據總線位寬爲14;
什麼是常數:常數的定義便是不可改變。
Verilog的模組例化:
層次電路設計,模組例化
Reg,wire型別可以傳遞(賦值)給下一層的input;parameter也可以的作爲常數傳給下一層的input.
reg不能遞(賦值)給下一層模組output
如果wire已經被賦值,那麼這個信號不能連線下一層的output
原則:兩個或者更多個output不能連線在一起,除非都是高阻輸出。

餓了(下次再寫)