Школа разработки аппаратуры ЦОС на ПЛИС. НПП “Цифровые решения”

Разработка светодиодных систем отображения информации

Системы передачи по волоконно-оптическим линиям связи

Светодиодные экраны

Бегущие строки

НПП “Цифровые решения”

Контрактная разработка радиоэлектронных устройств

Цифровая обработка сигналов и изображений

Поставка высокотехнологичных изделий

О компании | Контакты | Новости | Разработки | Продукция | Выполненные проекты | Публикации | Ссылки

Занятие 1. Обзор элементной базы.

Занятие 2. Система проектирования MAX+PLUS II фирмы ALTERA.

Занятие 3. Программное обеспечение проектирования на ПЛИС фирмы Xilinx.

Занятие 4. Язык описания аппаратуры VHDL.

Занятие 5. Язык описания аппаратуры AHDL.

Занятие 6. Язык описания аппаратуры AHDL (продолжение).

Занятие 7. Особенности функционирования ПЛИС в составе системы ЦОС.

Поиск по сайту:

Современные алгоритмы ЦОС: пути реализации и перспективы применения

Стешенко В.Б.

Занятие 1. Обзор элементной базы.

Занятие 2. Система проектирования MAX+PLUS II фирмы ALTERA.

Занятие 3. Программное обеспечение проектирования на ПЛИС фирмы Xilinx.

Занятие 4. Язык описания аппаратуры VHDL.

Занятие 5. Язык описания аппаратуры AHDL.

Занятие 6. Язык описания аппаратуры AHDL (продолжение).

Занятие 7. Особенности функционирования ПЛИС в составе системы ЦОС.

Координаты:

г. Москва, пр. Мира, 102

Для писем:

105066, Россия, г. Москва, а/я 18

Тел.: (495) 778-97-04

e-mail: mail@dsol.ru, info@dsol.ru

© НПП “Цифровые решения” 2003 — 2006

| Разработка светодиодных экранов | Разработка бегущих строк | Проектирование ПЛИС и СБИС | Разработка законченных устройств и модулей | Синтез алгоритмов |


Бегущие строки

НПП “Цифровые решения”

Контрактная разработка радиоэлектронных устройств

Цифровая обработка сигналов и изображений

Поставка высокотехнологичных изделий

О компании | Контакты | Новости | Разработки | Продукция | Выполненные проекты | Публикации | Ссылки

Занятие 1. Обзор элементной базы.

Занятие 2. Система проектирования MAX+PLUS II фирмы ALTERA.

Занятие 3. Программное обеспечение проектирования на ПЛИС фирмы Xilinx.

Занятие 4. Язык описания аппаратуры VHDL.

Занятие 5. Язык описания аппаратуры AHDL.

Занятие 6. Язык описания аппаратуры AHDL (продолжение).

Занятие 7. Особенности функционирования ПЛИС в составе системы ЦОС.

Поиск по сайту:

Современные алгоритмы ЦОС: пути реализации и перспективы применения

Стешенко В.Б.

Занятие 1. Обзор элементной базы.

Программируемые логические интегральные схемы: обзор архитектур и особенности применения.

Программируемые логические интегральные схемы становятся в последнее время все более распространенной и привычной элементной базой для разработчиков цифровых устройств. Последние годы характеризуются резким ростом плотности упаковки элементов на кристалле, многие ведущие производители либо начали серийное производство, либо анонсировали ПЛИС с эквивалентной емкостью более 1 миллиона логических вентилей. Цены на ПЛИС (к сожалению, только лишь в долларовом эквиваленте) неуклонно падают. Так, еще год - полтора назад ПЛИС емкостью 100 000 вентилей стоила в Москве в зависимости от производителя, приемки, быстродействия от 1500 до 3000 у.е., то сейчас такая микросхема стоит от 50 до 350 у.е., то есть цены упали практически на порядок и эта тенденция устойчива. Что касается ПЛИС емкостью 10 000 – 30 000 логических вентилей, то появились микросхемы стоимостью менее 10 у.е.

В таблице 1 приведена динамика развития рынка ПЛИС (по данным работы [1])

Таблица 1. Объем рынка ПЛИС, млн $.

Область продаж | 1994 | 1995 | 1996 | 1997 | 1998 | 1999
Военно-промышленная и космическая | 43 | 68 | 92 | 119 | 150 | 188
Гражданская | 684 | 1125 | 1598 | 2146 | 2823 | 3678
Итого | 727 | 1193 | 1690 | 2265 | 2973 | 3866

В этой связи появляется ряд вопросов, связанных с тем, какую элементную базу и как использовать в новых разработках, а также при проведении модернизации существующих систем.

Рассмотрим особенности выбора элементной базы на примере проектирования устройств цифровой обработки сигналов.

Современные алгоритмы обработки сигналов функционально можно разделить на следующие основные классы.

  1. Алгоритмы цифровой фильтрации (в т.ч. алгоритмы нелинейной, оптимальной, адаптивной фильтрации, эвристические алгоритмы, полиноминальные фильтры, алгоритмы фильтрации изображений и др.). Подробная классификация алгоритмов цифровой фильтрации и перспективы путей реализации алгоритмов на ПЛИС приведены в работе [1].

  2. Алгоритмы, основанные на применении ортогональных преобразований (быстрые преобразования Фурье, Хартли, Уолша, Адамара, преобразование Карунена - Лоэва и др.)

  3. Алгоритмы, реализующие кодирование и декодирование, модуляторы и демодуляторы, в том числе сложных сигналов (псевдослучайных, хаотических и др.).

  4. Алгоритмы интерфейсов и стандартных протоколов обмена и передачи данных.

Далее рассмотрим перспективы тех или иных путей реализации алгоритмов ЦОС.

Реализация алгоритмов ЦОС на основе специализированных БИС.

Существует целый ряд устройств и алгоритмов, которые практически являются стандартными, и в больших количествах повторяются от разработки к разработке. Примером таких устройств могут служить узлы массовых коммуникационных средств, микросхемы сложных интерфейсов (pCI, pCMCI и т.д.), компоненты систем мультимедиа и видеообработки для массовых компьютеров и т.п. К сожалению, эти БИС обладают рядом недостатков, сдерживающих их применение в разработках российского производителя. Рассмотрим их подробнее

Во-первых, в России практически полностью отсутствует собственное производство и разработка массовых высокотехнологичных средств связи и компонентов вычислительной техники (отдельные попытки производить на мощностях ряда предприятий модули памяти высоким полетом технологии не отличаются). В этой связи приобрести подобные БИС для апробации практически невозможно. Вспоминается попытка приобрести в Москве комплект контроллеров интерфейса pCMCI. Несмотря на большое разнообразие заявленных в каталогах изделий различных производителей, реально заказать (о поставке со склада и мечтать было нечего!) партию для отработки так и не удалось. Приобрести же специализированный Фурье-процессор или фильтр представляется и вовсе нереальной задачей.

Во-вторых, адаптация стандартных компонентов для обработки сигналов под специализированную задачу требует применения дополнительных схем сопряжения, обвязки, зачастую нестандартных и вновь разрабатываемых, что практически сводит на нет все преимущества специализированных БИС. Изготовление же БИС по заказу практически невозможно из-за высокой стоимости. Широко рекламируемые предприятиями Зеленограда БМК (в частности Исполин 60Т) по своим характеристикам отстают от зарубежных аналогов (или прототипов?..) примерно на пять – десять лет.

В этой связи достаточно интересными и перспективными к применению в российских условиях представляются БИС, реализующие, с одной стороны, некоторые стандартные протоколы передачи данных, с другой стороны обладающие достаточной гибкостью и совместимостью на уровне программ со стандартными управляющими или сигнальными процессорами. Подобные БИС производят такие компании как Giga, Mitel, Teltone, Motorola, Siemens, plessey, Zilog, Harris и ряд других (особенно японских и корейских) компаний. Некоторые из них имеют дилеров или дистрибьюторов в России. Так, фирма Zilog предлагает довольно широкую номенклатуру БИС для реализации систем передачи и обработки данных, обладающих, с одной стороны, поддержкой специфических функций, характерных для коммуникационных задач, с другой стороны, совместимых по программному коду и интерфейсу со стандартными аппаратными средствами. Данная программа создания БИС получила название Zilog superintegration TM , и в ее рамках разработаны следующие кристаллы:

  • Z89C25 на 80% совместим по кодам с процессором TMS320C25, содержит ряд дополнительных инструкций для обеспечения функционирования дополнительных устройств, имеет 32 разрядные АЛУ и аккумулятор, 16 разрядный перемножитель. На этом же кристалле интегрированы полудуплексный кодек, контроллер протокола V.24, таймеры.

  • Z01701 помимо ядра цифрового сигнального процессора содержит контроллеры протоколов V.17, V.29, V.27, V.21, совместим со спецификациями Т.30 и Т.4, имеет интегрированные фильтры.

  • Z80382 обеспечивает поддержку шины pCMCI, интерфейсов GCI, plug-and-play, асинхронного последовательного адаптера, имеет встроенное процессорное ядро.

Кроме вышеупомянутых БИС, Zilog выпускает достаточно широкую номенклатуру БИС контроллеров разнообразной периферии со встроенным процессорным ядром. Применение подобных кристаллов в разработках экспериментальных, мелко- и среднесерийных устройств позволит достигнуть высокого эффекта за приемлемую цену. По крайней мере, не придется заниматься изобретением велосипеда в части реализации стандартных протоколов и взаимодействия с собственным ядром обработки сигналов.

Другой класс специализированных БИС, заслуживающий внимания разработчиков – БИС для реализации специфических алгоритмов, такие как нейрочипы, процессоры для распределенных вычислений, обработки радиолокационной информации и другие. Несмотря на то, что их производство и применение находятся в зачаточном состоянии, многие современные алгоритмы реализовать другим путем практически невозможно.

Таким образом, применение специализированных БИС в современных российских условиях, к сожалению, почти не распространено и ограничивается в основном реализацией протоколов передачи данных.

Реализация алгоритмов ЦОС на основе цифровых сигнальных процессоров общего назначения.

В настоящее время большое число разработчиков выбирают в качестве средства реализации алгоритмов цифровые сигнальные процессоры (ЦСП) общего назначения. В этом есть определенный резон, связанный с тем, что ЦСП достаточно распространены и доступны на рынке, имеют привлекательные цены. Главным преимуществом систем обработки сигналов на ЦСП является гибкость системы, возможность реализации адаптивных и обучающихся алгоритмов. Кроме того, отладочные средства начального уровня недороги, достаточна информационная поддержка, выпущена литература по применению на русском языке.

Лидером по разработке и производству ЦСП является компания Texas Instruments (TI). Далее по объему производства (1996-1997 годы) следуют Motorola и Lucent (AT&T). Как ни странно, занимающая на российском рынке ведущие позиции Analog devices находится на 4 месте. Тем не менее, ЦСП этой компании, пожалуй, наилучшим образом приспособлены к реализации широкого круга задач ЦОС. Их основное преимущество – широкая номенклатура программно полностью совместимых устройств с различным быстродействием и дополнительными периферийными элементами, с фиксированной и плавающей точкой. Наличие недорогих средств отладки позволяет использовать эти ЦСП в малобюджетных проектах.

Вместе с тем, ЦСП имеют ряд недостатков, которые безусловно приходится учитывать при разработке новых изделий. Во-первых, пока тактовая частота портов обмена данными ЦСП не превышает 100 МГц, что ограничивает область применения в системах радиодиапазона. Во-вторых, каждое семейство ЦСП имеет собственные коды команд, что делает практически невозможным перенос реализованного алгоритма на ЦСП других семейств или создания универсальных библиотек алгоритмов. Существующие же компиляторы с языков высокого уровня, например с Си, также ориентированы на конкретные ЦСП и не решают данную проблему. В-третьих, при реализации сложных параллельных структур приходится увеличивать число процессоров и обеспечивать их нормальную работу в мультипроцессорном режиме. Наконец, в-четвертых, ЦСП, как правило, требуют внешних навесных элементов для реализации сносного интерфейса с источниками и приемниками данных.

Реализация алгоритмов ЦОС на базе ПЛИС.

Основными преимуществами ПЛИС при применении в средствах обработки сигналов являются:

  • высокое быстродействие;
  • возможность реализации сложных параллельных алгоритмов;
  • наличие средств САПР, позволяющих провести полное моделирование системы;
  • возможность программирования или изменения конфигурации непосредственно в системе;
  • совместимость при переводе алгоритмов на уровне языков описания аппаратуры (VHDL, AHDL, Verilog и др.);
  • совместимость по уровням и возможность реализации стандартного интерфейса;
  • наличие библиотек мегафункций, описывающих сложные алгоритмы;
  • архитектурные особенности ПЛИС как нельзя лучше приспособлены для реализации таких операций, как умножение, свертка и т.п.

В настоящее время быстродействие ПЛИС достигло величин порядка 250 – 300 МГц, что позволяет реализовывать многие алгоритмы в радиодиапазоне.

Рассмотрим историю развитию архитектур ПЛИС. В конце 1970 годов на рынке появились ПЛИС, имеющие программируемые матрицы "И" и "ИЛИ". В зарубежной литературе эти архитектуры FpLA (Field programmable Logic Array) и FpLS (Field programmable Logic Sequensers). В те времена отечественная электронная промышленность была еще "на плаву" и вскоре появились отечественные схемы K556pT1,pT2,pT21. Недостаток такой архитектуры – слабое использование ресурсов программируемой матрицы "ИЛИ".

Идя по пути совершенствования такой архитектуры, разработчики ПЛИС предложили более простую и изящную архитектуру - архитектуру программируемой матричной логики (pAL - programmable Array Logic и GAL – Gate Array Logic) - это ПЛИС, имеющие программируемую матрицу "И" и фиксированную матрицу "ИЛИ", у ПЛИС GAL на выходе имеется триггер. К этому классу относятся широкая номенклатура ПЛИС небольшой степени интеграции. В качестве примеров можно привести отечественные ИС КМ1556ХП4, ХП6, ХП8, ХЛ8, ранние разработки (середина –конец 1980-х годов) ПЛИС фирм INTEL, ALTERA, AMD, LATTICE и др. Помимо pAL и GAL архитектур, были разработаны ПМЛ, имеющие только одну программируемую матрицу "И", например, схема 85C508 фирмы INTEL. Другим подходом к уменьшению избыточности программируемой матрицы "ИЛИ" является программируемой макрологика. ПЛИС, построенные по данной архитектуре содержат единственную программируемую матрицу "И-НЕ" или "ИЛИ-НЕ", но за счет многочисленных инверсных обратных связей способны формировать сложные логические функции. К этому классу относятся, например, ПЛИС pLHS501 и pLHS502 фирмы SIGNETICS, имеющие матрицу "И-НЕ", а также схема XL78C800 фирмы EXEL, основанная на матрице "ИЛИ"-НЕ.

Выше перечисленные архитектуры ПЛИС содержат небольшое число ячеек, к настоящему времени морально устарели и применяются для реализации относительно простых устройств, для которых не существует готовых ИС средней степени интеграции. Естественно, для реализации серьезных алгоритмов управления или ЦОС они не пригодны.

В начале 1980 годов на мировой рынок микроэлектронных изделий выходят три ведущие фирмы–производители ПЛИС. В июне 1983 года основана фирма Altera Corporation, (101 Innovation Drive, San Jose, CA 95134, USA, www.altera.com), в феврале 1984 компания Xilinx, Inc. (2100 Logic Drive, San Jose, CA 95124-3400, USA, www.xilinx.com), в 1985 году - Actel Corporation (955 East Arques Avenue, Sunnyvale, CA 94086-4533, USA, www.actel.com). Эти три компании занимают до 80% всего рынка ПЛИС и являются основными разработчиками идеологии их применения. Если ранее ПЛИС являлись одним из множества продуктов, выпускаемых такими гигантами, как Intel, AMD и др., то начиная с середины 1980 годов на рынке ПЛИС происходит специализация и законодателями мод являются фирмы, специализирующиеся только на разработке и производстве ПЛИС.

С появлением новых производителей появились и новые архитектуры. ИС ПМЛ имеют архитектуру, весьма удобную для реализации цифровых автоматов. Развитие этой архитектуры – CpLD (Complex programmable Logic Devices) - ПЛИС, содержащие несколько логических блоков (ЛБ), объединенных коммутационной матрицей. Каждый ЛБ представляет собой структуру типа ПМЛ, т.е. программируемую матрицу "И" и фиксированную матрицу "ИЛИ". ПЛИС типа CpLD, как правило, имеют довольно высокую степень интеграции (до 10000 эквивалентных вентилей, до 256 макроячеек). К этому классу относятся ПЛИС семейства MAX5000 и MAX7000 фирмы ALTERA, схемы XC7000 и XC9500 фирмы XILINX, а также большое число микросхем других производителей (Atmel, Vantis, Lucent и др.). Рассмотрим эту архитектуру на примере ПЛИС семейства MAX3000 фирмы Altera.. Их архитектура близка к архитектуре семейства MAX7000, однако имеется ряд небольших отличий. В таблице приведены основные параметры ПЛИС MAX3000.

Таблица 2.

 | EpM3032A | EpM3064A | EpM3128A | EpM3256A
Логическая емкость, эквивалентных вентилей | 600 | 1250 | 2500 | 5000
Число макроячеек | 32 | 64 | 128 | 256
Число логических блоков | 2 | 4 | 8 | 16
Число программируемых пользователем выводов | 34 | 66 | 96 | 158
Задержка распространения сигнала вход-выход, tpD, нс | 4.5 | 4.5 | 5 | 6
Время установки глобального тактового сигнала, tSU, нс | 3.0 | 3.0 | 3.2 | 3.7
Задержка глобального тактового сигнала до выхода, tCO1, нс | 2.8 | 2.8 | 3.0 | 3.3
Максимальная глобальная тактовая частота, fCNT, МГц | 192.3 | 192.3 | 181.8 | 156.3

Микросхемы семейства MAX3000 выполнены по CMOS EpROM технологии, при соблюдении технологических норм 0.35 мкм, что позволило существенно удешевить их по сравнению с семейством MAX7000S. Все ПЛИС MAX3000 поддерживают технологию программирования в системе (ISp, In-system programmability) и периферийного сканирования (boundary scan) в соответствии со стандартом IEEE Std. 1149.1 JTAG. Элементы ввода-вывода (ЭВВ) позволяют работать в системах с уровнями сигналов 5В, 3.3В, 2.5В. Матрица соединений имеет непрерывную структуру, что позволяет реализовать время задержки распространения сигнала до 4.5 нс. ПЛИС MAX3000 имеют возможность аппаратной эмуляции выходов с открытым коллектором (open - drains pin) и удовлетворяют требованиям стандарта pCI. Имеется возможность индивидуального программирования цепей сброса, установки и тактирования триггеров, входящих в макроячейку. Предусмотрен режим пониженного энергопотребления. Программируемый логический расширитель позволяет реализовать на одной макроячейке функции до 32 переменных. Имеется возможность задания бита секретности (security bit) для защиты от несанкционированного тиражирования разработки.

Реализация функции программирования в системе поддерживается с использованием стандартных средств загрузки, таких как ByteBlasterMV, BitBlaster, MasterBlaster, а также поддерживается формат JAM.

ПЛИС MAX3000 выпускаются в корпусах от 44 до 208 выводов.

На рис. 1 представлена функциональная схема ПЛИС семейства MAX3000.

Рис. 1. Функциональная схема ПЛИС семейства MAX3000.

Основными элементами структуры ПЛИС семейства MAX3000 являются:

  • логические блоки (ЛБ) (LAB, Logic array blocks);
  • макроячейки (МЯ) (macrocells);
  • логические расширители (expanders) (параллельный (parallel) и разделяемый (shareble));
  • программируемая матрица соединений (ПМС)(programmable interconnect array, pIA);
  • элементы ввода-вывода (ЭВВ)(I/O control block).

ПЛИС семейства MAX3000 имеют четыре вывода, закрепленных за глобальными цепями (dedicated inputs). Это глобальные цепи синхронизации сброса и установки в третье состояние каждой макроячейки. Кроме того, эти выводы можно использовать как входы или выходы пользователя для "быстрых" сигналов, обрабатываемых в ПЛИС.

Как видно из рис.1 в основе архитектуры ПЛИС семейства MAX3000 лежат логические блоки состоящие из 16 макроячеек каждый. Логические блоки соединяются с помощью программируемой матрицы соединений. Каждый логический блок имеет 36 входов с ПМС.

На рис 2. приведена структурная схема макроячейки ПЛИС семейства MAX3000.

Рис. 2. Структурная схема макроячейки ПЛИС семейства MAX3000.

МЯ ПЛИС семейства MAX3000состоит из трех основных узлов

  • локальной программируемой матрицы (LAB local array);
  • матрицы распределения термов (product-term select matrix);
  • программируемого регистра (programmable register).

Комбинационные функции реализуются на локальной программируемой матрице и матрице распределения термов, позволяющей объединять логические произведения либо по ИЛИ (OR), либо по исключающему ИЛИ (XOR). Кроме того, матрица распределения термов позволяет скоммутировать цепи управления триггером МЯ.

Режим тактирования и конфигурация триггера выбираются автоматически во время синтеза проекта в САПР MAX+PLUS II в зависимости от выбранного разработчиком типа триггера при описании проекта.

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

Для реализации логических функций большого числа переменных используются логические расширители

Разделяемый логический расширитель (рис. 3) позволяет реализовать логическую функцию с большим числом входов, позволяя объединить МЯ, входящие в состав одного ЛБ. Таким образом, разделяемый расширитель формирует терм, инверсное значение которого передается матрицей распределения термов в локальную программируемую матрицу и может быть использовано в любой МЯ данного ЛБ. Как видно из рис. 3, имеются 36 сигналов локальной ПМС, а также 16 инверсных сигналов с разделяемых логических расширителей, что позволяет в пределах одного ЛБ реализовать функцию до 52 термов ранга 1.

