-
Юный техник
-
Автор темы
-
Не в сети
-
Новый участник
-
-
Сообщений: 12
-
Спасибо получено: 0
-
-
|
Добрый день! Прошу помощи в реализации таймера для термозащиты. Плис EPM240T100. Тактироваться будет от внутреннего генератора на 3,33МГц. Алгоритм следующий. При нормальной температуре на выходе плис должна быть "1" В случае превышения температуры с внешнего компаратора на плис приходит "1", на выходе плис "0", таймер отсчитывает к примеру 10 сек. По истечении этого времени на выходе плис снова появляется "1" и так до тех пор пока температура снова не будет превышена. Как это можно реализовать? Программирую я пока в схемотехнике.
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
umarsohod
-
-
Не в сети
-
Администрация форума
-
-
Сообщений: 816
-
Спасибо получено: 168
-
-
|
Учтите, в EPM240T100 "RC"-генератор и частота его может быть от 3 до 5.5 Мгц, такая точность устраивает?
Что у вас за платка, есть ли кнопки и светодиоды для отладки? Пробовали ли вы какие-нибудь простые поекты?
По задаче - сигнал со входа нужно подать на схему выделения фронта -
marsohod.org/verilog/157-verilogedges
После нее на синхронный сброс счетчика. О счетиках здесь -
marsohod.org/11-blog/150-quartussch3
Праметры для счетчика посчитайте сами, в зависимости от необходимой задержки.
Чтобы счетчик считал только один раз, сигнал "cout" нужно подать на "cnt_en" через инвертор.
Собственно этот "cout" и будет у вас выходом.
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
Юный техник
-
Автор темы
-
Не в сети
-
Новый участник
-
-
Сообщений: 12
-
Спасибо получено: 0
-
-
|
Я сперва планировал использовать внутренний генератор. Хотел использовать меньшую частоту для того чтобы счетчик поменьше был. Общее тактирование всей плисины 48МГц. На просторах инета нашел код с помощью которого можно эти 48МГц уменьшить до 1Гц. Так думаю будет попроще. Собственно сам код (с моими правками):
module reduced_osc (osc, clk);
input osc; // Output of internal osc
output clk; // Reduced frequency clock
reg [25:0] count;
reg clk;
initial
begin
count = 0;
clk = 0;
end
always @ (posedge osc) begin
count <= count + 1;
if(count == 48000000)begin
clk <= !clk;
end
end
endmodule
Спасибо большое за подсказку! Как набросаю схемку обязательно выложу для обозрения.
З.Ы. Плис у меня стоит уже на платке готового проекта. Основная часть прошивки отлажена и работает, но понадобилось сделать термозащиту.
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
Юный техник
-
Автор темы
-
Не в сети
-
Новый участник
-
-
Сообщений: 12
-
Спасибо получено: 0
-
-
|
Нарисовал схемку как рекомендовали, только вот в симуляции что-то совсем не та картина. По логике то всё верно. Может симуляция тупит.
Вот прилагаю схему
(1.jpg)
и результат симуляции (2.jpg).
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
umarsohod
-
-
Не в сети
-
Администрация форума
-
-
Сообщений: 816
-
Спасибо получено: 168
-
-
|
У счетчика и у триггера клок должен быть общий.
Ну, и , когда в симуляторе заработает, увеличить разрядность счетчика до 30 и модуль 480000000.
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
Юный техник
-
Автор темы
-
Не в сети
-
Новый участник
-
-
Сообщений: 12
-
Спасибо получено: 0
-
-
|
Объединив клоки в симуляции всё заработало, но... Итоговая схема не запустится так как при старте на выходе счетчика"0", а нужна единица. Как быть?
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
umarsohod
-
-
Не в сети
-
Администрация форума
-
-
Сообщений: 816
-
Спасибо получено: 168
-
-
|
Наоборот, при старте она сразу запустится и просчитает один раз.
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
Юный техник
-
Автор темы
-
Не в сети
-
Новый участник
-
-
Сообщений: 12
-
Спасибо получено: 0
-
-
|
Всё таки не получается объединить клоки триггера и счетчика, так как тогда для задержки в 20 сек коду может не хватить ресурсов плис. В плис уже итак занято около 100 ячеек. А можно если к примеру делитель частоты для счетчика и триггер будут тактироваться от одного клока? Такое заработает?
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
umarsohod
-
-
Не в сети
-
Администрация форума
-
-
Сообщений: 816
-
Спасибо получено: 168
-
-
|
Во первых в чипе 240 LE, так что 140 свободных еще есть.
Во вторых наверняка в проекте уже есть какой-нибудь бинарный счетчик, можно взять с него частоту по-ниже.
Пробуйте :)
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
Юный техник
-
Автор темы
-
Не в сети
-
Новый участник
-
-
Сообщений: 12
-
Спасибо получено: 0
-
-
|
Протестировал таймер в готовом проекте - работает как надо, за одним исключением... Устройство не заработает пока после его включения таймер не отсчитает время задержки. Как можно это устранить?
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
Время создания страницы: 0.220 секунд