Разработка цифровых устройств на cpld
Разработка цифровых устройств на программируемых логических интегральных схемах CPLD практически не отличается от разработки обычных цифровых устройств. Для этого не требуется разбираться в особенностях внутренней структуры микросхемы или проектировать матрицу межсоединений. Разработчики ПЛИС предоставляют пакет САПР в составе которого можно вести разработку цифрового устройства в виде обычных схем в схемном редакторе, а затем транслировать эту схему в файл коммутаций внутренней матрицы межсоединений CPLD. Этот файл загружается в ПЗУ микросхемы CPLD и микросхема превращается в разработанное нами цифровое устройство, фактически в заказную СБИС.
В настоящее время разработка цифровых устройств чаще ведется с применением языков программирования схем, таких как AHDL или VHDL. Применение языков программирования вместо примитивов, являющихся аналогами микросхем средней интеграции, позволяет значительно оптимизировать внутреннюю структуру прошивки микросхемы.
В качестве примера системы автоматизированного проектирования (САПР) программируемых логических интегральных схем можно привести пакет Quartus II, предлагаемый фирмой Alterra. С работой программного пакета Quartus II можно познакомиться в лабораторной работе 1 " Исследование цифровых устройств на основе программируемых логических интегральных схем (ПЛИС) в среде Quartus II"
Глава 6
Программируемые пользователем вентильные матрицы (FPGA).
Программируемые интегральные микросхемы CPLD предназначены для применения в цифровых устройствах с большим количеством логических элементов. Кроме того, в CPLD трудно обеспечить эффективное применение всех макроячеек. Всегда часть макроячеек остается неиспользуемыми. Часто из макроячейки используется только триггер или логический элемент "2И" ("2ИЛИ"). Остальная часть схемы зря занимает площадь кристалла и потребляет ток от источника питания.
Для реализации сложных цифровых схем удобно применять программируемые логические схемы (ПЛИС), обладающие большей логической вместимостью и большей степенью использования кристалла. В качестве подобных микросхем и можно назвать программируемые пользователем вентильные матрицы (FPGA — Field- Programmable Gate Array). Принцип работы FPGA существенно отличаются от принципа работы CPLD. FPGA является наследником комбинационных схем, реализованных на постоянных запоминающих устройствах (ПЗУ). Обобщенная структура микросхем FPGA приведена на рисунке 6.1.
Рисунок 6.1. Обобщенная структура микросхем FPGA
Типовая схема программируемой интегральной микросхемы FPGA состоит из трех видов блоков: логические блоки, блоки ввода-вывода, предназначенные для обмена сигналами через внешние выводы микросхемы и программируемые электронные ключи, предназначенные для создания соединений между внутренними блоками микросхемы FPGA. Логические блоки размещаются в узлах решетки вертикальных и горизонтальных шин проводников. Благодаря возможности соединения проводников при помощи электронных ключей друг с другом, можно создавать нужные нам соединения между логическими блоками. Соединения осуществляемые электронными ключами можно программировать, замыкая и размыкая эти ключи. Матрица соединений хранится в ПЗУ конфигурации и может быть изменена при программировании ПЛИС. Блоки ключей, замыкающие проводники соединительных шин FPGA между собой, обозначены на рисунке 6.1 квадратами серого цвета.
Соединение внутренней цифровой схемы с блоками ввода-вывода также программируется электронными ключами. У различных микросхем FPGA реальное число программируемых внутренних соединений значительно отличается. Это определяет насколько полно может быть использованы внутренние ресурсы микросхемы и может оказать влияние на предельное быстродействие разработанного цифрового устройства. Эти особенности необходимо учитывать в процессе проектирования цифрового устройства при выборе фирмы-изготовителя и конкретных микросхем FPGA, предназначенных для реализации этого устройства.
Особенностью структуры FPGA является то, что каждый логический блок обычно имеет небольшое число входов и один выход. Это позволяет более полно использовать внутренние ресурсы микросхемы. Типичный логический блок строится на основе ПЗУ, в ячейках которого записана таблица истинности комбинационной схемы. Подобный блок ПЗУ обычно называется LUT (Look Up Table). Каждая ячейка способна хранить значение одной строки таблицы истинности, логический '0' или '1'. Размер LUT определяется числом входов, которое изменяется в зависимости от типа выбранной микросхемы и фирмы-производителя. В качестве примера на рисунке 6.2 показано внутреннее устройство небольшого LUT ПЗУ с тремя входами x1, x2, x3, и одним выходом f. Крестиками обозначены электронные ключи, включенные между источником питания и входом мультиплексора.
Рисунок 6.2. Пример внутреннего устройства LUT ПЗУ
LUT ПЗУ, изображенное на рисунке 6.2, способно реализовать любую логическую функцию трех переменных. Поскольку таблица истинности функций трех переменных имеет восемь строк, то LUT ПЗУ состоит из восьми запоминающих ячеек. Одна ячейка содержит значение выходного сигнала в каждой строке таблицы истинности. Входные сигналы x1, x2 и x3 подаются на адресные входы мультиплексора 8×1. В зависимости от комбинации логических сигналов на адресных вхоодах A0, A1, A2, на выход мультиплексора поступает сигнал с одного из его информационных входов X0...X7.
Для программирования LUT необходимо при помощи электронных ключей записать таблицу истинности реализуемой функции в ячейках памяти. Электронный ключ представляет собой полевой транзистор с плавающим затвором, что позволяет сохранять состояние ключа при отключении питания. При замыкании электронного ключа на вход мультиплексора поступает напряжение питания, что соответствует логической единице. При размыкании этого ключа на вход мультиплексора через резистор R поступает потенциал общего провода микросхемы, что соответствует логическому нолю. После программирования при x1=x2=x3=0 на выход LUT ПЗУ будет передан сигнал с самого верхнего входа мультиплексора, x2=x3=0, x1=1 на выход LUT ПЗУ будет передан сигнал с второго сверху входа мультиплексора, и т.д..
LUT ПЗУ современных микросхем FPGA обычно имеют четыре или пять входов и состоят из 16 или 32 запоминающих ячеек соответственно. Как и в CPLD микросхемах, кроме комбинационной цифровой схемы логический блок содержит запоминающее устройство, такое как D-триггер. На рисунке 6.3 приведен пример схемы логического блока FPGA микросхемы.
Рисунок 6.3. Пример схемы логического блока FPGA микросхемы
Логический сигнал, поступающий с выхода LUT ПЗУ на D вход триггера, запоминается по сигналу синхронизации Clk, который может формироваться как внутренними элементами схемы, так и поступать с внешних выводов FPGA микросхемы. Мультиплексор, стоящий на выходе логического блока, позволяет либо применять D-триггер при построении регистровых схем, либо отключать его от схемы при проектировании комбинационных логических схем.
Рисунок 6.4. Пример запрограммированного участка FPGA
На рисунке 6.4 приведен участок внутренней структуры микросхемы FPGA, запрограммированый для реализации комбинационной схемы. Данная микросхема FPGA состоит из LUT ПЗУ с двумя входами и четырьмя программируемыми линиями соединений. Программируемые электронные ключи обозначены символом X. Каждый замкнутый ключ, соединяющий вертикальную и горизонтальную линии показан красным цветом. Не используемые линии соединений и ключи на рисунке показаны черным. Первые два блока LUT запрограммированы на реализацию функций f1=x1x2 и f2=x2x3. Третий LUT реализует функцию f=f1+f2.
Раздел 8
Индикаторы.
Глава 1
Виды индикаторов.
Индикаторы предназначены для отображения различных видов информации для человека. Простейший вид информации - это двоичная информация. Например: исправен предохранитель или вышел из строя, включено питание или нет, задействован режим передачи или нет.
Особым видом двоичной информации можно считать пиктограммы, то есть небольшие картинки. Примером таких картинок можно назвать батарейку или антенну, вертикальные линии, отображающие уровень заряда этой батарейки или уровень принимаемого сигнала, колокольчик, будильник или замочек. Пример изображения пиктограмм приведён на рисунке 1.1.
Рисунок 1.1 Пример пиктограмм.
Часто требуется отображать десятичную информацию. В этом случае используется десятиразрядный бинарный код. Каждому разряду ставится в соответствие изображение символа десятичной цифры. В этом смысле десятичный код практически не отличается от пиктограммы. Пример такого индикатора приведен на рисунке 1.2. В каждый момент времени на индикаторе может отображаться только один символ из всех возможных.
Рисунок 1.2. Пример десятичного индикатора
С целью экономии количества разрядов и упрощения конструкции индикаторов были придуманы семисегментные индикаторы. В них информация формируется при помощи семи сегментов. Изображение такого индикатора приведено на рисунке 1.3.
Рисунок 1.3. Изображение семисегментного индикатора и название его сегментов
Использование семисегментных индикаторов позволяет сформировать все десятичные цифры и часть букв. Однако не все символы могут быть отображены на этом индикаторе. Для отображения всех цифр, символов и букв алфавита в настоящее время используются матричные индикаторы. Наиболее распространены матричные индикаторы 5*7. Пример изображения на таком индикаторе буквы S приведён на рисунке 1.4.
Рисунок 1.4. Пример изображения буквы S на матричном индикаторе 5*7
Для отображения перечисленных видов информации можно воспользоваться различными индикаторами, такими как малогабаритные лампочки накаливания, газоразрядные индикаторные лампы, жидкокристаллические или светодиодные индикаторы. Рассмотрим подробнее преимущества и недостатки каждого из этих видов индикаторов.