verilog 中的整数输入端口类似于 vhdl?

Integer input ports in verilog similar to vhdl?

我是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;

Verilog 中的整数和 VHDL 中的整数不是一回事。在 VHDL 中,整数是至少有 32 位的有符号 2 态 type。在 Verilog 中,整数是 32 位带符号的 4 态 变量。所以,在 Verilog 中,

integer a;

reg signed [31:0] a;

是等价的。在 Verilog 中,输入端口必须是网络类型,因此不允许使用整数输入端口。但是,允许输出端口是变量,因此输出端口可以是整数。因此,您可以将 VHDL 输入整数替换为 reg signed [31:0] 并将输出整数替换为 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

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

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

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

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