本節通過硬體描述語言Verilog HDL對二十進位編碼器的描述,介紹Verilog HDL程式的基本結構及特點。 二十進位編碼器及Verilog HDL描述 二十進位編碼器是數字電路中常用的電路單元,它的輸入是代表0~9這10個輸入端的狀態信息。輸入信號為高電平時,輸出相應的BCD碼,因此也稱為1 ...
本節通過硬體描述語言Verilog HDL對二十進位編碼器的描述,介紹Verilog HDL程式的基本結構及特點。
二十進位編碼器及Verilog HDL描述
二十進位編碼器是數字電路中常用的電路單元,它的輸入是代表0~9這10個輸入端的狀態信息。輸入信號為高電平時,輸出相應的BCD碼,因此也稱為10線4線編碼器。其功能表及電路符號如圖3-1所示。
【例3-1】利用Verilog HDL對二十進位編碼器進行設計。
Verilog HDL程式的基本構成
從例3-1可以看出,一個完整的Verilog HDL程式由3個基本部分構成,分別是:模塊埠定義部分、信號類型說明部分和邏輯功能描述語句部分。其結構圖如3-2所示。
模塊埠定義部分
對於硬體描述語言來說,一個程式代表了一個具有某種邏輯功能的電路,模塊埠定義部分描述了該電路的介面部分的信息,即輸入輸出信號的信息。
模塊埠定義部分的語法結構如下:
module模塊名(埠信號1,埠信號2,埠信號3,埠信號4,……);
input[width:0]埠信號1,埠信號3,……;
output[width:0]埠信號2,埠信號4,……;
程式以關鍵詞module引導,模塊名是設計者對於設計的電路所取的名字,在模塊埠定義的第1行列出了所有進出該電路模塊的埠信號,在第2行和第3行中定義了各埠信號流動方向。流動方向包括輸入(input)、輸出(output)和雙向(inout),[width:0]表示信號的位寬,如果位寬沒有特別說明,則系統預設為1位寬度。
【例3-2】模塊埠定義舉例。
信號類型說明部分
在Verilog HDL語法中,信號共有兩種數據類型,分別為:網線類型(net型)和寄存器類型(register型)。在信號類型說明部分除了要對輸入/輸出埠的信號類型進行說明之外,還要對程式中定義的中間量的數據類型進行說明。
信號類型說明部分的語法結構如下:
wire[width:0]信號1,信號2,……;
reg[width:0]信號3,信號4,……;
【例3-3】信號類型說明舉例。
邏輯功能描述語句部分
邏輯功能描述語句部分對輸入/輸出信號之間的邏輯關係進行了描述,是Verilog HDL程式設計中最主要的部分,在電路上相當於器件的內部電路結構。在Verilog HDL語言中,常用的邏輯功能描述語句可以分為以下3種:
例化語句:調用已進行元件化封裝的程式。這種語句常應用於層次化設計的頂層文件設計中。
【例3-4】例化語句舉例。
該語句分別調用了一個非門和與門電路模塊。
連續賦值語句:描述信號之間簡單的賦值關係。在連續賦值語句中,右邊表達式使用的操作數無論何時發生變化,右邊表達式都重新計算。這類描述通常以關鍵詞assign引導。
【例3-5】連續賦值語句舉例。
該語句描述了輸出信號與輸入信號的賦值關係。
過程語句:以關鍵詞always、initial等關鍵詞引導的語句,描述了一定條件下信號之間的賦值關係。這種變數數據被賦值後,其值保持不變,直到下一次條件具備時對它們重新賦值。
【例3-6】過程語句舉例。
與連續賦值語句一樣,always和initial也描述了輸出信號與輸入信號的賦值關係,但是這種賦值往往是一種比較複雜的條件賦值,例如,例3-6就用了if……else語句描述了輸出信號與輸入信號的條件關係。
本文轉自小平頭電子技術社區:https://www.xiaopingtou.cn/article-104211.html 嵌入式,物聯網,硬體PCB,電子技術盡在小平頭