После этого выполняется компиляция, по результатам которой формируется отчет, в котором, в частности будет указано общая загрузка ресурсов ПЛИС.
Chip/ Input Output LCs
POF Device Pins Pins LCs % Utilized
count_l EPF8282ALC84-2 8 6 10 4 %
User Pins: 8 6 0
В отчете приводятся также назначения контактов, сделанные пользователем, а также замены (если они есть). В отчете приводится также конструктивный вид микросхемы, фрагмент которого (левый верхний угол ПЛИС) показан на рис. 3.13. Из этого рисунка видно, что распределение сигналов в точности соответствует сделанным назначениям, там же показаны контакты питания и другие контакты специального назначения (в том числе контакты, используемые для загрузки конфигурации).
C
O R R R
N E E E
F S S S
_ ^ E E E
D D R R R
O C G V V V
N L q q q q N q q E E E
E K 0 1 2 3 D 4 5 D D D
--------------------------------------
/ 11 10 9 8 7 6 5 4 3 2 1 84
clk | 12
d0 | 13
+DATA0 | 14
d1 | 15
d2 | 16
VCCINT | 17
d3 | 18 EPF8282ALC84-2
d4 | 19
&d5 | 20
ld | 21
RESERVED | 22
RESERVED | 23
Рис. 3.12 Размещение внешних сигналов на контактах ПЛИС.
Анализируя загрузку логических ячеек, можно заметить, что используются ячейки только строки А (блоки А1 … А5), при этом наиболее загружен блок А3, в котором используются 3 ячейки. Эта информация отражена в следующих строках.
Logic Column Row
Array Interconnect Interconnect External
Block Logic Cells Driven Driven Clocks Interconnect
A1 1/8 (12%) 1/8(12%) 1/8(12%) 1/2 2/24( 8%)
A2 1/8 (12%) 1/8(12%) 1/8(12%) 1/2 3/24( 12%)
A3 5/8 (62%) 1/8(12%) 3/8(37%) 1/2 6/24( 25%)
A4 1/8 (12%) 1/8(12%) 1/8(12%) 1/2 3/24( 12%)
A5 1/8 (12%) 1/8(12%) 1/8(12%) 1/2 3/24( 12%)
A6 1/8 (12%) 1/8(12%) 0/8(0%) 1/2 3/24( 12%)
Результаты размещения можно просмотреть также в программе Floorplan Editor (см. рис. 3.13)
Рис. 3.13 Размещение проекта в ПЛИС
На рис. 3.14. показан пример моделирования работы счетчика. Возмущающие воздействия и результат моделирования отображены в окне графического редактора Wave Editor.
Рис. 3.14. Моделирование работы счетчика с синхронной загрузкой.
Работу шестиразрядного реверсивного счетчика (см. рис. 3.15) синхронизирует синхросигнал clk, входной сигнал up_down задает направление счета, причем “1” соответствует прямому счету, все остальные значения – обратному. Выходной сигнал счетчика q задается как целое в диапазоне от 0 до 63.
Рис. 3.15. Реверсивный счетчик
Описание устройства задается следующим текстом на языке VHDL:
library IEEE;
use IEEE.std_logic_1164.all;
entity count_r is
port(clk : in STD_LOGIC;
up_down : in STD_LOGIC;
q : out INTEGER range 0 to 63);
end count_r;
architecture r of count_r is
begin
process (clk)
variable cnt: INTEGER range 0 to 63;
variable direction : INTEGER;
begin
if (up_down = '1') then
direction := 1;
else
direction := -1;
end if;
if (clk'event and clk = '1') then
cnt := cnt + direction;
end if;
q <= cnt;
end process;
end r;
В данном описании, как и в предыдущих, используется переменная cnt, значение которой при приостановке процесса присваивается выходному сигналу q.
На рис. 4.6. показан пример моделирования работы счетчика.
Рис. 3.16. Моделирование работы реверсивного счетчика.
Для реализации выберем ПЛИС типа CPLD EPM7032LC44-6 семейства MAX7000.
Часто на практике бывает так, что разрабатываемое устройство является частью более сложного проекта – корневого проекта (top project). Как правило, корневой проект является графическим, поэтому и нашу разработку следует представить в графическом виде – в виде модуля или “символа”, а затем этот символ перенести в корневой проект. Последовательность действий может быть такая: создание символа (см. рис. 3.17) и просмотр символа (см. рис. 3.18).
Рис. 3.17. Создание символа.
Литература
1. Стешенко В. Б. ПЛИС фирмы ALTERA: проектирование устройств обработки сигналов. - М.: ДОДЭКА. 2000.