МАРСОХОД

Open Source Hardware Project

Добро пожаловать, Гость
Логин: Пароль: Запомнить меня
  • Страница:
  • 1
  • 2

ТЕМА: Таймер для термозащиты

Таймер для термозащиты 1 год 5 мес. назад #7225

Добрый день! Прошу помощи в реализации таймера для термозащиты. Плис EPM240T100. Тактироваться будет от внутреннего генератора на 3,33МГц. Алгоритм следующий. При нормальной температуре на выходе плис должна быть "1" В случае превышения температуры с внешнего компаратора на плис приходит "1", на выходе плис "0", таймер отсчитывает к примеру 10 сек. По истечении этого времени на выходе плис снова появляется "1" и так до тех пор пока температура снова не будет превышена. Как это можно реализовать? Программирую я пока в схемотехнике.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Таймер для термозащиты 1 год 5 мес. назад #7228

Учтите, в EPM240T100 "RC"-генератор и частота его может быть от 3 до 5.5 Мгц, такая точность устраивает?
Что у вас за платка, есть ли кнопки и светодиоды для отладки? Пробовали ли вы какие-нибудь простые поекты?
По задаче - сигнал со входа нужно подать на схему выделения фронта - marsohod.org/verilog/157-verilogedges
После нее на синхронный сброс счетчика. О счетиках здесь - marsohod.org/11-blog/150-quartussch3
Праметры для счетчика посчитайте сами, в зависимости от необходимой задержки.
Чтобы счетчик считал только один раз, сигнал "cout" нужно подать на "cnt_en" через инвертор.
Собственно этот "cout" и будет у вас выходом.
Спасибо сказали: Юный техник

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Таймер для термозащиты 1 год 5 мес. назад #7232

Я сперва планировал использовать внутренний генератор. Хотел использовать меньшую частоту для того чтобы счетчик поменьше был. Общее тактирование всей плисины 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

Спасибо большое за подсказку! Как набросаю схемку обязательно выложу для обозрения.
З.Ы. Плис у меня стоит уже на платке готового проекта. Основная часть прошивки отлажена и работает, но понадобилось сделать термозащиту.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Таймер для термозащиты 1 год 5 мес. назад #7233

Нарисовал схемку как рекомендовали, только вот в симуляции что-то совсем не та картина. По логике то всё верно. Может симуляция тупит.
Вот прилагаю схему

(1.jpg)

и результат симуляции (2.jpg).
Вложения:

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Таймер для термозащиты 1 год 5 мес. назад #7234

У счетчика и у триггера клок должен быть общий.
Ну, и , когда в симуляторе заработает, увеличить разрядность счетчика до 30 и модуль 480000000.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Таймер для термозащиты 1 год 5 мес. назад #7235

Объединив клоки в симуляции всё заработало, но... Итоговая схема не запустится так как при старте на выходе счетчика"0", а нужна единица. Как быть?

Вложения:

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Таймер для термозащиты 1 год 5 мес. назад #7236

Наоборот, при старте она сразу запустится и просчитает один раз.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Таймер для термозащиты 1 год 5 мес. назад #7237

Всё таки не получается объединить клоки триггера и счетчика, так как тогда для задержки в 20 сек коду может не хватить ресурсов плис. В плис уже итак занято около 100 ячеек. А можно если к примеру делитель частоты для счетчика и триггер будут тактироваться от одного клока? Такое заработает?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Таймер для термозащиты 1 год 5 мес. назад #7238

Во первых в чипе 240 LE, так что 140 свободных еще есть.
Во вторых наверняка в проекте уже есть какой-нибудь бинарный счетчик, можно взять с него частоту по-ниже.
Пробуйте :)

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Таймер для термозащиты 1 год 5 мес. назад #7241

Протестировал таймер в готовом проекте - работает как надо, за одним исключением... Устройство не заработает пока после его включения таймер не отсчитает время задержки. Как можно это устранить?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

  • Страница:
  • 1
  • 2
Время создания страницы: 0.807 секунд

facebook  GitHub  YouTube  Twitter
Вы здесь: Начало Forum Наш форум Проекты пользователей Таймер для термозащиты