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