Разработка контроллеров клавиатуры и динамической индикации. Вариант № 2, страница 2

Функциональная схема контроллера клавиатуры приведена на рис.3.

Рис.3. Функциональная схема контроллера клавиатуры.

Двоичный счетчик Counter_Scan работает в режиме прямого двоичного счета, перебирая все четырехразрядные двоичные комбинации кода QC[3..0]. Два старших разряда этого кода декодируются дешифратором Decoder_Col, а два младших разряда поступают на управляющие входы мультиплексора Mux_ROW. Тактирование работы устройства производится частотой 25 МГц (сигнал Clk25).  Для обеспечения длительности цикла работы счетчика Counter_Scan порядка 20 мс (необходимо для устранения дребезга контактов клавиатуры) на его вход clk_en подается сигнал E_Clk с выхода переноса пятнадцатиразрядного счетчика Prescaler. При установлении кода QC[3..0], соответствующего нажатой клавише на выходе мультиплексора Mux_ROW появляется сигнал высокого уровня E_Sel, который останавливает работу счетчика Counter_Scan и формирует выходной сигнал Ready, показывающий, что кнопка нажата и данные сканирования готовы. Информационные входы мультиплексора подключены к колонкам матрицы клавиатуры, подтянутым через резисторы к GND (pull down). Выходы дешифратора подключены к столбцам матрицы клавиатуры, причем активный уровень сигнала на этих линиях противоположен уровню подтяжки строк. Таким образом, двум разрядам кода QС[] соответствует одна активная строка. При нажатии кнопки, расположенной в активной строке, на соответствующем входе мультиплексора появляется логический уровень активной строки. Когда сигнал с этого входа коммутируется двумя другими разрядами кода QС[] на выход мультиплексора формируется сигнал E_Sel . Порядок сканирования задается подключением выводов QС[] и определяется в соответствии с индивидуальным заданием (см. табл. 1).

2.  Контроллер динамической индикации CDI

Разрабатываемый контроллер обеспечивает динамическую индикацию четырех четырехразрядных чисел на семисегментных индикаторах. Функциональная схема контроллера приведена на рис.4.

Рис.4.

            Контроллер динамической индикации CDI включает в себя:

-  двухразрядный счетчик Counter_CDI, обеспечивающий циклическое обращение к знакоместам в режиме разделения времени. Частота переключения счетчика порядка 800 Гц определяется сигналом CNT_en, подаваемым на его вход разрешения работы;

- дешифратор двухразрядного двоичного кода Decoder_Col (этот дешифратор такой же, как и в контроллере клавиатуры). Дешифратор обеспечивает выбор одного знакоместа в каждый момент времени, задаваемый состоянием счетчика.

- мультиплексор Mux_CDI, работая синхронно с дешифратором, обеспечивает подключение данных, соответствующих активному в данный момент знакоместу.

- преобразователь кодов 7segment осуществляет преобразование четырехразрядного скан-кода в код управления семисегментным индикатором для понятного отображения данных. Поскольку скан-код определяется порядком сканирования клавиатуры, а он индивидуализирован (см. табл.1), преобразователь кодов 7segment является уникальным блоком, синтезируемым каждым разработчиком самостоятельно.

3.  Сдвигающий регистр RG_Shift.

Сдвигающий регистр RG_Shift обеспечивает последовательную загрузку и хранение четырех четырехразрядных чисел, последовательно получаемых от контроллера клавиатуры kbd_Contr. Возможны различные способы реализации устройства с такой функциональностью, но наиболее просто реализовать его, используя шинную организацию DFFE триггеров, как показано на рис.5.