将 VHDL 代码转换为 Verilog 编译错误
Translating a VHDL code to Verilog compilation error
我正在将 VHDL 代码转换为 Verilog,但我对 VHDL 有疑问:
在这些行中与空字符串连接有什么用?
Xp_m5b0 <= XX_m5(23 downto 0) & "";
Yp_m5b0 <= YY_m5(23 downto 0) & "";
据说是改类型,其实这里的类型是一样的(std_logic_vector)。
以下是显示类型的行:
entity IntMultiplier_LogicOnly_24_24_48_unsigned_F400_uid4 is
port ( clk, rst : in std_logic;
X : in std_logic_vector(23 downto 0);
Y : in std_logic_vector(23 downto 0);
R : out std_logic_vector(47 downto 0) );
end entity;
signal XX_m5 : std_logic_vector(23 downto 0);
signal YY_m5 : std_logic_vector(23 downto 0);
signal Xp_m5b0 : std_logic_vector(23 downto 0);
signal Yp_m5b0 : std_logic_vector(23 downto 0);
XX_m5 <= X ;
YY_m5 <= Y ;
在转换后的 verilog 中,此连接会出现编译错误:
assign Xp_m5b0 = {XX_m5[23:0], 0'b };
assign Yp_m5b0 = {YY_m5[23:0], 0'b };
那我把它去掉做成这样是不是意思有区别:
assign Xp_m5b0 = XX_m5[23:0];
assign Yp_m5b0 = YY_m5[23:0];
""
不是一个空字符串,而是一个空的数组。我还没有看到它在这种情况下使用过,但它可以用来将文字转换为数组。 IE。考虑下一个代码:
entity e is end entity;
library ieee;
architecture a of e is
use ieee.std_logic_1164.all;
signal a : std_logic_vector(0 downto 0);
signal b : std_logic;
begin
-- a <= b; -- fails
a <= b&""; -- works
end architecture;
但是由于XX_m5(23 downto 0)
已经是一个数组(切片),这里应该不需要了...
我正在将 VHDL 代码转换为 Verilog,但我对 VHDL 有疑问: 在这些行中与空字符串连接有什么用?
Xp_m5b0 <= XX_m5(23 downto 0) & "";
Yp_m5b0 <= YY_m5(23 downto 0) & "";
据说是改类型,其实这里的类型是一样的(std_logic_vector)。
以下是显示类型的行:
entity IntMultiplier_LogicOnly_24_24_48_unsigned_F400_uid4 is
port ( clk, rst : in std_logic;
X : in std_logic_vector(23 downto 0);
Y : in std_logic_vector(23 downto 0);
R : out std_logic_vector(47 downto 0) );
end entity;
signal XX_m5 : std_logic_vector(23 downto 0);
signal YY_m5 : std_logic_vector(23 downto 0);
signal Xp_m5b0 : std_logic_vector(23 downto 0);
signal Yp_m5b0 : std_logic_vector(23 downto 0);
XX_m5 <= X ;
YY_m5 <= Y ;
在转换后的 verilog 中,此连接会出现编译错误:
assign Xp_m5b0 = {XX_m5[23:0], 0'b };
assign Yp_m5b0 = {YY_m5[23:0], 0'b };
那我把它去掉做成这样是不是意思有区别:
assign Xp_m5b0 = XX_m5[23:0];
assign Yp_m5b0 = YY_m5[23:0];
""
不是一个空字符串,而是一个空的数组。我还没有看到它在这种情况下使用过,但它可以用来将文字转换为数组。 IE。考虑下一个代码:
entity e is end entity;
library ieee;
architecture a of e is
use ieee.std_logic_1164.all;
signal a : std_logic_vector(0 downto 0);
signal b : std_logic;
begin
-- a <= b; -- fails
a <= b&""; -- works
end architecture;
但是由于XX_m5(23 downto 0)
已经是一个数组(切片),这里应该不需要了...