verilog中的整数输入端口是否为vhdl?

时间:2016-04-16 17:27:02

标签: vhdl verilog vlsi

我是verilog的新手。我在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;

2 个答案:

答案 0 :(得分:0)

Verilog中的整数和VHDL中的整数不是一回事。在VHDL中,整数是带符号的2状态类型,至少32位。在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

因此,输出端口允许使用整数,但输入端口不允许使用整数。

答案 1 :(得分:0)

您可以直接在Verilog中使用integer端口。

请注意,在verilog中使用整数,而不是 int 。因为,

  

int是2状态类型,只有2个值1&amp; 0.但整数是4   状态类型,有4个值 - 0,1,x,z。

module top (a);
  input integer a;
endmodule