Цитата(KP580BM80 @ May 8 2011, 11:14)

... Я считаю, что "fk_tmp <= fk_tmp xor dk_tmp" - защёлкой не является...
Не надо "считать" или "не считать". Надо синтезировать проект и посмотреть что показывает RTL схема.
Строка "fk_tmp <= fk_tmp xor dk_tmp" вообще смысла не имеет.
Вот код, который даст операцию XOR синхронную
CODE
library IEEE;
use IEEE.STD_LOGIC_1164.all;
use IEEE.numeric_std.all;
entity xor_check is
port(
clk : in std_logic;
reset : in std_logic;
fk_tmp : in std_logic;
dk_tmp : in std_logic;
fk_tmp_out : out std_logic
);
end xor_check;
architecture struct of xor_check is
begin
process(clk,reset)
begin
if(reset = '1') then
fk_tmp_out <='0';
elsif(clk'event and clk='1') then
fk_tmp_out <= fk_tmp xor dk_tmp;
end if;
end process;
end struct;
Вот синхронный проект с сигналом разрешения
CODE
library IEEE;
use IEEE.STD_LOGIC_1164.all;
use IEEE.numeric_std.all;
entity xor_check is
port(
clk : in std_logic;
reset : in std_logic;
fk_tmp : in std_logic;
dk_tmp : in std_logic;
fk_tmp_out : out std_logic
);
end xor_check;
architecture struct of xor_check is
begin
process(clk,reset)
begin
if(reset = '1') then
fk_tmp_out <='0';
elsif(clk'event and clk='1') then
if(dk_tmp = '1') then
fk_tmp_out <= not fk_tmp;
else
fk_tmp_out <= fk_tmp;
end if;
end if;
end process;
end struct;