Антидребезговая система (antibounce)
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

Как известно при нажатии кнопок, при контакте возникает дребезг, и вместо нужного простого перехода из нуля в единицу одной ступенькой возникает сигнал в несколько скачков как показано на рисунке 3.2.1

 

Рис 3.2.1 Сигнал включения с дребезгом и без дребезга

 

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

 

Рис 3.2.2 Схема антидребезгового устройства

 

Счетчик реализован с посредством макрофункции Lpm_counter. Встроенная в среду макрофункция Lpm_counter, есть ни что иное, как счетчик с задаваемыми пределами и параметрами, созданная для облегчения процесса разработки подобных устройств.

3.2.1,1 Встроенная макрофункция – счетчик lpm_counter

Двоичный счетчик с возможностью прямого и обратного счета и синхронного и асинхронного сброса. Lpm_counter описывается как переменная в разделе VARIABLE. Форма описания счетчика следующая:

Имя_счетчика : lpm_counter WITH STATES (Параметры счетчика);

Например

COUNTER : lpm_counter WITH (lpm_width=4);

Таблица 3.2.1 Параметры счетчика

 

Параметры счетчика Тип Обязательный Описание
LPM_WIDTH Целочисленный Да Ширина счетчика(число битов на выходе)
LPM_DIRECTION Строковый Нет Устанавливается в прямом “UP” или обратном “DOWN” направлении идет счет, по умолчанию стоит прямой.
LPM_MODULUS Целочисленный Нет Установка максимума счета, если параметр не усыновлен то счет не ограничен.
LPM_AVALUE Целочисленный/Строковый Нет Ограничивает максимум счета 32 битами во избежания перегрузки счетчика, когда поведение счетчика не определено при переполнении
LPM_SVALUE Целочисленный/Строковый Нет Постоянное значение означает что нагрузка включается по переднему фронту clock когда sset или sconst в “1”. Этот параметр должен быть использован если sconst используется
LPM_HINT Строковый Нет Позволяет с большой точностью перевести текстовый файл из AHDL в VHDL. По умолчанию не используется.
LPM_TYPE Строковый Нет Связывает LPM_имя с VHDL графическим файлом
CARRY_CNT_EN Строковый Нет Принимает значения “SMART”, “ON”, “OFF”. При включении lpm_counter функция cnt_en передает сигнал через несущую цепочку. В некоторых случаях, этот параметр используется как параметр установки появления изменения в скорости, но при желании это можно выключить. По умолчанию стоит “SMART”, который сохраняет лучшие отношение между скоростью и размером.
LABWIDE_SCLR Строковый Нет Принимает значения “ON”,”OFF” или не используется. По умолчанию стоит “NO”. Он позволяет выключить использование LAB-ширины sclr особенно при использовании устройств на базе FLEX 6000. Уменьшает использование случайных библиотек, и таким образом даёт возможность использовать высшей логики плотнее, когда SCLR не используется в LAB.

Таблица 3.2.2 Таблица истинности lpm_counter

 

Входы

Выходы Функции
aclr aset aload clk_en clock Sclr sset sload cnt_en updoun q[]  
1 x x x x x x x x x 000…

 

0 1 x x x x x x x x 111…
0 1 x x x x x x x x LPM_AVALUE Асинхр. установка значений
0 0 1 x x x x x x x data[] Асинхр. загрузка данных
0 0 0 0 x x x x x x q[] Текущее значение
0 0 0 1 ò 1 x x x x 000… Синхронный сброс
0 0 0 1 ò 0 1 x x x 111… Синхронная установка
0 0 0 1 ò 0 1 x x x LPM_SVALUE Синхронная установка значении для LPM_SVALUE
0 0 0 1 ò 0 0 0 0 0 q[] Текущее значение
0 0 0 1 ò 0 0 1 x x data[] Синхронная загрузка данных
0 0 0 1 ò 0 0 0 1 1 q[]+1 Счет в прямом направл.
0 0 0 1 ò 0 0 0 1 0 q[]-1 Счет в обратном направл.

 


Дата: 2019-12-22, просмотров: 230.