Рис. 3. Разделяемый логический расширитель.

Рис. 4. Параллельный логический расширитель.

Параллельный логический расширитель (рис. 4), позволяет использовать локальные матрицы смежных МЯ для реализации функций, в которые входят более 5 термов. Одна цепочка параллельных расширителей может включать до 4 МЯ, реализуя функцию 20 термов. Компилятор системы MAX+PLUS II поддерживает размещение до 3-х наборов не более чем по 5 параллельных расширителей.

На рис. 5 приведена структура программируемой матрицы соединений.

Рис. 5. Структура ПМС ПЛИС семейства MAX3000.

На ПМС выводятся сигналы от всех возможных источников: ЭВВ, сигналов обратной связи ЛБ, специализированных выделенных выводов. В процессе программирования только необходимые сигналы "заводятся" на каждый ЛБ. На рис 5 приведена структурная схема формирования сигналов ЛБ.

Рис. 6. Элемент ввода-вывода.

На рис 6 приведена схема элемента ввода-вывода (ЭВВ) ПЛИС семейства MAX3000. ЭВВ позволяет организовать режимы работы с открытым коллектором и третьим состоянием.

Сходную с семействами MAX3000 MAX7000 фирмы ALTERA архитектуру имеют ПЛИС ATF1500 фирмы ATMEL. Более того, они выпускаются в совместимых корпусах и поддерживают САПР MAX+PLUS II от Altera.

В качестве другого примера построения архитектур микросхем CpLD можно назвать микросхемы фирмы VANTIS ( бывшая AMD) MACH4 и MACH5. Ныне VANTIS куплена Lattice.

Рис. 7. Структура CPLD MACH5.

На рис. 7 приведена обобщенная структурная схема ПЛИС семейства MACH5. В отличие от рассмотренных выше MAX3000, MACH5 имеет двухуровневую архитектуру соединений. 16 макроячеек, имеющих pAL архитектуру объединяются в блоки, которые, в свою очередь, объединяются в сегменты по 4 блока. Сегменты имеют общую матрицу межсоединений.

На рис. 8 приведена структура блока MACH5

Рис. 8. Структура блока MACH5.

Архитектура CpLD является весьма привлекательной для реализации цифровых автоматов, поскольку позволяет легко воплотить функции, заданные в виде совершенных дизъюнктивных нормальных форм. Они незаменимы при замене сложных схем, реализованных на обычной логике. Однако, следует помнить, что несмотря на наличие в ПЛИС многих производителей режима эмуляции открытого коллектора, использовать его не всегда разумно и для интерфейса с внешними узлами удобно использовать ИС стандартных серий. Автор по старой привычке использует обычно 1533ЛН3 для буфера с открытым коллектором, 530ЛА16 для работы на 50 омную нагрузку (если конечно такое требуется) и двунаправленные шинные формирователи 74НС245 (1564АП6) для большинства приложений. Подобная буферизация особенно необходима, когда используются ПЛИС с пониженным напряжением питания, а система требует ТТЛ уровней. Эта ситуация типична при модернизации отдельных узлов и блоков существующей аппаратуры, да и большинство российских протоколов обмена между устройствами также требуют ТТЛ или КМОП уровней.

Однако CpLD ПЛИС не очень удобны для реализации алгоритмов цифровой обработки сигналов. Дело в том, что практически при реализации алгоритмов ЦОС требуется выполнение операций задержки на такт, перемножения и суммирования многоразрядных чисел. Настоящая революция в средствах ЦОС произошла с появлением ПЛИС, имеющих архитектуру Field programmable Gate Array (FpGA). К FpGA относятся ПЛИС XC2000, XC3000, XC4000, Spartan фирмы XILINX, ACT1, ACT2 фирмы ACTEL, а также семейства FLEX8000 фирмы ALTERA, некоторые ПЛИС Atmel и Vantis.

Типичным примером FpGA ПЛИС могут служить микросхемы семейства Spartan фирмы XILINX (рис.9)

Рис. 9. FPGA архитектура.

