Разработка системного таймера (программируемого логического таймера)

Системный таймер

Компьютеры содержат таймер с программируемыми каналами. Программируемые каналы - это таймеры разной длительности. Как разработать такую ​​схему с четырьмя программируемыми каналами, каждый из которых изначально отключен. Вход разрешения, два входа выбора канала и 4 строки для ввода длительности могут установить любой канал на заданную длительность от 1 до 15. Ноль означает отключение канала. Четыре выходные линии соответствуют каналам и устанавливаются на высокий уровень, как только истечет соответствующий таймер.

Входы Clock Pulse CP

Доступен вход IA

Выбор канала CS0, CS1

Продолжительность D0… D3

Выводы

Срок действия таймера: TA, TB, TC, TD

Я хочу использовать микросхемы с дискретной логикой, такие как триггеры, логические элементы, декодеры, мультиплексоры, кодеры и т. Д. Ввод данных должен осуществляться с помощью кнопок (кнопок), а вывод должен отображаться на светодиодах. Часы должны быть общими.


person Nauman Shakir    schedule 08.01.2016    source источник
comment
что вы хотите использовать конкретную ИС, такую ​​как PIT / MCU / FPGA / или ИС с дискретной логикой? Ответ на каждый из них различен. Также, как вы хотите вводить и выводить данные (кнопки, клавиатура, светодиод, дисплей, экран ...), добавьте как можно больше конкретных деталей ... брв, есть сайты по электротехнике и микроконтроллерам, даже здесь, на SO, которые лучше подходят для этого вроде вопросов. Также вам нужны отдельные часы для каждого канала или общие часы?   -  person Spektre    schedule 08.01.2016
comment
Я хочу использовать микросхемы с дискретной логикой, такие как триггеры, логические элементы, декодеры, мультиплексоры и т. Д. Ввод данных должен осуществляться с помощью кнопок (кнопок), а вывод должен отображаться на светодиодах. Часы должны быть общими.   -  person Nauman Shakir    schedule 08.01.2016
comment
какая технология TTL, DTL, CMOS? Что должно произойти по истечении времени ... в следующем периоде, я имею в виду ... или вы хотите только время одного выстрела?   -  person Spektre    schedule 08.01.2016
comment
Я хочу использовать CMOS, и это должно быть единичное дело. Даже принципиальная схема мне очень поможет. Мне нужен самый простой дизайн.   -  person Nauman Shakir    schedule 08.01.2016
comment
Я твердо уверен, что вам повезет больше на electronics.stackexchange.com. Я попытаюсь нарисовать какую-то упрощенную схему, но это займет некоторое время ... у меня нет инструментов для этого, поэтому придется рисовать ...   -  person Spektre    schedule 08.01.2016
comment
Я буду вам очень благодарен за эту услугу.   -  person Nauman Shakir    schedule 08.01.2016


Ответы (1)


Таймер одиночного выстрела состоит из:

  1. n-битный двоичный счетчик

    управляется источником входных синхроимпульсов CP и сбрасывается пусковым входом. С каждым тактовым импульсом увеличивается его значение. Вход сброса должен быть подключен к сигналу запуска таймера.

  2. n-битный регистр LATCH

    для хранения значения интервала таймера (продолжительность вашего канала D0..D3)

  3. n-битный компаратор

    для сравнения подсчитанного значения и значения интервала. XOR равных битов равно нулю, поэтому, если вы или все xored биты вместе, результат будет 0, если значение регистра LATCH и значение счетчика одинаковы.

  4. выходной триггер

    чтобы запомнить истечение таймера (для работы в неимпульсном режиме), выход - ваш TA.TB,TC,TD Стартовый импульс должен также сбрасывать RS в цепи. Я делаю это с помощью WR, но подозреваю вас вместо этого будет сигнал Старт отдельно ...

Что-то вроде этого:

пример таймера

Вам необходимо принять во внимание отрицания и вспомогательные входы используемых микросхем, чтобы они работали должным образом (некоторые отрицали WR, некоторые нет ... то же самое касается всех контактов, поэтому всегда проверяйте таблицу). Поэтому не забудьте добавить выбор микросхем и включение сигналов в их рабочие условия.

многоканальный таймер

Хорошо, вы просто добавляете LATCH и компараторы для каждого канала, каждый из которых подключен к одному и тому же счетчику. Сложная часть - это выбор канала и начальная часть. вам необходимо добавить декодер 1 from 4, чтобы выбрать правильный LATCH при настройке D0..D3. Чтобы нарисовать схему для этой части, мне нужно было бы больше узнать о цели этого ... Также, если вы устанавливаете интервалы только вручную, вы можете использовать DIP-переключатели вместо LATCH и выбора схемы. все намного проще.

Все вышеперечисленное можно сделать просто с помощью логических элементов NAND или NAND вместо конкретной реализации IC. Для этого вам нужно использовать Карты Карно и логическую алгебру.

Некоторое время я делал что-то с необработанными воротами, так как теперь гораздо проще и дешевле использовать MCU / FPGA для всего этого, так что будьте осторожны, я мог пропустить что-то тривиальное (например, где-то ворота отрицания) ... в любом случае, даже тогда это должно было уйти от таймеров

Кстати, это представление C ++:

int cnt=0,D=?;
bool TA=0;
for (;;)
 {
 if (cnt==D) TA=1;
 cnt=(cnt+1)&15;
 }

[Edit1] 4-канальная версия

4-х канальный таймер

Это основано на приведенном выше тексте. Существует также другой вариант с меньшим количеством компонентов, которые используют модуль ОЗУ с 4 полубайтами вместо регистров LATCH и декодер, составляющий единый таймер, непрерывно циклически проходящий по всем каналам с 4-кратным умножением тактовой частоты CP (например, путем XOR с задержанными сигналами CP).

цикл таймера

person Spektre    schedule 08.01.2016
comment
@NaumanShakir Я настоятельно рекомендую протестировать схему в логическом симуляторе или непосредственно на макетной плате, прежде чем переходить к печатной плате. PS на изображении был неправильный отрицатель, теперь он должен быть правильным - person Spektre; 08.01.2016
comment
Это мне очень помогло :) - person Nauman Shakir; 09.01.2016
comment
Можете ли вы дать мне простую принципиальную схему для всех четырех указанных каналов? - person Nauman Shakir; 09.01.2016
comment
@NaumanShakir добавил полную схему для прямой и петлевой версии 4-канального таймера одиночного выстрела. - person Spektre; 10.01.2016