Программируемые логические интегральные схемы
Введение
Сегодняшнюю жизнь невозможно представить без вычислительных устройств (ВУ), скрытых в бытовой технике, измерительных и медицинских приборах, управлении агрегатами транспортных средств, телекоммуникациях, чип-картах и т.п. В персональных компьютерах, которых сейчас в мире сотни миллионов штук, функции периферийных устройств исполняют различные специализированные ВУ. Если мысленно охватить всю электронику, используемую человеком, то в целом, на один универсальный микропроцессор приходятся многие десятки специализированных ВУ. Число новых применений ВУ стремительно возрастает, а сроки их разработки неуклонно сокращаются.
Основная часть специализированных ВУ реализована на микроконтроллерах. Но остается большое множество задач, требующих экстремальных характеристик быстродействия, пропускной способности, энергопотребления, для реализации которых необходима разработка заказных микросхем. В последнее время ядро микроконтроллера и необходимые сложные периферийные устройства выполняют в виде системы на кристалле (СНК). Возрастающий объем разработок специализированных ВУ и СНК требует освоения новых технологий их проектирования.
Проектирование ВУ представляет собой поэтапное преобразование технического описания ВУ с уточнением и детализацией описания на каждом новом этапе. Начальное описание специализированного ВУ включает в себя алгоритмы его функционирования, порядок взаимодействия с внешним миром, а также технические ограничения, такие как быстродействие, энергопотребление, габариты и т.п.
Традиционное проектирование ВУ основано на составлении на каждом этапе различных графических схем. В соответствии с названием этапа, различают схемы алгоритмов, схемы электрические структурные, функциональные и принципиальные. Черчение схем связано с высокой трудоемкостью, затратами времени, а главное - с трудностью выявления и исправления ошибок проектирования. Повсеместное внедрение САПР электронных схем обеспечивает уменьшение трудозатрат, повышение качества проектов, но не меняет в корне характер проектирования, как ручного составления схем.
Использование при разработке ВУ таких языков проектирования, как VHDL и Venlog, позволяет отказаться от составления схем на
большинстве этапов разработки ВУ. Технология проектирования ВУ с помощью VHDL предполагает описание исходных алгоритмов функционирования аппаратуры и ее интерфейса на языке VHDL и автоматическую трансляцию этого описания до уровня логических схем и далее - до уровня масок микросхем или прошивки программируемых логических интегральных схем (ПЛИС). При этом схемы ВУ в графическом виде практически не используются, а отсутствие ошибок в проекте автоматически контролируется средствами верификации. Как основное средство верификации, используется моделирование функционирования ВУ на VHDL-симуляторе на всех этапах проектирования. Разработка современных ВУ без использования языков VHDL и Verilog стала практически невозможной.
Язык VHDL - необычный язык, как для программистов, так и для разработчиков аппаратуры. Это связано с тем, что по своей природе VHDL - язык параллельного программирования. Начинающие программисты иногда путаются в основах программирования на VHDL, допускают трудно выявляемые ошибки, а их результирующие проекты ВУ нередко оказываются далекими от оптимальных. Кроме того, современная технология проектирования средств ВУ основана на ряде особенных требований, предъявляемых к проектам, описанным на VHDL. А большинство разработчиков аппаратуры, изучающих VHDL, с этими требованиями мало знакомо. Поэтому цель данной книги - помочь освоить VHDL, как современное средство проектирования ВУ.
Кратко о VHDL
Традиционно, разработка электрических схем является одним из этапов проектирования средств вычислительной техники. Эта ответственная работа связана с большими трудозатратами, контролем правильности и соответствия задуманному проекту, необходимостью четкого и емкого описания созданных схем, трудностями с их сопровождением и модернизацией. САПР вычислительной техники, как правило, имеют средства ввода и редактирования схем. Однако два десятилетия назад при разработке СБИС стали отказываться от схемного проектирования.
Язык Very high speed integrated circuits Hardware Description Language (VHDL) был разработан в 1983 г. по заказу Министерства обороны США с целью формального описания логических схем для всех этапов разработки электронных систем. Он является стандартным языком с 1987 г. Стандартом 1993 г. закреплены многие его усовершенствования [1]. Наряду с языком Verilog он является базовым языком при разработке аппаратуры современных вычислительных систем.
В чем преимущества VHDL над схемным проектированием?
Проектирование больших вычислительных устройств (ВУ).С помощью VHDL проще и быстрее ввести и проверить большой проект. Десятью строками VHDL можно описать как 1, так и 100000 триггеров. Микросхему с интеграцией более 10000 вентилей разработать только с помощью электрических схем практически невозможно по причине громоздкости схем.
Проект на VHDL — объединение структуры ВУ и алгоритма его функционирования.Для ВУ, описанного на VHDL, необязательно выполнять проверку правильности его функционирования, например, путем его макетирования. Чтобы определить, правильно ли ВУ выполняет заданный алгоритм, достаточно его VHDL-программу запустить на исполнение в симуляторе VHDL. Соответствующие САПР
преобразуют VHDL-описание в комплект документации для изготовления работоспособного устройства.
Проект на VHDL — самодокументированный,т.е. он не требует дополнительного технического описания или представления в виде схем. Нечеткость и небрежность описания исключаются, так как проект на VHDL несложно проверить.
Высокая надежность проекта.Синтаксический анализ, моделирование и компиляция в логическую схему быстро выявляют ошибки проекта.
Проект на VHDL — универсальный проект.Разработанный однажды вычислительный блок может быть использован во многих других проектах. При этом многие структурные и функциональные параметры блока могут быть настраиваемыми (параметры разрядности, объема памяти, элементная база, состав блока и структура межсоединений).
Проект на VHDL — портативный проект.Разработанный для одной элементной базы, проект ВУ без труда переносится на другую элементную базу, напр. СБИС с различной технологией.
Проект на VHDL — долгоживущий проект.Электрическая схема всегда разрабатывается под конкретную элементную базу и интерфейс. Так как элементная база сменяется через 2-5 лет, за этот же период устаревают и электрические схемы, использующие её. Проект ВУ на VHDL может быть повторно использован через несколько лет. Хорошее техническое решение (напр., изобретение), описанное на VHDL, может быть востребованным в течение десятилетий.
VHDL - универсальное средство описания ВУ на уровнях:
алгоритмическом,
структурном,
регистровых передач (RTL) и потоков данных (dataflow),
и логическом,
аналоговых схем.
Ход проектирования с использованием VHDL
На рис. 1 показана схема разработки проекта ВУ, предназначенного для исполнения в программируемой логической интегральной схеме (ПЛИС).
Вначале ВУ описывается в виде своей поведенческой модели, на которой отрабатывается задуманный алгоритм функционирования ВУ. Затем эта модель вручную перерабатывается в синтезируемую модель ВУ, описанную на уровне регистровых передач. Такая модель, будучи странслированной компилятором-синтезатором, дает проектную документацию в виде файла описания схемы ВУ на уровне вентилей (EDIF-файл). При этом автоматически выполняется логическая оптимизация ВУ. Одновременно этот файл автоматически преобразуется в VHDL-модель ВУ на уровне вентилей.
Проект ВУ в виде Electronic Distribution International Format (ЕБПГ)-файла принимается, как исходные данные, всеми САПР изготовления ПЛИС и СБИС. Эти САПР выполняют замену вентилей на библиотечные компоненты, их размещение на площади кристалла, трассировку межсоединений, проектирование масок, проверку соответствия проектным нормам и т.п. В результате, записываются файлы проектной документации изготовления кристалла и его логи-
ческой модели, учитывающей задержки, как в вентилях, так и в межсоединениях. Эта модель также представляется на VHDL.
Стоимость ошибок при проектировании СБИС очень высока, особенно на ранних этапах. Поэтому все этапы проектирования - алгоритмический, структурный, логический, технологический - сопровождаются моделированием ВУ с помощью, так называемого, испытательного стенда (testbench). Этот стенд представляет собой VHDL-модель, составными частями которой являются модель тестируемого ВУ и модели генератора тестовых сигналов и логического анализатора, проверяющих правильность функционирования ВУ. Причем на всех этапах может использоваться один и тот же испытательный стенд и те же тестовые файлы.
VHDL используется в современных САПР
Исторически сложилось, что в микроэлектронной индустрии наибольшее распространение получил язык Verilog. Полтора десятилетия назад этот язык выиграл конкурентную борьбу с другими языками задания ВУ, благодаря небольшим вычислительным ресурсам, требуемым от прежних рабочих станций и достаточно точным результатам моделирования СБИС. VHDL - более универсальный и гибкий язык, но он проигрывал в быстродействии языку Verilog, особенно при моделировании на уровне вентилей и транзисторов. VHDL получил широкое распространение в университетах и исследовательских учреждениях, так как это строгий, стройный, универсальный и расширяемый язык. Так, например, появились пакеты VHDL для аналогового моделирования, моделирования многозначной логики. Кроме того, симуляторы VHDL были гораздо дешевле симуляторов Verilog.
Все современные САПР микроэлектроники имеют компиляторы как с Verilog, так и с VHDL. Программист, освоивший VHDL, без особого труда может перейти к программированию на языке Verilog. Но программисту, знающему Verilog, перейти к VHDL труднее.
Важнейшими качествами VHDL в САПР выступают следующие:
Гибкость.Проект, описанный на VHDL, может быть легко настроен под конкретные задачи потребителя.
Универсальный язык.VHDL - общепринятый язык для всех основных фирм - изготовителей микросхем ПЛИС, ПЛМ, заказных
СБИС, как стандартный язык для задания сложных проектов. Проектирование с VHDL - устойчивая тенденция в инженерной технологии. Существуют компиляторы, транслирующие VHDL-программы в эквивалентные им Verilog-программы.
Моделирование с учетом задержек.Фирмы-изготовители микросхем в своих САПР обеспечивают генерацию моделей результатов размещения и трассировки, описанных на VHDL.
Стандартное подключение блоков.Конструкции языка, такие как entity, port map,configuration, обеспечивают надежную и быструю стыковку блоков, разработанных разными фирмами и разработчиками, в различном сочетании.
Стандартное тестирование.На всех этапах разработки выполняется тестирование по одной методике одними и теми же тестами.
VHDL — стандарт будущего.Все новые САПР основаны на технологии трансляции описания ВУ на языке описания аппаратуры. Использование VHDL - гарантия того, что через 5 и 10 лет найдется САПР, поддерживающая старые разработки.
Технология разработки систем на кристалле
Согласно известному закону Мора, количество транзисторов на кристалле СБИС с каждым годом увеличивается приблизительно на 60 %. С определенного момента времени то оборудование, которое размещалось на одной печатной плате, стало возможным поместить на одном кристалле (рис. 2). Причем это становится выгодным, благодаря уменьшению общей стоимости, числа необходимых микросхем, энергопотребления, повышению надежности ВУ.
Таким образом, на одном кристалле размещается не только конкретное функциональное устройство, например, центральный процессор, но и другие устройства, такие как АЦП, ОЗУ, ПЗУ, блоки цифровой обработки сигналов, интерфейсные узлы и т.п., дополняющие его до законченной системы блоков. Поэтому такое ВУ при-
нято называть System On the Chip (SOC) - системой на кристалле (CHK) [2].
СНК - это, как правило, заказная СБИС. Чтобы разработка СНК себя окупила, необходимо реализовать десятки и сотни тысяч СБИС. Проект ВУ, реализованный на ПЛИС, может быть выгодным при партиях, как в десятки, так и в десятки тысяч экземпляров, благодаря дешевизне разработки и производства такой ВУ. Разработка такого ВУ длится, как минимум, в 2 раза быстрее, чем проектирование СБИС. Это обусловило бурное распространение ПЛИС в качестве элементной базы СНК.
Наиболее трудоемкими и ответственными этапами разработки СНК выступают этапы структурного проектирования и верификации соответствия ВУ заданным алгоритмам функционирования. Поэтому эффективность САПР микросхем и производительность разработчиков, выполняющих проектирование на уровне регистровых передач, постоянно растет приблизительно на 20 % в год. Но, начиная с середины 90-х годов, производительность разработчиков стала заметно отставать от роста сложности СНК (рис. 3).
Первым направлением улучшения технологии разработки СНК, ориентированным на уменьшение зазора между ростом производительности проектирования на уровне регистровых передач и ростом сложности СНК, является применение крупных библиотечных вычислительных модулей (Intellectual Property Cores). Эти модули должны быть надежно повторяемыми и настраиваемыми под решаемые задачи в ряде проектов СНК. Повторное применение таких модулей (IP Core reuse), которые можно назвать вычислительными заготовками за их функциональную и технологическую адаптируемость, позволяет уменьшить трудозатраты и сроки проектирования СНК.
Второе направление - это разработка САПР совместного проектирования аппаратно-программного обеспечения (Hardware - Software Codesign). Архитектура СНК, как правило, включает в себя микропроцессорное ядро с периферийными устройствами в различном сочетании. Обычно процесс разработки ВУ с такой архитектурой состоит из трех последовательных этапов: проектирования электрической схемы аппаратуры, разработки матобеспечения микропроцессора и стыковки матобеспечения с аппаратурой.
Для ускорения проектирования разрабатывают САПР, которая не только служит для совместного выполнения этих этапов, но и обеспечивает моделирование работы СНК и ее верификацию в комплексе.
Наибольшее ускорение разработки СНК может дать внедрение САПР непосредственного отображения алгоритмов в аппаратуру, т.е. САПР системного проектирования. Например, такая САПР может включать в себя трансляцию программы с языка высокого уровня, таком как C++, с автоматическим разделением вычислительных задач между микропроцессорным ядром и спецпроцессорами и другими периферийными устройствами.
Для более плавного перехода от алгоритма функционирования системы, описанного на языке C++, к аппаратно-программному описанию всё чаще применяется язык System-C. Особенность этого подмножества языка C++ в том, что его функции имеют взаимно однозначное соответствие с конструкциями языков VHDL и Verilog, описывающими аппаратуру.
Вычислительные заготовки
В крупных фирмах, долгие годы занимающихся разработкой СБИС, а теперь и СНК, наработаны большие библиотеки стандартных модулей, таких как: ОЗУ, АЛУ, периферийные устройства. В новых проектах СНК некоторые блоки приходится разрабатывать заново, а остальные - обычно берутся из библиотеки. При этом если модуль неясно описан, не имеет удобного интерфейса, документации, комментариев, испытательного стенда с надежными тестами, то он повторно применяться не будет.
Если такой модуль изначально оформлен в виде вычислительной заготовки, то он будет без лишних проблем вставляться в любой новый проект. Более того, лицензию на него можно предлагать другим фирмам-разработчикам СНК. Рисунки 2, 4 иллюстрируют суть вычислительной заготовки (IP core).
1. VHDL и технология систем на кристалле
Гибкие заготовки обычно подстраиваются к условиям нового проекта в широких пределах и независимы от его технологии (серия ПЛИС, технология СБИС). Обычно в них задаются разрядность данных, объем памяти, таблицы констант, перечень периферийных устройств, иногда - быстродействие, которое пропорционально аппаратурным затратам. Минимизация аппаратурных затрат вычислительных заготовок обеспечивает не только уменьшение стоимости СНК, но и минимизацию его энергопотребления, что является важным фактором для портативных и энергонезависимых ВУ, в которых применяются СНК.
Чтобы проект ВУ был принят как гибкая вычислительная заготовка, он должен иметь:
а исчерпывающую и ясную документацию;
а текст описания на VHDL или Verilog в хорошем стиле для синтеза, заготовка должна быть настраиваемой под технические условия потребителя;
а хорошие средства верификации в виде испытательных стендов, исчерпывающих тестов, возможно, экспериментальных макетов;
а четкую методику того, как ВУ вставлять в СНК, включающую надежные скрипты (программы на макроязыке САПР, автоматизирующие тестирование и создание жесткой или твердой заготовки) [2].
В сегодняшних условиях, чтоб быстрее перейти от идеи к "железу", эффективнее провести проектирование новой СНК, необходимо эту СНК "собрать" из имеющихся вычислительных заготовок (рис. 2), а отсутствующие заготовки - приобрести на рынке IP cores, который бурно развивается в последние годы.
Если приобрести не удастся или если проект - исследовательский, то необходимую заготовку можно поискать, например, в банке бесплатных IP cores, что на сайте www.opencores.org. Этот банк создан по инициативе организаций, содействующих развитию технологии СНК, а также инженеров, желающих поделиться своими результатами. Если оба этих пути не устраивают, то придется ВУ проектировать самостоятельно и данная книга может этому помочь.
Программируемые логические интегральные схемы
Что такое FPGA?
Программируемые логические интегральные схемы (ПЛИС) появились полтора десятилетия назад как альтернатива программируемым логическим матрицам (ПЛМ). ПЛИС отличаются от последних как по архитектуре, так и по технологии изготовления.
ПЛМ представляет собой матрицу многовходовых (более десятка входов) логических элементов с триггерами, в которых программируются конституенты единиц дизъюнктивных нормальных форм функций этих элементов. В первых ПЛМ программирование выполнялось пережиганием перемычек между источниками сигналов переменных и входами логических элементов. Затем перемычки заменили МОП-транзисторами с плавающим затвором, как в электрически перепрограммируемом ПЗУ. Поэтому сейчас. ПЛМ изготовляются по технологии флэш-памяти. Большие ПЛМ (CPLD) отличаются только тем, что несколько ПЛМ собраны на одном кристалле и объединены программируемым полем связей.
ПЛИС представляет собой матрицу маловходовых (от двух до пяти входов) логических элементов, триггеров, отрезков линий связи, соединяемых перемычками из полевых транзисторов. Судя по английскому названию ~ Field Programmable Gate Array (FPGA), ПЛИС программируются изменением уровня электрического поля (field) в затворах этих транзисторов. Затворы всех "программирующих" полевых транзисторов подключены к выходам триггеров одного длинного сдвигового регистра, который заполняется при программировании ПЛИС. Некоторые из участков этого регистра могут также исполнять роль ячеек ПЗУ.
Прошивка обычно хранится в ПЗУ, стоящем рядом с ПЛИС. После включения питания или по сигналу сброса она автоматически переписывается в программирующий сдвиговый регистр ПЛИС. Этот процесс называется конфигурированием ПЛИС. Так как основу ПЛИС составляют триггеры, хранящие прошивку, называемую конфигурацией, то ПЛИС изготавливаются по технологии микросхем статического ОЗУ.
По сравнению с CPLD, ПЛИС выигрывают, во-первых, в неограниченном количестве перепрограммирований, во-вторых, в логиче-
ской емкости, в том числе в удельной емкости вентилей на цент, в-третьих, в малом энергопотреблении. Как правило, ПЛИС имеют на два-три порядка большую емкость в числе эквивалентных логических вентилей, чем CPLD и также как статическое ОЗУ, почти не потребляют энергии при отсутствии переключений. Поскольку топология ПЛИС регулярна и масштабируема, период разработки и внедрения ПЛИС новых серий сравнительно мал, и они изготовляются по самой современной технологии. Наконец, у ПЛИС на порядок выше надежность (ниже интенсивность отказов), чем у CPLD.
Архитектура ПЛИС фирмы Xilinx
Фирма Xilinx принадлежит к числу родоначальников ПЛИС и самых крупных их производителей. Ниже рассматривается краткое описание архитектурных особенностей ПЛИС серии Virtex выпускаемой этой фирмой [3]. Эти особенности наследуются в новых сериях ПЛИС, а также в серии Spartan, микросхемы которой призваны заменить заказные СБИС в мало- и среднесерийном производстве изделий электроники. Кроме того, принципы функционирования структурных элементов ПЛИС этой серии узнаваемы в архитектурах ПЛИС других фирм-производителей, таких как, Altera, Actel, Atmel.
Топология ПЛИС
На площади кристалла ПЛИС (рис. 5.) размещены матрица конфигурируемых логических блоков (КЛБ или CLB), матрица отрезков линий межсоединений, покрытых матрицами из полевых транзисто-
ров - перемычек (МП). По
краям кристалла размеше
ны блоки настраиваемых
ОЗУ - BlockRAMs. По пе
риметру кристалла разме
щены блоки ввода-вывода
сигналов (IOBs), а также
периферийный канал ли
ний межсоединений, на
зываемый VersaRing,
предназначенный для сое
динения КЛБ с произ
вольным ЮВ линией свя
зи с малой задержкой.
Для обеспечения достаточ-11 ых возможностей маршрута-1ации межсоединений, а также i [ х высокого быстродействия, используется до девяти слоев металлизации в которых реали-юваны матрица отрезков линий межсоединений, система линий < инхронизации и питания.
Логическая таблица
Роль основного логического элемента в ПЛИС играет логическая таблица (ЛТ) или look-
up table (LUT), представляющая собой однобитное ОЗУ на 16 ячеек (рис. 6).
В ЛТ по адресу G3,G2,G1,G0 записана единица, если код адреса представляет собой конституенту единицы заданной четырехвходо-иой логической функцией. Например, если по адресу 1,1,1,1 записана единица, а по остальным адресам - ноль, то ЛТ реализует че-1 ырехвходовую функцию И. На рис. 6 показан пример кодирования функции Исключающее ИЛИ на четыре входа. Триггеры ЛТ входят и состав программирующего сдвигового регистра, и их начальное (остояние заполняется в период конфигурирования ПЛИС.
Триггер
В ПЛИС используются программируемые D-триггеры (рис. 7). При конфигурировании можно задать такие режимы работы триг-
iepa, как триггер с начальным сбросом (R) или начальной ус-[ ановкой (S), с записью по фронту или спаду синхро-< ерии, с разрешением или без разрешения записи.
После окончания конфигурирования ПЛИС выдает сиг-кал общего сброса GSR, который устанавливает все триггеры в 0 или 1.
Структура КЛБ
В базовой серии ПЛИС ХС4000 фирмы Xilinx основной единицей оборудования считается КЛБ, состоящий из двух триггеров, двух ЛТ и схем ускоренного переноса, суммирования и управления CY. В новых сериях ПЛИС количество триггеров и ЛТ в КЛБ увеличилось вдвое и вчетверо. Чтобы оставить для всех серий одну и ту же единицу оборудования, условились называть КЛБ из двух триггеров и двух ЛТ эквивалентным КЛБ (ЭКЛБ) или CLB slice. Таким образом, КЛБ серии Virtex состоит из двух ЭКЛБ, а серии VirtexII - из четырех ЭКЛБ (рис. 8).
Схемы для ускорения арифметических операций
В ЭКЛБ две ЛТ и два триггера соеди-
нены вместе через схему ускоренного переноса и два однобитных полусумматора (рис. 9). Эти схемы позволяют эффективно реализовать многоразрядные параллельные сумматоры, а на их основе - различные счетчики и АЛУ.
Для минимизации оборудования и ускорения вычисления операции умножения используется дополнительная схема поразрядного произведения. Необходимо добавить, что в новой серии Virtex2 реализованы аппаратные умножители 18 на 18 разрядов.
Мультиплексоры в ПЛИС
Большую долю оборудования в ВС занимают мультиплексоры. С помощью одного ЛТ можно реализовать двух-входовой мультиплексор. Для эффективной реализации 4-х и более входовых коммутаторов в КЛБ имеются схемы мультиплексоров F5 и F6, которые играют роль верхних уровней древовидного мультиплексора (рис. 10).
Шины с тремя состояниями
Применение шин с тремя состояниями - типичное схемное решение ВУ, реализованных на плате. Благодаря такому решению, легко достигается многомодульность и наращиваемость системы, низкие аппаратурные затраты и малые задержки в системе межсоединений. I in утри заказных СБИС редко применяются шины с тремя состояниями из-за технологических трудностей их безотказной реализации, а также увеличенной задержки их переключения.
Несмотря на это, в ПЛИС фирмы ХШпх всё-таки широко применяются шины с тремя состояниями, хотя это существенно повышает их себестоимость. Зато, во-первых, проще выполнить переход от проекта схемы на плате к проекту СНК. Во-вторых, ВУ с общими шинами, к которым подключено несколько десятков модулей, имеет аппаратные затраты в несколько раз меньше, чем такое же ВУ, в котором глины заменены на эквивалентную схему из системы мультиплексоров. В-третьих, с помощью общих шин эффективно реали-иовать встроенное распределенное ОЗУ, о котором пойдет речь ниже.
Для реализации общей шины каждый КЛБ имеет два буфера с •громя состояниями BUFT, которые через транзисторы-перемычки могут подключаться к общим шинам, проходящим вдоль всего кристалла (рис. 11).
В обычных шинах третье состояние характеризуется уровнем, находящимся между уровнями логической 1 и логического 0. Однако в случае, когда все тристабильные буферы будут в третьем (за-
крытом) состоянии, выходные каскады приемников, подключенных к общей шине, Пудут полуоткрытыми, через них потечет большой постоянный ток, и они могут выйти из строя. Для исключения такого электрического режима, в ПЛИС общая шина нагружена на концах специальной тригтерной схемой - Weak Keeper, которая выводит уровень шины или к уровню Н, или к уровню L (слабые 1 или 0), если все буферы закрыты.
ОЗУ в ПЛИС
Для реализации в ПЛИС модулей ОЗУ предусмотрено две возможности. Первую возможность предоставляет каждая ЛТ, которая
может быть сконфигурирована как 16-битовое синхронное ОЗУ. Две соседних ЛТ могут быть сконфигурированы как 16-битовое двухпортовое ОЗУ с записью и чтением по одному адресу и чтением по другому адресу (рис. 12). При этом для реализации синхронного режима записи входной бит данного, сигнал записи и адрес запоминаются в триггерах-защелках, а для чтения по второму адресу из блока второй ЛТ ис-
пользуется только мультиплексор чтения.
Для наращивания емкости памяти выходы нескольких КЛБ с модулями ОЗУ через тристабильные буферы подключаются к общим шинам. При этом- требуется дополнительное оборудование только для построения схемы дешифрации адреса, которая выдает сигналы выборки той или иной ЛТ для записи или того или другого три-стабильного буфера для чтения. Такое ОЗУ распределено по площади кристалла и поэтому названо Distributed RAM.
Если ЛТ запрограммировать как примитив SRL16, то из ее триггеров будет реализован 16-разрядный сдвиговый регистр с однобитовым входом и программируемым номером выходного разряда, т.е. память FIFO регулируемой длины. Такие регистровые линии задержки удобно использовать при проектировании конвейерных специализированных ВУ, ВУ с поразрядной
обработкой, буферов для приема и передачи данных и т.п.
Вторую возможность предоставляют отдельные блоки памяти BlockRAM. В ПЛИС серии Virtex они могут быть сконфигурированы, как ОЗУ объемом 256 16-разрядных слов, 512 8-разрядных слов, и т.д. Эта память может быть запрограммирована как однопортовая или как полностью двухпортовая память (рис. 13). Начальное со-
сгоиние этой памяти задается при ее конфигурировании, поэтому ими может быть использована также как ПЗУ. В каждой новой серии ПЛИС объем блоков BlockRAM и их число - увеличиваются.
Блоки ввода-вывода сигналов
ПЛИС находят широкое применение благодаря тому, что их можно включать в большинство проектов ВУ и ими можно заменять схемы, реализованные на устаревшей элементной базе. Предпосылкой этому служит большое число блоков ввода-вывода сигналов ЮВ, настраиваемых под различные стандарты электрического соединения иходов микросхем. На рис. 14 показана структура одного ЮВ.
Сигнальный вывод ПЛИС получил название PAD. С помощью настройки к нему можно подключать внутренний нагрузочный резистор PULLUP или резистор PULLDOWN, соединенные с шиной питания или шиной земли, соответственно. Эти резисторы обеспечивают режим выхода с открытым коллектором (стоком) для систем с рп.шичными уровнями логики. Входной сигнал с PAD поступает на компаратор IBUF, порог срабатывания которого программируется мод уровни ТТЛ, КМОП, шины PCI и многие другие, а также может регулироваться установкой подаваемого снаружи потенциала уровня срабатывания Vref. Для обеспечения временного сдвига сигнала относительно фронта синхросерии, обеспечивающего надежный прием сигнала во внутренние триггеры, в цепь входного сигнала может иключаться специальная схема задержки.
Выходной сигнал в ЮВ формируется в тристабильном буфере OBUFT, причем его уровень максимального тока программируется ступенями и может достигать 20 мА. Для обеспечения быстродействующего ввода-пмвода передаваемые и принимаемые биты данных, а также сигнал управления тристабильным буфером могут запоминаться в триггерах.
В ПЛИС новых поколений к сигнальным выводам кристалла подключаются резисторы с программируемым сопротивлением, предназначенные для согласования импеданса источника или приемника сигнала с импедансом линии связи. Благодаря этому возможна надежная высокочастотная передача данных между микросхемами.
Напряжение питания ПЛИС каждого нового поколения постоянно уменьшается, благодаря чему минимизируется энергопотребление при высоком быстродействии (см. главу 4). Для того, чтобы обеспечить согласование входных и выходных уровней для как можно большего числа стандартов уровней напряжения логических схем, на блоки ЮВ подается отдельное питание.
ЮВ сгруппированы в банки, и на каждый из банков можно подавать различный уровень напряжения питания. Но для ПЛИС последних поколений это напряжение не должно превосходить 3,3 В. Сигнальные входы-выходы ПЛИС обычно защищены от перенапряжения цепочками из ограничивающего резистора и диода, подключенных между PAD и линиями питания и земли. Поэтому обычно допускается подавать на входы PAD уровень, больший 3,3 В через дополнительный резистор, ограничивающий входной ток и обеспечивающий входной уровень на PAD, не превосходящий напряжение питания плюс падение напряжения на открытом диоде.
При диагностике, отладке, в одном из режимов конфигурирования, ПЛИС может быть переключена в режим пограничного сканирования (Boundary Scan). В этом режиме все ЮВ соединяются в цепочку одного длинного регистра сдвига. Путем стандартного внешнего управления этим регистром сдвига через интерфейс JTAG можно считывать состояния выводов, подавать тестовые сигналы, конфигурировать ПЛИС.
В период конфигурирования ПЛИС для того, чтобы подключаемые к ней устройства не функционировали неопределенным образом, выходы ЮВ отключаются и на них обычно выставляется уровень Н слабой единицы.
Система синхронизации
Одним из принципов разработки проектов для ПЛИС является принцип однотактной синхронизации, согласно которому все триггеры в ВУ или в его блоке срабатывают одновременно по одному сигналу синхросерии (см. главу 4). Для его реализации в ПЛИС синхросигналы распространяются по быстродействующей древообразной
( e i it, которая обеспечивает почти одновременный приход фронта синхроимпульса на синхровходы всех i ршгеров (рис. 15).
Для надежного функциониро-иимия ПЛИС синхросигнал должен подаваться через вывод GCLKPAD и попадать в сеть синхросерии через буфер GCLKBUF.
В ПЛИС предусмотрено 4 выпи дя GCLKPAD, размещенных на iipoi ивоположных сторонах ее
корпуса. Синхросигнал может вырабатываться и внутри ПЛИС, по в этом случае его следует завести в сеть синхросерии через i лобальный буфер BUFG.
С помощью синхронного автомата, сконфигурированного в ПЛИС, можно изменять частоту и фазу синхросерии. Но в этом <* л учае ее временные параметры будут недостаточно ста-бпмьными, и поэтому такой подход обычно не применяется. Для надежного регулирования частоты синхросерии в ПЛИС вклю-чпюг делители частоты синхросерии с автоподстройкой — блоки (MiKDLL. На рис. 16 показана типичная схема его включения. Инок CLKDLL обеспечивает умножение частоты синхросерии в 2 рм.за, сдвиг ее фазы на 90, 180 и 270 градусов, деление на 1.5, 2, 2.5, 3, 4.5, 8 и 16.
Конфигурирование ПЛИС
Для конфигурирования ПЛИС в ней предусмотрены входы задания режима М2, Ml, МО, вывод синхросерии программирования CCLK, вход последовательности конфигурации PROGRAM, выход флага окончания конфигурирования DONE и выводы порта JTAG. В зависимости от установленного режима можно загружать прошивку ПЛИС через однобитовый вход PROGRAM, порт JTAG или 8-разрядную шину D с использованием для управления выводов WRITE и BUSY.
Конфигурирование через однобитовый вход длится до нескольких десятков секунд. Это стандартный способ конфигурирования и для него не требуется дополнительного оборудования, кроме ПЗУ прошивки с однобитовым выходом. С помощью одной микросхемы ПЗУ можно запрограммировать несколько ПЛИС, цепи программирования которых для этого соединяются в кольцо.
Для реализации конфигурирования через шину D необходимо дополнительное внешнее устройство (автомат или микроконтроллер), управляющее записью и выдающее последовательность адресов чтения на входы ПЗУ восьмиразрядной шиной данных. Зато оно происходит значительно быстрее - практически с максимальным темпом чтения из ПЗУ.
В последнее время выпускаются ПЗУ, специально предназначенные для конфигурирования ПЛИС через шину D, в состав которых входит автомат управления записью.