Да ладно... Там все рассчёты исходя из макс. рассеиваемой мощности (выходной ток × падение напряжения на ключе).uldemir писал(а):8ма.
Может, п.ч. у меня XC9536XL?
Да ладно... Там все рассчёты исходя из макс. рассеиваемой мощности (выходной ток × падение напряжения на ключе).uldemir писал(а):8ма.
Какой-то глюк с конфигурацией проекта. Когда у меня пару раз что-то такое бывало, проще было сохранить в исходник в другом месте, этот каталог грохнуть и создать проект по-новой. Кстати, какая версия?ukr-sasha писал(а):П.С. При синтезировании пишет такое предупреждение: WARNING:Cpld - Unable to retrieve the path to the iSE Project Repository. Will use the default filename of 'EncoderFromRadiokot.ise'.
Что это значит? Не может писать в каталог с проектом?

Код: Выделить всё
----------------------------------------------------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity Counter_test is
Port ( Clk, EncA : in STD_LOGIC; -- один вход с кварца и один вход сигнал,
-- частоту которого нужно поделить
Led : out STD_LOGIC); -- выход сигнала с требуемой частотой
end Counter_test;
architecture Behavioral of Counter_test is
signal Led_status : STD_LOGIC := '0'; -- состояние выходного сигнала
signal EncA_status : STD_LOGIC := '0'; -- предыдущее состояние входного сигнала
signal ClkEn : STD_LOGIC := '0'; -- сигнал разрешения выполнения деления сигнала
signal countA : STD_LOGIC_VECTOR (7 downto 0) := (others=>'0'); -- счетчик импульсов кварца
signal countB : STD_LOGIC_VECTOR (7 downto 0) := (others=>'0'); -- счетчик импульсов выходного сигнала
signal Limit : integer :=9; -- предел счета исходящих импульсов
begin
A: process (Clk) -- процесс подсчета длительности импульса входящего сигнала через ко-во импульсов кварца
begin
if Clk = '1' and Clk'event then -- ловим передний фронт с кварца
countA <= countA + 1; -- увеличиваем счетчик
if EncA = not EncA_status then --проверяем изменение состояние входящего сигнала
EncA_status <= EncA; -- запоминаем его состояние
Limit <= CONV_INTEGER (countA)* CONV_INTEGER(20/3) - 1; -- вычисляем предел счета
--исх. импульсов
-- 20/3 - как пример
countA <= (others => '0'); -- обнуляем счетчик
ClkEn <= '1'; -- разрешаем счет исходящих импульсов
end if;
end if;
end process;
B: process (Clk) -- процесс генерации выходящего сигнала
begin
if Clk='1' and Clk'event then -- ловим передний фронт с кварца
if ClkEn = '1' then -- если счет разрешен
countB <= countB + 1; -- считаем импульсы
if countB = CONV_STD_LOGIC_VECTOR (Limit,8) then -- если досчитались до предела
Led_status <= not Led_status; -- меняем состояние исходящего сигнала
countB <= (others => '0'); -- обнуляем счетчик
end if;
end if;
end if;
end process;
Led <= Led_status; -- выводим исходящий сигнал наружу
end Behavioral;