Благодаря внутреннему гистерезису очень полезная схема триггера Шмитта принимает медленно нарастающий входной сигнал и формирует чистый, без выбросов выходной сигнал. К сожалению, программируемые пользователем логические устройства, такие как ПЛИС и программируемые вентильные матрицы, обычно не предлагают прямого метода синтеза логических элементов и буферов с триггерами Шмитта. В этой статье показано, как с помощью нескольких внешних компонентов и небольшого кода на языке VHDL можно реализовать триггер Шмитта и использовать его в различных полезных приложениях.
Чтобы создать эквивалент базового буфера c триггером Шмитта, используют два внешних резистора, создающих вокруг буфера положительную обратную связь (Рисунки 1а и 1б). Можно также использовать четыре внешних резистора для установки двух пороговых уровней на входах RS-триггера (Рисунок 1в).
![]() |
|
Рисунок 1. | Используйте часть программируемого логического устройства или вентильной матрицы для реализации буфера с триггером Шмитта (а), добавив два (б) или четыре внешних резистора (в). |
Следующие формулы описывают положительный и отрицательный пороговые уровни базового триггера Шмитта, соответственно:
В этих формулах VTH представляет собой пороговое входное напряжение ПЛИС/вентильной матрицы, а VCC – напряжение источника питания.
![]() |
|
Рисунок 2. | Добавьте резистор и конденсатор к базовому буферу с триггером Шмитта, чтобы создать недорогой генератор. |
Основанный на эквивалентной схеме триггера Шмитта на Рисунке 1б, недорогой резистивно-емкостной генератор на Рисунке 2 требует четырех внешних пассивных компонентов. Резистор R и конденсатор C задают частоту колебаний схемы. Обратите внимание, что значения сопротивлений R1 и R2 должны быть больше, чем R. Листинги 1 и 2 содержат VHDL-реализацию и RTL-архитектуру этой схемы, соответственно.
Листинг 1.
Entity Oscillator is
Port (
A : in std_logic;
B : in std_logic;
OUT : out std_logic
;)
end Oscillator;
Листинг 2.
architecture RTL of Oscillator is
begin
A <= B;
OUT <= not A;
end RTL;
На Рисунке 3 буфер с открытым коллектором обеспечивает запуск базовой схемы ждущего мультивибратора с перезапуском на основе триггера Шмитта путем разряда времязадающего конденсатора C. Длительность выходного импульса схемы приблизительно равна постоянной времени RC. VHDL-реализация и RTL-архитектура показаны в Листинге 3.
Листинг 3.
Entity Monostable is
Port (
A : in std_logic;
B : in std_logic;
Trigger : in std_logic;
C : out std_logic;
OUT : out std_logic
;)
end Monostable;
architecture RTL of Monostable is
begin
A <= B;
OUT <= not A;
C <= ’0’ when Trigger= ’1’ else ’Z’;
end RTL;
Перезапускаемый ждущий мультивибратор можно преобразовать в показанный на Рисунке 4 ждущий мультивибратор без перезапуска, используя логический элемент «И-НЕ» с открытым коллектором для разряда времязадающего конденсатора C. Пока на выходе схемы в течение установленного временного интервала остается высокий логический уровень, система блокирует внешние запуски. Как и в предыдущей схеме, длительность выходного импульса приблизительно равна постоянной времени RC. В Листинге 4 приведены VHDL- и RTL-коды.
Листинг 4.
Port (
A : in std_logic;
B : in std_logic;
Trigger : in std_logic;
C : out std_logic;
OUT : out std_logic
;)
end Monostable;
architecture RTL of Monostable is
begin
A <= B;
OUT <= not A;
C <= ’0’ when Trigger= ’1’ and A=’0’ else ’Z’;
end RTL;
![]() |
|
Рисунок 4. | Логический элемент «И-НЕ» блокирует импульсы запуска, образуя ждущий мультивибратор без перезапуска. |
Базовую схему буфера на ПЛИС с обратной связью можно использовать, чтобы обеспечить гистерезис для схемы подавления дребезга контактов. На Рисунке 5 резистор R4 обеспечивает ток очистки контактов, а элементы R3 и C образуют фильтр нижних частот для снижения шума, создаваемого дребезгом контактов. Номиналы компонентов зависят от требований конкретного приложения.
![]() |
|
Рисунок 5. | Используйте триггер Шмитта для устранения дребезга контактов переключателя. |