Проектирование цифровых устройств с использованием ПЛИС (1055366), страница 3
Текст из файла (страница 3)
Другие входы мультиплексоров 1 и 7 служат для задания константных значений.Блоки вводы вывода ПЛИС типа FPGA сложнее, чем в ПЛИСтипа CPLD. Основное отличие заключается в наличии в этих блокахдинамических триггеров для хранения входного и выходного сигналов, а также внутренних сигналов управления третьим состояниемсигналов. Кроме этого, в последних поколениях FPGA указанныерегистры способны синхронизироваться от двух тактовых сигналов,что позволяет использовать технологию передачи с удвоенной скоростью (DDR).
Для обеспечения возможности работы ПЛИС с несколькими типами интерфейсов, использующих при передаче различные уровни сигналов, блоки ввода/вывода подключают кразличным цепям опорного напряжения. Группа блоков ввода/вывода, подключенных к одному и тому же сигналу опорногонапряжения называется банком ввода/вывода. Существенное расширение области применения FPGA достигается также использованием программируемых схем параллельного и последовательногосогласования волновых сопротивлений, соответствующих современным стандартам (PCI, PCI-X, LVCMOS, LVTTL, LVDS и др.).Преимуществами современных ПЛИС являются:• малое время и простота проектирования;• низкая стоимость разработки;• сокращение используемого пространства печатных плат;• более низкая стоимость в расчете на одну микросхему посравнению с заказными ИС;• более продолжительное время обращения продукта на рынкеблагодаря возможности перепрограммирования;• возможность создания динамически реконфигурируемых устройств.17К недостаткам можно отнести более низкую скорость работыПЛИС по сравнению с полностью заказными ИС, а также нерентабельность использования в крупносерийном производстве.Для более детального изучения архитектуры ПЛИС следует обратиться к документации, предоставляемой фирмами-производителями (например, материалы [1 – 3] доступны на сайте www.xilinx.com).2.
ОСНОВЫ ЯЗЫКА VHDL2.1. Назначение языка VHDLЯзык VHDL (Very high speed integration circuits HardwareDescription Language) является наиболее распространенным языкомописания аппаратных средств. Он был принят в качестве стандартав 1987 г. (стандарт VHDL-87), а с начала 1990-х годов описание наэтом языке стали использовать при автоматизированном синтезесхем. Позднее был принят расширенный стандарт VHDL-93, а также стандарт VHDL-AMS для описания аналого-цифровых устройств (в данном пособии не рассматриваются).
В настоящее время язык VHDL (наряду с языком Verilog) поддерживается многимиСАПР цифровых устройств. Язык VHDL используется в следующих целях:• описание поведения цифровых устройств во времени и приизменении входных воздействий;• описание структуры цифровых устройств с различной степеньюдетализации (на системном и блочном уровнях, на уровне регистровых передач, на уровне вентилей);• моделирование цифровых устройств;• описание тестовых воздействий при моделировании устройств;• автоматизации преобразования исходного описания схемы вописание на более низком уровне (вплоть до вентильного).По синтаксису язык VHDL в большой степени похож на универсальные языки программирования.
Однако для описания сложных объектов, последовательно соединенные части которых могутфункционировать параллельно, используются специфические элементы языка (сигналы, порты, конфигурации и т. д.). Особо под18черкнем, что VHDL является проблемно-ориентированным языком. Поэтому следует осмотрительно применять практические навыки, полученные, например, при программировании на языкахвысокого уровня. Опытные разработчики аппаратных средств используют язык VHDL для быстрого и понятного описания схем,четко представляя при этом все проблемы их конкретного воплощения на основе ПЛИС или ASIC.Описание на языке VHDL состоит из ключевых слов, объектови операторов. Различают последовательные и параллельные операторы. Кроме этого, в настоящее время не все операторы языкамогут быть преобразованы в реализуемое на аппаратном уровнеописание (синтезированы), поэтому различают множества синтезируемых и несинтезируемых операторов.
Как правило, при описании устройства можно использовать три различных стиля:• поведенческий стиль, при котором для описания проекта используются причинно-следственные связи между событиями навходах устройства и событиями на его выходах (без уточненияструктуры);• структурный стиль, при котором устройство представляется ввиде иерархии взаимосвязанных простых устройств (подобно стилю, принятому в схемотехнике);• потоковый стиль описания устройства, основанный на использовании логических уравнений, каждое из которых преобразует один или несколько входных информационных потоков в выходные потоки.В практике описания на языке VHDL часто используется комбинация указанных стилей: для каждого устройства или его частивыбирается наиболее подходящий стиль описания. Перечисленныестили будут продемонстрированы и обсуждены на примерах.Заметим, что изложение основ языка VHDL, приведенное в пособии, не может претендовать на полноту: синтаксические конструкции упрощены; незначительные, на взгляд автора, детали непредставлены и не объяснены.
Однако примеры, рассмотренныениже, могут оказаться полезными при описании устройств с цельюих последующего синтеза. Для таких целей используются шаблонные способы описания, заведомо обеспечивающие предсказуемыерезультаты. Для всестороннего изучения языка VHDL можно обратиться к стандарту VHDL-93 [5] или к русскоязычной литературе19[2 – 5]. Для глубокого понимания алгоритмов синтеза низкоуровневых описаний по исходному коду языка VHLD следует обратиться кдокументации, прилагаемой к программам-синтезаторам [6].2.2. Объекты языка VHDL и их типыОписание устройств с помощью языка VHDL основано на использовании объектов (не соответствуют понятию «объект» приобъектно-ориентированном подходе к программированию). Объекты могут относиться к следующим категориям: константы; сигналы;переменные; файлы.
Объект именуется с помощью правильногоидентификатора и, как в языках программирования, обладает областью видимости. В языке VHDL применяется строгая типизация:для выполнения действий над разнотипными объектами требуетсяявно преобразовать их к одному и тому же типу. При этом предусмотрена возможность создавать на основе базовых типов новыепользовательские типы и их подтипы (с применением конструкцийTYPE и SUBTYPE), создавать композиции типов (массивы и записи), а также определять для них процедуры преобразования.Упрощенный синтаксис описания типа и подтипа:<ТИП>::= TYPE <ИДЕНТИФИКАТОР> IS <ОПИСАНИЕ ТИПА> ;<ПОДТИП>::= SUBTYPE <ИДЕНТИФИКАТОР> IS <ОПИСАНИЕ ПОДТИПА> ;Примеры описания типов и подтипов:TYPE Multi_Level_Logic IS (LOW, HIGH, RISING, FALLING,AMBIGUOUS);TYPE BIT IS ('0','1') ;TYPE BYTE_LENGTH_INTEGER IS RANGE 0 TO 255;TYPE WORD_INDEX IS RANGE 31 DOWNTO 0;SUBTYPE HIGH_BIT_LOW IS BYTE_LENGTH_INTEGER RANGE 0TO 127;TYPE MY_WORD IS ARRAY (0 TO 31) OF BIT ;TYPE STATE_TYPE IS (s0,s1,s2,s3);Базовые типы данныхБазовые типы данных, описанные в библиотеке STANDARD(автоматически подключается для всех проектов во всех САПР),перечислены в табл.
1.20Таблица 1Базовые типы данных VHDL-93Тип данныхПеречислимые типыBOOLEANBITBIT_VECTORSEVERITY_LEVELFILE_OPEN_KINDFILE_OPEN_STATUSЗначения/ДиапазонTRUE, FALSE‘0’,’1’Массив элементов BIT с индексами от 0до +2147483647NOTE, WARNING, ERROR, FAILUREREAD_MODE, WRITE_MODE,APPEND_MODEOPEN_OK, STATUS_ERROR,NAME_ERROR, MODE_ERRORЦелочисленные типыINTEGER–2147483647 … +2147483647POSITIV1… +2147483647NATURAL0… +2147483647Типы чисел с плавающей запятойREAL–1.0E38 … +1.0E38Символьные типыCHARACTERNul, …,’0’, …, ’9’, ’@’, ’:’, ’;’, …, ’A’, …, ’Z’,’a’, …, ’z’, DELSTRINGМассив элементов CHARACTER с индексамиот 1 до +2147483647Физические типыTIME–2147483647 … +2147483647DELAY_LENGTH0…+2147483647АтрибутыПомимо своего значения объекты в языке VHDL обладают также атрибутами, отражающими свойства этих объектов.
Для каждого объекта заранее предопределенны несколько атрибутов, крометого, можно создавать пользовательские атрибуты (синтезаторами21не поддерживаются). Для создания пользовательского атрибутанеобходимо его объявить и специфицировать.Объявление атрибута:<ОБЪЯВЛЕНИЕ АТРИБУТА> ::=ATTRIBUTE <ИДЕНТИФИКАТОР>: <ТИП>;Спецификация атрибута:<СПЕЦИФИКАЦИЯ АТРИБУТА> ::=ATTRIBUTE <ИДЕНТИФИКАТОР> OF <ОПИСАНИЕ> : <КЛАСС>IS <ВЫРАЖЕНИЕ>;<ОПИСАНИЕ> ::= <ИМЯ> [ { , <ИМЯ> } ] | OTHERS | ALL<КЛАСС> ::= ENTITY | ARCHITECTURE | CONFIGURATION| PROCEDURE | FUNCTION | PACKAGE| TYPE | SUBTYPE | CONSTANT| SIGNAL | VARIABLE | COMPONENT| LABEL | LITERAL | UNITS| GROUP | FILE<ИМЯ> ::= <ТАГ> [ <СИГНАТУРА> ]<ТАГ> ::= <ИДЕНТИФИКАТОР> | <СИМВОЛЬНЫЙ ЛИТЕРА> |<СИМВОЛ ОПЕРАТОРА>Опции OTHERS и ALL позволяют задать список описаний не ввиде перечисления существующих, а с помощью выбора с исключением (OTHERS) или выбора всех (ALL).Пример объявления и спецификации атрибутов:ATTRIBUTE state_vector : string;ATTRIBUTE state_vector OF fsm : ARCHITECTURE IS"current_state";КонстантыКонстанты — это объекты, значение которых не изменяется впроцессе работы устройства.