Text (PDF):
Read
Download
Введение
Матричные индикаторы являются устройствами вывода, реализующими большое количество отображаемых символов. Матричные индикаторы используются в различных целях: в качестве информационных табло, рекламных вывесок и т. п. Однако
в отличие от экранов и дисплеев матричные индикаторы ограничены количеством элементов и способны выводить в один момент один или несколько символов. Принцип их работы заключен в том, что на матрицу индикаторов подается напряжение на соответствующий столбец и строку, на их пересечении и появляется изображение.
Одним из методов работы с матричными индикаторами является программирование функционального узла на базе программируемой логической интегральной схемы (ПЛИС), которая представляет собой электронный компонент (интегральная микросхема), предназначенный для создания конфигурируемых цифровых электронных схем. Логика работы ПЛИС, в отличие от обычных цифровых микросхем, не определяется при изготовлении, а задается посредством программирования [1–3].
Узел управления матричным индикатором используется в ПЛИС, которая широко применяется
в различных устройствах, в том числе в потребительской электронике, телекоммуникационном оборудовании, в платах-ускорителях, которые используются в DATA-центрах и других устройствах
[4, 5]. Моделирование его работы необходимо для последующего тестирования и отладки выполняемых задач.
Программные и аппаратные средства
В работе с целью получения результатов для программирования были использованы программатор и отладочная среда (IDE), которые позволяют создать требуемую структуру цифрового устройства в виде принципиальной электрической схемы или программы. Программирование производилось на специальном языке описания аппаратуры Verilog HDL в программной среде Xilinx Vivado Design Suite. Язык высокого уровня Verilog позволяет создать проект разрабатываемого устройства. Данный язык имеет лаконичный синтаксис [6, 7].
Язык описания аппаратуры (ЯОА) позволяет работать со структурой и программировать ПЛИС. Xilinx ISE – программное обеспечение, помогающее работать с ЯОА. С его помощью производится анализ и синтез конструкций ЯОА.
Разработка RTL-моделей производилась с использованием САПР Xilinx ISE.
Описание устройства
Для корректной работы одного модуля, как правило, требуется реализовать несколько других модулей, которые будут помогать основному, поэтому в работе реализована модель логического устройства, сочетающая в себе функциональные узлы делителя частоты 1 кГц, фильтра дребезга контактов кнопки и конечного автомата генератора последова-тельности. При этом все модули проекта описаны
с помощью языка Verilog.
Помимо синтезируемых модулей, реализуемых
в базисе элементов ПЛИС, были разработаны тестовый модуль на языке Verilog, предназначенный для верификации, с помощью которого без наличия физической модели платы можно увидеть результаты работы узла управления матричным индикатором.
На начальном этапе программирования были заданы символы, которые должны будут выводиться на матричном индикаторе, в данном случае это случайные символы из шестнадцатеричной системы исчисления. В таблице представлены входные
и выходные данные конечного автомата, который генерирует последовательность чисел.
Входные и выходные значения конечного автомата
Input and output values of a finite state machine
Порядок F E D C B A 9 8 7 6 5 4 3 2 1 0
Значение 3 2 9 C 8 D 0 F A B 3 2 1 7 4 1
Для понимания методов написания кода на языке Verilog было определено то, как работают и за что отвечают модули узла управления матричным индикатором. Само устройство имеет структурную схему, в которой определен принцип взаимодействия между собой внутренних модулей и устройств ввода и вывода (переключатели, кнопки и матричный индикатор).
Устройство состоит из следующих структурных элементов:
1. Конечный автомат, который генерирует последовательность символов согласно значениям, представленным в таблице.
2. Блок управления матричным индикатором – выводит последовательность символов на матричный индикатор, которую генерирует конечный автомат.
3. Фильтр дребезга контактов кнопки.
4. Делитель частоты.
Конечный автомат нужен для того, чтобы переходить из состояния в состояние. В зависимости от состояния автомата на матричный индикатор будут подаваться сигналы о выводе того или иного знака. Для управления переходами автомата есть несколько функций: “RST”, “CE” и “UP”. В данном автомате существует 16 состояний, у каждого состояния есть свой номер (DATA_I) и значение (SEQ).
Рассмотрим следующие варианты переходов между состояниями:
– переход вверх при CE = 1 и UP = 1. Автомат переходит в следующее состояние по возрастанию (из DATA_I = 5 в DATA_I = 6);
– переход вниз при CE = 1 и UP = 0. Автомат переходит в следующее состояние по убыванию (из DATA_I = A в DATA_I = 9);
– сброс при RST = 1.
Основным принципом работы автомата будет ожидание функцией “always@” изменения значения в переменной “cnt”, которая является счетчиком состояния. Переменная “cnt” изменяет свои значения при сбросе или перезагрузке в 0, при переходе вверх (UP = 1) на +1 и при переходе вниз (UP = 0) на –1.
Также для правильной работы узла управления матричным индикатором в его составе должны быть модуль делителя частоты и модуль фильтра дребезга. Делитель частоты используется для того, чтобы формировать определенную частоту. Различные устройства работают на различных тактовых частотах, для правильной работы отдельных модулей нужны делители частоты.
Фильтры дребезга используются, чтобы верно считывать сигналы с устройств ввода. При нажатии на клавиши или переключатели формируется дребезг, из-за которого может сложиться ощущение того, что контакт был замкнут очень много раз за очень короткий промежуток времени. Для предотвращения этой ситуации в фильтре дребезга существует функция, которая ожидает определенное ко-личество тактовых сигналов после нажатия, заведомо большее, чем время дребезга контактов, затем проверяет состояние контакта и в зависимости от его значения меняет значение соответствующей переменной.
Все вышеупомянутые устройства соединяются в один общий модуль, который является управляющим автоматом со вспомогательными устройствами, передающим информационные сигналы на модуль матричного индикатора.
В САПР Xilinx ISE была разработана RTL-модель, которая показывает работу узлов между собой и то, как будет выглядеть верхний уровень. Входы и выходы объединяются в модули, модули –
в устройство, это и есть RTL-модель. Verilog RTL-модели, которые описывают управляющий автомат, верхний уровень иерархии и модель делителя частоты, представлены на рис. 1, 2 и 3 соответственно.
Рис. 1. RTL-модель управляющего автомата
Fig. 1. RTL-model of the control automaton
Рис. 2. RTL-модель верхнего уровня иерархии автомата
Fig. 2. RTL model of the top level of the automaton hierarchy
Рис. 3. RTL-модель делителя частоты
Fig. 3. RTL model of a frequency divider
Блок управления матричным индикатором представлен в виде взаимосвязи 4 устройств:
– счетчик столбцов, который производит перебор столбцов;
– дешифратор столбцов, который принимает входные значения и выдает «1» только на одном из выходов, номер которого равен номеру столбца, значение которого подается на вход;
– регистр кода символов, который принимает, хранит и передает коды символов;
– постоянное запоминающее устройство (ПЗУ), в котором хранятся кодировки того, на какие строки подавать информационный сигнал в случае прихода того или иного слова и столбца.
Информационные сигналы приходят на буфер столбцов и буфер строк, после чего информационные сигналы приходят на транзисторы, транзисторы пропускают ток на диоды, и диоды начинают светиться. Структурная схема модуля матричного индикатора и самого матричного индикатора изображена на рис. 4.
Рис. 4. Структурная схема матричного индикатора и его модуля
Fig. 4. Flowchart of the matrix indicator and its module
Для тестирования был создан UUT-модуль, который представляет собой пошаговый ввод значений и задержек между вводом.
На временной диаграмме (рис. 5) виден результат верификации в виде симуляции.
Рис. 5. Результат верификации
Fig. 5. Verification result
Выходные значения совпадают и соответствуют данным, представленным в таблице (кроме первого значения «0», потому что “RST” = 1), следовательно, автомат спроектирован верно, а изображения символов будут выводиться верно и без задержек при работе пикселей.
Заключение
Проведено моделирование функционального узла управления матричным индикатором на базе программируемой логической интегральной схемы в инструментальной среде разработки программ Xilinx Vivado Design Suite. Определены общие для узла управления матричным индикатором функциональные модули. Рассмотрены особенности реализации модулей на программируемой логике. За-программированный функциональный узел на базе программируемой логической интегральной схемы предназначен для создания конфигурируемых цифровых электронных схем. Разработанный узел управления матричным индикатором может быть использован в программируемой логической интегральной схеме, проведено успешное тестирование модулей, составляющих узел управления матричным индикатором.