Множество конфигурируемых логических блоков (Configurable Logic Blocks (CLBs) объединяются с помощью матрицы соединений. Характерными для FpGA архитектур являются элементы ввода-вывода (input/output blocks (IOBs), позволяющие реализовать двунаправленный ввод/вывод, третье состояние и т.п. На рис.10 приведена структура CLB семейства Spartan фирмы XILINX.

Рис. 10. Cтруктура CLB семейства Spartan фирмы XILINX.

Особенностью современных FpGA ПЛИС является возможность тестирования узлов с помощью порта JTAG (B-scan), а также наличие внутреннего генератора (Osc) и схем управления последовательной конфигурацией.

ПЛИС, построенные по архитектуре FpGA состоят из логических блоков (ЛБ) и коммутирующих путей –программируемых матриц соединений. Логические блоки таких ПЛИС состоят из одного или нескольких относительно простых логических элементов, в основе которого лежит таблица перекодировки (ТП, Look-up table, LUT), программируемый мультиплексор, D-триггер, а также цепи управления.

Рис. 11. Структура ЛЭ ПЛИС семейства FLEX6000 фирмы Altera.

На рис.11 приведена структура ЛЭ ПЛИС семейства FLEX6000 фирмы Altera. В основе ЛЭ лежит четырехвходовая таблица перекодировок (ТП, LUT, Look-up table). Кроме того, в состав ЛЭ входят цепи ускоренного цепочечного переноса (Carry-in, carry-out) и каскадирования (cascade-in, cascade-out). Триггер ЛЭ может быть сконфигурирован с помощью логики сброса-установки (clear/preset logic), тактируется одним из сигналов, выбираемых логикой тактирования (clock select). При необходимости, сигнал с выхода ТП может быть подан на выход ЛЭ в обход триггера (register bypass).

Для обеспечения минимальной задержки при реализации сложных арифметических функций, таких как счетчики, сумматоры, вычитатели и т.п., используется организация ускоренных цепочечных переносов (carry chain) между ЛЭ. Логика ускоренных переносов автоматически формируется компилятором САПР MAX+PLUS II, или вручную при описании проекта.

При организации цепочечных переносов первый ЛЭ каждого ЛБ не включается в цепочку цепочечных переносов, поскольку он формирует управляющие сигналы ЛБ. Вход первого ЛЭ в каждом ЛБ может быть использован для формирования сигналов синхронной загрузки или сброса счетчиков, использующих цепочечный перенос.

Цепочка переносов, длиннее чем 9 ЛЭ автоматически формируется путем объединения нескольких ЛБ вместе, причем перенос формируется не в соседний ЛБ, а через один, то есть из четного в четный, из нечетного ЛБ – в нечетный. Например, последний ЛЭ в первом ЛБ в ряду формирует перенос во второй ЛЭ в третьем ЛБ в том же ряду. Отсюда ясно, что длина цепочки переносов не может быть больше, чем половина ряда.

Другой разновидностью построения логического элемента является ПЛИС АТ6000 фирмы Atmel (рис.12).

Рис. 12. ЛЭ ПЛИС семейства АТ6000.

Таких простых элементов может быть достаточно большое количество, у современных ПЛИС емкостью до 1 миллиона эквивалентных вентилей число логических элементов достигает нескольких десятков тысяч.

Большинство FpGA выпускаются по технологии SRAM, поэтому для их конфигурации требуется специальной ПЗУ или контроллер системы. В этом отношении выделяются FpGA фирмы Actel, выпускаемые по технологии Antifuse ("Антиперемычка") (рис.13)

Рис. 13. Технология Antifuse фирмы Actel.

При программировании ПЛИС происходит образование области металлизации между слоями металлизации.

По этой технологии выпускаются несколько семейств ПЛИС Actel

Рис. 14. ЛЭ ПЛИС 54SX фирмы Actel.

На рис. 14 приведены архитектуры логических элементов ПЛИС 54 SX фирмы Actel. Такие ЛЭ объединяются в суперкластеры (рис.15)

Рис. 15. Суперкластеры 54SX.

Дальнейшее развитие архитектуры FpGA ПЛИС привело к появлению ПЛИС Altera FLEX10K, которые имеют встроенные реконфигурируемые модули памяти (РМП, embedded array block, EAB), позволяющие использовать ПЛИС для реализации различных устройств памяти внутри кристалла без использования внешних ЗУ.

пожалуй, самой популярной элементной базой для реализации алгоритмов ЦОС, построения сложных устройств обработки данных и интерфейсов. Это объясняется тем, что благодаря большой логической емкости, удобной архитектуре, включающей встроенные блоки памяти (EAB, Embedded Array Block), достаточно высокой надежности и удачному соотношению цена - логическая емкость данные ПЛИС удовлетворяют разнообразным требованиям, возникающих у разработчика как систем ЦОС, так и устройств управления, обработки данных и т.п.

В таблице 3 приведены основные сведения о ПЛИС семейства FLEX10K

 | F10K10 | F10K20 | F10K30 | F10K40 | F10K50 | F10K70 | F10K100 | F10K130 | F10K250
Число эквивалентных вентилей | 10 000 | 20 000 | 30 000 | 40 000 | 50 000 | 70 000 | 100 000 | 130 000 | 250 000
Число лог. элементов | 576 | 1152 | 1728 | 2304 | 2880 | 3744 | 4992 | 6656 | 12160
Встроенные блоки памяти | 3 | 6 | 6 | 8 | 10 | 9 | 12 | 16 | 20
Обьем памяти, бит | 6144 | 12288 | 12288 | 16384 | 20480 | 18432 | 24576 | 32768 | 40960
Максимальное число выводов пользователя | 150 | 189 | 246 | 189 | 310 | 358 | 406 | 470 | 470

В настоящее время выпускаются ПЛИС семейств FLEX10K с напряжением питания 5 В, FLEX10KА (V) с напряжением питания 3.3 В и FLEX10KЕ с напряжением питания 2.5 В. Кроме того, ПЛИС семейства FLEX10KЕ имеют емкость встроенного блока памяти 4096 бит в отличие от ПЛИС остальных семейств, имеющих емкость ЕАВ 2048 бит.

Обобщенная функциональная схема ПЛИС семейства FLEX10K приведена на рис. 16.

В основе архитектуры лежат логические блоки (ЛБ), содержащие 8 ЛЭ и локальную матрицу соединений.

Глобальная матрица соединений разделена на строки и столбцы, имеет непрерывную структуру (Fast track Interconnect). Посередине строки располагаются встроенные блоки памяти (EAB).

Кроме того, имеются глобальные цепи управления, синхронизации и управления вводом-выводом.

Рис.16. Архитектура ПЛИС FLEX10K.

Встроенный блок памяти (ВБП) (рис.17) представляет собой ОЗУ емкостью 2048 (4096) бит и состоит из локальной матрицы соединений, собственно модуля памяти, синхронных буферных регистров, а также программируемых мультиплексоров.

Рис. 17. Встроенный блок памяти.

Сигналы на вход ЛМС ВБП поступают со строки ГМС. Тактовые и управляющие сигналы поступают с глобальной шины управляющих сигналов.

Выход ВБП может быть скоммутирован как на строку, так и на столбец ГМС.

Наличие синхронных буферных регистров и программируемых мультиплексоров позволяет конфигурировать ВБП как ЗУ с организацией 256 х 8, 512х4, 1024х2, 2048х1.

Наличие ВБП дает возможность табличной реализации таких элементов устройств ЦОС, как перемножители, АЛУ, сумматоры и т.п., имеющих быстродействие до 100 МГц (конечно при самых благоприятных условиях, реально быстродействие арифметических устройств, реализованных на базе ВБП составляет 10 – 50 МГц)

Все ПЛИС семейства FLEX10K совместимы по уровням с шиной pCI, имеют возможность как последовательной, так и параллельной загрузки, полностью поддерживают стандарт JTAG

Развитие и разнообразие архитектур функциональных преобразователей, лежащих в основе базовых узлов ПЛИС привели к тому, что в последние годы ПЛИС становятся основой для "систем на кристалле" (system-on-chip, SOC). В основе идеи SOC лежит интеграция всей электронной системы в одном кристалле (например, в случае ПК такой чип объединяет процессор, память, и т.д.). Компоненты этих систем разрабатываются отдельно и хранятся в виде файлов параметризируемых модулей. Окончательная структура SOC-микросхемы выполняется на базе этих "виртуальных компонентов", называемых также "блоками интеллектуальной собственности" с помощью программ автоматизации проектирования электронных устройств – EDA (Electronic Design Automation). Благодаря стандартизации в одно целое можно объединять "виртуальные компоненты" от разных разработчиков.

Идеология построения "систем на кристалле" подстегнула ведущих производителей ПЛИС к выпуску в конце 1998 – начале 1999 года изделий с эквивалентной емкостью 1000000 эквивалентных вентилей и более.

Примером новых семейств ПЛИС, пригодных для реализации "систем - на - кристалле" является семейство ApEX20K фирмы Altera, основные характеристики которого приведены в Таблице 4.

Таблица 4. Основные характеристики семейства ApEX20K фирмы Altera

ПЛИС | Ep20K100 | Ep20K160 | Ep20K200 | Ep20K300 | Ep20K400 | Ep20K600 | Ep20K1000
Максимальное число эквивалентных вентилей | 263 000 | 404 000 | 526 000 | 728 000 | 1 052 000 | 1 537 000 | 2 670 000
Число логических элементов | 4 160 | 6 400 | 8 320 | 11520 | 16 640 | 24 320 | 42 240
Встроенные блоки памяти | 26 | 40 | 52 | 72 | 104 | 152 | 264
Максимальный объем памяти, бит | 53 248 | 81 920 | 106 496 | 147 456 | 212 992 | 311 296 | 540 672
Число макроячеек | 416 | 640 | 832 | 1 152 | 1 664 | 2 432 | 4 224
Число выводов пользователя | 252 | 320 | 382 | 420 | 502 | 602 | 780

Архитектура ApEX20K сочетает в себе как достоинства FpGA ПЛИС с их таблицами перекодировок, входящими в состав логического элемента, логику вычисления СДНФ, характерную для ПЛИС CpLD , а также встроенные модули памяти (рис.18)

Рис. 18. Архитектура ПЛИС, APEX20K.

Сходной архитектурой обладает и семейство Virtex фирмы Xilinx, основные характеристики которого приведены в таблице 5.

Таблица 5. Основные характеристики ПЛИС семейства Virtex фирмы Xilinx

ПЛИС | XCV50 | XCV100 | XCV150 | XCV200 | XCV300 | XCV400 | XCV600 | XCV800 | XCV1000
Максимальное число эквивалентных вентилей | 57,906 | 108,904 | 164,674 | 236,666 | 322,970 | 468,252 | 661,111 | 888,439 | 1,124,022
Число логических элементов | 1,728 | 2,700 | 3,888 | 5,292 | 6,912 | 10,800 | 15,552 | 21,168 | 27,648
Максимальный объем памяти, бит | 24,576 | 38,400 | 55,296 | 75,264 | 98,304 | 153,600 | 221,184 | 301,056 | 393,216
Число выводов пользователя | 180 | 180 | 260 | 284 | 316 | 404 | 512 | 512 | 512

Архитектура ПЛИС Virtex показана на рис. 19

Рис. 19. Архитектура ПЛИС Virtex.

Отличительной особенностью этих ПЛИС является наличие дополнительного ресурса для трассировки – VersaRing, позволяющего обеспечить более удобную трассировку входных и выходных сигналов. Так же как и ПЛИС Altera, Virtex имеет встроенные блоки памяти.

Структура ЛЭ ПЛИС Virtex показана на рис.20.

Рис. 20. ЛЭ ПЛИС Virtex.

Еще одним интересным примером FpGA архитектур являются ПЛИС VF1 фирмы Vantis.

Рис. 21. Конфигурируемый ЛБ VF1.

Конфигурируемый ЛБ фирмы Vantis (рис.21) состоит из комбинационного (CCE) и последовательностного (CSE) ЛЭ. Их архитектура приведена на рис 22 и 23 соответственно

Рис. 22. Комбинационный ЛЭ.

Рис. 23. Последовательностный ЛЭ.

ЛБ объединяются в "зерна" имеющие переменную размерность (Variable Grain Block) (рис.24) , тем самым позволяя выполнять локальную трассировку узлов различного размера

Рис. 24. "Зерна" имеющие переменную размерность.

В дальнейшем зерна объединяются с использованием глобальной матрицы соединений.

На этом можно закончить обзор архитектур ПЛИС, хотя, конечно, за рамками этого обзора остались ряд достаточно интересных продуктов, например сверхбыстродействующие ПЛИС фирмы QuickLogick и ряда других производителей. Однако, они пока еще не имеют российских диллеров и потеря не столь существенна.

Выбор ПЛИС для реализации проекта.

Быстрые темпы роста продаж ПЛИС относительно высокой степени интеграции привели к тому, что они к началу 90-х годов стали практически единственной разумной альтернативой БМК и заказным ИСК этому времени относятся и первые применения ПЛИС высокой степени интеграции в российских разработках. Этому способствовало немало причин. Во-первых, в конце 80 годов в СССР происходил настоящий бум производства полузаказных БИС на базе БМК. Были закуплены современные (на то время) средства САПР, такие как COMpASS, SL2000 и др., предназначенные для разработки БМК и заказных БИС. Данные продукты имели неплохой графический интерфейс пользователя и были реализованы на мини-ЭВМ, таких как MicroVAX, Hp9000 и др. Разработчики начинали освоение матричной реализации алгоритмов и появлялся определенный опыт. Характерной особенностью процесса было то, что БМК осваивались не только предприятиями министерства электронной промышленности, но и предприятиями Миноборонпрома, Минобщемаша и др. ведомств-разработчиков аппаратуры. Таким образом разработка собственного изделия в виде БИС стала реальностью. Во-вторых, начатые при "перестройке" экономические преобразования позволили выйти на внешний рынок негосударственным фирмам-импортерам и западная элементная база перестала быть совершенно недоступной (к тому же были сняты ограничения КОКОМА). В – третьих, были освоены отечественные аналоги pAL микросхем. Однако распад Союза и существующих производственных связей внес вои коррективы. Стало ясно, что прежних объемов финансирования уже не будет, поэтому требовалась альтернатива БМК в малосерийных и опытных разработках. Появление FpGA в России пришлось как нельзя кстати. В частности на FpGA ПЛИС были реализованы часть аппаратуры спутника "Ямал", известно применение ПЛИС в разработках специального применения.

В настоящее время одним из активно развивающихся в России направлений разработок является аппаратура для телекоммуникаций. Известно, что несмотря на то, что крупнейшие операторы коммуникаций в нашей стране используют в основном готовое западное оборудование, открытым остается вопрос о сопряжении его с существующими отечественными каналами связи, а также реализации дополнительных функций, необходимых потребителю. На базе технологии ПЛИС реализуются коммутаторы, системы защиты информации и т.п. Немаловажно, что специальная связь реализуется только на отечественном оборудовании, при разработке которого последние годы широко используется импортная элементная база, в том числе ПЛИС. При этом "пионерами" в применении ПЛИС высокой степени интеграции были разработчики из МО и спецслужб, в силу своей специфики первыми получившие доступ к элементной базе и системам автоматизированного проектирования.

Известно, что применение БМК и заказных ИС становиться выгодным при больших объемах производства. Для того, чтобы снизить затраты на "обкатку" разрабатываемого алгоритма, представляется целесообразным произвести его обкатку на ПЛИС, а затем приступать к проектированию БМК. В настоящее время в России существуют предприятия, способные выпускать БМК емкостью 30 – 50 тыс. вентилей, способные работать на частотах несколько десятков МГц. В частности подобные разработки в состоянии выполнить коллектив АО "Микрон. Передовые технологии" возглавляемый Ю.И.Щетининым. В ряде случаев подобный подход является неплохой альтернативой применению ПЛИС в особо стойком исполнении, стоимость которых высока, да и возможность импорта в силу понятных причин затруднена.

Говорить о собственных российских разработках ПЛИС высокой степени интеграции пока, к сожалению, не приходиться, однако при соответствующей позиции заказывающих ведомств данный вопрос не настолько неразрешим, как может показаться на первый взгляд.

Рассмотрим основные подходы при выборе ПЛИС для реализации проектов. Как известно, при выборе элементной базы руководствуются следующими критериями отбора:

  • Быстродействие;
  • логическая емкость, достаточная для реализации алгоритма;
  • схемотехнические и конструктивные параметры ПЛИС, надежность, рабочий диапазон температур, стойкость к ионизирующим излучениям и т.п.;
  • стоимость владения средствами разработки, включающая как стоимость программного обеспечения, так наличие и стоимость аппаратных средств отладки;
  • стоимость оборудования для программирования ПЛИС или конфигурационных ПЗУ;
  • наличие методической и технической поддержки;
  • наличие и надежность российских поставщиков;
  • стоимость микросхем.

Рассмотрим с этих позиций продукцию ведущих мировых производителей ПЛИС, имеющих российских дилеров.

Фирма Altera Corporation, (101 Innovation Drive, San Jose, CA 95134, USA, www.altera.com) была основана в июне 1983 года. В настоящее время High-end продуктом этой фирмы является семейство ApEX20K, особенности архитектуры которого упоминались выше, а в таблице 2 приведены основные параметры ПЛИС этого семейства.

Кроме того, Altera выпускает CpLD семейств MAX3000, MAX7000, MAX9000 (устаревшие серии специально не упоминаются), FpGA семейств FLEX10K, FLEX8000, FLEX6000.

Дополнительным фактором при выборе ПЛИС Altera является наличие достаточно развитых бесплатных версий САПР. В Таблице 6 приведены основные характеристики пакета MAX+PLUS II BASELINE ver. 9.3 фирмы Altera, который можно бесплатно "скачать" с сайта www.altera.com или получить на CD Altera Digital Library, на котором содержится также и полный набор документации по архитектуре и применению ПЛИС.

Таблица 6. Основные характеристики пакета MAX+PLUS II BASELINE ver. 9.3

Поддерживаемые устройства | EpF10K10, EpF10K10A, EpF10K20, EpF10K30, EpF10K30A, EpF10K30E (до 30000 эквивалентных вентилей), EpM9320, EpM9320A, EpF8452A, EpF8282A, MAX7000, FLEX 6000, MAX 5000, MAX 3000A, Classic
Средства описания проекта | Схемный ввод, поддержка AHDL, средства интерфейса с САПР третьих фирм, топологический редактор, иерархическая структура проекта, наличие библиотеки параметризируемых модулей
Средства компиляции проекта | Логический синтез и трассировка, автоматическое обнаружение ошибок, поддержка мегафункций по программам MegaCore и AMpp
Средства верификации проекта | Временной анализ, функциональное и временное моделирование, анализ сигналов, возможность использования программ моделирования (симуляторов) третьих фирм

Кроме того, ПЛИС фирмы Altera выпускаются с возможностью программирования в системе непосредственно на плате. Для программирования и загрузки конфигурации устройств опубликована схема загрузочного кабеля ByteBlaster и ByteBlasteMV. Следует отметить, что новые конфигурационные ПЗУ EpC2 позволяют программирование с помощью этого устройства, тем самым отпадает нужда в программаторе, что естественно снижает стоимость владения технологией.

ПЛИС фирмы Altera выпускаются в коммерческом и индустриальном диапазоне температур.

Компания Xilinx, Inc. (2100 Logic Drive, San Jose, CA 95124-3400, USA, www.xilinx.com) была основана в феврале 1984, ее High End продуктом являются ПЛИС семейства Virtex, рассмотренная выше.

Архитектура семейства Virtex характеризуется широким разнообразием высокоскоростных трассировочных ресурсов, наличием выделенного блочного ОЗУ, развитой логикой ускоренного переноса. ПЛИС данной серии обеспечивают высокие скорости межкристального обмена - до 200 МГц (стандарт HSTL IV). Кристаллы серии Virtex за счёт развитой технологии производства и усовершенствованного процесса верификации имеют достаточно низкую стоимость (до 40% от эквивалентной стоимости серии XC4000XL).

Помимо семейства Virtex, Xilinx выпускает FpGA семейств XC3000A, XC4000E, Spartan, XC5200, а также CpLD XC9500 и малопотребляющую серию CoolpLD.

Существует бесплатная версия САПР – WebpACK, поддерживающая CpLD XC9500 и CoolpLD, ввод описания алгоритма с помощью языка описания аппаратуры VHDL.

Следует заметить, что Xilinx существенно обновил модельный ряд как своих ПЛИС, так и программного обеспечения, которое теперь разрабатывается с участием фирмы Synopsys. Для ВУЗов предусмотрены значительные скидки на ПО

ПЛИС Xilinx выпускаются как в коммерческом и индустриальном диапазоне температур, так и с военной (Military) и космической (Space) приемкой.

Компания Actel Corporation (955 East Arques Avenue, Sunnyvale, CA 94086-4533, USA, www.actel.com) была основана в 1985 году. Особенностью ПЛИС Actel является применение так называемой Antifuse технологии, представляющей собой создание металлизированной перемычки при программировании. Данная технология обеспечивает высокую надежность и гибкие ресурсы трассировки, а также не требуется конфигурационное ПЗУ. По этой технологии выпускаются семейства ACT1, ACT2, 1200XL, а также новые семейства 54SX, А40МХ и А42МХ (со встроенными модулями памяти), имеющих хорошие показатели цена/логическая емкость (ПЛИС заменяющая 300 – 350 корпусов ТТЛ стоит 10$, при частоте > 250 МГц ).

Данные ПЛИС являются хорошей альтернативой БМК при среднесерийном производстве

Новое семейство proASIC фирмы Actel, емкостью до 500 000 эквивалентных логических вентилей, отличительной особенностью которого является энергонезависимость благодаря применению FLASH технологии и наличие интегрированного на кристалле запоминающего устройства.

Для проектирования устройств на ПЛИС фирмы Actel бесплатно (до 31.01.2000) распространяется пакет Actel DeskTOp, содержащий средства ввода проекта, моделирования, генерации тестов разработки VeriBest и средства синтеза разработки Synplicity. Пожалуй, система проектирования Actel DeskTOp является наиболее мощным из всех бесплатных пакетов САПР ПЛИС.

К сожалению, микросхемы Actel выпускаемые, по Antifuse технологии требуют применения специального программатора, стоимость которого пока еще весьма высока. Однако их отличает высокая надежность, поэтому они являются весьма перспективной базой для специальных применений. Так ПЛИС серии RH1280, имеют следующие характеристики:

- допустимая доза облучения 300000 РАД

логическая емкость 16000 эквивалентных вентилей

- быстродействие до 135 МГцПЛИС данного типа были применены в марсоходе в системе управления и обработки изображения цифровой видеокамеры робота – марсохода pathinder и в формирователе кадра для передачи информации на Землю. В настоящее время выпущены радиационно-стойкие ПЛИС и новых семейств.

ПЛИС всех семейств Actel выпускаются в коммерческом и индустриальном диапазоне температур, а также с военной и космической приемкой.

Увеличение эквивалентной логической емкости ПЛИС привело к тому, что в 1998–1999 годах началось изменение отношения к программному обеспечению САПР ПЛИС как со стороны разработчиков ПО, так и пользователей. Если до конца 1990 годов основным средством описания проекта являлся ввод схемы с помощью графических редакторов с использованием библиотек стандартных логических примитивов (логических элементов, простейших комбинационных и последовательностных функциональных узлов, аналогов стандартных ИС малой и средней степени интеграции (74 - й серии)), то в настоящее время актуальным является использование языков описания аппаратуры (Hardware Description Languages) для реализации алгоритмов на ПЛИС. Причем в современных САПР поддерживаются как стандартизованные языки описания аппаратуры, такие как VHDL, Verilog HDL, так и языки описания аппаратуры, разработанные компаниями-производителями ПЛИС, специально для использования только в своих САПР и учитывающих архитектурные особенности конкретных семейств ПЛИС. Примером может служить AHDL (Altera Hardware Description Languages), подерживаемый САПР MAX PLUS II и Quartus компании Altera. Кроме того, многие крупные фирмы – производители программного обеспечения (ПО) САПР интегральных схем активно включились в процесс создания ПО, поддерживающего ПЛИС различных производителей. Это позволяет проводить разработку алгоритмов, пригодных к реализации на ПЛИС не только разных семейств, но и различных производителей, что облегчает переносимость алгоритма и ускоряет процесс разработки. Примером таких систем являются продукты серии FpGA Express фирмы Synopsys, OrCAD Express фирмы OrCAD, продукты фирм VeryBest, Aldec, Cadence Design Systems и многих других.

С ростом логической емкости кристалла ПЛИС стало обычным явлением участие третьих фирм в разработке фирменных пакетов САПР ПЛИС. Примером являются поставляемый фирмой Xilinx пакет ПО Aliance, содержащий в своем составе компилятор FpGA Express фирмы Synopsys, пакет Actel DeskTOp, содержащий средства ввода проекта, моделирования, генерации тестов разработки VeriBest и средства синтеза разработки Synplicity; пакет FpGA Compiler II Altera Edition фирмы Synopsys; а также САПР для ПЛИС фирмы Atmel

Также характерным в настоящее время является наличие готовых модулей (ядер -cores), мегафункций (megafunctions), предназначенных для решения достаточно сложных задач обработки сигналов. Быстрыми темпами идет разработка готовых функций усилиями третьих фирм. Так, в августе 1995 года была создана программа поддержки партнеров - разработчиков мегафункций (AMpp, ALTERA Megafunction partners program). К 1999 году в данной программе участвует 21 независимая фирма - разработчик. Основную массу разработок составляют мегафункции, реализующие стандартные микропроцессоры и микроконтроллеры, устройства обслуживания шинных магистралей (ISA, pCI), сетевые контроллеры и т.д. Типичными предложениями средств ЦОС являются мегафункции, реализующие быстрое преобразование Фурье (БПФ) и фильтры конечной импульсной характеристики (КИХ-фильтры). Фирма Vendor объявила о реализации фильтра бесконечной импульсной характеристики (БИХ-фильтра) и медианного фильтра. Лидером по разработке мегафункций в области ЦОС является фирма Integrated Silicon Systems (ISS). Этой фирмой разработаны библиотеки мегафункций БИХ-фильтров, фильтров обработки изображений, медианных фильтров, а также мегафункции, реализующие некоторые алгоритмы адаптивной обработки сигналов.

В составе САПР ПЛИС фирмы Xilinx имеется генератор логических ядер (CORE Generator). Сгенерированные ядра (LogiCORE) представляют собой функциональные параметризированные блоки системного уровня, предназначенные для применения в цифровой обработке сигналов. Среди ядер фирмы Xilinx разнообразные КИХ-фильтры построенные на основе распределенной арифметики с возможностью каскадирования, интерполяции и децимации, структуры фильтров без использования умножителей, корреляторы, перемножители, аккумуляторы, сумматоры/вычитатели, делители, БПФ 1024 точки. Кроме того, фирма Xilinx поддерживает программу разработки готовых решений для САПР ПЛИС AllianceCORE.

Несмотря на вышеперечисленные программы, до сих пор на рынке отсутствует ПО для реализации нелинейных, оптимальных и большинства типов адаптивных структур, не реализованы давно известные алгоритмы последовательностной фильтрации. Между тем, из бесед с разработчиками на ведущих предприятиях становится ясно, что существует огромная потребность в реализации известных и хорошо обоснованных теоретически алгоритмов, тем более, что становится обычным применение импортной элементной базы и в разработках специального назначения.

Рассмотрев основные алгоритмы цифровой обработки и пути их реализации, можно сделать следующие выводы.

Разработчики осознают необходимость создания библиотек параметризуемых мегафункций различных функциональных узлов, особенно устройств цифровой обработки сигналов. Определенные шаги в этом направлении предпринимает фирма ALTERA. Так, в августе 1995 года была основана программа поддержки партнеров - разработчиков мегафункций (AMpp, ALTERA Megafunction partners program). В 1997 году в данной программе участвовало более 15 независимых фирм - разработчиков. Проанализировав номенклатуру мегафункций, выпущенных в рамках данной программы, можно сказать, что вопросам ЦОС, и, в частности, фильтрации уделяется недостаточное внимание. Так, из 18 партнеров AMpp не более четверти представили готовые продукты или заявили о ведущихся разработках в этой области. При этом основную массу разработок составляют мегафункции, воплощающие стандартные микропроцессоры и микроконтроллеры, устройства обслуживания шинных магистралей (ISA, pCI), сетевые контроллеры и т.д. Типичными предложениями средств ЦОС являются мегафункции, реализующие БПФ и КИХ-фильтры. Фирма Vendor объявила о реализации БИХ-фильтра и медианного фильтра. Лидером по разработке мегафункций в области ЦОС является фирма Integrated Silicon Systems (ISS). Этой фирмой разработаны библиотеки мегафункций БИХ-фильтров, фильтров обработки изображений, медианных фильтров, разработаны также мегафункции, реализующие некоторые алгоритмы адаптивной обработки. Видно, что до сих пор отсутствуют предложения в области нелинейных, оптимальных и большинства типов адаптивных структур, не реализованы давно известные алгоритмы последовательностной фильтрации. Между тем, из бесед с разработчиками на ведущих предприятиях становится ясно, что существует огромная потребность в реализации известных и хорошо обоснованных теоретически алгоритмов, тем более, что применение импортной элементной базы становится обычным делом и в разработках специального назначения.

Литература

  1. Вицын Н. Современные тенденции развития систем автоматизированного проектирования в области электроники. // Chip News, № 1, 1997, с. 12–15.
  2. Губанов Д.А., Стешенко В.Б., Храпов В.Ю., Шипулин С.Н. Перспективы реализации алгоритмов цифровой фильтрации на основе ПЛИС фирмы ALTERA. // Chip News, № 9-10, 1997, с. 26–33.
  3. Губанов Д.А., Стешенко В.Б. Методология реализации алгоритмов цифровой фильтрации на основе программируемых логических интегральных схем. // Сборник докладов 1-й Международной конференции "Цифровая обработка сигналов и ее применения" 30.06-3.07.1998, Москва, МЦНТИ, том 4, с. 9 – 19.
  4. Щербаков М.А., Стешенко В.Б., Губанов Д.А. Цифровая полиноминальная фильтрация: алгоритмы и реализация на ПЛИС // Инженерная микроэлектроника, №1 (3), март 1999, с.12-17.
  5. Губанов Д.А., Стешенко В.Б., Шипулин С.Н. Современные алгоритмы ЦОС: перспективы реализации. // Электроника: наука, технология, бизнес, №1, 1999, с.54-57.
  6. Шипулин С.Н., Губанов Д.А., Стешенко В.Б., Храпов В.Ю. Тенденции развития ПЛИС и их применение для цифровой обработки сигналов // Электронные компоненты, №5, 1999, с. 42 – 45.
  7. В.Стешенко. Школа разработки аппаратуры цифровой обработки сигналов на ПЛИС. Занятие 1. Обзор элементной базы. // Chip News,1999, №8, с. 2 – 6.
  8. В.Стешенко. Школа разработки аппаратуры цифровой обработки сигналов на ПЛИС. Занятие 2. Система проектирования MAX+PLUS II фирмы ALTERA. // Chip News,1999, №9, с. 15 – 18.
  9. В.Стешенко. Школа разработки аппаратуры цифровой обработки сигналов на ПЛИС. Занятие 3. Программное обеспечение проектирования на ПЛИС фирмы Xilinx.// Chip News,1999, №10
  10. Стешенко В.Б., Шишкин Г.В., Евстифеев А.В., Седякин Ю.М. Школа разработки аппаратуры цифровой обработки сигналов на ПЛИС. Занятие 4. Язык описания аппаратуры VHDL.// Chip News,2000, №1
  11. Стешенко В.Б. Особенности проектирования аппаратуры цифровой обработки сигналов на ПЛИС с использованием языков описания аппаратуры // Сборник докладов 2-й Международной конференции "Цифровая обработка сигналов и ее применения" 21.09-24.09.1999, Москва, МЦНТИ, том 2, с. 307 – 314

Наверх

Координаты:

г. Москва, пр. Мира, 102

Для писем:

105066, Россия, г. Москва, а/я 18

Тел.: (495) 778-97-04

e-mail: mail@dsol.ru, info@dsol.ru


Бегущие строки

Контрактная разработка радиоэлектронных устройств

Цифровая обработка сигналов и изображений

Поставка высокотехнологичных изделий

О компании | Контакты | Новости | Разработки | Продукция | Выполненные проекты | Публикации | Ссылки

Занятие 1. Обзор элементной базы.

Занятие 2. Система проектирования MAX+PLUS II фирмы ALTERA.

Занятие 3. Программное обеспечение проектирования на ПЛИС фирмы Xilinx.

Занятие 4. Язык описания аппаратуры VHDL.

Занятие 5. Язык описания аппаратуры AHDL.

Занятие 6. Язык описания аппаратуры AHDL (продолжение).

Занятие 7. Особенности функционирования ПЛИС в составе системы ЦОС.

Поиск по сайту:

Современные алгоритмы ЦОС: пути реализации и перспективы применения

Стешенко В.Б.

Занятие 2. Система проектирования MAX+PLUS II фирмы ALTERA.

В предыдущем занятии были рассмотрены основные архитектуры ПЛИС и дана информация о фирмах-производителях. В этом занятии мы рассмотрим работу над проектом в среде системы MAX+pLUS II фирмы ALTERA. В предыдущей статье цикла были приведены основные характеристики свободно распространяемой через Internet версии MAX+pLUS II Baseline, в дальнейшем изложении мы будем ориентироваться преимущественно на нее.

Название системы MAX+pLUS II является аббревиатурой от Multiple Array MatriX programmable Logic User System. Система MAX+pLUS II имеет средства удобного ввода проекта, компиляции и отладки, а также непосредственного программирования устройств.

Процедуру разработки нового проекта от концепции до завершения можно упрощенно представить следующим образом:

  1. создание нового файла проекта или иерархической структуры нескольких файлов проекта с помощью любого сочетания редакторов в системе MAX+pLUS II, т.е. графического, текстового и сигнального редакторов;

  2. задание имени файла – проекта верхнего уровня в качестве имени проекта;

  3. назначение семейства ПЛИС для проекта;

  4. открытие окна компилятора Compiler и выбор кнопки Start для начала компиляции проекта. По желанию пользователя можно подключить модуль извлечения временных параметров проекта Timing SNF Extractor для создания файла, используемого при временном моделировании;

  5. в случае успешной компиляции возможен временной анализ, для чего следует выполнить следующее:

    • для проведения временного анализа задержек открыть окно Timing Analyzer, выбрать режим анализа и нажать кнопку Start;
    • для проведения симуляции нужно сначала создать векторной тестовый вектор в файле канала тестирования (.scf), пользуясь сигнальным редактором, или в файле вектора (.vec), пользуясь текстовым редактором. Затем открыть окно отладчика Simulator и нажать кнопку Start;

  6. открытие окна программатора programmer с последующим выбором одного из двух способов: использование программатора MpU (Master programming Unit) или подключение загрузочных устройств BitBlaster, ByteBlaster или FLEX Download Cable к устройству, программируемому в системе;

  7. выбор кнопки program для программирования устройств с памятью типа EpROM или EEpROM либо выбор кнопки Configure для конфигурации устройства с памятью типа SRAM.

На рис.1 представлено окно пакета MAX+pLUS II с загруженной схемой

Рис. 1. Главное окно системы MAX+pLUS II (нажмите на рисунок для увеличения).

ПО системы MAX+pLUS II содержит 11 приложений и главную управляющую программу. Различные приложения, обеспечивающие создание проекта, могут быть активизированы мгновенно, что позволяет пользователю переключаться между ними щелчком мыши или с помощью команд меню. В это же время может работать одно из фоновых приложений, например компилятор, симулятор, анализатор синхронизации и программатор. Одни и те же команды разных приложений работают одинаково, что облегчает задачу разработки логического дизайна.

В таблице 1 приведено описание приложений.

Приложение | Выполняемая функция
Hierarchy Display | Обзор иерархии – отображает текущую иерархическую структуру файлов в виде дерева с ветвями, представляющими собой подпроекты.
Graphic Editor | Графический редактор – позволяет разрабатывать схемный логический проект в формате реального отображения на экране WYSIWYG.
Symbol Editor | Символьный редактор – позволяет редактировать существующие символы и создавать новые.
Text Editor | Текстовый редактор – позволяет создавать и редактировать текстовые файлы логического дизайна, написанные на языках AHDL, VHDL и Verilog HDL.
Waveform Editor | Сигнальный редактор – выполняет двойную функцию: инструмент для разработки дизайна и инструмент для ввода тестовых векторов и наблюдения результатов тестирования.
Floorplan Editor | Поуровневый планировщик – позволяет графическими средствами делать назначения контактам устройства и ресурсов логических элементов.
Compiler | Компилятор – обрабатывает логические проекты.
Simulator | Симулятор – позволяет тестировать логические операции и внутреннюю синхронизацию проектируемой логической цепи.
Timing Analyzer | Временной анализатор – анализирует работу проектируемой логической цепи после того, как она была синтезирована и оптимизирована компилятором.
programmer | Программатор – позволяет программировать, конфигурировать, проводить верификацию и тестировать ПЛИС фирмы Altera.
Message processor | Генератор сообщений – выдает на экран сообщения об ошибках, предупреждающие и информационные сообщения.

Перед тем как начать работать в системе MAX+pLUS II, следует понять разницу между файлами проекта, вспомогательными файлами и проектами.

Файл проекта - это графический, текстовый или сигнальный файл, созданный с помощью графического или сигнального редакторов системы MAX+pLUS II или в любом другом использующем промышленные стандарты схемном или текстовом редакторе либо при помощи программы netlist writer, имеющейся в пакетах, поддерживающих EDIF, VHDL и Verilog HDL. Этот файл содержит логику для проекта MAX+pLUS II и компилируется компилятором. Компилятор может автоматически обрабатывать следующие файлы проекта: графические файлы проекта (.gdf); текстовые файлы проекта на языке AHDL (.tdf); сигнальные файлы проекта (.wdf); файлы проекта на языке VHDL (.vhd); файлы проекта на языке Verilog (.v); схемные файлы OrCAD (.sch); входные файлы EDIF (edf); файлы формата Xilinx Netlist (.xnf); файлы проекта Altera (.adf); файлы цифрового автомата (.smf).

Вспомогательные файлы – это файлы, связанные с проектом MAX+pLUS II, но не являющиеся частью иерархического дерева проекта. Большинство таких файлов не содержит логики проекта. Некоторые из них создаются автоматически приложением системы MAX+pLUS II, другие – пользователем. Примерами вспомогательных файлов являются файлы назначений и конфигурации (.acf), символьные файлы (.sym), файлы отчета (.rpt) и файлы тестовых векторов (.vec).

Проект состоит из всех файлов иерархической структуры проекта, в том числе вспомогательных и выходных файлов. Именем проекта является имя файла проекта верхнего уровня без расширения. Система MAX+pLUS II выполняет компиляцию, тестирование, анализ синхронизации и программирование сразу целого проекта, хотя пользователь может в это время редактировать файлы этого проекта в рамках другого проекта. Для каждого проекта желательно создавать отдельный подкаталог в рабочем каталоге системы MAX+pLUS II.

В системе MAX+pLUS II легко доступны все инструменты для создания проекта. Разработка проекта ускоряется за счет имеющихся стандартных функций, в том числе примитивов, мегафункций, библиотеки параметризованных модулей (LpM) и макрофункций устаревшего типа микросхем 74 серии. В системе MAX+pLUS II есть три редактора для разработки проекта: графический, текстовый и сигнальный, а также два вспомогательных редактора: поуровневый планировщик и символьный редактор.

В иерархической структуре проекта на любом уровне допускается смешанное использование файлов с расширениями .gdf .tdf .vhd .v .edf .sch Однако файлы с расширением .wdf .xnf .adf .smf должны быть либо на самом нижнем иерархическом уровне проекта, либо быть единственным файлом проекта.

Во всех приложениях MAX+pLUS II есть возможность с помощью команд из меню Assign вводить, редактировать и удалять типы назначений ресурсов, устройств и параметров, которые управляют компиляцией проекта. Пользователь может делать назначения для текущего проекта независимо от того, открыт ли какой-нибудь файл проекта или окно приложений. Доступны следующие типы назначений.

Clique assignment (Назначение клики) задает, какие логические функции должны оставаться вместе в одном и том же блоке логической структуры LAB, блоке ячеек памяти EAB, в одном ряду или устройстве.

Chip assignment (Назначение кристалла) задает, какие логические функции должны быть реализованы в одном и том же устройстве в случае разделения проекта на несколько устройств.

pin assignment (Назначение контакта) назначает вход или выход одной логической функции конкретному контакту или нескольким контактам чипа.

Location assignment (Назначение ячейки) назначает единственную логическую функцию конкретной ячейке чипа.

probe assignment (Назначение зонда) присваивает уникальное имя входу или выходу логической функции.

Connected pin assignment (Назначение соединенных контактов) задает внешнее соединение двух или более контактов на схеме пользователя.

Local routing assignment (Назначение местной разводки) присваивает коэффициент разветвления по выходу узла логическому элементу, находящемуся в том же блоке LAB, что и узел, или в соседнем LAB, прилежащем к узлу, с использованием общих местных разводок.

Device assignment (Назначение устройства) назначает тип ПЛИС, на которой реализуется проект.

Logic option assignment (Назначение логической опции) управляет логическим синтезом отдельных логических функций во время компиляции с применением стиля логического синтеза.

Timing assignment (Назначение временных параметров) управляет логическим синтезом и подгонкой отдельных логических функций для получения требуемых характеристик для времени задержки tpD (вход-неподрегистренный выход), tCO (синхросигнал-выход), tSU (синхросигнал-время установки), fMAX (частота синхросигнала).

Можно определить глобальные опции устройства для компилятора для того, чтобы он их использовал для всех устройств при обработке проекта. Для резервирования дополнительных возможностей на будущее можно задать процентное соотношение контактов и логических элементов, которые должны оставаться неиспользованными во время текущей компиляции.

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

При помощи команды Global project Timing Requirements можно ввести глобальные требования по синхронизации для поекта, задавая общие характеристики для времени задержки tpD (вход-нерегистрируемый выход), tCO (синхросигнал-выход), tSU (синхросигнал-время установки), fMAX (частота синхросигнала).

Команда Global project Logic Synthesis позволяет сделать глобальные установки для компилятора в части логического синтеза проекта.

Все пять редакторов MAX pLUS II и три редактора создания дизайна (графический, текстовый и сигнальный) имеют общие функции, такие как, например, создание, сохранение и открытие файла. Кроме того, приложения редактора MAX pLUS II имеют следующие общие функции: создание файлов символов и файлов с прототипами функций (Include-файлы); поиск узлов; траверз иерархического дерева; всплывающие окна меню, зависящего от контекста; временной анализ; поиск и замена фрагментов текста; отмена последнего шага редактирования, его возвращения, вырезка, копирование, вставку и удаление выбранных фрагментов, обмен фрагментами между приложениями MAX pLUS II или приложениями Windows; печать.

Графический редактор (Graphic Editor) обеспечивает проектирование в реальном формате изображения (WYSIWIG). Графические файлы проекта (.gdf) или схемные файлы OrCAD (.sch), созданные в данном графическом редакторе, могут включать любую комбинацию символов примитивов, мегафункций и макрофункций. Символы могут представлять собой любой тип файл проекта (.gdf .sch .tdf .vhd .v .wdf .edf .xnf .adf .smf).

Инструмент выбора ("стрелка") облегчает разработку дизайна. Он позволяет двигать и копировать объекты, а также вводить новые символы. Когда вы помещаете его на контакт или конец линии, он автоматически преобразуется в инструмент рисования ортогональных линий. Если им щелкнуть на тексте, он автоматически преобразуется в инструмент редактирования текста.

Графический редактор обеспечивает ряд других возможностей. Например, можно увеличить или уменьшить масштаб отображения на экране, выбирать гарнитуру и размер шрифта, задавать стили линий, устанавливать и отображать направляющие, получать зеркальное отображение, поворачивать выделенные фрагменты на 90, 180 или 270 градусов; задавать размер, ориентацию текущего листа схемы.

Символьный редактор (Symbol Editor) позволяет просматривать, создавать и редактировать символ. Символьный файл имеет то же имя, что и проект, и расширение .sym. Команда Creat Default Symbol меню File, которая есть в графическом, текстовом и сигнальном редакторах, создает символ для любого файла проекта. Символьный редактор обладает следующими характеристиками: можно переопределить символ, представляющий файл проекта, создавать и редактировать выводы и их имена, используя входные, выходные и двунаправленные выводы, а также задавать варианты ввода символа в файл графического редактора, задать значения параметров и их значения по умолчанию, сетка и направляющие помогают выполнить точное выравнивание объектов, в символе можно вводить комментарии.

Текстовый редактор (Text Editor) является инструментом для создания текстовых файл проекта на языках описания аппаратуры: AHDL (.tdf), VHDL (.vhd), Verilog HDL (.v). В этом текстовом редакторе можно работать также с произвольным файлом формата ASCII. Все перечисленные файлы проекта можно создавать в любом текстовом редакторе, однако данный редактор имеет встроенные возможности ввода файлов проекта, их компиляции и отладки с выдачей сообщений об ошибках и их локализацией в исходном тексте или в тексте вспомогательных файлов; кроме того, существуют шаблоны языковых конструкций для AHDL, VHDL и Verilog HDL, выполнено окрашивание синтаксических конструкций. В данном редакторе можно вручную редактировать файлы назначений и конфигурации (.acf), а также делать установки конфигурации для компилятора, симулятора и временного анализатора.

Пользуясь данным текстовым редактором, можно создавать тестовые векторы (.vec), используемые для тестирования, отладки функций и при вводе сигнального проекта. Можно также создавать командные файлы (.cmd – для симулятора и .edc – для EDIF), а также макробиблиотеки (.lmf).

В текстовом редакторе MAX pLUS II обеспечивается контекстная справка.

Сигнальный редактор (Waveform Editor) служит инструментом создания описания проекта и инструментом ввода тестовых векторов и просмотра результатов тестирования. Пользователь может создавать сигнальные файлы проекта (.wdf), которые содержат временные диаграммы, описывающие логику работы проекта, а также файлы каналов тестирования (.scf), которые содержат входные вектора для тестирования и функциональной отладки. Разработка описания проекта в сигнальном редакторе является альтернативой его созданию в графическом или текстовом редакторах. Здесь можно графическим способом задавать комбинации входных логических уровней и требуемых выходов. Созданный таким образом файл WDF может содержать как логические входы, так и входы цифрового автомата, а также выходы комбинаторной логики, счетчиков и цифровых автоматов. Способ разработки дизайна в сигнальном редакторе лучше подходит для цепей с четко определенными последовательными входами и выходами, т.е. для цифровых автоматов, счетчиков и регистров.

С помощью сигнального редактора можно легко преобразовывать временные диаграммы сигналов целиком или частично, создавая и редактируя узлы и группы. Простыми командами можно создавать файл таблицы ASCII-символов (.tbl) или импортировать файл тестовых векторов в формате ASCII (.vec) для создания файлов тестируемых каналов SCF и сигнального дизайна WDF. Можно также сохранить файл WDF как SCF для проведения тестирования или преобразовать SCF в WDF для использования его в качестве файла проекта.

Сигнальный редактор имеет следующие отличительные черты: можно создать или отредактировать узел задав его тип, при разработке WDF можно задать тип логики узла, задать значения по умолчанию в логическом узле, а также имя состояния по умолчанию в узле типа цифрового автомата, для упрощения создания тестового вектора можно легко добавить в файл тестируемых каналов SCF несколько узлов или все из информационного файла симулятора (.snf), существующего для полностью откомпилированного проекта, можно объединять от 2 до 256 узлов для создания новой группы (шины) или разгруппировывать объединенные ранее в группу узлы. Можно также объединять группы с другими группами. Значение группы может быть отображено в двоичной, десятичной, шестнадцатеричной или восьмеричной системе счисления с преобразованием или без в код Грэя, можно копировать, вставлять, перемещать или удалять выбранную часть ("интервал") сигнала, а также весь узел или группу. Можно также инвертировать, вставлять, переписывать, повторять, расширять или сжимать интервал сигнала любой длины с любым логическим уровнем, тактовым сигналом, последовательностью счета или именем состояния, задать сетку для выравнивания переходов между логическими уровнями, в любом месте файла можно вводить комментарии между сигналами, менять масштаб отображения.

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

Поуровневый планировщик (Floorplan Editor) предназначен для назначения ресурсов физических устройств и просмотра результатов разводки, сделанных компилятором. В окне поуровневого планировщика могут быть представлены два типа изображения:

Device View (Вид устройства) показывает все контакты устройства и их функции.

LAB View (Вид логического структурного блока) показывает внутреннюю часть устройства, в том числе все логические структурные блоки (LAB) и отдельные логические элементы

После выполнения всех назначений и задания проекта приступают к его компиляции. Сначала компилятор извлекает информацию об иерархических связях между файлами проекта и проверяет проект на простые ошибки ввода описания проекта.

Компилятор применяет разнообразные способы увеличения эффективности проекта и минимизации использования ресурсов устройства. Если проект слишком большой, чтобы быть реализованным в одном устройстве, компилятор может автоматически разбить его на части для реализации в нескольких устройствах того же самого семейства устройств, при этом минимизируется число соединений между устройствами. В файле отчета (.rpt) затем будет отражено, как проект будет реализован в одном или нескольких устройствах.

Кроме того, компилятор создает программирующие файлы, которые программатор будет использовать для программирования одного или нескольких устройств. У разработчика также есть возможность настроить обработку проекта. Например, возможно задать стиль логического синтеза проекта по умолчанию и другие параметры логического синтеза в рамках всего проекта, что позволит провести логический синтез в соответствии с вашими потребностями. Кроме того, вы можете ввести требования по синхронизации в рамках всего проекта, точно задать разбиение большого проекта на части для реализации в нескольких устройствах и выбрать варианты параметров устройств, которые будут применены для всего проекта в целом.

Загрузку готового проекта в ПЛИС или конфигурационное ПЗУ выполняют с помощью программатора (programmer).

Конечно, в рамках одной статьи не представляется возможным дать полное описание всех функций системы, тем не менее, автор надеется, что данная статья поможет начинающему разработчику в освоении системы проектирования MAX pLUS II. В следующем занятии мы рассмотрим работу с системой проектирования ПЛИС фирмы Xilinx.

Наверх

Координаты:

г. Москва, пр. Мира, 102

Для писем:

105066, Россия, г. Москва, а/я 18

Тел.: (495) 778-97-04

e-mail: mail@dsol.ru, info@dsol.ru


Бегущие строки

Контрактная разработка радиоэлектронных устройств

Цифровая обработка сигналов и изображений

Поставка высокотехнологичных изделий

О компании | Контакты | Новости | Разработки | Продукция | Выполненные проекты | Публикации | Ссылки

Занятие 1. Обзор элементной базы.

Занятие 2. Система проектирования MAX+PLUS II фирмы ALTERA.

Занятие 3. Программное обеспечение проектирования на ПЛИС фирмы Xilinx.

Занятие 4. Язык описания аппаратуры VHDL.

Занятие 5. Язык описания аппаратуры AHDL.

Занятие 6. Язык описания аппаратуры AHDL (продолжение).

Занятие 7. Особенности функционирования ПЛИС в составе системы ЦОС.

Поиск по сайту:

Современные алгоритмы ЦОС: пути реализации и перспективы применения

Стешенко В.Б.

Занятие 3. Программное обеспечение проектирования на ПЛИС фирмы Xilinx.

В предыдущих занятиях школы [1,2] были рассмотрены основные архитектуры ПЛИС и работа над проектом в среде системы MAX+PLUS II фирмы ALTERA. В данной статье цикла мы рассмотрим основные характеристики программного обеспечения фирмы Xilinx.

В работе [3] приводится достаточно подробное описание ПЛИС фирмы Xilinx (кроме последних модификаций) и некоторые особенности их применения. Информацию о последних разработках ПЛИС фирмы Xilinx можно получить на периодически обновляемом CD-ROM AppLINX, ежеквартальном журнале XСell, подписаться на которые можно на WEB-сайте www.xilinx.com .

Пожалуй, из всех производителей ПЛИС фирма Xilinx может считаться лидером по номенклатуре серий ПЛИС и программного обеспечения (ПО). При этом новые версии ПО поддерживают старые серии ПЛИС, позволяя разработчику производить плавную миграцию проектов на новые серии. Среди программных продуктов Xilinx имеются как относительно простые свободно распространяемые системы, так и мощные, интегрированные пакеты, позволяющие разрабатывать ПЛИС эквивалентной емкостью более 1000 000 вентилей.

Среди бесплатных САПР Xilinx следует выделить систему WebFITTER, первому в своем роде продукту, основанному на использовании Internet.

В таблице 1 приведены основные характеристики системы WebFITTER.

Таблица 1.

Поддерживаемые устройства | XC9500 (5V), XC9500XL (3.3V), XC9500XV (2.5V)
Способ описания проекта | VHDL, Verilog, ABEL, EDIF, tdF, XNF
Задание ограничений на проект | Определяется пользователем
Выходные данные | Отчет о временных параметрах проекта (timing report), отчет о трассировке (fitter report), файл программатора (programming file) в формате JEDEC, временная модель для моделирования (timing simulation model) в формате VHDL, Verilog или EDIF)

Для работы с этим продуктом необходимо, чтобы броузер поддерживал Javscript версии 1.2 , Frames и SSL. Броузеры Netsape Communicator 4.0 (и старших версий) и Microsoft Internet Explorer версии 4.0 и старше вполне пригодны для работы с WebFITTER. При использовании Netscape необходимо разрешить работу с Javascript выбрав в меню Edit->Preferences->Advanced->Enable переключатель JavaScript. При использовании Internet Explorer необходимо выбрать в окне View->Internet Options->Security->Custom опцию Enable Active Scripting.

Собственно WebFITTER находится на странице http://xaps1.xilinx.com/webfitter.

Однако для большинства пользователей в России использование данного продукта может оказаться затруднительным, поскольку, к, сожалению, скоростной доступ в Internet доступен пока немногим. Тем не менее, следует обратить внимание на тенденцию применения технологий глобальных компьютерных сетей в разработке ПЛИС.

Разумной альтернативой использованию WebFITTER является применение пакета WebPack, позволяющего работать с CPLD XC9500 и CoolPLD, ввод описания проекта возможен как с помощью схемного редактора, так и с использованием языков описания аппаратуры ABEL и VHDL. Возможно программирование устройств непосредственно в системе с использованием аппаратного загрузчика XСhecker. К сожалению, в WebPack пока отсутствует опция моделирования алгоритмов, описанных с помощью VHDL, поддерживается только лишь синтез. Данный пакет можно "скачать" с сайта фирмы Xilinx. На взгляд автора этот продукт является достаточно удачным средством первоначального знакомства с проектированием на ПЛИС.

Вышеупомянутые продукты предназначены для разработки проектов на базе устройств, выпускаемых по архитектуре CPLD. Как уже отмечалось ранее [1] такие устройства мало пригодны для реализации сложных алгоритмов обработки сигналов. Для работы с устройствами FPGA, в том числе и с новым семейством Virtex, фирмой Xilinx в кооперации с Aldec и Synopsys разработан мощный и современный пакет Foundation, последняя версия которого (2.1) обеспечивает ряд новых функций, позволяющих использовать ПЛИС в качестве основной элементной базы для построения "систем на кристалле" (system-on-chip, SOC). В основе идеи SOC лежит интеграция всей электронной системы в одном кристалле (например, в случае ПК такой чип объединяет процессор, память, и т. д.). Компоненты этих систем разрабатываются отдельно и хранятся в виде файлов параметризируемых модулей. Окончательная структура SOC-микросхемы выполняется на базе этих "виртуальных компонентов", называемых также "блоками интеллектуальной собственности" с помощью САПР. Благодаря стандартизации в одно целое можно объединять "виртуальные компоненты" от разных разработчиков. Для поддержки работы над кристаллами, емкость которых составляет 2 000 000 эквивалентных вентилей, необходимо обеспечить возможность коллективной работы над проектом. Foundation 2.1 обеспечивает поддержку коллектива разработчиков как в локальной сети, так и с использованием ресурсов Internet. Данная технология разработки получила наименование Internet Team Design (Itd).

Основу системы составляет оболочка Foundation Project Manager (рис.1), разработанная фирмой Aldec

Рис. 1.

Использование Project Manager позволяет обеспечить удобное, задание всех параметров проекта, а также быстрое управление вводом описания проекта, его компиляции, временного и функционального моделирования, верификации и программирование ПЛИС.

Пакет Foundation выпускается в различных по конфигурации модификациях, в максимальном варианте доступны следующие функции:

1. Синтез проекта с использованием языков описания аппаратуры высокого уровня (VHDL and Verilog synthesis). Для этих целей в состав Foundation входит система синтеза FPGA Express Synthesis разработанный компанией Synopsys. Данный компилятор поддерживает синтез устройств с заданными временными параметрами.

2. В качестве традиционного средства ввода используется Schematic Editor (рис.2), имеющий развитые библиотеки.

Рис. 2.

В версии 2.1 применяется редактор схем Vista, входящий составной частью в FPGA Express.

3. Обеспечивается поддержка ввода описания алгоритма и синтез с использованием специализированного языка описания аппаратуры ABEL, предназначенного для описания проектов, выполняемых на ПЛИС Xilinx и некоторых других производителей

4. Обеспечивается ввод описания цифрового автомата с помощью его графа переходов (State Editor). Данный способ описания проекта позволяет весьма просто и наглядно задать поведение автомата и весьма удобен при разработке различных устройств управления. На рис.3 приведен пример задания автомата его графом.

Рис. 3.

В дальнейшем возможно создать для созданного автомата символ и использовать его в редакторе схем.

5. При описании проекта с использованием языков описания аппаратуры удобно использовать специализированный редактор HDL Editor, имеющий удобные средства контроля синтаксиса, шаблоны типовых конструкций и удобную связь с компиляторами.

В качестве средства работы с проектом на базе HDL используется Language Assistant, состоящий из трех основных модулей Language Templates, Synthesis Templates и User Templates.

6. Для создания описания модулей в интерактивном графическом режиме используется средство LogiBLOX. Оно позволяет создавать такие узлы, как счетчики, сдвиговые регистры, элементы памяти и мультиплексоры. LogiBLOX запускается непосредственно из редактора HDL Editor с использованием команды Synthesis / LogiBLOX.

На рис.4 показано окно LogiBLOX Module Selector в режиме описания счетчика

Рис. 4.

С использованием этого средства достаточно просто создать описание узла на языке описания аппаратуры, не владея им в совершенстве.

7. Для задания параметров компиляции проекта удобно использовать Express Constraints Editor. С помощью этого редактора удобно задавать временные ограничения для проекта.

8. После ввода описания проекта удобно провести его функциональное (логическое, поведенческое) моделирование с использованием симулятора Logic Simulator. В симуляторе в интерактивном графическом режиме задаются сигналы, которые используются для проведения моделирования. Результаты моделирования можно наблюдать как в привычном виде временных диаграмм, в том числе в режиме Probe, так и с использованием семисегментных индикаторов.

9. Для компиляции проекта из Project Manager запускают модуль Design Implementation, который позволяет выбрать устройство, на котором реализуется проект, подгрузить файл ограничений и параметров синтеза, созданный пользователем, а затем запустить компиляцию проекта. Процесс компиляции проекта и разводки отображается в окне Flow Engine (рис. 5)

Рис. 5.

10. В случае успешной компиляции проекта следует провести временное моделирование с использованием модуля Timing Simulation.

11. После проведения моделирования на компьютере можно проводить аппаратную верификацию проекта с использованием загрузчика Xchecker и отладочной платы.

Программное обеспечение фирмы Xilinx поддерживает генератор логических ядер (CORE Generator). Сгенерированные ядра (LogiCORE) представляют собой функциональные параметризированные блоки системного уровня, предназначенные для применения в цифровой обработке сигналов. В таблице 2 приведены сведения о некоторых логических ядрах фирмы Xilinx, предназначенных для реализации алгоритмов ЦОС.

Таблица 2. Логические ядра фирмы Xilinx.

КИХ-фильтры | Фильтр на основе последовательно распределенной арифметики с возможностью каскадирования, интерполяции и децимации.
Гребенчатый фильтр | Структуры фильтра без использования умножителей Структура Хогенауэра
Корреляторы | Одномерный параллельного или последовательного ввода-вывода данныхю, двумерные корреляторы.
Таблицы перекодировки | Произвольная разрядность выходных данных и любая глубина таблицы генерируемой функции.
Перемножители, аккумуляторы, сумматоры/вычитатели, делители | Любая разрядность. Умножение переменного операнда на константу. Перемножение двух независимых переменных.
БПФ 1024 точки | Действительные 16-разрядные входные данные и комплексный выход

Кроме того, фирма Xilinx поддерживает программу разработки готовых решений для САПР ПЛИС AllianceCORE.

На примере ПО фирмы Xilinx видно изменение отношения к программному обеспечению САПР ПЛИС как со стороны разработчиков ПО, так и пользователей. Если до конца 1990 годов основным средством описания проекта являлся ввод схемы с помощью графических редакторов с использованием библиотек стандартных логических примитивов (логических элементов, простейших комбинационных и последовательностных функциональных узлов, аналогов стандартных ИС малой и средней степени интеграции (74 - й серии)), то в настоящее время актуальным является использование языков описания аппаратуры для реализации алгоритмов на ПЛИС. Причем в современных САПР поддерживаются как стандартизованные языки описания аппаратуры, такие как VHDL, Verilog HDL, так и языки описания аппаратуры, разработанные компаниями-производителями ПЛИС, специально для использования только в своих САПР и учитывающих архитектурные особенности конкретных семейств ПЛИС.

Кроме того, многие крупные фирмы – производители САПР интегральных схем активно включились в процесс создания ПО, поддерживающего ПЛИС различных производителей. Это позволяет проводить разработку алгоритмов, пригодных к реализации на ПЛИС не только разных семейств, но и различных производителей, что облегчает переносимость алгоритма и ускоряет процесс разработки. Примером таких систем являются продукты серии FPGA Express фирмы Synopsys, OrCAD Express фирмы OrCAD, продукты фирм VeryBest, Aldec, Cadence Design Systems и многих других. ПО Xilinx поддерживает интерфейс со многими из названных продуктов.

В следующем занятии школы мы начнем знакомиться с языками описания аппаратуры, используемыми при проектировании устройств на ПЛИС.

Литература

  1. В.Стешенко. Школа разработки аппаратуры цифровой обработки сигналов на ПЛИС. Занятие 1. Обзор элементной базы. // Chip News,1999, №8, с. 2 – 6.
  2. В.Стешенко. Школа разработки аппаратуры цифровой обработки сигналов на ПЛИС. Занятие 2. Система проектирования MAX+PLUS II фирмы ALTERA. // Chip News,1999, №9, с. 15 – 18.
  3. П.П.Мальцев, Н.И.Гарбузов, А.П.Шарапов, Д.А.Кнышев. Программируемые логические ИМС на КМОП-структурах и их применение. – М.: Энергоатомиздат, 1998.

Наверх

Координаты:

г. Москва, пр. Мира, 102

Для писем:

105066, Россия, г. Москва, а/я 18

Тел.: (495) 778-97-04

e-mail: mail@dsol.ru, info@dsol.ru


Бегущие строки

Контрактная разработка радиоэлектронных устройств

Цифровая обработка сигналов и изображений

Поставка высокотехнологичных изделий

О компании | Контакты | Новости | Разработки | Продукция | Выполненные проекты | Публикации | Ссылки

Занятие 1. Обзор элементной базы.

Занятие 2. Система проектирования MAX+PLUS II фирмы ALTERA.

Занятие 3. Программное обеспечение проектирования на ПЛИС фирмы Xilinx.

Занятие 4. Язык описания аппаратуры VHDL.

Занятие 5. Язык описания аппаратуры AHDL.

Занятие 6. Язык описания аппаратуры AHDL (продолжение).

Занятие 7. Особенности функционирования ПЛИС в составе системы ЦОС.

Поиск по сайту:

Современные алгоритмы ЦОС: пути реализации и перспективы применения

Стешенко В.Б.

Занятие 4. Язык описания аппаратуры VHDL.

Как уже отмечалось в предыдущих занятиях [1-3], возрастающая степень интеграции ПЛИС, новые концепции проектирования (система на кристалле) накладывают свой отпечаток на способы описания проекта на ПЛИС. Языки описания аппаратуры (Hardware Description Language), является формальной записью, которая может быть использована на всех этапах разработки цифровых электронных систем. Это возможно вследствие того, что язык легко воспринимается как машиной, так и человеком он может использоваться на этапах проектирования, верификации, синтеза и тестирования аппаратуры также как и для передачи данных о проекте, модификации и сопровождения. Существует несколько разновидностей этих языков: AHDL, VHDL, VerilogHDL, Abel и др. Известны случаи использования стандартных языков программирования, например С, для описания структуры БИС.

Ряд языков описания аппаратуры (AHDL, Abel) предназначены для описания систем на ПЛИС, другие появились изначально как средство моделирования цифровых систем, а затем стали инструментом описания цифровых систем.

Одним из наиболее универсальных языков описания аппаратуры является VHDL [4], первый стандарт которого был разработан с 1983 по 1987 год при спонсорстве минобороны США. На этом языке возможно как поведенческое, так структурное и потоковое описание цифровых схем.

VHDL поддерживает три различных стиля для описания аппаратных архитектур.

Первый из них - структурное описание (structural description), в котором архитектура представляется в виде иерархии связанных компонентов.

Второй - потоковое описание (data-flow description), в котором архитектура представляется в виде множества параллельных регистровых операций, каждая из которых управляется вентильными сигналами. Потоковое описание соответствует стилю описания, используемому в языках регистровых передач.

И, наконец, поведенческое описание (behavioral description), в котором преобразование описывается последовательными программными предложениями, которые похожи на имеющиеся в любом современном языке программирования высокого уровня. Все три стиля могут совместно использоваться в одной архитектуре.

Структурное и потоковое описание используется в основном для проектирования цифровых схем, поведенческое - только для моделирования, так как содержит конструкции которые невозможно реализовать в виде схемы.

Наиболее важными в языке VHDL являются понятия параллелизма и иерархии.

ОБЪЕКТ ПРОЕКТА (entity) представляет собой описание компоненты проекта, имеющей четко заданные входы и выходы и выполняющей четко определенную функцию. Обьект проекта может представлять всю проектируемую систему, некоторую подсистему, устройство, узел, стойку, плату, кристалл, макро -ячейку, логический элемент и т.п. В описании объекта проекта можно использовать компоненты, которые, в свою очередь, могут быть описаны как самостоятельные объекты проекта более низкого уровня. Таким образом, каждый компонент объекта проекта может быть связан с объектом проекта более низкого уровня. В результате такой декомпозиции обета проекта пользователь строит иерархию объектов проекта, представляющих весь проект в целом и состоящую из нескольких уровней абстракций. Такая совокупность объектов проекта называется ИЕРАРХИЕЙ ПРОЕКТА (design hierarchy).

Каждый объект проекта состоит, как минимум, из двух различных типов описаний: описания интерфейса и одного или более архитектурных тел. Интерфейс описывается в ОБЪЯВЛЕНИИ ОБЪЕКТА ПРОЕКТА (entity declaration) и определяет только входы и выходы объекта проекта.

Для описания поведения объекта или его структуры служит АРХИТЕКТУРНОЕ ТЕЛО (architecture body). Чтобы задать, какие объекты проекта использованы для создания полного проекта, используется ОБЪЯВЛЕНИЕ КОНФИГУРАЦИИ (configuration declaration).

В языке VHDL предусмотрен механизм пакетов для часто используемых описаний, констант, типов, сигналов. Эти описания помещаются в ОБЪЯВЛЕНИИ ПАКЕТА (package declaration). Если пользователь использует нестандартные операции или функции, их интерфейсы описываются в объявлении пакета, а тела содержатся в ТЕЛЕ ПАКЕТА (package body).

Таким образом, при описании цифровых схем на языке VHDL, возможно использование пяти различных типов описаний: объявление объекта проекта, архитектурное тело, объявление конфигурации, объявление пакета и тело пакета. Каждое из описаний является самостоятельной конструкцией языка VHDL, может быть независимо проанализирована анализатором и поэтому получило название "МОДУЛЬ ПРОЕКТА" (design unit). Модули проекта, в свою очередь, можно разбить на две категории: ПЕРВИЧНЫЕ и ВТОРИЧНЫЕ. К первичным модулям относятся различного типа объявления. К вторичным - отдельно анализируемые тела первичных модулей. Один или несколько модулей проекта могут быть помещены в один файл, называемый ФАЙЛОМ ПРОЕКТА (design file). Каждый проанализированный модуль проекта помещается в БИБЛИОТЕКУ ПРОЕКТА (design library) и становится БИБЛИОТЕЧНЫМ МОДУЛЕМ (library unit). Данная реализация позволяет создать любое число библиотек проекта. Каждая библиотека проекта в языке VHDL имеет логическое имя (идентификатор). Фактическое имя файла, содержащего эту библиотеку, может совпадать или не совпадать с логическим именем библиотеки проекта. Для ассоциирования логического имени библиотеки с соответствующим ей фактическим именем в предусмотрен специальный механизм установки внешних ссылок.

Объекты данных (data object) являются хранилищами для значений определенного типа. Следует заметить, что все типы в VHDL конструируются из элементов, представляющих собой скалярные типы. Значения всех объектов в моделирующейся модели, взятые все вместе, отражают текущее состояние моделирования. Описание на VHDL содержит объявления, которые создают объекты данных четырех классов: константы, переменные, сигналы и файлы.

Константы и переменные содержат одно значение данного типа. Значения переменных могут быть изменены назначением нового значения в предложении назначения переменной. Значение константы устанавливается до начала моделирования и не может после этого изменяться.

Сигнал имеет текущее значение подобно переменной. Он также имеет прошлую историю значений, на которые разработчик может пожелать сослаться, а также множество будущих значений, которые будут получены от формирователей сигналов. Новые значения для сигналов создаются предложениями назначения сигналов. Каждый объект в описании должен ассоциироваться с одним и только одним типом. Тип состоит из множества возможных значений и множества операций. Имеются операции двух видов. Некоторые операции являются предопределенными, это, к примеру, операторы '+', ' - ' для значений типа integer. Другие операции явно кодируются в VHDL; например, может быть написана функция подпрограмма Max, которая возвращает наибольший из двух целых аргументов. Тип объекта представляет информацию, которая окончательно определяется в момент записи модели. Эта информация способствует обнаружению несоответствий в тексте без обращения к моделированию. Например, легко обнаружить и отметить попытку назначения булевого значения (true или False) целой переменной. Новое значение, которое должно быть создано предложением назначения, определяется выражением в правой части. Выражения используются также и в других контекстах: например, как условие в предложении if. В состав выражения могут входить константы, переменные, сигналы, операторы и указатели функций. Когда имя объекта используется в выражении, то при расчете значения выражения учитывается его текущее значение.

Рассмотрим некоторые примеры описания цифровых схем на VHDL.

Примером описания цифрового автомата является преобразователь параллельного кода в последовательный. Преобразователь кода представляет собой устройство, на вход которого подается n-битное число в параллельном коде 'd' сигнал загрузки 'load' и синхроимпульсы 'clk'. По сигналу загрузки происходит запись входного слова во внутренний регистр и последовательная выдача в течении n тактов этого входного слова в последовательном коде на выходе 'о' синхроимпульсами 'oclk'. После окончания преобразования на выходе 'e' появляется высокий уровень сигнала в течение одного такта. Такого рода преобразователи кода часто используются для управления синтезаторами частот 1104ПЛ1 и им подобными.

Описание этого устройства на языке VHDL приведено ниже:

library ieee;
use ieee.std_logic_1164.all;

entity Serial is
port (
clk : in Std_LOGIC;
load : in Std_LOGIC;
reset: in Std_LOGIC;
d : in Std_LOGIC_vector (3 downto 0);
oclk : out Std_LOGIC;
o : out Std_LOGIC;
e : out Std_LOGIC
);
end;

architecture behavioral of Serial is
type t1 is range 0 to 4;
signal s : Std_LOGIC_vector (2 downto 0);
signal i : t1;

begin

process (clk)
begin
if reset = '1' then
i <= 0;
else
if (clk'event and clk='1') then
if (i = 0 and load = '1') then
s(2 downto 0) <= d(3 downto 1);
o <= d(0);
i <= 4;
end if;
if (i > 1) then
o <= s(0);
s(1 downto 0) <= s(2 downto 1);
i <= i - 1;
end if;
if (i = 1) then
e <= '1';
i <= 0;
else
e <= '0';
end if;
end if;
end if;
if i>0 then
oclk <= not clk;
else
oclk <= '0';
end if;

end process;

end behavioral;

По переднему фронту синхроимпульса 'clk' при высоком уровне на входе загрузки происходит загрузка трех старших бит входного слова d[3..1] во временный регистр s[2..0]. Младший бит входного слова d[0] подается на выход 'o'. На выходе 'oclk' появляются синхроимпульсы. На сигнале 'i' собран внутренний счетчик, выдающий сигнал окончания преобразования 'e'. При поступлении последующих синхроимпульсов происходит выдача на выход 'o' остальных бит входного слова, хранящихся в регистре s[2..0].

Моделирование этого устройства было проведено в системе проектирования OrCAD 9.0

Для тестирования схемы использовался тест:

library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
entity test_serial is end test_serial;
architecture testbench of test_serial is
component serial
port (
clk : in std_logic;
load : in std_logic;
reset : in std_logic;
d : in std_logic_vector(3 downto 0);
oclk : out std_logic;
o : out std_logic;
e : out std_logic
);
end component;

signal clk : std_logic;
signal load : std_logic := '0';
signal reset : std_logic;
signal d : std_logic_vector(3 downto 0);
signal oclk : std_logic;
signal o : std_logic;
signal e : std_logic;
begin
process begin
for i in 0 to 50 loop
clk <= '0'; wait for 5 ns;
clk <= '1'; wait for 5 ns;
end loop;
end process;
process begin
reset <= '1'; wait for 10 ns;
reset <= '0' ;
load <= '1';
d <= "1010"; wait for 10 ns;
load <= '0';
d <= "0000"; wait for 500 ns;
end process;
dut : serial port map (
clk => clk,
load => load,
reset => reset,
d => d,
oclk => oclk,
o => o,
e => e
);
end testbench;

Результаты моделирования представлены на рис. 1.

Рис. 1.

В качестве примера описания устройства ЦОС рассмотрим цифровой КИХ-фильтр [5-7].

Работа цифрового КИХ-фильтра описывается разностным уравнением

yn=A0xn + A1xn-1 + A2xn-2 + …,
где yn – реакция системы в момент времени n,
xn – входное воздействие
Ai – Весовой коэффициент i-ой входной переменной.

На VHDL описание фильтра имеет вид

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
entity f is
port (
din: in std_logic_vector(7 downto 0);
sout: out std_logic_vector(15 downto 0);
r: in std_logic;
c: in std_logic
);
end f;

architecture behavior of f is

constant h00 : std_logic_vector(7 downto 0) := "00000000";
constant h01 : std_logic_vector(7 downto 0) := "00000001";
constant h02 : std_logic_vector(7 downto 0) := "00000100";
constant h03 : std_logic_vector(7 downto 0) := "00001111";
constant h04 : std_logic_vector(7 downto 0) := "00100100";
constant h05 : std_logic_vector(7 downto 0) := "01000010";
constant h06 : std_logic_vector(7 downto 0) := "01100100";
constant h07 : std_logic_vector(7 downto 0) := "01111100";
constant h08 : std_logic_vector(7 downto 0) := "01111111";
constant h09 : std_logic_vector(7 downto 0) := "01101010";
constant h10 : std_logic_vector(7 downto 0) := "01000010";
constant h11 : std_logic_vector(7 downto 0) := "00010011";
constant h12 : std_logic_vector(7 downto 0) := "11101100";
constant h13 : std_logic_vector(7 downto 0) := "11010110";
constant h14 : std_logic_vector(7 downto 0) := "11010101";
constant h15 : std_logic_vector(7 downto 0) := "11100011";
constant h16 : std_logic_vector(7 downto 0) := "11110111";
constant h17 : std_logic_vector(7 downto 0) := "00001010";
constant h18 : std_logic_vector(7 downto 0) := "00010100";
constant h19 : std_logic_vector(7 downto 0) := "00010011";
constant h20 : std_logic_vector(7 downto 0) := "00001100";
constant h21 : std_logic_vector(7 downto 0) := "00000010";
constant h22 : std_logic_vector(7 downto 0) := "11111000";
constant h23 : std_logic_vector(7 downto 0) := "11110101";

signal x00, x01, x02, x03, x04, x05, x06, x07,
x08, x09, x10, x11, x12, x13, x14, x15,
x16, x17, x18, x19, x20, x21,
x22, x23 : std_logic_vector(7 downto 0);
signal m00, m01, m02, m03, m04, m05, m06, m07,
m08, m09, m10, m11, m12, m13, m14, m15,
m16, m17, m18, m19, m20, m21,
m22, m23 : std_logic_vector(15 downto 0);

begin
m00 <= (signed(x00)*signed(h00));
m01 <= (signed(x01)*signed(h01));
m02 <= (signed(x02)*signed(h02));
m03 <= (signed(x03)*signed(h03));
m04 <= (signed(x04)*signed(h04));
m05 <= (signed(x05)*signed(h05));
m06 <= (signed(x06)*signed(h06));
m07 <= (signed(x07)*signed(h07));
m08 <= (signed(x08)*signed(h08));
m09 <= (signed(x09)*signed(h09));
m10 <= (signed(x10)*signed(h10));
m11 <= (signed(x11)*signed(h11));
m12 <= (signed(x12)*signed(h12));
m13 <= (signed(x13)*signed(h13));
m14 <= (signed(x14)*signed(h14));
m15 <= (signed(x15)*signed(h15));
m16 <= (signed(x16)*signed(h16));
m17 <= (signed(x17)*signed(h17));
m18 <= (signed(x18)*signed(h18));
m19 <= (signed(x19)*signed(h19));
m20 <= (signed(x20)*signed(h20));
m21 <= (signed(x21)*signed(h21));
m22 <= (signed(x22)*signed(h22));
m23 <= (signed(x23)*signed(h23));

sout <= (signed(m00)+signed(m01)+signed(m02)+signed(m03)
+signed(m04)+signed(m05)+signed(m06)+signed(m07)
+signed(m08)+signed(m09)+signed(m10)+signed(m11)
+signed(m12)+signed(m13)+signed(m14)+signed(m15)
+signed(m16)+signed(m17)+signed(m18)+signed(m19)
+signed(m20)+signed(m21)+signed(m22)+signed(m23));

process(c,r)
begin
if r='1' then
x00 <= (others => '0');
x01 <= (others => '0');
x02 <= (others => '0');
x03 <= (others => '0');
x04 <= (others => '0');
x05 <= (others => '0');
x06 <= (others => '0');
x07 <= (others => '0');
x08 <= (others => '0');
x09 <= (others => '0');
x10 <= (others => '0');
x11 <= (others => '0');
x12 <= (others => '0');
x13 <= (others => '0');
x14 <= (others => '0');
x15 <= (others => '0');
x16 <= (others => '0');
x17 <= (others => '0');
x18 <= (others => '0');
x19 <= (others => '0');
x20 <= (others => '0');
x21 <= (others => '0');
x22 <= (others => '0');
x23 <= (others => '0');
elsif (c'event and c='1') then
x00(7 downto 0) <= din(7 downto 0);
x01(7 downto 0) <= x00(7 downto 0);
x02(7 downto 0) <= x01(7 downto 0);
x03(7 downto 0) <= x02(7 downto 0);
x04(7 downto 0) <= x03(7 downto 0);
x05(7 downto 0) <= x04(7 downto 0);
x06(7 downto 0) <= x05(7 downto 0);
x07(7 downto 0) <= x06(7 downto 0);
x08(7 downto 0) <= x07(7 downto 0);
x09(7 downto 0) <= x08(7 downto 0);
x10(7 downto 0) <= x09(7 downto 0);
x11(7 downto 0) <= x10(7 downto 0);
x12(7 downto 0) <= x11(7 downto 0);
x13(7 downto 0) <= x12(7 downto 0);
x14(7 downto 0) <= x13(7 downto 0);
x15(7 downto 0) <= x14(7 downto 0);
x16(7 downto 0) <= x15(7 downto 0);
x17(7 downto 0) <= x16(7 downto 0);
x18(7 downto 0) <= x17(7 downto 0);
x19(7 downto 0) <= x18(7 downto 0);
x20(7 downto 0) <= x19(7 downto 0);
x21(7 downto 0) <= x20(7 downto 0);
x22(7 downto 0) <= x21(7 downto 0);
x23(7 downto 0) <= x22(7 downto 0);
end if;
end process;
end behavior;

Входные данные считываются с входа din[7..0] в дополнительном коде по переднему фронту синхросигнала 'c'

На сигналах x0 - x23 построен сдвиговый регистр, обеспечивающий задержку данных на 24 такта. Сигналы с регистров умножаются на весовые коэффициенты h0 ё h23 и суммируются.

Для тестирования схемы использован тест:

-- Test bench shell

library ieee;
use ieee.std_logic_1164.all;

entity test_f is end test_f;

architecture testbench of test_f is

component f
port (
din : in std_logic_vector(7 downto 0);
sout : out std_logic_vector(15 downto 0);
r : in std_logic;
c : in std_logic
);
end component;

signal din : std_logic_vector(7 downto 0);
signal sout : std_logic_vector(15 downto 0);
signal r : std_logic;
signal c : std_logic;

begin

process begin
for i in 0 to 50 loop
c <= '0'; wait for 5 ns;
c <= '1'; wait for 5 ns;
end loop;
end process;

process begin
r <= '1'; wait for 10 ns;
r <= '0' ;
din <= "00000001"; wait for 10 ns;
din <= "00000000"; wait for 500 ns;
end process;

dut : f port map (
din => din,
sout => sout,
r => r,
c => c
);

end testbench;

Тест моделирует подачу на цифровой фильтр аналога d-функции. На выходе фильтра – его импульсная характеристика.

Результаты моделирования представлены на рис.2

Рис. 2.

В следующем занятии мы рассмотрим использование языка AHDL для описания проектов на ПЛИС ALTERA.

Литература

  1. В.Стешенко. Школа разработки аппаратуры цифровой обработки сигналов на ПЛИС. Занятие 1. Обзор элементной базы. // Chip News,1999, №8, с. 2 – 6.
  2. В.Стешенко. Школа разработки аппаратуры цифровой обработки сигналов на ПЛИС. Занятие 2. Система проектирования MAX+PLUS II фирмы ALTERA. // Chip News,1999, №9, с. 15 – 18.
  3. В.Стешенко. Школа разработки аппаратуры цифровой обработки сигналов на ПЛИС. Занятие 3 Программное обеспечение проектирования на ПЛИС фирмы Xilinx.// Chip News,1999, №10.
  4. Дж.Р.Армстронг. Моделирование цифровых систем на языке VHDL. Пер. с англ. /-М.: Мир, 1992. –175 с.
  5. Губанов Д.А., Стешенко В.Б., Храпов В.Ю., Шипулин С.Н. Перспективы реализации алгоритмов цифровой фильтрации на основе ПЛИС фирмы ALTERA. // Chip News, № 9-10, 1997, с. 26–33.
  6. Губанов Д.А., Стешенко В.Б. Методология реализации алгоритмов цифровой фильтрации на основе программируемых логических интегральных схем. // Сборник докладов 1-й Международной конференции "Цифровая обработка сигналов и ее применения" 30.06-3.07.1998, Москва, МЦНТИ, том 4, с. 9 – 19
  7. Стешенко В.Б. Особенности проектирования аппаратуры цифровой обработки сигналов на ПЛИС с использованием языков описания аппаратуры // Сборник докладов 2-й Международной конференции "Цифровая обработка сигналов и ее применения" 21.09-24.09.1999, Москва, МЦНТИ, том 2, с. 307 – 314

Наверх

Координаты:

г. Москва, пр. Мира, 102

Для писем:

105066, Россия, г. Москва, а/я 18

Тел.: (495) 778-97-04

e-mail: mail@dsol.ru, info@dsol.ru


Бегущие строки

Контрактная разработка радиоэлектронных устройств

Цифровая обработка сигналов и изображений

Поставка высокотехнологичных изделий

О компании | Контакты | Новости | Разработки | Продукция | Выполненные проекты | Публикации | Ссылки

Занятие 1. Обзор элементной базы.

Занятие 2. Система проектирования MAX+PLUS II фирмы ALTERA.

Занятие 3. Программное обеспечение проектирования на ПЛИС фирмы Xilinx.

Занятие 4. Язык описания аппаратуры VHDL.

Занятие 5. Язык описания аппаратуры AHDL.

Занятие 6. Язык описания аппаратуры AHDL (продолжение).

Занятие 7. Особенности функционирования ПЛИС в составе системы ЦОС.

Поиск по сайту:

Современные алгоритмы ЦОС: пути реализации и перспективы применения

Стешенко В.Б.

Занятие 5. Язык описания аппаратуры AHDL.

1. Общие сведения о языке описания аппаратуры AHDL.

Язык описания аппаратуры AHDL разработан фирмой Altera и предназначен для описания комбинационных и последовательностных логических устройств, групповых операций, цифровых автоматов (state machine) и таблиц истинности с учетом архитектурных особенностей ПЛИС фирмы Altera. Он полностью интегрируется с системой автоматизированного проектирования ПЛИС MAX+PLUS II. Файлы описания аппаратуры, написанные на языке AHDL, имеют расширение *.tdF (Text design file). Для создания tdF-файла можно использовать как текстовый редактор системы MAX+PLUS II, так и любой другой. Проект, выполненный в виде tdF-файла, компилируется, отлаживается и используется для формирования файла программирования или загрузки ПЛИС фирмы Altera.

Операторы и элементы языка AHDL являются достаточно мощным и универсальным средством описания алгоритмов функционирования цифровых устройств, удобным в использовании. Язык описания аппаратуры AHDL дает возможность создавать иерархические проекты в рамках одного этого языка или же в иерархическом проекте использовать как tdF-файлы, разработанные на языке AHDL, так и другие типы файлов. Для создания проектов на AHDL можно, конечно, пользоваться любым текстовым редактором, но текстовый редактор системы MAX+PLUS II предоставляет ряд дополнительных возможностей для ввода, компиляции и отладки проектов.

Проекты, созданные на языке AHDL, легко внедряются в иерархическую структуру. Система MAX+PLUS II позволяет автоматически создать символ компонента, алгоритм функционирования которого описывается tdF-файлом, и затем вставить его в файл схемного описания (GDF-файл). Подобным же образом можно вводить собственные функции разработчика помимо порядка 300 макрофункций, разработанных фирмой Altera, в любой tdF-файл. Для всех функций, включенных в макробиблиотеку системы MAX+PLUS II, фирма Altera поставляет файлы с расширением *.inc, которые используются в операторе включения INCLUDE.

При распределении ресурсов устройств разработчик может пользоваться командами текстового редактора или операторами языка AHDL для того, чтобы сделать назначения ресурсов и устройств. Кроме того, разработчик может только проверить синтаксис или выполнить полную компиляцию для отладки и запуска проекта. Любые ошибки автоматически обнаруживаются обработчиком сообщений и высвечиваются в окне текстового редактора.

При работе с AHDL следует соблюдать так называемые "Золотые правила" (Golden Rules). Выполнение этих правил позволит эффективно применять язык AHDL и избежать многих ошибок:

  • Соблюдайте форматы и правила присвоения имен, описанные в руководстве по стилям AHDL, чтобы программа была читаемой и содержала меньше ошибок;

  • Несмотря на то, что язык AHDL не различает прописные и строчные буквы, Altera рекомендует для улучшения читаемости использовать прописные буквы для ключевых слов;

  • Не применяйте вложенные конструкции условного оператора If, если можно использовать оператор выбора Case;

  • Строка в tdF-файле может быть длиной до 255 символов. Однако следует стремится к длине строки, умещающейся на экране. Строки заканчиваются нажатием клавиши Enter;

  • Новую строку можно начинать в любом свободном месте, т.е. на местах пустых строк, табуляций, пробелов. Основные конструкции языка отделяются пустым пространством;

  • Ключевые слова, имена и числа должны разделяться соответствующими символами или операторами и/или одним или более пробелами;

  • Комментарии должны быть заключены в символы процента (%). Комментарий может включать любой символ, кроме символа %, поскольку компилятор системы MAX+PLUS II игнорирует все, заключенное в символы процента. Комментарии не могут быть вложенными;

  • При соединении одного примитива с другим используйте только "разрешенные" связи между ними, не все примитивы могут соединяться друг с другом.

  • Используйте только макрофункции EXPDFF, EXPLATCH, NANDLTCH и NORLTCH, входящие в макробиблиотеку системы MAX+PLUS II. Не создавайте свои собственные структуры перекрестных связей. Избегайте многократного связывания вместе EXPDFF, EXPLATCH, NANDLTCH и NORLTCH. Многочисленные примеры этих макрофункций должны всегда разделяться примитивами LCELL.

  • Если многочисленные двунаправленные или выходные выводы связаны вместе, разработчик не может использовать оператор Pin Connection для соединения выводов при функциональном моделировании с аппаратной поддержкой или функциональном тестировании;

  • Нет необходимости создавать прототипы функций для примитивов. Однако разработчик может переопределить примитивы в объявлениях прототипов функций для изменения порядка вызова входов в вашем tdF-ФАЙЛЕ;

  • Не редактируйте файл Fit. Если разработчик желает отредактировать назначения для проекта, необходимо сохранить сначала файл Fit как tdF-файл или сделать обратное назначение с помощью команды Project Back-Annotate и отредактировать их с помощью команд Chip to Device, Pin/LC/Chip и Enter Assignments;

  • Если разработчик хочет загрузить регистр по определенному фронту глобального тактового сигнала Clock, фирма Altera рекомендует, когда регистр загружен, использовать для управления вход Clock Enable одного из триггеров типа Enable: DFFE, TFFE, JKFFE или SRFFE;

  • Когда разработчик начинает работать с новым файлом проекта, сразу же необходимо задать семейство ПЛИС, на которые ориентирован проект, с помощью конструкции Family для того, чтобы в дальнейшем иметь возможность воспользоваться макрофункциями, специфичными для данного семейства. Если разработчик не задаст семейство, оно будет считаться таким же, как и в текущем проекте;

  • Используйте опцию Design Doctor для проверки надежности логики проекта во время компиляции.

  • Предоставляемые по умолчанию фирмой Altera стили для логического синтеза имеют разные установки для разных семейств устройств, что обеспечивает более эффективное использование архитектуры каждого устройства. Когда разработчик используете какой-нибудь из этих стилей, его установки изменятся, при переходе к другому семейству устройств. После смены семейства необходимо проверить новые установки стиля.

2. Использование чисел и констант в языке AHDL

Числа используются для представления констант в булевых выражениях и уравнениях. Язык AHDL поддерживает все комбинации десятичных, двоичных, восьмеричных и шестнадцатеричных чисел.

Ниже приведен файл decode1.tdf, который представляет собой дешифратор адреса, генерирующий высокий активный уровень сигнала разрешения доступа к шине, если адрес равен шестнадцатеричному числу 370h.

subDESIGN decode1
(
address[15..0] : INPUT;
chip_enable : OUTPUT;
)
BEGIN
chip_enable = (address[15..0] == H"0370");
END;

В этом примере десятичные числа использованы для указания размерности массива бит, которым записывается адрес шины. Шестнадцатеричным числом H"0370" записано значение адреса, при котором обеспечивается высокий уровень сигнала.

В файле AHDL можно использовать константы для описательных имен разных чисел. Такое имя, используемое на протяжении всего файла, может быть более информативным, чем число; например, имя UPPER_LI несет больше информации, чем число 103. В языке AHDL константы вводятся объявлением CONSTANT.

Преимущество использования констант особенно заметно, если одно и то же число используется в файле несколько раз. Тогда, если его нужно изменить, меняют его только один раз в объявлении константы.

3. Комбинационная логика

Как известно, логическая схема называется комбинационной, если в заданный момент времени выходы являются только функциями входов в этот момент времени. Комбинационная логика в языке AHDL реализована булевыми выражениями и уравнениями, таблицами истинности и большим количеством макрофункций. В число примеров комбинаторных логических функций входят Дешифраторы, мультиплексоры и сумматоры.

Булевы выражения - это множества узлов, чисел, констант и других булевых выражений, выделяемых операторами, компараторами и, возможно, сгруппированные в заключающих круглых скобках. Булево уравнение устанавливает равенство между узлом или группой и булевым выражением.

В качестве примера приведен файл boole1.tdf, в котором даны два простых булевых выражения, представляющих два логических элемента.

subDESIGN boole1
(
a0, a1, b : INPUT;
out1, out2 : OUTPUT;
)
BEGIN
out1 = a1 & !a0;
out2 = out1 # b;
END;

Здесь выход out1 получается в результате логической операции И, примененной ко входу а1 и инвертированному входу а0, а выход out2 получается в результате применения логической операции ИЛИ к выходу out1 и входу b. Поскольку эти уравнения обрабатываются одновременно, последовательность их следования в файле не важна.

Узел, который объявляется в секции переменных VARIABLE в объявлении NODE, можно использовать для хранения промежуточных выражений.

Это полезно делать, если булево выражение повторяется несколько раз и его целесообразно заменить именем узла. Приведенный выше файл boole1.tdf можно переписать по-другому:

subDESIGN boole2
(
a0, a1, b : INPUT;
out : OUTPUT;
)
VARIABLE
a_equals_2 : NODE;
BEGIN
a_equals_2 = a1 & !a0;
out = a_equals_2 # b;
END;

Здесь объявляется узел a_equals_2 и ему присваивается значение выражения a1 & !a0. Использование узлов помогает экономить ресурсы устройств, если узел используется в нескольких выражениях.

Важным понятием AHDL является группа. Группа может включать в себя до 256 элементов (бит), рассматривается как совокупность узлов и участвует в различных действиях как единое целое. В булевых уравнениях группа может быть приравнена булевому выражению, другой группе, одному узлу, VCC, GND,1 или 0. В каждом случае значения группы разные.

Если группа определена, для краткого указания всего диапазона ставят две квадратные скобки [ ]. Например, группу а[4..1] можно кратко записать как а[ ].

Условная логика делает выбор между режимами в зависимости от логических входов. Для реализации условной логики используются операторы IF или CASE:

В операторе IF оценивается одно или несколько булевых выражений и затем описываются режимы для разных значений этих выражений.

В операторе CASE дается список альтернатив, которые имеются для каждого возможного значения некоторого выражения. Оператор оценивает значение выражения и по нему выбирает режим в соответствии со списком.

Логика оператора IF. В качестве примера рассмотрим файл priority.tdf, в котором описан кодировщик приоритета, который преобразует уровень самого приоритетного активного входа в значение. Он генерирует двухразрядный код, показывающий вход с наивысшим приоритетом, запускаемый VCC.

subDESIGN priority
(
low, middle, high : INPUT;
highest_level[1..0] : OUTPUT;
)
BEGIN
IF high THEN
highest_level[] = 3;
ELSIF middle THEN
highest_level[] = 2;
ELSIF low THEN
highest_level[] = 1;
ELSE
highest_level[] = 0;
END IF;
END;

Здесь оцениваются входы low, middle и high, чтобы определить, запущены ли они VCC. На выходе получится код, соответствующий приоритету того входа, который был запущен VCC. Если ни один вход не запущен, значение кода будет равно 0.

Логика оператора CASE. В качестве примера рассмотрим файл decoder.tdf, реализующий функции Дешифратора, преобразующего код из двухразрядного в четырехразрядный. В результате его работы два двухразрядных двоичных входа преобразуются в один "горячий код", который так называется потому, что четыре его допустимых значения содержат по одной единице: 0001, 0010, 0100, 1000.

subDESIGN decoder
(
code[1..0] : INPUT;
out[3..0] : OUTPUT;
)
BEGIN
CASE code[] IS
WHEN 0 => out[] = B"0001";
WHEN 1 => out[] = B"0010";
WHEN 2 => out[] = B"0100";
WHEN 3 => out[] = B"1000";
END CASE;
END;

Здесь группа входа code [1..2] может принимать значения 0, 1, 2, 3. В зависимости от реального кода активизируется соответствующая ветвь оператора и только она одна в данный момент времени. Например, если на входе code [] равен 1, на выходе out устанавливается значение В"0010".

Операторы IF и CASE похожи. Иногда использование любого из них приводит к одним и тем же результатам. Однако между этими двумя операторами существуют несколько важных различий:

  • В операторе IF можно использовать любое булево выражение. Каждое выражение, записываемое в предложении, следующем за IF или ELSEIF, может не быть связанным с другими выражениями в операторе. В операторе CASE одно единственное выражение сравнивается с проверяемым значением.

  • В результате интерпретации оператора IF может быть сгенерирована логика, слишком сложная для компилятора системы MAX+PLUS II. В приведенном ниже примере показано, как компилятор интерпретирует оператор IF. Если а и b - сложные выражения, то инверсия каждого из них даст еще более сложное выражение.

Рассмотрим описание типовых комбинационных схем на AHDL. Дешифратор содержит комбинаторную логику, которая преобразует входные схемы в выходные значения или задает выходные значения для входных схем. Для создания дешифратора в языке AHDL используется объявление таблицы истинности TABLE.

Ниже приведен файл 7segment.tdf, представляющий собой дешифратор, который задает логику схемы светодиодов. Светодиоды отображают на семисегментном дисплее шестнадцатеричные цифры (от 0 до 9 и буквы от A до F).

subDESIGN 7segment
(
i[3..0] : INPUT;
a, b, c, d, e, f, g : OUTPUT;
)
BEGIN
TABLE
i[3..0] => a, b, c, d, e, f, g;
H"0" => 1, 1, 1, 1, 1, 1, 0;
H"1" => 0, 1, 1, 0, 0, 0, 0;
H"2" => 1, 1, 0, 1, 1, 0, 1;
H"3" => 1, 1, 1, 1, 0, 0, 1;
H"4" => 0, 1, 1, 0, 0, 1, 1;
H"5" => 1, 0, 1, 1, 0, 1, 1;
H"6" => 1, 0, 1, 1, 1, 1, 1;
H"7" => 1, 1, 1, 0, 0, 0, 0;
H"8" => 1, 1, 1, 1, 1, 1, 1;
H"9" => 1, 1, 1, 1, 0, 1, 1;
H"A" => 1, 1, 1, 0, 1, 1, 1;
H"B" => 0, 0, 1, 1, 1, 1, 1;
H"C" => 1, 0, 0, 1, 1, 1, 0;
H"D" => 0, 1, 1, 1, 1, 0, 1;
H"E" => 1, 0, 0, 1, 1, 1, 1;
H"F" => 1, 0, 0, 0, 1, 1, 1;
END TABLE;
END;

В этом примере все возможные шестнадцатиричные цифры (i[3..0]) и соответствующие состояния светодиодов (a, b, c, d, e, f, g), которые обеспечивают "начертание" цифры на дисплее. Изображение светодиодов на дисплее дано в виде комментария перед файлом.

Ниже приведен файл дешифратора адреса decode3.tdf для шестнадцатиразрядной микропроцессорной системы.

subDESIGN decode3
(
addr[15..0], m/io : INPUT;
rom, ram, print, sp[2..1] : OUTPUT;
)
BEGIN
TABLE
m/io, addr[15..0] => rom, ram, print, sp[];
1, B"00XXXXXXXXXXXXXX" => 1, 0, 0, B"00";
1, B"100XXXXXXXXXXXXX" => 0, 1, 0, B"00";
0, B"0000001010101110" => 0, 0, 1, B"00";
0, B"0000001011011110" => 0, 0, 0, B"01";
0, B"0000001101110000" => 0, 0, 0, B"10";
END TABLE;
END;

В данном примере существуют тысячи возможных вариантов входа (адреса), поэтому было бы непрактично сводить их все в таблицу. Вместо этого, можно пометить символом "Х" несущественные, не влияющие на выход, разряды. Например, выходной сигнал rom (ПЗУ) будет высоким для всех 16384 вариантов адреса addr[15..0], которые начинаются с 00. Поэтому вам нужно только указать общую для всех вариантов часть кода, т.е. 00, а в остальных разрядах кода поставить "Х". Такой прием позволит сделать проект, требующий меньше устройств и ресурсов.

Приведенный ниже пример decode4.tdf показывает использование стандартной параметризируемой функции lpm_decode в задаче разработки дешифратора, аналогичной примеру decode1.tdf

INCLUDE "lpm_decode.inc";
subDESIGN decode4
(
address[15..0] : INPUT;
chip_enable : OUTPUT;
)
BEGIN
chip_enable = lpm_decode(.data[]=address[])
WITH (LPM_WIDTH=16, LPM_DECODES=2^10)
RETURNS (.eq[H"0370"]);
END;

Иногда для переменных удобно использовать значения по умолчанию. Можно определить значения по умолчанию для узла или группы, которые будут автоматически использоваться для них, если в файле их значения не будут заданы. Язык AHDL позволяет присваивать значение узлу или группе в файле неоднократно. Если при этом произойдет конфликт, система автоматически будет использовать значения по умолчанию. Если значения по умолчанию не были заданы, используется значение GND.

Объявление значений по умолчанию DEFAULTS можно использовать для задания переменных в таблице истинности, операторах IF и CASE.

Ниже приводится файл default1.tdf, в котором происходит оценка входов и выбор соответствующего ASCII кода.

subDESIGN default1
(
i[3..0] : INPUT;
ascii_code[7..0] : OUTPUT;
)
BEGIN
DEFAULTS
ascii_code[] = B"00111111";% ASCII question mark"?" % END DEFAULTS;
TABLE
i[3..0] => ascii_code[];
B"1000" => B"01100001"; % "a" %
B"0100" => B"01100010"; % "b" %
B"0010" => B"01100011"; % "c" %
B"0001" => B"01100100"; % "d" %
END TABLE;
END;

Если значение входа совпадает с одним из значений в левой части таблицы, код на выходе приобретает соответствующее значение ASCII кода в правой части таблицы. Если входное значение не совпадает ни с одним из (левых) табличных, выходу будет присвоено значение по умолчанию B"00111111" (вопросительный знак).

В приведенном ниже файле default2.tdf показано, как при многократном присваивании узлу разных значений возникает конфликт и как он разрешается средствами AHDL.

subDESIGN default2
(
a, b, c : INPUT;
select_a, select_b, select_c : INPUT;
wire_or, wire_and : OUTPUT;
)
BEGIN
DEFAULTS
wire_or = GND;
wire_and = VCC;
END DEFAULTS;
IF select_a THEN
wire_or = a;
wire_and = a;
END IF;
IF select_b THEN
wire_or = b;
wire_and = b;
END IF;
IF select_c THEN
wire_or = c;
wire_and = c;
END IF;
END;

В данном примере выход wire_or устанавливается равным a, b, или с в зависимости от входных сигналов select_a, select_b и select_c. Если ни один из них не равен VCC, то выход wire_or принимает значение по умолчанию, равное GND.

Если более одного сигнала (select_a, select_b или select_c) равны VCC, то wire_or равно результату логической операции ИЛИ над соответствующими входными сигналами. Например, если select_a и select_b равны VCC, то wire_or равно a ИЛИ b.

С сигналом wire_and производятся аналогичные действия, но он становится равным VCC, когда входные сигналы select равны VCC, и равен логическому И от соответствующих входных сигналов, если более, чем один из них равен VCC.

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

Ниже приводится файл daisy.tdf, который представляет модуль арбитражной схемы для соединения гирляндой (daisy chain). Данный модуль делает запрос на доступ к шине для предыдущего (в гирлянде) модуля. Он получает запрос на доступ к шине от самого себя и от следующего (в цепочке) модуля. Доступ к шине предоставляется тому модулю, у которого приоритет выше.

subDESIGN daisy
(
/local_request : INPUT;
/local_grant : OUTPUT;
/request_in : INPUT; % from lower priority % /request_out : OUTPUT; % to higher priority % /grant_in : INPUT; % from higher priority % /grant_out : OUTPUT; % to lower priority %
)
BEGIN
DEFAULTS
/local_grant = VCC; % active-low output % /request_out = VCC; % signals should default % /grant_out = VCC; % to VCC %
END DEFAULTS;
IF /request_in == GND # /local_request == GND THEN
/request_out = GND;
END IF;
IF /grant_in == GND THEN
IF /local_request == GND THEN
/local_grant = GND;
ELSIF /request_in == GND THEN
/grant_out = GND;
END IF;
END IF;
END;

Все сигналы в данном файлы имеют активный низкий уровень. Фирма Altera рекомендует помечать как-нибудь имена сигналов с низким активным уровнем, например, первым символом в имени ставить символ "/", который не является оператором, и использовать его постоянно.

В операторе IF проверяется, является ли модуль активным, т.е. равен ли он GND. Если модуль оказывается активным, реализуются действия, записанные в операторе IF.

В объявлении по умолчанию DEFAULTS считается, что сигналу присваивается значение VCC, если он не активен.

Система MAX+PLUS II позволяет конфигурировать порты ввода/вывода (I/O) в устройствах Altera как двунаправленные порты. Двунаправленный вывод задается как порт BIDIR, который подсоединяется к выходу примитива trI. Сигнал между этим выводом и буфером с тремя состояниями является двунаправленным, и его можно использовать в проекте для запуска других логических схем.

Приводимый ниже файл bus_reg2.tdf реализует регистр, который делает выборку значения, найденного на шине с тремя состояниями, а также может передать обратно на шину хранимое значение.

subDESIGN bus_reg2
(
clk : INPUT;
oe : INPUT;
io : BIDIR;
)
BEGIN
io = trI(DFF(io, clk,, ), oe);
END;

Двунаправленный сигнал io, запускаемый примитивом trI, используется в качестве входа d для D-триггера (DFF). Запятые в конце списка параметров отделяют места для сигналов триггера clrn и prn. Эти сигналы по умолчанию установлены в неактивное состояние.

Двунаправленный вывод можно также использовать для подсоединения tdF-ФАЙЛа более низкого уровня к выводу с высоким уровнем. Прототип функции для tdF-ФАЙЛа более низкого уровня должен содержать двунаправленный вывод в предложении RETURNS. В приведенном ниже файле bidir1.tdf даны четыре примера использования макрофункции bus_reg2.

FUNCTION bus_reg2 (clk, oe) RETURNS (io);
subDESIGN bidir1
(
clk, oe : INPUT;
io[3..0] : BIDIR;
)
BEGIN
io0 = bus_reg2(clk, oe);
io1 = bus_reg2(clk, oe);
io2 = bus_reg2(clk, oe);
io3 = bus_reg2(clk, oe);
END;

В следующем занятии мы продолжим знакомство с языком описания аппаратуры AHDL на примере построения последовательностных схем и цифровых автоматов.

Наверх

Координаты:

г. Москва, пр. Мира, 102

Для писем:

105066, Россия, г. Москва, а/я 18

Тел.: (495) 778-97-04

e-mail: mail@dsol.ru, info@dsol.ru


Бегущие строки

Контрактная разработка радиоэлектронных устройств

Цифровая обработка сигналов и изображений

Поставка высокотехнологичных изделий

О компании | Контакты | Новости | Разработки | Продукция | Выполненные проекты | Публикации | Ссылки

Занятие 1. Обзор элементной базы.

Занятие 2. Система проектирования MAX+PLUS II фирмы ALTERA.

Занятие 3. Программное обеспечение проектирования на ПЛИС фирмы Xilinx.

Занятие 4. Язык описания аппаратуры VHDL.

Занятие 5. Язык описания аппаратуры AHDL.

Занятие 6. Язык описания аппаратуры AHDL (продолжение).

Занятие 7. Особенности функционирования ПЛИС в составе системы ЦОС.

Поиск по сайту:

Современные алгоритмы ЦОС: пути реализации и перспективы применения

Стешенко В.Б.

Занятие 6. Язык описания аппаратуры AHDL (продолжение).

4. Последовательностная логика в AHDL.

Логическая схема называется последовательностной, если выходы в заданный момент времени являются функцией входов не только в тот же момент, но и во все предыдущие моменты времени. Таким образом, в последовательностную схему должны входить некоторые элементы памяти (триггеры). В языке AHDL последовательностная логика реализована цифровыми автоматами с памятью (state machines), регистрами и триггерами. При этом средства описания цифровых автоматов занимают особое место. Кроме того, к последовательностным логическим схемам относятся различные счетчики и контроллеры.

Объявление регистров. Регистры используются для хранения значений данных и промежуточных результатов счетчика, тактирование осуществляется синхросигналом. Регистр создается его объявлением в секции VARIABLE.

Для подсоединения примера примитива, макрофункции или цифрового автомата к другой логике в TDF-файле можно использовать порты. Порт примера описывается в следующем формате: <имя примера>.<имя порта>.

Имя порта - это вход или выход примитива, макрофункции или цифрового автомата, что является синонимом имени вывода в файлах проектов (GDF-файл), *.WDF и других.

Ниже приводится файл bur_reg.tdf, содержащий байтовый регистр, который фиксирует значения на входах d по выходам q на фронте синхроимпульса, когда уровень загрузки высокий.

SUBDESIGN bur_reg
(
clk, load, d[7..0] : INPUT;
q[7..0] : OUTPUT;
)
VARIABLE
ff[7..0] : DFFE;
BEGIN
ff[].clk = clk;
ff[].ena = load;
ff[].d = d[];
q[] = ff[].q;
END;

Как видно из файла, регистр объявлен в секции VARIABLE как D-триггер с разрешением (DFFE). В первом булевом уравнении в логической секции происходит соединение входа тактового сигнала подпроекта к портам тактового сигнала триггеров ff[7..0]. Во втором уравнении отпирающий тактовый сигнал соединяется с загрузкой. В третьем уравнении входы данных подпроекта соединяются с портами данных триггеров ff[7..0]. В четвертом уравнении выходы подпроекта соединяются с выходами триггеров. Все четыре уравнения оцениваются одновременно.

Можно также в секции VARIABLE объявить T-, JK- и SR-триггеры и затем использовать их в логической секции. При использовании T-триггеров придется в третьем уравнении изменить порт d на t. При использовании JK- и SR-триггеров вместо третьего уравнения придется записать два уравнения, в которых происходит соединение портов j и k или s и r с сигналами.

При загрузке регистра по заданному фронту глобального тактового сигнала фирма Altera рекомендует использовать вход разрешения одного из регистров: DFFE, TFFE, JKFFE или SRFFE, чтобы контролировать загрузку регистра.

Можно объявить регистровые выходы, если объявить выходы подпроекта как D-триггеры в секции VARIABLE.

Приведенный ниже файл reg_out.tdf обеспечивает те же функции, что и предыдущий файл bur_reg.tdf, но имеет регистровые выходы.

SUBDESIGN reg_out
(
clk, load, d[7..0] : INPUT;
q[7..0] : OUTPUT;
)
VARIABLE
q[7..0] : DFFE;
BEGIN
q[].clk = clk;
q[].ena = load;
q[] = d[];
END;

При присвоении значения регистровому выходу в логической секции это значение формирует входные d сигналы регистров. Выход регистра не изменяется до тех пор, пока не придет фронт синхросигнала. Для определения тактирующего сигнала регистра нужно использовать описание в следующем формате: <имя выходного вывода>.clk для входа тактирующего сигнала регистра в логической секции. Глобальный синхросигнал можно реализовать примитивом GLOBAL или выбором в диалоговом окне компилятора Logic Synthesis (логический синтез) опции Automatic Global Clock.

Каждый отпирающий D-тригер, объявленный в секции VARIABLE, возбуждает выход с таким же именем, поэтому можно обращаться к q выходам объявленных триггеров без использования q порта этих триггеров.

Создание счетчиков. Счетчиками называются последовательностные логические схемы для счета тактовых импульсов. В некоторых счетчиках реализован счет вперед и назад (реверсивные счетчики), в некоторые счетчики можно загружать данные, а также обнулять их. Счетчики обычно определяют как D-триггеры (DFF и DFFE) и используют операторы IF.

Ниже приведен файл ahdlcnt.tdf, который реализует 16-битовый загружаемый счетчик со сбросом.

SUBDESIGN ahdlcnt
(
clk, load, ena, clr, d[15..0] : INPUT;
q[15..0] : OUTPUT;
)
VARIABLE
count[15..0] : DFF;
BEGIN
count[].clk = clk;
count[].clrn = !clr;
IF load THEN
count[].d = d[];
ELSIF ena THEN
count[].d = count[].q + 1;
ELSE
count[].d = count[].q;
END IF;
q[] = count[];
END;

В данном файле в секции VARIABLE объявлены 16 D-триггеров и им присвоены имена от count0 до count15. В операторе IF определяется значение, загружаемое в триггеры по фронту синхросигнала (например, если загрузка запускается VCC, то триггерам присваивается значение d[ ]).

5. Цифровые автоматы с памятью (state mashine)

Цифровые автоматы так же, как таблицы истинности и булевы уравнения, легко реализуются в языке AHDL. Язык структурирован, поэтому пользователь может либо сам назначить биты и значения состояний, либо предоставить эту работу компилятору системы MAX+PLUS.

Компилятор, по уверениям производителя "использует патентованные перспективные эвристические алгоритмы", позволяющие сделать такие автоматические назначения состояний, которые минимизируют логические ресурсы, нужные для реализации цифрового автомата.

Пользователю просто нужно нарисовать диаграмму состояний и построить таблицу состояний. Затем компилятор выполняет автоматически следующие функции:

  • назначает биты, выбирая для каждого бита либо T-триггер, либо D-триггер;

  • присваивает значения состояний;

  • применяет сложные методы логического синтеза для получения уравнений возбуждения.

По желанию пользователя можно задать в TDF-файле переходы в машине состояний с помощью объявления таблицы истинности.

В языке AHDL для задания цифрового автомата нужно включить в TDF-файл следующие элементы:

  • объявление цифрового автомата (в секции VARIABLE);

  • булевы уравнения управления (в логической секции);

  • переходы между состояниями (в логической секции).

Цифровые автоматы в языке AHDL можно также экспортировать и импортировать, совершая обмен между файлами типа TDF и (GDF-файл) или *.WDF; при этом входной или выходной сигнал задается как порт цифрового автомата в секции SUBDESIGN.

Цифровой автомат задают в секции VARIABLE путем объявления имени цифрового автомата, его состояний и, возможно, выходных битов.

Ниже приведен файл simple.tdf, который реализует функцию D-триггера.

SUBDESIGN simple
(
clk : INPUT;
reset : INPUT;
d : INPUT;
q : OUTPUT;
)
VARIABLE
ss : MACHINE WITH STATES (s0, s1);
BEGIN
ss.clk = clk;
ss.reset = reset;
CASE ss IS
WHEN s0 =>
q = GND;
IF d THEN
ss = s1;
END IF;
WHEN s1 =>
q = VCC;
IF !d THEN
ss = s0;
END IF;
END CASE;
END;

В данном файле в секции VARIABLE объявлен цифровой автомат (state machine) ss. Состояния автомата определяются как s0 и s1. Биты состояний не определены.

Сигналы Clock, Reset и Enable управляют триггерами регистра состояний в цифровом автомате. Эти сигналы задаются булевыми уравнениями управления в логической секции.

В предыдущем примере (файл simple.tdf) синхросигнал цифрового автомата (Clock) формируется входом clk. Асинхронный сигнал сброса цифрового автомата (Reset) формируется входом reset, имеющим высокий активный уровень. Для подключения сигнала отпирания (Enable) нужно добавить в данный файл проекта строку "ena : INPUT;" в секцию SUBDESIGN, а также добавить в логическую секцию булево уравнение "ss.ena = ena;".

Для задания выходных значений можно использовать операторы IF и CASE. В приведенном выше примере (файл simple.tdf) значение выхода q устанавливается равным GND, если цифровой автомат ss находится в состоянии s0, и равным VCC, когда она находится в состоянии s1. Эти присваивания делаются в предложениях WHEN оператора CASE.

Выходные значения можно также задавать в таблицах истинности, как будет описано в разделе "Присвоение битов и значений в машине состояний".

Переходы между состояниями определяют условия, при которых машина переходит в новое состояние. Переходы в машине состояний задаются путем условного присвоения состояния в рамках одной конструкции, описывающей режим. Для этой цели рекомендуется использовать оператор CASE или таблицу истинности.

В приведенном выше примере (файл simple.tdf) переходы для каждого состояния определены в предложениях WHEN оператора CASE.

Бит состояния - это выход триггера, используемый для хранения одного бита значений цифрового автомата. В большинстве случаев для минимизации логических ресурсов следует предоставить компилятору системы MAX+PLUS II присвоение битов и значений состояния. Однако пользователь может сделать это самостоятельно в объявлении цифрового автомата, если, например, он хочет, чтобы определенные биты были выходами цифрового автомата.

Если выходы цифрового автомата зависят только от его состояния, их можно задать в предложении WITH STATES объявления цифрового автомата. Это сделает их менее подверженными ошибкам. Кроме того, в некоторых случаях для логических операций потребуется меньше логических ячеек.

Ниже приведен пример, в котором реализован автомат Мура с четырьмя состояниями.

SUBDESIGN moore1
(
clk : INPUT;
reset : INPUT;
y : INPUT;
z : OUTPUT;
)
VARIABLE % current current %
% state output %
ss :MACHINE OF BITS (z)
WITH STATES (s0 = 0,
s1 = 1,
s2 = 1,
s3 = 0);
BEGIN
ss.clk = clk;
ss.reset = reset;
TABLE
% current current next %
% state input state %
ss,y=>ss;
s0,0=>s0;
s0,1=>s2;
s1,0=>s0;
s1,1=>s2;
s2,0=>s2;
s2,1=>s3;
s3,0=>s3;
s3,1=>s1;
END TABLE;
END;

В данном примере состояния определены в объявлении цифрового автомата. Переходы между состояниями определены в таблице next_state, которая задана в объявлении таблицы истинности. В данном примере машина имеет четыре состояния и только один бит состояния z. Компилятор системы MAX+PLUS II автоматически добавляет еще один бит и делает соответствующие присвоения этой синтезированной переменной для того, чтобы получилась машина с четырьмя состояниями. Такой цифровой автомат (state machine) требует, по крайней мере, двух битов.

Если значения состояний используются как выходы ( как в файле moorel.tdf), для проекта потребуется меньше логических ячеек, но, возможно, логические ячейки потребуют больше логики, чтобы возбудить входы триггера. В этом случае модуль логического синтезатора компилятора, возможно, не сможет полностью минимизировать автомат.

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

Этот альтернативный метод использован в приведенном ниже файле moore2.tdf.

SUBDESIGN moore2
(
clk : INPUT;
reset : INPUT;
y : INPUT;
z : OUTPUT;
)
VARIABLE
ss : MACHINE WITH STATES (s0, s1, s2, s3);
zd : NODE;
BEGIN
ss.clk = clk;
ss.reset = reset;
z = DFF(zd, clk, VCC, VCC);
TABLE
%current current next next %
%state input state output %
ss, y => ss,zd;
s0, 0 => s0,0;
s0, 1 => s2,1;
s1, 0 => s0,0;
s1, 1 => s2,1;
s2, 0 => s2,1;
s2, 1 => s3,0;
s3, 0 => s3,0;
s3, 1 => s1,1;
END TABLE;
END;

В данном примере вместо того, чтобы задать выходы присвоением значений состояниям в объявлении цифрового автомата, в объявление таблицы истинности добавлен один столбец под названием "next output (следующий выход)". В этом методе для синхронизации выходов синхросигналом используется D-триггер, вызов которого записан с помощью непосредственной ссылки.

В языке AHDL возможна реализация цифрового автомата с асинхронными выходами. Выходы такого типа автоматов всегда изменяются, когда изменяются входы, независимо от состояния синхросигнала.

В приведенном ниже фале mealy.tdf реализован автомат Мили с четырьмя состояниями и асинхронными выходами.

SUBDESIGN mealy
(
clk : INPUT;
reset : INPUT;
y : INPUT;
z : OUTPUT;
)
VARIABLE
ss : MACHINE WITH STATES (s0, s1, s2, s3); BEGIN
ss.clk = clk;
ss.reset = reset;
TABLE
% current current current next %
% state input output state %
ss, y => z, ss;
s0, 0 => 0, s0;
s0, 1 => 1, s1;
s1, 0 => 1, s1;
s1, 1 => 0, s2;
s2, 0 => 0, s2;
s2, 1 => 1, s3;
s3, 0 => 0, s3;
s3, 1 => 1, s0;
END TABLE;
END;

6. Реализация иерархического проекта

В иерархической структуре проекта TDF-файлы, написанные на языке AHDL, можно использовать вместе с другими файлами проектов. На нижнем уровне проекта могут быть макрофункции, поставляемые фирмой Altera или разработанные пользователями.

В системе MAX+PLUS II есть большая библиотека, которая представляет собой блоки высокого уровня, используемые для создания проекта с иерархической логикой.

В языке AHDL существуют два способа макрофункции:

  • объявить переменную типа <macrofunction> в объявлении примеров INSTANCE в секции VARIABLE и использовать порты примера макрофункции в логической секции. В этом способе важное значение имеют имена портов;

  • использовать для макрофункции непосредственную ссылку в логической секции файла TDF. В этом способе важен порядок портов.

Входы и выходы макрофункций перечисляются в описании прототипов функций (FUNCTION PROTOTYPE). Прототипы функций можно записать в отдельный файл и указать его в своем файле с помощью директивы INCLUDE. Такие Include-файлы создаются автоматически для данного проекта с помощью команды Create Default Include File. Include-файл вставляется вместо вызывающей его директивы INCLUDE. Для всех макрофункций системы MAX+PLUS II Include-файлы должны находиться в каталоге \maxplus2 \max2inc.

Ниже приведен файл macro1.tdf, который реализует четырех битовый счетчик, подсоединенный к дешифратору 4бит -> 16 бит. Соответствующие макрофункции вызываются объявлениями примеров в секции VARIABLE

INCLUDE "4count";
INCLUDE "16dmux";
SUBDESIGN macro1
(
clk : INPUT;
out[15..0] : OUTPUT;
)
VARIABLE
counter : 4count;
decoder : 16dmux;
BEGIN
counter.clk = clk;
counter.dnup = GND;
decoder.(d,c,b,a) = counter.(qd,qc,qb,qa);
out[15..0] = decoder.q[15..0];
END;

В данном файле используются директивы INCLUDE для импортирования прототипов функций для двух макроофункций фирмы Altera: 4count и 16dmux. В секции VARIABLE объявляются две переменные: counter и decoder как примеры этих макрофункций. В логической секции определяются входные порты для обеих макрофункций в формате <имя переменной-примера>.<имя порта>. (Они ставятся в левой части булевых уравнений, а выходные порты - справа.) Порядок портов в прототипе функции не важен, так как имена портов в логической секции перечисляются явно.

Ниже приведен файл macro2.tdf, выполняющий те же функции, что и предыдущий, но макрофункции в нем вызываются непосредственной ссылкой.

INCLUDE "4count";
INCLUDE "16dmux";
SUBDESIGN macro2
(
clk : INPUT;
out[15..0] : OUTPUT;
)
VARIABLE
q[3..0] : NODE;
BEGIN
(q[3..0], ) = 4count (clk, , , , , GND, , , , );
%
out[15..0] = 16dmux (.(d, c, b, a)=q[3..0]);
% equivalent in-line ref. with positional port association %
% out[15..0] = 16dmux (q[3..0]); %
>END;

Вызов макрофункций 4count и 16dmux осуществляется в логической секции непосредственной ссылкой (в правой части булевых уравнений).

В файлах, написанных на AHDL можно легко создавать и использовать пользовательские макрофункции, выполняя следующие действия:

  • Создать логику для макрофункции в файле проекта.

  • Определить порты макрофункции в объявлении прототипа функции.

Прототип функции дает краткое описание функции: ее имя, а также входные, выходные и двунаправленные порты. Можно также использовать машинные порты для макрофункций, которые импортируют или экспортируют цифрового автомата.

Объявление прототипов функций может быть размещено в Include-файле, который вызывается в пользовательском файле. Используя команду Create Default Include File, можно автоматически создавать Include-файл с прототипом функции для любого файла проекта.

  • Вставить в файл пример макрофункции с помощью объявления примера в секции VARIABLE или с помощью непосредственной ссылки в тексте.

  • Использовать макрофункцию в файле.

Для использования макрофункции ее нужно либо включить в описание прототипа функции в TDF-файле, либо указать в директиве INCLUDE файла TDF имя Include-файла, содержащего прототип этой макрофункции

7. Управление синтезом

Можно ограничить логический синтез с помощью замены переменных типа узел (NODE) примитивами SOFT и LCELL. Переменные NODE и примитивы LCELL обеспечивают наилучшее управление логическим синтезом. Примитивы SOFT обеспечивают более слабый управление логическим синтезом.

Переменные NODE, которые объявляются в секции VARIABLE, накладывают слабые ограничения на логический синтез. Во время синтеза модуль логического синтеза компилятора системы MAX+PLUS II заменяет каждый пример использования переменной NODE логикой, которую она представляет. Затем происходит минимизация логики до одной логической ячейки. Этот метод обычно приводит к ускорению работы схемы, но в результате может получиться слишком сложная логика или же ее трудно свести к одной ячейке.

Буферы SOFT обеспечивают лучшее управление использованием ресурсов, чем переменные NODE. Модуль логического синтезатора выбирает, когда заменить примеры использования примитивов SOFT примитивами LCELL

Буферы SOFT могут помочь уничтожить логику, которая оказалась слишком сложной, и сделать проект проще; однако при этом может быть увеличено число логических операций и быстродействие соответственно уменьшится.

Наиболее сильное управление процессом логического синтеза обеспечивается примитивами LCELL. Модуль логического синтезатора минимизирует всю логику, которая запускает примитив LCELL, таким образом, чтобы можно было свести ее к одной логической ячейке. Примитивы LCELL реализуются в виде одной логической ячейки (их нельзя убрать из проекта, даже если они имеют единственный вход). Если проект минимизирован до такой степени, что один примитив LCELL имеет единственный вход, в этом случае вместо примитивов LCELL можно использовать примитивы SOFT, которые убираются в процессе логического синтеза.

Следующее занятие будет посвящено примеру реализации алгоритмов фильтрации и демодуляции на ПЛИС.

Наверх

Координаты:

г. Москва, пр. Мира, 102

Для писем:

105066, Россия, г. Москва, а/я 18

Тел.: (495) 778-97-04

e-mail: mail@dsol.ru, info@dsol.ru


Бегущие строки

Контрактная разработка радиоэлектронных устройств

Цифровая обработка сигналов и изображений

Поставка высокотехнологичных изделий

О компании | Контакты | Новости | Разработки | Продукция | Выполненные проекты | Публикации | Ссылки

Занятие 1. Обзор элементной базы.

Занятие 2. Система проектирования MAX+PLUS II фирмы ALTERA.

Занятие 3. Программное обеспечение проектирования на ПЛИС фирмы Xilinx.

Занятие 4. Язык описания аппаратуры VHDL.

Занятие 5. Язык описания аппаратуры AHDL.

Занятие 6. Язык описания аппаратуры AHDL (продолжение).

Занятие 7. Особенности функционирования ПЛИС в составе системы ЦОС.

Поиск по сайту:

Современные алгоритмы ЦОС: пути реализации и перспективы применения

Стешенко В.Б.

Занятие 7. Особенности функционирования ПЛИС в составе системы ЦОС.

Когда читатель возьмет в руки номер журнала "Chip News" с этим занятием, учебный год в большинстве вузов будет близок к завершению, наступает пора экзаменов. Подходят к концу занятия и в нашей школе [1]. Это занятие посвящено в основном особенностям аппаратной реализации систем ЦОС с использованием ПЛИС. Мы рассмотрим некоторые практически значимые особенности использования возможностей современных ПЛИС.

Программирование и реконфигурирование в системе

Понятие программирование в системе (In-system programmability, ISP) относится к тем плис, которые позволяют произвести программирование непосредственно в составе системы без использования программатора, на смонтированной плате, причем программирование ПЛИС или конфигурационного ПЗУ может производиться многократно. Реконфигурирование в схеме (In-circuit reconfigurability, ISR) позволяет произвести перезагрузку данных в ПЛИС, построенной по SRAM технологии "на лету", то есть без выключения питания системы. Свойства ISP и ISR характерны для практически всех современных ПЛИС, выпускаемыми ведущими фирмами – производителями (см. занятие 1 настоящего цикла [1]).

Как правило, микросхемы CPLD (XC9500 фирмы Xilinx, MAX7000S, A, B, E, MAX3000A, MAX9000 фирмы Altera и др.) программируются в системе через стандартный четырехконтактный JTAG интерфейс [2]. Программное обеспечение создает конфигурационную последовательность, которая загружается в ПЛИС с помощью специализированного загрузочного кабеля (ByteBlaster, BitBlaster или Master Blaster для устройств фирмы Altera, XChecker для устройств фирмы Xilinx). Кроме того, для программирования таких ПЛИС можно использовать стандартный JTAG тестер или простой интерфейс, эмулирующий последовательность команд JTAG.

В качестве примера, рассмотрим схему конфигурационного кабеля ByteBlaster MV, опубликованную фирмой Altera [3] и предназначенного для программирования ПЛИС семейств конфигурации MAX7000S, A, B, E, MAX3000A, MAX9000. На рис.1. приведена принципиальная электрическая схема устройства.

Рис.1. Принципиальная схема загрузочного кабеля ByteBlaster MV.

На схеме резисторы, помеченные (1) имеют номинал 100 Ом (реально можно от 50 до 150 Ом) и предназначены для защиты линий ввода – вывода. Конечно, в экстренных случаях, можно обойтись без них, но следует помнить, что "скупой платит четырежды" и не экономить на спичках (менять поврежденную ПЛИС обойдется дороже). Подтягивающие резисторы (pull-up resistors), обозначенные (2) имеют номинал 2,2 кОм (ясно, что на деле от 1 до 3.3 кОм). Микросхема шинного формирователя желательно 74НС244 (российский или белорусский аналог – 1564АП5), хотя у автора один из ByteBlasterMV был собран на микросхеме серии 74АС (просто под рукой другого не оказалось) и успешно работает. Если вы работаете только с 5 вольтовыми ПЛИС, то пойдут и серии 1533 и 555 (74ALS и 74LS), но тогда гарантий успешного программирования никто не даст. Вообще говоря, наверное не следует заниматься изобретением велосипеда, благо штатная схема не содержит дефицитных компонентов, ее себестоимость порядка 1,5 –2 долларов. Следует помнить, что длина кабеля от параллельного порта до ByteBlasterMV не должна превышать 100 – 120 см (хотя в стандартном устройстве, поставляемом фирмой Altera, схема смонтирована непосредственно в корпусе разъема, но это неудобно в работе), длину кабеля от ByteBlasterMV до платы с установленной ПЛИС не стоит делать больше 25 см.

На рис.2 приведена распайка разъема устройства ByteBlasterMV.

Рис.2. Разъем кабеля ByteBlasterMV.

На рис. 2 все размеры в дюймах. Обычно используют стандартный разъем на 10 жильный ленточный кабель под обжим.

Назначение контактов разъема кабеля ByteBlasterMV в различных режимах приведено в таблице 1.

Таблица 1.

Контакт разъема ByteBlaster | Режим последовательной пассивной конфигурации (PS Mode) |  | Режим программирования по порту JTAG (JTAG mode)
 | Сигнал | Назначение | Сигнал | Назначение
1 | DCLK | Тактовый сигнал | TCK | Тактовый сигнал
2 | GND | Сигнальная земля | GND | Сигнальная земля
3 | CONF_DONE | Контроль завершения конфигурации | TDO | Данные с ПЛИС
4 | VCC | Напряжение питания | VCC | Напряжение питания
5 | nCONFIG | Контроль кофигурации | TMS | Контроль автомата JTAG
6 | - | Не подключен | - | Не подключен
7 | nSTATUS | Состояние конфигурации | - | Не подключен
8 | - | Не подключен | - | Не подключен
9 | DATA0 | Данные в ПЛИС | TDI | Данные в ПЛИС
10 | GND | Сигнальная земля | GND | Сигнальная земля

Режим последовательной пассивной конфигурации (PS Mode) применяется для загрузки конфигурации ПЛИС, выполненных по технологии SRAM, таких семейств, как FLEX6000, 8000, 10K, APEX,ACEX. Режим программирования по порту JTAG (JTAG mode) применяется для программирования в системе ПЛИС CPLD, а также конфигурационных ПЗУ ЕРС2 и готовящихся к выпуску ЕРС4, а также загрузки SRAM устройств (правда реже чем PS Mode). При работе с устройством необходимо помнить, что все коммутации и подключение кабеля следует проводить при выключенном питании. Питание устройства осуществляется от источника питания системы, в которую установлена ПЛИС. Естественно, земли должны быть общими.

На рис.3 и 4 приведены примеры включения ПЛИС для конфигурации ПЛИС и программирования.

Рис. 3. Включение ПЛИС FLEX10K в режиме последовательной пассивной конфигурации с помощью кабеля ByteBlasterMV

Рис. 3. Включение ПЛИС МАХ7000,9000 в режиме программирования через интерфейс JTAG.

Конфигурационные ПЗУ и режимы загрузки.

Для хранения конфигурационной информации ПЛИС, выполненных по технологии SRAM используются последовательные ПЗУ.

При необходимости загрузки ПЛИС большой емкости используется каскадное включение нескольких ПЗУ. На рис.5 приведена схема включения конфигурационных ПЗУ и ПЛИС семейств FLEX6000, FLEX10K, APEX20K фирмы Altera. Все резисторы имеют номинал 1 кОм.

Рис. 5. Конфигурация ПЛИС FLEX6000, FLEX10K, APEX20K при помощи ПЗУ EPC2, EPC1, EPC1441.

Кроме использования ПЗУ, ПЛИС можно конфигурировать с использованием контроллера системы, в которой применена ПЛИС. В таблице 2 приведены возможные режимы конфигурации ПЛИС

Таблица 2.

Режим конфигурации | Применение
Passive Serial (PS) Пассивный последовательный | Конфигурация по последовательному синхронному порту микропроцессора (МП) или устройству ByteBlaster, BitBlaster, MasterBlaster
Passive Parallel Synchronous (PPS) Пассивный параллельный синхронный | Конфигурация по параллельному синхронному порту МП
Passive Parallel Asynchronous (PPA) Пассивный параллельный асинхронный | Конфигурация по параллельному асинхронному порту МП. МП адресует ПЛИС как память
Passive Serial Asynchronous (PSA) Пассивный последовательный асинхронный | Конфигурация по последовательному асинхронному порту микропроцессора (МП)
JTAG | Используется стандарт IEEE Std. 1149.1

Особенности конструирования устройств на ПЛИС.

Электронные узлы ЦОС с использованием современных ПЛИС значительно отличаются от устройств разработки конца 80-х - начала 90-х годов. Во–первых, новые технологии поверхностного монтажа привели к уменьшению габаритов компонентов в 3 –6 раз. Во –вторых, появились новые корпуса интегральных схем с малым шагом между выводами (0.5 –0.65 мм), корпуса с шариковыми выводами (BGA), новые малогабаритные дискретные компоненты и соединители. В-третьих, повысилась точность изготовления печатных плат, повысились возможности для разводки сложных устройств в малых габаритах. Появление новой элементной базы позволяет говорить о возможности воплощения сложных систем на одной плате и даже на одном кристалле (system –on –chip). Это означает, что на одной и той же типичной плате устройства обработки сигналов в малых габаритах размещаются высокочувствительный аналоговый тракт, аналого-цифровой преобразователь, высокоскоростная схема цифровой обработки на процессоре и (или) программируемых логических интегральных схемах, буферные элементы и драйверы линий связи, элементы стабилизаторов напряжения питания и преобразователей уровня и другие узлы. Естественно, что это накладывает свой отпечаток на методологию разработки платы и конструирования всего устройства в целом.

При проектировании плат с использованием средств САПР необходимо всегда помнить, что сколь совершенными ни были алгоритмы автоматической трассировки, они никогда не заменят работу конструктора. В лучшем случае в автоматическом режиме возможна трассировка малочувствительных, медленных (до 3 –5 МГц) цифровых цепей. А серьезные платы трассируются только вручную. Полезно проводить их анализ на взаимные помехи с использованием специализированных программных средств.

Особое внимание следует уделять проблеме заземления. Этому вопросу каждая фирма – производитель элементной базы, уделяет огромное внимание в своих Application notes (например [4]) однако, до сих пор многие разработчики наступают на одни и те же грабли.

Как известно, земляная шина определяется как эквипотенциальная поверхность, потенциал которой служит для схемы уровнем отсчета напряжений.

При проектировании земляных цепей преследуются две цели. Во-первых, следует помнить, что заземление минимизирует напряжение шумов, возникающее при прохождении токов от нескольких схем через общее сопротивление земли. Во-вторых, необходимо исключить образование контуров заземления, чувствительных к электромагнитным полям и разностям потенциалов.

Таким образом, заземление представляет собой обладающую низким импедансом цепь возврата тока. Отсюда ясно, что протекание любого тока в системе заземления приводит к появлению разности потенциалов. Ясно, что эта разность потенциалов должна быть минимальной. Отсюда следует, что при проектировании топологии земли следует обеспечить импеданс заземления на как можно более низком уровне и контролировать токи, протекающие между источниками и нагрузками. Необходимо использовать несколько цепей заземления, соединенных в одной точке. Причем традиционного деления на аналоговую и цифровую земли может оказаться недостаточно. Иногда удобно разделять аналоговую земляную цепь на две: одна служит землей для слабого входного сигнала, а другая для мощного выходного. То же самое можно сказать и о цифровых землях – мощные буферы на выходе могут быть причиной появления помех во входных цепях узла ЦОС.

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

В первую очередь, следует помнить, что если разрабатывается плата, содержащая как аналоговые, так и цифровые узлы и работающая на достаточно большой тактовой частоте (>1 МГц), то не следует экономить на спичках и разрабатывать двухслойную плату. В этом случае необходимо использовать многослойную плату, в которой внутренние слои представляют собой сплошные плоскости земли и питания. Более того, иногда целесообразно использовать отдельные слои для аналоговых земель или дополнительных экранов.

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

Если передается скоростной сигнал на достаточно большое расстояние, то сделать это можно только по согласованной линии на низкоомную нагрузку. При проектировании схем на ПЛИС желательно ставить достаточно мощный буфер, например 74HC244 , 74HC245 и им подобный. Следует предостеречь разработчиков от соблазна использовать ПЛИС для реализации импульсных схем (генераторов, одновибраторов) с помощью внешних емкостей и сопротивлений. Конечно, работать будет, но не любят ПЛИС емкостную нагрузку, поэтому не стоит заниматься экономией на спичках.

Несколько слов следует сказать о фильтрующих емкостях. Очень часто начинающий разработчик чисто механистически устанавливает их, где придется, руководствуясь только нормой установки блокирующих емкостей на число тех или иных микросхем. Следует помнить, что для того, чтобы фильтрующие емкости эффективно работали, длина цепи от вывода микросхемы до емкости была минимальной. Использование планарных компонентов практически полностью позволяет решить эту проблему. Некоторые фирмы производители пассивных компонентов выпускают неплохие сборки фильтрующих емкостей, предназначенные для установки под корпусом PGA.

При проектировании платы, содержащей скоростные цифровые микросхемы (ПЛИС, сигнальные процессоры и т.п.) следует подумать о теплоотводе. Полезны бывают дополнительные слои металлизации платы для отвода излишнего тепла от микросхем.

После завершения разработки топологии платы устройства ЦОС стоит максимально расширить все силовые цепи, земли, ответственные сигнальные цепи.

При разработке ответственных устройств не следует забывать о возможностях современных средств по анализу целостности сигналов, тепловых режимов, прочности и т.д. подробная информация о таких продуктах приведена в работе [5].

Пример реализации устройства ЦОС на ПЛИС

В качестве примера рассмотрим реализацию алгоритма демодуляции ЧМн сигналов, примененную при проектировании цифрового приемника телеметрической информации. Реализация цифровой части алгоритма демодуляции и выделения синхроимпульса была выполнена на кристалле FLEX10K50. Входными сигналами являлись две квадратуры принятого сигнала полученные после смесителей. Реализованное устройство состоит из входных цифровых КИХ фильтров с 16 отводами, непосредственно блока демодуляции ЧМн сигнала и блока синхронизатора.

Для реализации входных КИХ фильтров был использован пакет Altera DSP Design Kit. Данный пакет был выбран ввиду того, что он позволяет по рассчитанным коэффициентам цифрового фильтра быстро получить AHDL описание устройства с данными характеристиками и максимально доступной точностью при заданных значениях точности входных данных и внутреннего представления коэффициентов фильтрации. Для этого исходные коэффициенты фильтра масштабируются. Кроме этого DSP Design Kit позволяет сгенерировать векторный файл для моделирования работы фильтра, а также позволяет преобразовать выходные данные отклика фильтра к масштабу входных данных и построить график отклика фильтра на входное воздействие.

Вход фильтра является восьмибитным, представление коэффициентов также восьмибитное, точность вычислений и выходной сигнал имеют семнадцатибитную точность. В отличие от классической реализации КИХ фильтров в виде набора умножителей для взвешивания задержанных отсчетов входного сигнала и выходного сумматора, данная реализация вообще не содержит умножителей. Все операции умножения заменены операциями распределенной арифметики, что возможно благодаря постоянству коэффициентов фильтрации и наличию в кристаллах FLEX10К так называемых look-up-tables (LUTs). Результат операции умножения представляется в виде суммы нескольких слагаемых. Значения этих слагаемых выбираются из заранее сгенерированной по значениям коэффициентов фильтра таблицы в соответствии со входными данными. Сигналы с выходов фильтров (восемь бит в дополнительном коде) подаются на квадратурные входы блока частотной демодуляции. Демодулятор должен осуществлять преобразование вида

,

но так как в данной работе принимаемый сигнал мог иметь частоту равную строго ω = ω0 + Δω, где Δω = const для фиксированной скорости передачи данных, то для выделения символов достаточно определять лишь знак выходного сигнала демодулятора.

Отсюда вытекает структурная схема детектора, которая приведена на рис. 6.

Рис. 6. Структурная схема цифрового частотного детектора

Для реализации демодулятора понадобились два регистра для хранения значений квадратур в предыдущий (k-й) момент времени - Sk и Ck, два умножителя и один сумматор. Отличительная особенность данной структуры – простота реализации на ПЛИС – вся схема является разомкнутой, может быть реализована на библиотечных компонентах пакета MAX+PLUS II.

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

где n – количество отсчетов на символ, а m – количество символов используемых синхронизатором символов.

Входным сигналом синхронизатора является выход блока демодулятора. Функция y = ln(ch(x)) является четной и имеет асимптоту y = x - ln 2 при x > 0. Таки образом в самом простом случае эту функциональную зависимость можно аппроксимировать функцией модуля: y = |x|, однако, с учетом ограничений на целочисленность вычислений, гораздо более близкой будет аппроксимация функцией

Заметим, что для реализации суммирования вида sumi = yk + yk - 1 + yk - 2 + ... + yk - n + 1 нецелесообразно использовать каскад из n двухвходовых сумматоров, так как на каждом такте результат этого суммирования может быть получен из значения суммы на предыдущем такте путем вычитания yk - n - 1 и прибавления yk + 1. А именно sumi + 1 = sumi + yk + 1 - yk - n - 1. Таким образом, для реализации этой части алгоритма синхронизации понадобится один регистр для хранения значения суммы на предыдущем такте и три сумматора, один из которых используется для изменения знака у значения yk - n - 1 (так как все числа представлены в дополнительном коде). Кроме того необходимы регистры для хранения значений yk, yk - 1,..., yk - n + 1. Если же не учитывать эти n регистров, то количество элементов для выполнения такой операции суммирования не будет зависеть от количества операндов и сэкономить ячейки ПЛИС при количестве слагаемых в сумме n > 4. В данном же случае количество слагаемых в каждой сумме равно количеству отсчетов сигнала приходящихся на символ, то есть n = 8 и эффект в увеличении скорости, а главное, в уменьшении занимаемого места, ощутим.

Так как синхронизатор работает по принципу максимума правдоподобия, то схема должна выставлять синхроимпульс в момент достижения выходным сигналом Xk максимума. Для определения момента наступления локальных максимумов этот сигнал дифференцируется, и теперь уже ищутся моменты перехода сигнал через ноль, а точнее, моменты смены знака продифференцированного сигнала. Причем смене значения знакового бита с 0 на 1 будет соответствовать максимум значения выходного сигнала. Однако, для того, чтобы синхроимпульс всегда появлялся ближе к середине нужно отслеживать не момент, когда Xk максимально, а момент, когда этот сигнал достигает минимального значения. Именно поэтому в реализованной схеме отслеживается момент изменения знакового бита производной с 1 на 0.

Недостаток такой реализации – значительная потребность в ресурсах трассировки ПЛИС. Поэтому если число слипшихся подряд одинаковых символов велико, целесообразно применять другой вариант выделения тактового импульса – выделение фронтов символьной последовательности с помощью схемы "исключающее или" и подача их на опорный вход ФАПЧ, например 74НС7046. Правда, в этом случае, мы теряем в помехоустойчивости схемы.

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

Заключение

Вот и завершилось последнее занятие школы… Последнее ли? Опыт автора и редакции говорит, что интерес к учебным циклам в журналах схемотехнического профиля все время возрастает. Журнал "Chip News" стал пионером в этом направлении, начав публиковать школу проектирования цифровых устройств Н.Воробьева, настоящий цикл, цикл статей по применению пакета MatLAB. Начинают публикацию учебных циклов и другие периодические издания. Наверное, это позволит сократить дефицит учебной и методической литературы для подготовки новых кадров в области разработки сложных устройств.

Рад сообщить, что в конце мая 2000 года выходит моя книга "ПЛИС фирмы ALTERA: проектирование устройств обработки сигналов" [6], основанная на материале этого цикла.

В заключение хотелось бы поблагодарить главного редактора журнала А.Биленко, научного редактора А.Осипова, весь коллектив редакции за осуществление идеи Школы. Надеюсь, что мои статьи помогли начинающим разработчикам. Я признателен читателям, откликнувшимся на предыдущие занятия и приславшим свои замечания и пожелания. На мой взгляд, только совместная работа разработчиков, дистрибьюторов и редакций научно-технических изданий позволит наверстать упущенное в написании и издании современной учебной литературе по схемотехническому проектированию.

Литература

  1. В.Стешенко. Школа разработки аппаратуры цифровой обработки сигналов на ПЛИС. // Chip News,1999, №8-10, 2000, №1, 3 –4.
  2. IEEE Standart 1149.1a –1993.
  3. ByteBlasterMV Parallel Port Download Cable, Data Sheet, Altera corporation, ver.1, April 1998.
  4. AN74. High Speed Boards Design , Altera corporation.
  5. В.Стешенко. ACCEL EDA: технология проектирования печатных плат. –М.: "Нолидж", 2000.
  6. В.Стешенко. ПЛИС фирмы ALTERA: проектирование устройств обработки сигналов -М.: "Додека", 2000

Наверх

Координаты:

г. Москва, пр. Мира, 102

Для писем:

105066, Россия, г. Москва, а/я 18

Тел.: (495) 778-97-04

e-mail: mail@dsol.ru, info@dsol.ru