【发布时间】:2013-12-16 10:47:39
【问题描述】:
我正在尝试在 vhdl 顶级模块中实例化一个 systemverilog 模块。 systemverilog 模块使用二维压缩数组“channel_addr_i”(一个包含 3 个地址的压缩数组,每个包含 3 位)
SystemVerilog 模块声明:
`define N_PORTS 3
`define N_CHANNELS 4
module pwr_ctrl(
input logic clk, rst_n,
input logic [`N_PORTS-1 : 0] [2 : 0] channel_addr_i,
input logic [`N_CHANNELS-1 : 0] transaction_complete_i,
output logic [`N_CHANNELS-1 : 0] sleep
);
我必须将上述模块实例化为顶级 vhdl 模块中的一个组件,并将来自 3 个不同输入端口的地址(每个地址由 3 位组成:总共 9 位)传递给 systemverilog 组件。
VHDL 实例化:
signal ch_addr : std_logic_vector(8 downto 0);
component pwr_ctrl is
port(
clk : in std_logic;
rst_n : in std_logic;
channel_addr_i : in std_logic_vector(8 downto 0); --CONSIDERING 3 INPUT PORTS
transaction_complete_i : in std_logic_vector(3 downto 0); -- CONSIDERING 4 CHANNELS
sleep : out std_logic_vector(3 downto 0)
);
ch_addr <= axi_addr(31 downto 29) & axi1_addr_n(31 downto 29) & addr_ahb(31 downto 29);
power_ctrl : pwr_ctrl
port map(
clk => aclk,
rst_n => aresetn,
channel_addr_i => ch_addr,
transaction_complete_i => transaction_complete_i,
sleep => sleep
);
end component;
但是 modelsim 给出了这个错误: ** 错误:(vsim-8428) 无法将 VHDL 数组信号连接到 Verilog 多维数组端口 'channel_addr_i'。
除了更改 systemverilog 模块中的端口类型之外,任何人都可以提出其他替代方案吗?
【问题讨论】:
标签: vhdl verilog system-verilog