ketron писал(а):
как теперь это можно эмулировать в тестбенче?
Тестбэнч лучше кодить опираясь на проект. Берём ту часть, где описаны порты, копируем три раза.
Первую часть переназываем (я привык добавлять к назанию _test), затем переносим входные порты в тело архитектуры, дописывая слово signal.
Из второй копии делаем компонент. Дописываем после компонента слово Begin
Из третьей копии делаем "поле портов", удаляя всё лишнее
Код:
ENTITY key_test IS
PORT(
scan_code : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
scan_ready : OUT STD_LOGIC);
END key_test;
Architecture test of key_test is
signal keyboard_clk, keyboard_data, clock_25Mhz , reset, read: STD_LOGIC:='0';
Component key IS
PORT( keyboard_clk, keyboard_data, clock_25Mhz ,
reset, read : IN STD_LOGIC;
scan_code : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
scan_ready : OUT STD_LOGIC);
END component;
Begin
D: key
PORT MAP(
keyboard_clk=>keyboard_clk,
keyboard_data=>keyboard_data,
clock_25Mhz =>clock_25Mhz,
reset=>reset,
read=>read,
scan_code=>scan_code,
scan_ready=>scan_ready
);
--Тут должны быть процессы, соответствующие входным сигналам!
end test;
Вот в этот шаблон, надо написать процессы генерации тактовой частоты, сброса, чтения и т.д.
Далее подпихиваем тестбэнч с компилированным проектом каком-нибудь ModelSim'у и наслаждаемся!