Общие подходы к проектированию цифровых устройств
Проектирование – комплекс работ, целью которого является получение документации, позволяющей изготовить новый или модернизировать существующий продукт.
При проектировании выполняют функциональную декомпозицию, получая набор блоков. Каждый блок представляет собой “черный ящик” описываемый функцией связывающий входы и выходы.
Далее выполняется синтез блоков – т.е. из функционального описания получают внутреннюю структуру. Синтез неоднозначен, т.к. одно функциональное описание может быть реализовано разными структурами.
(Например: по функциональному описанию комбинационной схемы на VHDL может быть получено множество схем в той или иной степени близких к оптимальной реализации).
После выполнения синтеза проводят анализ схемы. Повторяя несколько раз синтез и анализ, изменяя варьируемые параметры, в конце выбирают наиболее оптимальный вариант.

Способы реализации цифровых схем
Существуют два способа реализации цифровых интегральных схем:
На стандартной платформе (x86) программным способом. Это самый простой способ, т.к. используются готовые библиотеки.
В виде заказных интегральных схем (ASIC). Заказывается микросхема на заводе.
С использованием программируемых интегральных схем (ПЛИС) (FPGA)
ASIC
От слов application-specific integrated circuit. Для проектирования микросхемы ASIC на чистой кремневой пластине на полупроводниковом производстве создается цифровая схема.
Используя закрытые средства проектирования из RTL описания схемы, получают размеры, соединения и положения каждого транзистора. RTL описание может быть получено из кода на VHDL или Verilog.
Разработка специализированных микросхем является трудоемкой и дорогой, но полученная микросхема обычно содержит оптимальное число транзисторов и имеют максимальное быстродействие.
Капитальные вложение в проектирование микросхемы ASIC обычно составляют минимум несколько сотен тысяч долларов, и оправданы при массовом полупроводниковом производстве.
FPGA
field-programmable gate array
В противоположенность ASIC микросхема FPGA выпускается без заданной логики работы. При подаче питания она считывает конфигурационную информацию из дополнительной ПЗУ содержащий прошивку. Конфигурационная информация ПЗУ формируется САПР (например ISE файл с расширением BIT).
Принципы работы плис
Основа ПЛИС это набор конфигурируемых логических блоков (configurable logic blocks - CLB).
CLB состоит из:
таблицы соответствия ( LUT- lookup table),
Выходного триггера
Мультиплексора
Каждая ПЛИС содержит тысячи таких блоков объединенных коммуникационной схемой.

Таблица соответствия (LUT) реализуется в виде статического ОЗУ. Шина адреса такого ОЗУ может иметь величину от 3 до 6 бит, в зависимости от типа ПЛИС и производителя.
LUT может реализовывать комбинационную схему с одним выходом и несколькими входами.
Допустим, следует реализовать следующую комбинационную схему

Тогда по адресу (000) следует записать 0; по адресу (001) 1 и т.д.
Если требуется реализовать не комбинационную схему, а схему с памятью, то CLB конфигурируется так, чтобы через мультиплексор задействовать триггер.

Микросхема ПЛИС содержит множество конфигурируемых логических блоков в виде матрицы. Каждый блок окружен коммутационной средой, соединяющий конфигурируемые логические блоки.
На периферийной области находятся блоки ввода вывода. Дополнительно ПЛИС оснащаются блоками для автоподстройки задержек в системе тактирования (DLL – Delay Locked Loop) и блочной памятью (Block RAM).

Пример. Пусть есть простейший модуль и выбрана ПЛИС с шестивходовыми LUT:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity m1 is
Port ( x : in STD_LOGIC_VECTOR(7 DOWNTO 0);
y : out STD_LOGIC);
end m1;
architecture Behavioral of m1 is
begin
y<=x(0) AND x(1) AND x(2) AND x(3) AND x(4) AND x(5) AND x(6) AND x(7);
end Behavioral;
Тогда синтезированная RTL схема для него будет выглядеть как:

Синтезированная технлогическая цифровая схема:

