我想實例化一個vhdl頂層模塊內的systemverilog模塊。 SystemVerilog的模塊使用一個2維壓縮數組「channel_addr_i」(3個地址的封裝陣列的每個包括3個比特)將多維systemverilog端口連接到vhdl模塊
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確實支持二維數組](http://parallelpoints.com/reading-image-files-with-vhdl-part-1-again/):'類型twod是數組(自然範圍<>,自然範圍<>)std_logic;' –
@MartinThompson:非常感謝,我真的忘了它:( – Khanh
沒問題,對於尖銳的評論道歉,它本意是「簡單而翔實」,但出來了一點「突然」! –