web-dev-qa-db-ja.com

パラメーターを使用してVerilogで定数を作成する

パラメーターを取り込んで、パラメーターに等しい数のゼロを定数に割り当て、この定数を比較に使用したいと思います。どうすればいいのですか ?

たとえば、パラメータが3だとすると、定数を作成したいとします

n=3'b000;

このnを別のステートメントで使用します。唯一のことは、私は知りません。 「n」のゼロをどのように初期化し、どのVerilogデータ型にそれを割り当てますか?

16
Floose

レプリケーションオペレーターを探しています。構文は{replication_constant{value}}

すべてがゼロのサイズWIDTHのバスを作成する例。

parameter WIDTH = 3;
wire [WIDTH-1:0] n = {WIDTH{1'b0}};

レプリケーションオペレーターの詳細については、 IEEE std 1800-2012 §11.4.12.1「レプリケーションオペレーター」を参照してください。

23
Greg

Gregsの答えを展開し、1が必要な場合はすべて0に答えます。

連結の組み合わせを使用する{a,b}およびレプリケーション{width{c}}

wire [WIDTH-1:0] n = { 1'b1, {WIDTH-1{1'b0}} } ;

'0または'1構文はSystemVerilogで使用されています'b0幅の一致は、古いVerilogで有効です。 verilog-95では、幅は32ビットまでしか一致しませんでしたが、それ以降は修正されています。

フリップフロップのリセット値を定義する例:

reg [7:0] a;
always @(posedge clk or negedge rst_n) begin
  if(~rst_n) begin
    a <= 'b0 ;
 ...
13
Morgan