|
勇敢的芯伴你玩轉(zhuǎn)Altera FPGA連載31:可綜合的語法子集2 特權(quán)同學(xué),版權(quán)所有 配套例程和更多資料下載鏈接: http://pan.baidu.com/s/1i5LMUUD
參數(shù)定義:parameter。 Parameter用于申明一些常量,主要是便于模塊的移植或升級時的修改。 一個基本的module,通常一定包括module…endmodule語法和任意兩種端口申明(通常我們所設(shè)計的模塊一定是有輸入和輸出的),parameter則不一定,但是對于一個可讀性強的代碼來說也是不可少的。這樣一個基本的module如下: module <模塊命名>(<端口命名1>, <端口命名2>, ...); // 輸入端口申明 input <端口命名1>; input wire <端口命名2>; input [<最高位>:<最低位>]<端口命名3>; ... // 輸出端口申明 output <端口命名4>; output [<最高位>:<最低位>]<端口命名5>; output reg [<最高位>:<最低位>]<端口命名6>; ... // 雙向(輸入輸出)端口申明 inout <端口命名7>; inout [<最高位>:<最低位>]<端口命名8>; ... // 參數(shù)定義 parameter <參數(shù)命名1> = <默認值1>; parameter [<最高位>:<最低位>]<參數(shù)命名2> = <默認值2>; ... // 具體功能邏輯代碼 ... endmodule 注:“//”后的內(nèi)容為注釋。 信號類型:wire,reg等。 如圖5.1所示,在這個簡單的電路中,分別定義兩個寄存器(reg)鎖存當前的輸入din。每個時鐘clk上升沿到來時,reg都會鎖存到最新的輸入數(shù)據(jù),而wire就是這兩個reg之間直接的連線。 作為input或inout的信號端口只能是wire型,而output則可以是wire也可以是reg。需要特別說明的是,雖然在代碼中我們可以定義信號為wire或reg類型,但是實際的電路實現(xiàn)是否和我們預(yù)先的一致還要看綜合工具的表現(xiàn)。例如reg定義的信號通常會被綜合為一個寄存器(rigister),但這有一個前提,就是這個reg信號必須是在某個由特定信號邊沿敏感觸發(fā)的always語句中被賦值。
圖5.1 reg和wire示例圖 Wire和reg的一些常見用法示例如下: // 定義一個wire信號 wire // 給一個定義的wire信號直接連接賦值 // 該定義等同于分別定義一個wire信號和使用assign語句進行賦值 wire // 定義一個多bit的wire信號 wire [<最高位>:<最低位>] // 定義一個reg信號 reg // 定義一個賦初值的reg信號 reg // 定義一個多bit的reg信號 reg [<最高位>:<最低位>] // 定義一個賦初值的多bit的reg信號 reg [<最高位>:<最低位>] // 定義一個二維的多bit的reg信號 reg [<最高位>:<最低位>] |