Пытаюсь сделать такой в ISE6... под XC9500
Правильно ли так его описывать:
Код
entity cc8mm is
port ( C : in std_logic;
DI : in std_logic_vector (7 downto 0);
L : in std_logic;
LE : in std_logic;
OE : in std_logic;
CLR : in std_logic;
P : out std_logic);
end cc8mm;
architecture count_down of cc8mm is
Signal TempC : std_logic_vector ( 7 downto 0):= "00000000";
Signal TC : std_logic_vector ( 7 downto 0):= "00000000";
begin
process(CLR,C,DI,L)
begin
if LE='1' then
TempC <= DI;
TC <= TempC;
elsif L = '1' then
TC <= TempC;
elsif CLR='1' then
TC <= "00000001";
elsif C'event and C='1' and OE='0' then
TC <= TC -1;
end if;
end process;
process( TC )
begin
if TC = "00000000" and OE='0' then
p <= '1';
else
p <= '0';
end if;
end process;
end count_down;
смысл, что при LE =1 грузиться постоянно, и сохраняется последнее значение.. а потом работа как обычного синхронного счетчика вниз, с асинхронной загрузкой.
в этом варианте настораживает использование слишком большого кол-а ресурсов кристалла, но при этом максимальное быстродействие, по сравнению со схемным построением