天天看點

Verilog HDL數字設計與綜合(一)Verilog基礎知識,重要設計流程及設計思路

Verilog HDL數字設計與綜合(一)Verilog基礎知識,重要設計流程及設計思路

層次模組化的概念

設計方法學

對應有兩種設計方法:自底向上的設計方法和自頂向下的設計方法

對于自頂向下而言

我們首先定義頂層功能塊,進而分析需要哪些構成頂層子產品的必要的子子產品,然後進一步對各個子子產品進行分解,直至達到無法進一步分解的底層功能塊

Verilog HDL數字設計與綜合(一)Verilog基礎知識,重要設計流程及設計思路

對自底向上的設計方法

我們首先對現有的功能塊進行分析,然後使用這些子產品來搭建規模大一些的功能塊,如此繼續直至頂層子產品。

Verilog HDL數字設計與綜合(一)Verilog基礎知識,重要設計流程及設計思路

子產品

Verilog使用子產品(module)的概念來代表一個基本的功能塊。

一個子產品可以是一個元件,也可以是低層次子產品的組合。

子產品通過接口(輸入和輸出)被高層的子產品調用,但隐藏了内部的實作細節。這樣設計者就可以友善的對某個子產品進行修改,而不影響其他部分。

Verilog HDL數字設計與綜合(一)Verilog基礎知識,重要設計流程及設計思路

子產品的描述方法有下列幾個層次:

Verilog HDL數字設計與綜合(一)Verilog基礎知識,重要設計流程及設計思路

Verilog允許設計者在一個子產品裡混合使用多個抽象層次。

一般來說,抽象的層次越高,那麼設計的靈活性和工藝無關性就越強,随着抽象層次的降低,靈活性和工藝無關性都會變差,微小的調整可能也意味着對設計的多處更改。

這就類似于C語言和彙編語言的對比,像C語言這樣的進階語言的好處就是編碼簡單并且可移植性好,然而如果使用彙編語言,則需要針對特定的計算機,移植到其他計算機的時候可能出現問題。

子產品執行個體化

子產品聲明就像一個模闆,使用這個模闆就可以建立實際的對象,當一個模闆被調用的時候,Verilog會根據模闆建立出來唯一一個子產品對象,從模闆建立對象的過程就稱為執行個體化

注意:在Verilog之中,不允許在子產品聲明中嵌套子產品,不要将子產品定義和子產品聲明相混淆。 子產品聲明隻是說明了子產品如何工作,期内不得結構和外部接口,對子產品的調用必須通過其執行個體化來完成。

Verilog HDL數字設計與綜合(一)Verilog基礎知識,重要設計流程及設計思路
在一個子產品定義的内布不能嵌套定義其他子產品
Verilog HDL數字設計與綜合(一)Verilog基礎知識,重要設計流程及設計思路

邏輯仿真的構成

在設計完成之後,還必須要對設計的正确性進行測試,我們對設計子產品增加激勵,通過檢查其輸出來檢驗功能的正确性;

将激勵塊和設計塊分開寫是一種良好的設計風格

激勵塊同樣是用Verilog語言來寫的

激勵塊的設計有兩種模式:

(1)在激勵塊中直接調用并直接驅動設計塊,頂層塊就是激勵塊

Verilog HDL數字設計與綜合(一)Verilog基礎知識,重要設計流程及設計思路

(2)在一個虛拟的頂層子產品裡調用激勵塊和設計塊,激勵塊和設計塊之間通過接口進行互動,激勵塊驅動信号d_clk和d_reset,這兩個信号則連接配接到設計塊的clk和reset輸入端口,激勵塊同時還要檢查和顯示信号c_q,這個信号連接配接到設計塊的輸出端口q,頂層子產品的作用隻是調用激勵塊和設計塊

Verilog HDL數字設計與綜合(一)Verilog基礎知識,重要設計流程及設計思路

執行個體:脈動進位子產品

Verilog HDL數字設計與綜合(一)Verilog基礎知識,重要設計流程及設計思路

在上面子產品調用的時候使用了四個T觸發器子產品

Verilog HDL數字設計與綜合(一)Verilog基礎知識,重要設計流程及設計思路

T觸發器子產品之中又調用了D觸發器子產品

Verilog HDL數字設計與綜合(一)Verilog基礎知識,重要設計流程及設計思路

我們按自頂向下的方法,對所有的子產品都進行了定義,完成了設計塊的設計

下面來處理激勵塊:

Verilog HDL數字設計與綜合(一)Verilog基礎知識,重要設計流程及設計思路

激勵塊設計好了之後,就可以通過仿真來驗證其功能了,如下圖所示:

Verilog HDL數字設計與綜合(一)Verilog基礎知識,重要設計流程及設計思路

小結

(1)用于數字電路設計的兩種方法:自頂向下和自底向上的方法

(2)子產品是Verilog的基本單元,必須要将子產品和子產品執行個體區分開來

(3)仿真有兩個不同的組成部分,設計塊和激勵塊,激勵塊用于測試設計塊,對設計塊施加激勵通常會有兩種不同的模式。

繼續閱讀