1. 程式人生 > >【轉】Verilog HDL常用建模方式——《Verilog與數字ASIC設計基礎》讀書筆記(四) Verilog HDL常用建模方式——《Verilog與數字ASIC設計基礎》讀書筆記(四)

【轉】Verilog HDL常用建模方式——《Verilog與數字ASIC設計基礎》讀書筆記(四) Verilog HDL常用建模方式——《Verilog與數字ASIC設計基礎》讀書筆記(四)

Verilog HDL常用建模方式——《Verilog與數字ASIC設計基礎》讀書筆記(四)

Verilog HDL的基本功能之一是描述可綜合的硬體邏輯電路。所謂綜合(Synthesis)是指將Verilog HDL程式、原理圖等設計輸入翻譯成由與門(and)、或門(or)、非門(not)等基本邏輯單元組成的門級連線,並根據設計目標和要求對門級邏輯連線進行優化,得到優化的門級網表文件。

  Verilog HDL主要有三種建模方式:

 

  4.1結構級建模

  結構級建模包括門級建模和分層建模兩種情況。門級建模就是將邏輯電路圖用Verilog HDL規定的文字語言表示出來,即呼叫Verilog HDL中內建的基本門級元件(Gate Level Primitives,門級源語)描述邏輯圖中的元件以及元件之間的連線關係。分層次就是將一個數字系統劃分為多個組成模組,再分別對每個模組建模,然後將這些模組組合成一個總模組,完成所需的功能。

     Verilog HDL中內建了12個基本門級元件模型,門級元件的輸出、輸入必須為網型別的變數。當使用這些元件邏輯模擬時,模擬軟體會根據程式描述給每個元件中變數分配邏輯0,邏輯1,不確定態x和高阻態z這4個值之一。

  這些門可分為:多輸入門,多輸出門,三態門。

 

  4.2資料流建模

  對於基本單元邏輯電路,使用Verilog HDL提供的門級元件模型描述電路非常方便,但隨著電路複雜性的增加,當使用的邏輯閘較多時,使用Verilog HDL門級描述的工作效率就很低。資料流建模的抽象級別介於門級和行為級之間,它是行為級建模的一種形式,組合電路的邏輯行為最好使用資料流建模方式。

  資料建模使用的基本語句是連續賦值語句,連續賦值語句用於對wire型變數進行賦值,它由關鍵詞assign開始,後面跟著運算元和運算子組成的邏輯表示式。

  例如:

  wire  a,b,sel,out;  //declare four wires variables

  assign out = (a& (~b)) | (b & sel);  //a continuous assignment

  連續賦值語句的執行過程是:只要邏輯表示式右邊變數的邏輯值發生變化,則等式右邊表示式的值會立即被計算出來並賦給左邊的變數。注意:在assign語句中,左邊變數的資料型別必須是wire型。

 

  4.3行為級建模

  行為級建模就是以抽象的形式描述數字邏輯電路的功能和演算法,在Verilog HDL 中,行為級建模主要使用由關鍵詞initialalways定義的兩種結構型別的描述語句。一個模組內部可以包含多個initial或always語句,模擬時這些語句同時執行,即與它們在模組內部排列的順序無關,模擬都從0時刻開始執行。initial語句主要是一條面向模擬的過程語句,不能用來描述硬體電路的功能。

  在always結構型語句內部有一系列過程賦值語句,用來描述電路的行為(功能)。過程性賦值語句包括在結構型的語句內部使用的邏輯表示式、條件語句(if-else)、多路分支語句(case-endcase)和迴圈語句等。

  順序語句塊就是由塊識別符號begin...end保衛界定的一組行為描述語句,其作用是:相當於給塊中的這組行為描述語句進行打包處理,使之在形式上與一條語句一致。在這個模組內部的各條語句按照書寫的先後順序依次執行。在Verilog HDL中,可以給每個語句塊取一個名字,方法是:在關鍵詞begin後面加上一個冒號,之後給出名字即可。取了名字的塊被稱為有名塊