2

私はベリログの初心者です。vhdl で整数の入力と出力を使用してコードを作成しました。今、同じコードを Verilog で作成したいと考えています。しかし、Verilog の入力ポートは整数型にできないことがわかりました。できること。合成可能な答えを好むでしょう。

vhdl コード:

LIBRARY ieee;
USE ieee.All;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_unsigned.all;

ENTITY adder_5 IS
PORT (
 a : IN integer ;
 b : IN integer; 
 c : OUT integer 
);

END adder_5;
ARCHITECTURE add OF adder_5 IS
BEGIN
 c<= (a rem 32) + (b rem 32);
END add;
4

2 に答える 2

2

Verilog の整数と VHDL の整数は同じものではありません。VHDL では、整数は32 ビット以上の符号付き 2 ステートタイプです。Verilog では、整数は 32 ビットの符号付き 4 状態変数です。したがって、Verilog では、

integer a;

reg signed [31:0] a;

同等です。Verilog では、入力ポートはネット タイプである必要があったため、整数入力ポートは使用できませんでした。ただし、出力ポートは変数にすることができたので、出力ポートは整数にすることができました。reg signed [31:0]したがって、VHDL の入力整数を で置き換え、出力整数をで置き換えることができinteger、Verilog のコードは次のようになります。

module adder (input wire signed [31:0] a, b, output integer c);

  always @(*)
    c = a%32 + b%32;

endmodule

またはおそらく一貫性のために:

module adder (input wire signed [31:0] a, b, output reg signed [31:0] c);

http://www.edaplayground.com/x/5PZe

そのため、出力ポートでは整数を使用できましたが、入力ポートでは使用できませんでした。

于 2016-04-16T18:55:43.667 に答える
0

integerVerilog のポートで直接使用できます。

Verilog ではintではなくintegerを使用することに注意してください。なぜなら、

int は 2 状態型で、1 と 0 の 2 つの値しかありません。ただし、integer は 4 状態型で、0、1、x、z の 4 つの値があります。

module top (a);
  input integer a;
endmodule
于 2016-04-23T16:04:34.727 に答える