УДК 004.43
ПРОЕКТИРОВАНИЕ ЦИФРОВЫХ УСТРОЙСТВ С ИСПОЛЬЗОВАНИЕМ ЯЗЫКА VHDL
Әлқожа Рҥстем
Магистрант ЕНУ им Л.Н.Гумилева, Астана Научный руководитель – д.х.н., профессор Сулейменов Т.
119
Программируемые логические интегральные схемы (ПЛИС) представляют одно из самых интересных и быстро развивающихся направлений современной цифровой микроэлектроники. За последнее десятилетие наблюдался бурный рост рынка этих устройств и существенное улучшение их характеристик. Прогнозы в этой области на ближайшее время представляются самыми оптимистичными [1-4]. С появлением ПЛИС проектирование цифровых микросхем перестало быть уделом исключительно крупных предприятий с объемами выпуска в десятки и сотни тысяч кристаллов [5]. Проектирование и выпуск небольшой партии уникальных цифровых устройств стал возможен в условиях проектно- конструкторских подразделений промышленных предприятий, в исследовательских и учебных -лабораториях и даже в условиях домашних радиолюбительских рабочих мест [6].
Промышленно выпускаемые «заготовки» программируемых микросхем с электрическим программированием и автоматизированным процессом перевода схемы пользователя в последовательность импульсов программирования делают проектирование новых цифровых устройств сравнимым с разработкой программного обеспечения.
В настоящее время ведущими мировыми производителями ПЛИС являются фирмы Xilinx и Altera. Каждая из них выпускает целый спектр продукции, включая ПЛИС с различной архитектурой, флеш-ПЗУ для хранения конфигурации, система автоматизированного проектирования (САПР), средства программирования и отладки.
Несмотря на достаточно жесткую конкурентную борьбу между этими ведущими производителями ПЛИС, выпускаемая ими продукция имеет вполне паритетные технические и ценовые характеристики. Оба производителя постоянно развивают архитектуру программируемых-устройств, регулярно выпускают новые серии ПЛИС с улучшенными характеристиками. Хотя в архитектурах выпускаемых устройств имеются некоторые отличия, на практике оказывается, что преимущественная ориентация на продукцию одной из этих фирм не приносит существенной выгоды в техническом плане. При выборе той или иной фирмы имеет смысл ориентироваться скорее на удобство САПР, доступность элементной базы, методических материалов и технической поддержки.
Маршрут проектирования ПЛИС в последнее время претерпел существенные изменения [7]. Если предыдущее поколение САПР ориентировалось преимущественно на графический ввод принципиальной схемы, то текущие версии САПР Xilinx предоставляют богатые возможности к описанию проекта пользователя на так называемых языках описания аппаратуры (Hardware Description Languages, HDL). Эти языки приближены к обычным алгоритмическим языкам программирования и делают возможным быстрое освоение технологии проектирования ПЛИС разработчикам с разным уровнем начальной подготовки.
Скорость трансляции проектов и эффективность алгоритмов синтеза конфигурации ПЛИС постоянно повышаются, делая доступным разработку устройств объемом несколько миллионов логических вентилей на обычной рабочей станции на базе ПК. Кроме того, доступны разработки надстроек над САПР производителей ПЛИС, автоматически генерирующие HDL-описание проекта на базе высокоуровневого описания. Среди них представляет интерес серия продуктов фирмы Celoxica, разработавшей язык описания аппаратуры Handel-C. Синтаксис этого языка максимально приближен к языку программирования Си, что еще больше облегчает освоение ПЛИС разработчикам, имеющим навыки программирования.
Номенклатура, возможности, стоимость и прочие характеристики ПЛИС имеют постоянную тенденцию к улучшению [8]. Поэтому при рассмотрении перспектив, видимо, следует ограничиться перечислением планов фирмы Xilinx по выпуску новых серий ПЛИС.
В настоящее время (2004 г.) последней разработкой является серия Virtex4, в которой предусмотрен целый ряд новых архитектурных решений. В частности, это разделение внутри серии на 3 подгруппы - FX (Full featured), SX (Signal) и LX (Logic). Эти подгруппы представляют собой соответственно полнофункциональные устройства (с индексом FX), которые будут иметь на кристалле выделенные ядра PowerPC; устройства, нацеленные на
реализацию алгоритмов цифровой обработки сигналов (SX), с большим количеством блоков памяти/умножения и, наконец, устройства, ориентированные на выполнение логических операций (LX). 28 июня 2004 г. Xilinx начал поставки первых образцов ПЛИС этой серии.
В обзоре Xilinx, посвященном новой серии Virtex4, указывается, что за последнее десятилетие объем ПЛИС увеличился в 250 раз, рабочие частоты - в 25, пропускная способность памяти - в 800, а пропускная способность внешних интерфейсов - в 1 000 раз.
Одновременно с этим нормализованная стоимость ПЛИС уменьшилась в 300 раз.
Повсеместной стала практика использования ПЛИС в опытных образцах новых устройств с последующим переходом к ASIC в случае успеха разработанного изделия. Эти факты свидетельствуют о том, что новая технология уверенно заняла свое место на рынке микроэлектроники, предоставляя разработчикам принципиально новые возможности быстрого и качественного проектирования электронной аппаратуры. Тенденция к последовательному улучшению характеристик ПЛИС в конечном итоге создала ситуацию, когда «время жизни» отдельного семейства существенно сокращается. Уже сейчас серия ХС4000, которая предшествовала устройствам Spartan, не рекомендуется к использованию в новых разработках. Та же участь, по всей видимости, в ближайшем будущем ожидает семейства Spartan и Spartan-XL. Такая относительно быстрая смена поколений ПЛИС на первый взгляд ставит под вопрос обоснованность их применения в повседневной практике разработки цифровых устройств. Однако здесь можно указать на то, что логические объемы в сотни тысяч и миллионы вентилей уже сейчас заставляют применять современные методики проектирования, основанные на использовании языков описания аппаратуры (например, VHDL и Verilog). Такие описания позволяют в первую очередь получить абстрагированное от конкретного семейства ПЛИС описание цифрового устройства.
Впоследствии при появлении семейства с увеличенным быстродействием, меньшей ценой и т. д. можно будет оперативно произвести переход на новую элементную базу. Таким образом, порядок разработки устройств на базе ПЛИС подразумевает определенную мобильность, однако позволяет оперативно осваивать самую современную элементную базу, в короткие сроки получая максимальную выгоду от ее использования.
В этой связи язык описания аппаратуры VHDL является достаточно мощным средством абстрактного описания цифровых устройств, освобождающим разработчика от необходимости комбинировать нужную ему схему из готовых библиотечных компонентов.
Хотя все цифровые узлы, создаваемые в ПЛИС, теоретически могут быть реализованы с использованием только встроенных триггеров и комбинаторной логики, очевидно, что построение многоразрядных устройств, счетчиков со сложными условиями рестарта, конечных автоматов и т. п. очень сложно произвести по классической методологии графического описания создаваемой схемы. В данном случае применение языков описания аппаратуры (Hardware Description Languages, HDL) позволяет описать поведение создаваемого устройства в наиболее общем, алгоритмическом виде, что существенно облегчает анализ работы такого устройства, его модификацию, отладку и сопровождение.
Кроме того, алгоритмическое описание позволяет абстрагироваться от конкретной серии ПЛИС и библиотеки, поскольку одно и то же HDL-описание может быть легко оттранслировано в качестве составной части различных проектов.
Рассмотрим реализацию на VHDL разработку четырехразрядного сдвигающего регистра, обеспечивающего преобразование последовательного кода в параллельный и имеющего информационный вход DIN, вход синхронизации CLK и выход DOUT[3/0]. Тип микросхемы - ПЛИС типа FPGA XC2S15-VQ100-5. Описание интерфейса данной схемы будет выглядеть следующим образом (рис.1).
Рис. 1. Задание интерфейса разрабатываемой схемы
В качестве шаблона можно использовать пункт Serial to Parallel Shift Register из группы сдвигающих регистров Shift Registers. Окончательный вид описания регистра будет следующим:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity rg is
Port ( DIN : in std_logic;
CLK : in std_logic;
DOUT : out std_logic_vector(3 downto 0)); end rg;
architecture Behavioral of rg is
signal REG: STD_LOGIC_VECTOR(3 downto 0);
begin
process (CLK) begin
if CLK'event and CLK='1' then
REG(3 downto 0) <= DIN & REG(3 downto 1); end if;
DOUT <= REG;
end process; end Behavioral;
Внешние сигналы с помощью редактора ограничений задаются на следующие контакты: DIN - P40, CLK - P39, DOUT[3/0] - P41, P43, P4, P45. Для моделирования с помощью программы Test Behcher задаются временные диаграммы сигналов DIN и CLK, которые показаны на рис. 2.
Рис. 2. Входные сигналы
На этих временных диаграммах заданы следующие параметры: длительности единичного и нулевого значения синхросигнала – по 10 нс, время установки входных воздействий перед фронтом тактового сигнала и время задержки выходных значений по 6 нс.
Моделирование производится на основе данных сигналов с применением программы ModelSim. Результаты функционального моделирования показаны на рис. 3.
Рис. 3 Результаты моделирования
В размещении схемы показано, что для реализации схемы используются 4 триггера в двух секциях, что отражено следующими строками:
Number of SLICEs 2 out of 192 1%
Number of Slice Flip Flops: 4 out of 384 1%.
Для реализации внешних связей требуется 5 обычных блоков ввода-вывода и один специализированный для синхросигнала с использованием глобального буфера GCLK:
Number of External IOBs 5 out of 60 8%
Number of External GCLKIOBs 1 out of 4 25% Number of GCLKs 1 out of 4 25%
Распределение внешних сигналов по контактам, полностью совпадающее с заданным выше, отражается следующим фрагментом:
Resolved that GCLKIOB <clk> must be placed at site P39. Resolved that IOB <din> must be placed at site P40.
Resolved that IOB <dout<0>> must be placed at site P41.
Resolved that IOB <dout<1>> must be placed at site P43.
Resolved that IOB <dout<2>> must be placed at site P44.
Resolved that IOB <dout<3>> must be placed at site P45.
На рис. 4 приведен фрагмент ПЛИС, полученный с помощью программы
FloorPlanner. Из этого рисунка видно, что для проектируемой схемы системой САПР ISE отведены 2 секции в блоках ПЛБ, расположенных по адресам R8C8 и R8C9. Данные секции выделены темным цветом.
Рис. 4. Размещение узлов схемы в ПЛИС
Информация о величине задержек схемы отражена в следующих строках:
The Average Connection Delay for this design is: 0.853 ns The Maximum Pin Delay is: 1.564 ns
The Average Connection Delay on the 10 Worst Nets is:) 0.637ns Listing Pin Delays by value: (ns)
d<1.00 <d< 2.00 <d< 3.00 <d< 4.00 <d< 5.00 d>= 5.00 8 4 0 0 0 0
Полная информация о задержках приведена в нижней таблице:
---
| Max Delay (ns) | Netname | --- 1.564 reg_3_1
1.540 reg_2 1.209 reg_0 1.202 reg_1 0.853 reg_3 0.721 din_IBUF 0.469 clk_BUFGP
0.007 clk_BUFGP/IBUFG ---
На рис.5 показан фрагмент ПЛИС, на котором размещена проектируемая схема.
Данный рисунок получен с помощью программы редактора FPGA (FPGA Editor).
Рис. 5. Окончательное размещение узлов и связей
На этом рисунке приведены контакты P40, P41, P43, P44 и P45, которые соответствуют входному сигналу DIN и выходным сигналам DOUT[0], DOUT[1], DOUT[2] и DOUT[3]. На рисунке показаны также внутренние сигналы reg_0, reg_1, reg_2 и reg_3.
Название последних присвоила сама система, и их имена соответствуют индексам сигналов DOUT[0] … DOUT[3]. В схеме продублирован внутренний сигнал reg_3, его аналог имеет наименование reg_3_1 и используется для формирования сигнала DOUT[3] на контакте P45, сам сигнал reg_3 используется для формирования сигнала reg_2 при сдвиге. Указанное дублирование вызвано тем, что в системе задан режим оптимизации по быстродействию, и система обеспечивает максимальное быстродействие, пусть и за счет усложнения схемы.
Фрагмент секции CLB_R8C8.S0, где формируются два младших разряда, показан на
рис.6.
Рис. 6 Блок ввода-вывода
На рис. 7 показан фрагмент блока ввода-вывода (IOB) P40, который обеспечивает прохождение входного сигнала DIN. Сигнал поступает на входной контакт PAD, затем проходит через ряд буферных схем. Во внутреннюю логику ПЛИС поступает сигнал din_IBUF, а также сигнал reg_3_1, который вырабатывается на выходе D –триггера, находящегося в блоке ввода-вывода.
Рис. 7. Программируемый логический блок
Таким образом, разработчику достаточно ввести описание схемы на языке VHDL, а все остальное выполняет система проектирования.