从 VHDL 到 Verilog 的数据转换

Data conversion from VHDL to Verilog

我在 VHDL 中定义了以下变量,我需要将它们转换成 Verilog。我首先列出 VHDL 中的变量,然后尝试转换它们:

VHDL代码

constant ValueLoad : std_logic_vector (11*24-1 downto 0) := 
b"0011010_0_0001111_000000000"&
b"0011010_0_0000000_000011111"&
b"0011010_0_0000001_000110111"&
b"0011010_0_0000010_001111001"&
b"0011010_0_0000011_000110000"&
b"0011010_0_0000100_011010010"&
b"0011010_0_0000101_000000001"&
b"0011010_0_0000110_001100010"&
b"0011010_0_0000111_001000011"&
b"0011010_0_0001000_000100000"&
b"0011010_0_0001001_000000001";


signal valueOut : std_logic;

signal registerA : std_logic_vector (11*24-1 downto 0); 
signal divider  : integer;
signal counterA : integer;
signal counterB : integer;

我尝试转换为 Verilog

wire valueOut;
wire [11*24-1:0] registerA;
wire divider;
wire counterA;
wire counterB;

这是正确的吗?另外,如何在 Verilog 中定义 valueLoad?

是的,看起来是正确的。这是定义 ValueLoad 的一种方法:

parameter [11*24-1:0] ValueLoad =
{24'b0011010_0_0001111_000000000,
 24'b0011010_0_0000000_000011111,
 24'b0011010_0_0000001_000110111,
 24'b0011010_0_0000010_001111001,
 24'b0011010_0_0000011_000110000,
 24'b0011010_0_0000100_011010010,
 24'b0011010_0_0000101_000000001,
 24'b0011010_0_0000110_001100010,
 24'b0011010_0_0000111_001000011,
 24'b0011010_0_0001000_000100000,
 24'b0011010_0_0001001_000000001};

这取决于他们将如何分配。如果在always块里面赋值,那么应该是reg或者integer类型。

reg valueOut;
reg [11*24-1:0] registerA;
integer divider;
integer counterA;
integer counterB;

如果它们是通过assign 语句分配的,那么它们需要是网络类型。

wire valueOut;
wire [11*24-1:0] registerA;
wire signed [31:0] divider; // 'signed' to allow negative numbers
wire signed [31:0] counterA;
wire signed [31:0] counterB;

VHDL 的 constant 应该映射到 Verilog 的 parameter。 VHDL 使用 & 进行污染,Verilog 污染围绕逗号分隔列表和大括号:

parameter [11*24-1:0] ValueLoad = { 
  24'b0011010_0_0001111_000000000,
  24'b0011010_0_0000000_000011111,
  24'b0011010_0_0000001_000110111,
  24'b0011010_0_0000010_001111001,
  24'b0011010_0_0000011_000110000,
  24'b0011010_0_0000100_011010010,
  24'b0011010_0_0000101_000000001,
  24'b0011010_0_0000110_001100010,
  24'b0011010_0_0000111_001000011,
  24'b0011010_0_0001000_000100000,
  24'b0011010_0_0001001_000000001  };