Я должен протестировать с помощью modelsim этот компонент:
COMPONENT part5
PORT ( CLOCK_50,KEY0,KEY3 : IN STD_LOGIC;
SW: IN STD_LOGIC_VECTOR (7 DOWNTO 0);
HEX3,HEX2,HEX1,HEX0: OUT STD_LOGIC_VECTOR (6 DOWNTO 0);
LEDR : OUT STD_LOGIC_VECTOR (1 DOWNTO 0)
);
END COMPONENT;
Это будет реализовано на альтере DE2. Предполагается, что он работает с часами (CLOCK_50), после того, как KEY0 переходит на логический уровень 1, подсчитывая тактовые периоды, пока не достигнет числа, вставленного в SW (7 DOWNTO 0), в этот момент загорается красный светодиод: LEDR. С момента включения LEDR четыре шестнадцатеричных дисплея (HEX0, HEX1, HEX2 и HEX3) начинают отсчет с интервалом в 1 мс. Я должен нажать кнопку KEY3 (на плате DE2) как можно быстрее, пока не достигну значения, представленного в SW(7 DOWNTO 0): красный свет гаснет и показывает остановку счета.
Я пробовал с этим:
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.numeric_std.all;`
ENTITY tb_part5 IS
END ENTITY;
ARCHITECTURE beha OF tb_part5 IS
COMPONENT part5
PORT ( CLOCK_50,KEY0,KEY3 : IN STD_LOGIC;
SW: IN STD_LOGIC_VECTOR (7 DOWNTO 0);
HEX3,HEX2,HEX1,HEX0: OUT STD_LOGIC_VECTOR (6 DOWNTO 0);
LEDR : OUT STD_LOGIC_VECTOR (1 DOWNTO 0)
);
END COMPONENT;
SIGNAL clk,key,rst: STD_LOGIC:='0';--inputs
SIGNAL switch: STD_LOGIC_VECTOR (7 DOWNTO 0);
SIGNAL led,led1: STD_LOGIC;--outputs
SIGNAL dec0,dec1,dec2,dec3 : STD_LOGIC_VECTOR (6 DOWNTO 0);
BEGIN
switch<="00001010";
PROCESS --clock
BEGIN
clk<='1' AFTER 10 ns ;
clk<='0' AFTER 20 ns ;
END PROCESS;
PROCESS --reset
BEGIN
rst<='0';
WAIT FOR 20 ns;
rst<='1';
WAIT;
END PROCESS;
PROCESS
BEGIN
IF led='1' THEN
key<= '1';
WAIT FOR 20 ns;
key<='0';
WAIT FOR 20 ns;
ELSE
key<='0';
END IF;
END PROCESS;
DUT : part5 PORT MAP (CLOCK_50=>clk, KEY0=>rst,KEY3=>key,SW=>switch,HEX3=>dec3,HEX2=>dec2,HEX1=>dec1,HEX0=>dec0,LEDR(0)=>led,LEDR(1)=>led1);
END beha;
Но симуляция не показывает никаких результатов. Я не очень хорошо разбираюсь в тестовых стендах, я действительно хочу понять, как они работают, особенно с генерацией часов и вставкой волновых векторов! Возможно, я мог бы лучше объяснить свои сомнения, но если бы кто-нибудь мог показать мне пример тестового стенда для начинающих, это было бы очень полезно!
Спасибо