Мигалка светодиодом на ХС9536 - помогите новичку.

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: Мигалка светодиодом на ХС9536 - помогите новичку.

Сообщение Gudd-Head »

uldemir писал(а):8ма.
Да ладно... Там все рассчёты исходя из макс. рассеиваемой мощности (выходной ток × падение напряжения на ключе).
Может, п.ч. у меня XC9536XL?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Реклама
Аватара пользователя
uldemir
Друг Кота
Сообщения: 7360
Зарегистрирован: Пт авг 28, 2009 21:34:30
Откуда: 845-й км.

Re: Мигалка светодиодом на ХС9536 - помогите новичку.

Сообщение uldemir »

ukr-sasha писал(а):П.С. При синтезировании пишет такое предупреждение: WARNING:Cpld - Unable to retrieve the path to the iSE Project Repository. Will use the default filename of 'EncoderFromRadiokot.ise'.
Что это значит? Не может писать в каталог с проектом?
Какой-то глюк с конфигурацией проекта. Когда у меня пару раз что-то такое бывало, проще было сохранить в исходник в другом месте, этот каталог грохнуть и создать проект по-новой. Кстати, какая версия?
А люди посмотрят и скажут: "Собаки летят. Вот и осень."
Реклама
Аватара пользователя
SubDia
Держит паяльник хвостом
Сообщения: 995
Зарегистрирован: Сб апр 02, 2011 17:59:22
Откуда: Город-герой Севастополь

Re: Мигалка светодиодом на ХС9536 - помогите новичку.

Сообщение SubDia »

Да можно ничего и не делать. Это предупреждение ни на что не влияет.
pavel_cydenov: Вобще я праAVRославный человек. Но и про ислARM слышал много хорошего )
MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )
Изображение
ukr-sasha
Первый раз сказал Мяу!
Сообщения: 37
Зарегистрирован: Чт июн 17, 2010 09:23:13

Re: Мигалка светодиодом на ХС9536 - помогите новичку.

Сообщение ukr-sasha »

Версия 13.4 - последняя.

Можно ли реализовать делитель частоты на дробное число? Т.е., например, на 1000 входящих импульсов было бы 600 выходящих.
Пока читаю книги и форумы, но ничего не нашел. Если есть такое, поделитесь ссылкой, почитаю.
Реклама
Эиком - электронные компоненты и радиодетали
Ruslan-maniak
Открыл глаза
Сообщения: 40
Зарегистрирован: Вт янв 18, 2011 08:15:32

Re: Мигалка светодиодом на ХС9536 - помогите новичку.

Сообщение Ruslan-maniak »

Попробуйте с помощью DCM. Там можно полулчить результатвот какой CLKFX = fCLKIN(CLKFX_MULTIPLY/CLKFX_DIVIDE), где CLKFX - выходная частота, fCLKIN - входная частота, CLKFX_MULTIPLY - коэф.умножения (2,3,4...32), CLKFX_DIVIDE - коэф.деления(1,2,3...32). Информация взята отсюда:http://logways.ru/2011/09/07/dcm-very-i ... ent-part3/
Реклама
ukr-sasha
Первый раз сказал Мяу!
Сообщения: 37
Зарегистрирован: Чт июн 17, 2010 09:23:13

Re: Мигалка светодиодом на ХС9536 - помогите новичку.

Сообщение ukr-sasha »

Похоже то, что надо. Вот только не пойму, для CPLD есть такой модуль?

Прочитав статью, обратил внимание, что минимальная входная частота 18 МГц, или это только для Спартанов?
Реклама
Аватара пользователя
nick17
Встал на лапы
Сообщения: 134
Зарегистрирован: Пт июн 26, 2009 06:40:07
Контактная информация:

Re: Мигалка светодиодом на ХС9536 - помогите новичку.

Сообщение nick17 »

У Xilinx CPLD нет DCM.....
ukr-sasha
Первый раз сказал Мяу!
Сообщения: 37
Зарегистрирован: Чт июн 17, 2010 09:23:13

Re: Мигалка светодиодом на ХС9536 - помогите новичку.

Сообщение ukr-sasha »

Попробовал выполнить делитель частоты входящего сигнала с использованием кварцевого генератора. Алгоритм такой: один процесс считает длительность входящего сигнала в импульсах задающего кварцевого генератора, а второй, используя подсчитанное количество импульсов, генерирует выходящий сигнал.
На симуляции все работает. Некоторое округление расчетов, для моей задачи не критично.
Можно ли, как то оптимизировать код?

Код: Выделить всё

----------------------------------------------------------------------------------

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;

Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»