Я хочу назначить переключатель (SW) для входа (D) - PullRequest
0 голосов
/ 29 мая 2018

Я делаю упражнение для своего университета с fpga в коде VHDL. Я хочу создать D-триггер master-slave, вызвав закрытый D-Latch. Я думаю, что мой код в порядке, но проблема в том, что происходит ошибка.В сообщении говорится, что я не могу записать в интерфейсный объект "D" режима IN. Я хочу назначить переключатель "SW (0)" платы altera d2 для входа D и Clk для переключения "SW (1)". Пожалуйста,Я хочу знать правильный способ сделать это.

BEGIN
D<=SW(0);
LEDR(0) <=D;
Clk <=SW(1);
LEDR(1) <=Clk;
LEDR(2) <=Q;

   G1: notGate port map(clk, invOut1);
   G2: notGate port map(invOut1, invOut2);
   G3: gdlatch port map(invOut1, D, Dout, dummy);
   G4: gdlatch port map(invOut2, Dout, Q, notQ);



END Structural;

1 Ответ

0 голосов
/ 29 мая 2018

Этот вопрос, вероятно, относится к иерархии.

Таким образом, у вас есть компонент , называемый триггер "главный-подчиненный".Допустим, это описывается как:

library ieee;
use ieee.std_logic_1164.all;

entity dff is port(
    clk, rst, d : in std_logic;
    q : out std_logic);
end entity;

architecture rtl of dff is begin
    q <= d and not rst when rising_edge(clk);
end architecture;

Так что это закрытый дизайн .Вы не добавляете входы внутри этого: вы используете интерфейс сущностей.Сравнимо, что вы не подключили бы клавиатуру компьютера напрямую внутри вашего процессора.Вместо этого у вас есть оболочка, которая обрабатывает вход и выход.

В вашем случае вам нужен новый объект, который создает экземпляр компонента dff.Например,

library ieee;
use ieee.std_logic_1164.all;

entity dff_wrapper is port(
    SW : in std_logic_vector(1 downto 0);
    LEDR : out std_logic_vector(2 downto 0));
end entity;

architecture rtl of dff_wrapper is
    signal D, Q, Clk : std_logic;
begin
    D<=SW(0);
    LEDR(0) <=D;
    Clk <=SW(1);
    LEDR(1) <=Clk;
    LEDR(2) <=Q;

    dff_inst : entity work.dff port map (
        clk => Clk, d => D, q => Q);
end architecture;

Видите?Теперь ваш код работает.

PS, внутрисхемное тестирование обычно не подходит для этого в VHDL.Вы хотите использовать испытательные стенды.

...