FPGA: VHDL Wrapper для файла Verilog - PullRequest
0 голосов
/ 07 мая 2019

У меня есть одна программа verilog, которую я не могу изменить, и ей нужно 16 входов и 1 выход. Мне удалось создать оболочку в VHDL, и все работает, как ожидалось, если я предоставлю входные данные извне.

Я хочу иметь возможность изменить последний ввод оболочки (pi16) внутри, и у меня есть следующий код для оболочки:

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;


entity DD_Wrapper is
port(
pi00 : in STD_LOGIC;
pi01 : in STD_LOGIC;
pi02 : in STD_LOGIC;
pi03 : in STD_LOGIC;
pi04 : in STD_LOGIC;
pi05 : in STD_LOGIC;
pi06 : in STD_LOGIC;
pi07 : in STD_LOGIC;
pi08 : in STD_LOGIC;
pi09 : in STD_LOGIC;
pi10 : in STD_LOGIC;
pi11 : in STD_LOGIC;
pi12 : in STD_LOGIC;
pi13 : in STD_LOGIC;
pi14 : in STD_LOGIC;
pi15 : in STD_LOGIC;
--pi16 : in STD_LOGIC;
po0 : out STD_LOGIC

);
end DD_Wrapper;


architecture Behavioral of DD_Wrapper is

component DD
    port (
    pi00 : in STD_LOGIC;
    pi01 : in STD_LOGIC;
    pi02 : in STD_LOGIC;
    pi03 : in STD_LOGIC;
    pi04 : in STD_LOGIC;
    pi05 : in STD_LOGIC;
    pi06 : in STD_LOGIC;
    pi07 : in STD_LOGIC;
    pi08 : in STD_LOGIC;
    pi09 : in STD_LOGIC;
    pi10 : in STD_LOGIC;
    pi11 : in STD_LOGIC;
    pi12 : in STD_LOGIC;
    pi13 : in STD_LOGIC;
    pi14 : in STD_LOGIC;
    pi15 : in STD_LOGIC;
    pi16 : in STD_LOGIC;

    po0 : out STD_LOGIC 
    );
end component;

-- Trying to modify input pi16
signal pi16_new : std_logic := '1';

begin
    DD_x : DD
    port map (
    pi00 => pi00,
    pi01 => pi01,
    pi02 => pi02,
    pi03 => pi03,
    pi04 => pi04,
    pi05 => pi05,
    pi06 => pi06,
    pi07 => pi07,
    pi08 => pi08,
    pi09 => pi09,
    pi10 => pi10,
    pi11 => pi11,
    pi12 => pi12,
    pi13 => pi13,
    pi14 => pi14,
    pi15 => pi15,
    pi16 => pi16_new,

    po0 => po0 
    );

-- Trying to modify input pi16
    process is 
        begin
            pi16_new <= pi16_new xor '1';
            wait for 500 ms;
    end process; 
end Behavioral;

Я использую Vivado для имитации программы, и Behavioral Simulation дает мне правильные результаты, но если я запускаю Post-Synthesis Functional Simulation, вывод po0 всегда остается неизвестным (X). Я также попытался прошить код в ПЛИС, и вывод кажется случайным.

Почему это происходит? Я не могу найти ошибку.

...