Основные свойства VHDL:
Одно из главных свойств - это способность описывать аппаратуру и ее работу во времени. Поэтому основными в VHDL являются такие близкие разработчику понятия, как объект проекта, интерфейс, порт, архитектура, сигнал, атрибуты сигнала, операторы параллельного присвоения, процесс и др.
Сигнал в VHDL трактуется весьма широко и может быть скалярным (целым, вещественным, битовым и т. д.) или векторным (шинным), булевым или многозначным. Многозначная (реально 5-, 9- или 12-значная) логика дает возможность выявлять с помощью моделирования такие явления в схемах, как гонки, неопределенности на выходах схем (например, асинхронного RS-триггера при запрещенных значениях входных сигналов), решать задачи мультиплексирования шины.
Программируемые логические интегральные схемы (ПЛИС) все более широко используются для создания цифровых систем различного назначения. Фирма Xilinx®, являясь ведущим мировым производителем ПЛИС, предоставляет разработчикам широкий спектр кристаллов с различной технологией производства, степенью интеграции, архитектурой, быстродействием, потребляемой мощностью и напряжением питания, выпускаемых в различных типах корпусов и в нескольких вариантах исполнения, включая промышленное, военное и радиационно-стойкое [1–5].
Кристаллы, выпускаемые фирмой Xilinx, в полной мере реализуют преимущества ПЛИС по сравнению с «жесткой логикой»:
· высокое быстродействие;
· возможность перепрограммирования непосредственно в системе;
· высокая степень интеграции, позволяющая разместить цифровое устройство в одном кристалле и тем самым снизить время и затраты на трассировку и производство печатных плат;
· сокращение времени цикла разработки и производства устройства;
· наличие мощных инструментов САПР, позволяющих устранить возможные ошибки в процессе проектирования устройства;
· сравнительно низкая стоимость (в пересчете на один логический вентиль);
· возможность последующей реализации проектов ПЛИС для серийного производства в виде заказных СБИС, что позволяет значительно снизить их себестоимость.
До недавнего времени, несмотря на все достоинства ПЛИС Xilinx, существовало обстоятельство сдерживающее их применение (особенно недорогих кристаллов при разработке несерийных устройств) — необходимость дополнительных затрат на приобретение пакета программных средств проектирования и программирования. Чтобы устранить это препятствие, фирма Xilinx предоставила разработчикам возможность использовать бесплатное программное обеспечение — пакет WebPACK™ ISE™ (Integrated Synthesis Environment). Цель настоящей публикации — познакомить разработчиков цифровых устройств с возможностями САПР WebPACK ISE и основами методики выполнения проектов в среде данного пакета.
Программные средства WebPACK ISE представляют собой систему сквозного проектирования, которая реализует все этапы создания цифрового устройства на базе ПЛИС, включая программирование кристалла: разработка проекта, синтез, моделирование, трассировка и загрузка в кристалл. Версия 3.3WP8.0 САПР WebPACK ISE предназначена для проектирования цифровых устройств на базе ПЛИС производства Xilinx, относящихся как семействам CPLD: XC9500, XC9500XL, XC9500XV, XCR22V10, XCR3000 (XPLA1_3, XPLA2), XCR3000XL (XPLA3), XCR5000 (XPLA1_5), так и FPGA: Spartan™-II, Virtex™-E (только кристалл XCV300E), Virtex-II (кристаллы 2V40, 2V80 и 2V250).
Отличительные особенности пакета:
· поддержка различных методов описания проектируемых устройств (графических и текстовых);
· возможность использования проектов, подготовленных в других системах проектирования, в том числе в среде пакета Altera MAX+PlusII™;
· наличие схемотехнического редактора, укомплектованного набором обширных библиотек;
· интеллектуальные средства создания HDL (Hardware Description Language)-описаний, формирующие шаблоны на основании информации, предоставляемой пользователем, для языков описания аппаратуры VHDL, Verilog™ и ABEL™ HDL;
· высокоэффективные средства синтеза HDL-проектов, поддерживающие языки VHDL, Verilog и ABEL HDL, с возможностью оптимизации;
· развитые средства верификации проекта, позволяющие сократить полное время разработки устройства за счет обнаружения возможных ошибок на более ранних стадиях проектирования и сокращения длительности и количества возможных итераций;
· автоматические средства трассировки проекта в кристаллы различных семейств ПЛИС Xilinx с учетом оптимизации проекта по различным параметрам;
· средства программирования кристаллов семейств ПЛИС Xilinx, выполненных по различной технологии (CPLD и FPGA), поддерживающие несколько типов загрузочных кабелей JTAG-интерфейса;
· удобный для разработчика пользовательский интерфейс и наличие в каждом модуле пакета справочной системы, сокращающие время освоения САПР;
· наличие интегрированного с пакетом САПР набора инструментов и утилит других фирм, предоставляющих дополнительные удобства в процессе проектирования, включающего утилиту генерации тестовых сигналов HDL Bencher™, программу моделирования ModelSim XE Starter™ и редактор диаграмм состояний StateCAD™.
Десятичный сумматор с кодом 7-4-2-1. Этот код позиционный. Каждому разряду кодовой комбинации сопоставляется определенный весовой коэффициент, зависящий от позиции этого разряда. Если задана кодовая комбинация
, где – двоичные символы, то десятичную цифру, соответствующую этой кодовой комбинации можно определить по формуле:Таким образом, данный код имеет следующие обозначения цифр:
«0» – 0000; «4» – 0100; «8» – 1001; «12» - 1101.
«1» – 0001; «5» – 0101; «9» – 1010;
«2» – 0010; «6» – 0110; «10» - 1011;
«3» – 0011; «7» – 1000; «11» - 1100;
Для данного сумматора получена следующая логическая последовательность:
00 01 01 02 02 03 03 04 04 05 05 06 06 08 ** **
08 09 09 0A 0A 0B 0B 0C 0C 0D 0D 10 ** ** ** **
01 02 02 03 03 04 04 05 05 06 06 08 08 09 ** **
09 0A 0A 0B 0B 0C 0C 0D 0D 10 10 11 ** ** ** **
02 03 03 04 04 05 05 06 06 08 08 09 09 0A ** **
0A 0B 0B 0C 0C 0D 0D 10 10 11 11 12 ** ** ** **
03 04 04 05 05 06 06 08 08 09 09 0A 0A 0B ** **
0B 0C 0C 0D 0D 10 10 11 11 12 12 13 ** ** ** **
04 05 05 06 06 08 08 09 09 0A 0A 0B 0B 0C ** **
0C 0D 0D 10 10 11 11 12 12 13 13 14 ** ** ** **
05 06 06 08 08 09 09 0A 0A 0B 0B 0C 0C 0D ** **
0D 10 10 11 11 12 12 13 13 14 14 15 ** ** ** **
06 08 08 09 09 0A 0A 0B 0B 0C 0C 0D 0D 10 ** **
10 11 11 12 12 13 13 14 14 15 15 16 ** ** ** **
** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
08 09 09 0A 0A 0B 0B 0C 0C 0D 0D 10 10 11 ** **
11 12 12 13 13 14 14 15 15 16 16 18 ** ** ** **
09 0A 0A 0B 0B 0C 0C 0D 0D 10 10 11 11 12 ** **
12 13 13 14 14 15 15 16 16 18 18 19 ** ** ** **
0A 0B 0B 0C 0C 0D 0D 10 10 11 11 12 12 13 ** **
13 14 14 15 15 16 16 18 18 19 19 1A ** ** ** **
0B 0C 0C 0D 0D 10 10 11 11 12 12 13 13 14 ** **
14 15 15 16 16 18 18 19 19 1A 1A 1B ** ** ** **
0C 0D 0D 10 10 11 11 12 12 13 13 14 14 15 ** **
15 16 16 18 18 19 19 1A 1A 1B 1B 1C ** ** ** **
0D 10 10 11 11 12 12 13 13 14 14 15 15 16 ** **
16 18 18 19 19 1A 1A 1B 1B 1C 1C 1D ** ** ** **
** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
Вариант 1
Вариант 1 состоит из 3 сумматоров и 5 блоков. Схема приведена на рисунке 2. Результаты трассировки для различных типов микросхем приведены в таблице 1.
Рис.2. Схема сумматора. Вариант 1.
Таблица 1.
Количество использованных ресурсов ПЛИС | |||
макроячейки(macrocells) | конъюнкт. термы(productterms) | входы функц. блоков(func. blockinputs) | |
xc9500xl | 23 | 160 | 92 |
CoolRunner | 15 | 78 | 29 |
Вариант 2
Эта схема состоит из 4-х сумматоров,2-х элементов «исключающее или» и 4-х блоков. Схема приведена на рис.3. Результаты трассировки для различных типов микросхем приведены в таблице 2.
Рис.3. Схема сумматора. Вариант 2.
Таблица 2.
Количество использованных ресурсов ПЛИС | |||
макроячейки(macrocells) | конъюнкт. термы(productterms) | входы функц. блоков(func. blockinputs) | |
xc9500xl | 24 | 167 | 98 |
CoolRunner | 18 | 91 | 39 |
Вариант 3
Проанализировав данную схему (рис.4.), можно сделать вывод о том, что она является наиболее сложной схемой, в плане реализации, а также по количеству использованных ресурсов ПЛИС (таблица 3).
Рис.4. Схема сумматора. Вариант 3.
Таблица 3.
Количество использованных ресурсов ПЛИС | |||
макроячейки(macrocells) | конъюнкт. термы(productterms) | входы функц. блоков(func. blockinputs) | |
xc9500xl | 26 | 241 | 73 |
CoolRunner | 20 | 67 | 29 |
Данный способ реализации цифровых устройств пользуется наибольшей популярностью во всем мире. Ниже приведен текст на языке VHDL, описывающий поведение десятичного сумматора с кодом 7-4-2-1, и результаты трассировки данного варианта.
libraryIEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity sum_vhdl is
Port ( I : in std_logic_vector(8 downto 0);
O : out std_logic_vector(4 downto 0));
end sum_vhdl;
architecture Behavioral of sum_vhdl is
signal sum: std_logic_vector(4 downto 0);
signal sum_prom: std_logic_vector(3 downto 0);
signal A: std_logic_vector(3 downto 0);
signal B: std_logic_vector(3 downto 0);
begin
A <= I(4 downto 1) when I(4 downto 1) < "0111" else (I(4 downto 1) - "0001");
B <= I(8 downto 5) when I(8 downto 5) < "0111" else (I(8 downto 5) - "0001");
sum <= ('0'&A) + ('0'&B) + I( 0 );
sum_prom(3 downto 0) <= sum(3 downto 0) when sum < "01101"
else (sum(3 downto 0) + "0011");
O(3 downto 0) <= sum_prom(3 downto 0) when sum_prom(3 downto 0) < "0111"
else (sum_prom(3 downto 0) + "0001");
O( 4 ) <= '0' when sum < "01101" else '1';
end Behavioral;
Таблица 4.