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