天天看點

Verilog學習筆記(01)

文章目錄

    • 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學習筆記(01)

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門級模組化

Verilog學習筆記(01)

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);