文章目錄
-
- 1.1 什麼是Verilog HDL?
- 1.2子產品
- 1.3門級模組化
- 1.4開關級模組化
參考:Verilog數字VLSI設計教程
硬體描述語言Verilog
Verilog HDL數字設計與綜合
Verilog HDL 數字內建電路進階程式設計
1.1 什麼是Verilog HDL?
Verilog是一種硬體描述語言,可通過對數字電路和系統的語言描述,對數字電路進行設計和驗證。其主要作用是:數字內建電路設計者可以通過HDL,根據電路結構化特點,采用階層化的設計結構,将邏輯功能用電路的方式實作。
目前,Verilog HDL和VHDL是主要的兩種HDL。
Verilog的限制是隻能描述數字系統,而無法描述模拟系統
Verilog HDL相比于C語言具有以下特點:
并發性
結構化
過程化語句
時序
1.2子產品
子產品是Verilog HDL設計的基本單元結構
下圖是Verilog子產品的基本組成:
Verilog一共有三種模組化方式:
(1)資料流模組化
(2)行為級模組化
(3)結構化模組化
根據所調用子子產品的不同抽象級别,可以将子產品的結構描述方式分成三類:
(1)子產品級模組化
(2)門級模組化
(3)開關級模組化
子產品調用方式:
舉個例子:
功能子產品
module and_2(a,b,c);
input a,b;
output c;
assign c=a&b;
endmodule
子產品調用:
module logic(in1,in2,q);
input in1,in2;
output 1;
and_2 U1(in1,in2,q);
endmodule
如果在同一個子產品在目前子產品被調用多次時,可以用如下方式表達:
子產品重複調用
子產品名<參數值清單>執行個體名(端口名清單),
<參數值清單>執行個體名(端口名清單),
......
<參數值清單>執行個體名(端口名清單);
注意:隻用最後的末尾為;其餘皆為,
子產品陣列調用
舉個例子:
module AND(ina,inb,andout);
input ina,inb;
output andout;
assign andout=ina&inb;
endmodule
module array1(out,a,b);
input [3:0] a,b;
output [3:0] out;
wire [3:0] out;
AND U1(out[3],a[3],b[3]),
U2(out[2],a[2],b[2]),
U3(out[1],a[1],b[1]),
U4(out[0],a[0],b[0]);
endmodule
module array2(out,a,b);
input [3:0] a,b;
output [3:0] out;
wire [3:0] out;
AND AND_ARREY [3:0] (out,a,b);
endmodule
子產品端口對應方式
1.端口位置對應方式
2.端口名稱對應方式
子產品名 <參數值清單>執行個體名(.端口名1(<信号1>),
.端口名2(<信号2>),
.端口名3(<信号3>),
......
.端口名n(<信号n>)
);
一般在工程中采用端口名稱對應方式的較多,以確定程式的可靠性
3.端口位寬未比對
(1)未連接配接端口
子產品名<參數值清單>執行個體名(端口名清單),
<參數值清單>執行個體名( ),
......
<參數值清單>執行個體名(端口名清單);
(2)不同的端口位寬(低端位置對齊,右對齊)
1.3門級模組化
1.多輸入門元件調用
2.多輸出門元件調用
3.三态門元件調用
1.4開關級模組化
1.MOS開關(nmos,pmos,cmos)
nmos/pmos 執行個體名 (out,data,control);
cmos 執行個體名 (out,data,ncontrol,pcontrol);
2.雙向開關
tran 執行個體名 (inout1,inout2);
tranif0/tranif1 執行個體名 (inout1,inout2,control);