2016-04-16 5 views
1

私はVerilogの初心者です。私はvhdlで整数の入出力を使ってコードを構築しました。今私はVerilogで同じコードを構築したいと思います。しかし、私は、verilogの入力ポートが整数型であることを知りました。 できること。 私は合成可能な答えを好むでしょう。verilogの整数入力ポートとvhdlのsimillar?

VHDLコード:VHDLでのVerilogおよび整数で

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; 
+0

、ためてきたが、Verilogおよび加算器のためのSO検索?加算器の例がいっぱいです.... – Paebbels

+0

問題は加算器に関する問題ではありません。入力のタイプ。私は、例えば、ROMブロックから、別のモジュールやブロックから渡される整数入力を受け取るコードです。@ Paebbels –

+0

Verilogは型については特に気にしません。私が正しく覚えていれば、整数は定数とパラメータのみであり、ポートではありません。 – Paebbels

答えて

-1

整数は同じものではありません。 VHDLでは、整数は符号付き2状態タイプで、少なくとも32ビットです。 Verilogでは、整数は32ビットの符号付き4ステートの変数です。だから、Verilogで、

integer a; 

reg signed [31:0] a; 

は等価です。 Verilogでは、入力ポートはネットタイプでなければならなかったので、整数入力ポートは使用できませんでした。しかし、出力ポートは変数であることが許されていたので、出力ポートは整数である可能性があります。だから、あなたはintegerととVHDL入力整数と出力の整数を置き換えることができますおよび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ので

、整数が許されました出力ポートにはありますが、入力ポートにはありません。

+0

コードをコンパイルすると、次のエラーが表示されます。「ポートモードは宣言と互換性がありません:」@Matthew Taylor –

+0

整数としてIOについて聞いたことはありません!! –

+0

@Sai Rahul私の考え方 - 私は不注意にSystemVerilogスイッチを有効にしていたので、私のコードはうまくコンパイルされました。 SystemVerilogを無効にすると、入力ポートを変数にすることができないため、エラーが発生しました。私はそれに応じて私の答えを変更しました。どのように乗り越えているか教えてください。 –

0

integerをVerilogのポートで直接使用することができます。

整数で、ではなく、をverilogで指定してください。

int is a 2 state type, having only 2 values 1 & 0. But integer is 4 state type, having 4 values - 0, 1, x, z.

module top (a); 
    input integer a; 
endmodule 
関連する問題