1、參數(shù)定義parameter
?
module ram_1r1w #( parameter width=128, parameter deepth=32 ) ( input wclk, input [width-1:0] wdin, ..................................... input rclk, output [width-1:0] dout, ................................... ); .................... .................... ..................... endmodule
?
可傳遞的參數(shù)例化建議放在module名的后面,如上所示,采用#( parameter ?xxx=xxx, parameter xxx=xxx, ....)的格式,方便查看和修改。
2、參數(shù)例化
?
ram_1r1w #( .width(128), .deepth(96) ) ram_1r1w_96x128 ( .wclk(wclk), .wen(write_en), .waddr(waddr), .wdin(wdata), .rclk(rclk), .ren(read_en), .raddr(raddr), .dout(rdata) );
?
在模塊例化時可使用參數(shù)傳遞,格式如上所示
module_name #(.parameter1(xxx1),.paramter2(xxx2))
module_name_u0 ( .signal1(s1), .signal2(s2),.............);
參數(shù)例化括號內(nèi)也可以使新的參數(shù),如下所示
?
module mactx_32x128_fifo #( parameter WIDTH=128, parameter DEEPTH=32 ) ( input wclk, ...................... input rclk, ................... ) ................ ................ ram_1r1w #( .width(WIDTH), .deepth(DEEPTH) ) ram_1r1w_u0 ( .wclk(wclk), .wen(write_en), .waddr(waddr), .wdin(wdata), .rclk(rclk), .ren(read_en), .raddr(raddr), .dout(rdata) );
?
verilog語法 - 用‘b,‘h,‘d賦值
1、幾種不同的賦值方式
在Verilog編碼過程中,經(jīng)常會給信號賦值,賦值有時候需要指定信號位寬,如下所示。Verilog 2005 版本支持使用省略位寬的方式賦值。
?
//采用常數(shù)位寬直接賦值 wire [512-1:0] func_id; assign func_id = 512'b0 ; //采用宏定義 指定位寬 // `define PCIE_FUNC_ID 512 ; wire [512-1:0] func_id; assign func_id = {(`PCIE_FUNC_ID){1’b0}}; //省略寫法,省略位寬512bit wire [512-1:0] func_id; assign func_id = ’b0 ;
?
2、采用省略位寬的方式賦值
Verilog 2005 版本支持使用省略位寬的方式賦值,’b,’d,’h,采用省略位寬的方式可以向左主動補齊,如果省略了進制符合b/d/h/o,則默認是十進制。
?
Example 4—Automatic left padding reg [11:0] a, b, c, d; initial begin a = 'h x; // yields xxx b = 'h 3x; // yields 03x c = 'h z3; // yields zz3 d = 'h 0z3; // yields 0z3 end reg [84:0] e, f, g,j; e = 'h5; // yields {82{1'b0},3'b101} f = 'hx; // yields {85{1'hx}} g = 'hz; // yields {85{1'hz}} j = ‘5 ; // yields {82{1'b0},3'b101} //新增
?
審核編輯:湯梓紅
評論
查看更多