这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » FPGA » parameter 如何設定 const 的長度??

共10条 1/1 1 跳转至

parameter 如何設定 const 的長度??

工程师
2011-05-05 18:29:11     打赏

如下範例:

module ConstOr16bx7 (In,EN);

parameter width = 16;
parameter ConstA = 16'hA;
parameter ConstB = 16'hA;
parameter ConstC = 16'hA;
// port declaration
input   [width-1:0] In ;
output  EN;
assign  EN = (
             (In == ConstA | In == ConstB | In == ConstC )
              )? 1'b1 : 1'b0 ;
endmodule


請問上述內的  parameter ConstA = 16'hA
有辦法宣告 parameter ConstA =  [width-1:0]'hA 的方式嗎?
要如何宣告才可以將 ConstA 長度可跟著 width 改變??

 




关键词: parameter     如何     設定     const     長度    

工程师
2011-05-06 13:19:03     打赏
2楼
你不需要使用parameter完成上级对下级参数的传递,可以使用`define,如下:

module ConstOr16bx7 (In,EN);
`define   WIDTH 16
`define ConstA  `WIDTH'hA
`define ConstB  `WIDTH'hA
`define ConstC  `WIDTH'hA
// port declaration
input   [`WIDTH -1:0] In ;
output  EN;
assign  EN = (
             (In == `ConstA | In == `ConstB | In == `ConstC )
              )? 1'b1 : 1'b0 ;
endmodule

 


工程师
2011-05-07 22:24:25     打赏
3楼
define 的層級有比 parameter 高嗎?
這兩個的差異為何?
那我以後可以都使用 define 就好了嗎?
那 parameter 何時才可使用?

高工
2011-05-07 23:26:50     打赏
4楼
parameter可以在实例化时修改,而define不能

工程师
2011-05-08 22:12:40     打赏
5楼
何謂實例化?
我就是想要用在只做一個模組
然後可以將此模組拿來應用在不同width的compare

高工
2011-05-09 10:06:59     打赏
6楼
實例化就是“摆放多个相同的器件”,例如

Compare   inst1_Compare(      );

Compare   inst2_Compare(      );

Compare   inst3_Compare(      );

工程师
2011-05-09 10:13:46     打赏
7楼

如果需要实例化多个compare,则不能使用`define,`define是预编译指令,编译时会替换,且是一种全局定义!


工程师
2011-05-09 10:49:50     打赏
8楼
所以使用 define 的話,就不能只使用一個 .v file 再 copy 成不同 bits 的模組!
所以 parameter 可以拿來 "實例化"
但是 parameter 無法用來定義 常數 的 bits 長度
雖然 define 可以拿來定義 常數 的 bits 長度
但 define 就無法 "實例化"
是否還有其他方法???
可以定義 定義 常數 的 bits 長度 又可以 "實例化"  ????

工程师
2011-05-10 14:28:12     打赏
9楼

还有种方法,不知道是否可以满足你的要求!
用parameter定义bit的长度width,再用parameter定义常数ConstA,ConstA用width和{{}}运算得到!
其中{m{n}}表示将n重复m次!这种方法适用于常数ConstA很用规律,比如101010序列!
例如:

module ConstOr16bx7 (In,EN);
parameter   WIDTH=32;

parameter  ConstA={(WIDTH/2){2'b10}};
parameter  ConstB={(WIDTH/2){2'b10}};
parameter  ConstC={(WIDTH/2){2'b10}};

// port declaration
input   [WIDTH -1:0] In ;
output  EN;
assign  EN = (
             (In == ConstA | In == ConstB | In == ConstC )
              )? 1'b1 : 1'b0 ;
endmodule


工程师
2011-05-10 19:45:10     打赏
10楼
但是這就要重覆的訊號才能使用
不過也是可以拿來試試!
感謝!
我再試試看是否有辦法可以設定 常數的 長度

共10条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]