Запустил на Modelsim
1. Пока не убрал слеши из названия модулей не работало.
Теперь файлы регистра выглядит так:
CODE
library ieee;
use ieee.std_logic_1164.all;
entity DFF_aclr is
port
(
D0,D1,D2,D3 : in STD_LOGIC;
CLK : in STD_LOGIC;
RS0,RS1,RS2,RS3 : in STD_LOGIC;
Q0,Q1,Q2,Q3 : out STD_LOGIC := '0'
);
end DFF_aclr;
architecture DFF_aclr of DFF_aclr is
begin
process
(
CLK,
RS0,
RS1,
RS2,
RS3
)
begin
if (RS0='1') then
Q0 <= '0';
elsif (rising_edge (CLK)) then
Q0 <= D0;
end if;
if (RS1='1') then
Q1 <= '0';
elsif (rising_edge (CLK)) then
Q1 <= D1;
end if;
if (RS2='1') then
Q2 <= '0';
elsif (rising_edge (CLK)) then
Q2 <= D2;
end if;
if (RS3='1') then
Q3 <= '0';
elsif (rising_edge (CLK)) then
Q3 <= D3;
end if;
end process;
end DFF_aclr;
2. Убрал ненужные библиотеки. Зачем Вы их подключали я не знаю. Но в принципе они не влияли никак.
CODE
library IEEE;
use IEEE.std_logic_1164.all;
entity reg_aclr is
port(
CLKT : in STD_LOGIC;
RS : in STD_LOGIC;
RST : in STD_LOGIC;
Q : out STD_LOGIC_VECTOR(0 to 3):= (others => '0')
);
end reg_aclr;
architecture reg_aclr of reg_aclr is
component DFF_aclr
port (
CLK : in STD_LOGIC;
D0,D1,D2,D3 : in STD_LOGIC;
RS0,RS1,RS2,RS3 : in STD_LOGIC;
Q0,Q1,Q2,Q3 : out STD_LOGIC
);
end component;
signal D0 : STD_LOGIC;
signal QT0,QT1,QT2,QT3 : STD_LOGIC := '0';
begin
U10 : DFF_aclr
port map(
CLK => CLKT,
D0 => D0,
D1 => QT0,
D2 => QT1,
D3 => QT2,
Q0 => QT0,
Q1 => QT1,
Q2 => QT2,
Q3 => QT3,
RS0 => RST,
RS1 => RST,
RS2 => RST,
RS3 => RST
);
Q(3) <= QT3;
Q(2) <= QT2;
Q(1) <= QT1;
Q(0) <= QT0;
D0 <= RS or QT3;
end reg_aclr;
С таким тестбенчем все работает как и должно:
CODE
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY reg_aclr_vhd_tst IS
END reg_aclr_vhd_tst;
ARCHITECTURE reg_aclr_arch OF reg_aclr_vhd_tst IS
-- constants
-- signals
SIGNAL CLKT : STD_LOGIC;
SIGNAL Q : STD_LOGIC_VECTOR(0 TO 3);
SIGNAL RS : STD_LOGIC := '0';
SIGNAL RST : STD_LOGIC := '0';
COMPONENT reg_aclr
PORT (
CLKT : IN STD_LOGIC;
Q : OUT STD_LOGIC_VECTOR(0 TO 3);
RS : IN STD_LOGIC;
RST : IN STD_LOGIC
);
END COMPONENT;
--▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
--========================================================================
-- Формирование констант для вычисления периодв CLK от частоты работы
--========================================================================
constant clk_freq : real := 100.0; -- MHz
constant clk_prd : time := (1000.0/clk_freq) * 1.0 ns; -- Вычисление периода CLK
BEGIN
i1 : reg_aclr
PORT MAP (
-- list connections between master ports and signals
CLKT => CLKT,
Q => Q,
RS => RS,
RST => RST
);
--==========================================
-- Задание тактовой частоты проекта
--==========================================
process
begin
CLKT <= '0'; wait for clk_prd/2;
CLKT <= '1'; wait for clk_prd/2;
end process;
process
begin
wait for 15*clk_prd;
RS <= '1';
wait for clk_prd;
RS <= '0';
wait;
end process;
process
begin
wait for 50*clk_prd;
RST <= '1';
wait for 3*clk_prd;
RST <= '0';
wait;
end process;
END reg_aclr_arch;
Вывод : я предполагаю, что некорректные имена вида \name\