
САПР “MAX+PLUS II” представляет собой интегрированную среду для разработки цифровых устройств на базе программируемых логических интегральных схем (ПЛИС) фирмы Altera и обеспечивает выполнение всех этапов, необходимых для выпуска готовых изделий:
создание проектов устройств;
синтез структур и трассировку внутренних связей ПЛИС;
подготовку данных для программирования или конфигурирования ПЛИС (компиляцию);
верификацию проектов (функциональное моделирование и временной анализ);
программирование или конфигурирование ПЛИС.
В состав пакета “MAX+PLUS II” входят следующие связанные между собой приложения, реализующие все перечисленные выше этапы разработки цифровых устройств на ПЛИС фирмы Альтера:
Приложения для ввода проекта
Graphic Editor – графический редактор, предназначенный для ввода проекта в виде схемы соединений символов элементов, извлекаемых из стандартных библиотек пакета либо из библиотеки пользователя.
Waveform Editor – редактор временных диаграмм, который выполняет двойную функцию: на этапе ввода обеспечивает ввод логики проекта в виде диаграмм (эпюр) состояний входов и выходов, а на этапе моделирования обеспечивает ввод диаграмм тестовых (эталонных) входных состояний моделируемого устройства и задание перечня тестируемых выходов.
Text Editor – текстовый редактор, предназначенный для создания и редактирования текстовых файлов, содержащих описание логики проекта на языках описания устройств AHDL, VHDL, Verilog.
Symbol Editor – символьный редактор, позволяющий редактировать существующие символы и создавать новые. Любой откомпилированный проект может быть свёрнут в символ, помещён в библиотеку символов и использован как элемент в любом другом проекте.
Floorplan Editor – редактор связей (поуровневый планировщик), который на плане расположения основных логических элементов позволяет вручную распределять выводы ПЛИС (закреплять выводы за конкретными входными и выходными сигналами) и перераспределять некоторые внутренние ресурсы ПЛИС.
Приложения для компиляции проекта
Это приложения, входящие в пакет компилятора, предназначены для синтеза структуры, трассировки связей, проверки корректности проекта и локализации ошибок, формирования файлов программирования или конфигурирования ПЛИС:
Приложения для верификации проекта
Simulator – приложение, которое совместно с редактором временных диаграмм предназначено для функционального моделирования проекта с целью проверки правильности логики его функционирования.
Timing Analyzer – приложение, обеспечивающее расчет временных задержек от каждого входа до каждого логически связанного с ним выхода.
Приложение для программирования или конфигурации ПЛИС
Для программирования или конфигурирования ПЛИС используется приложение “MAX+PLUS II Programmer”. Программирование и перепрограммирование микросхем, имеющих встроенную систему программирования (ISP), может осуществляться непосредственно в составе конечного изделия через специальный кабель, подключаемый к LPT-порту - Byte Blaster. Если на плате изделия устанавливается несколько ПЛИС со встроенными системами программирования, то все они могут программироваться через один технологический разъём. Для этой цели приложение «Programmer» имеет режим «Multi-Device» (к сожалению, бесплатные версии пакета этот режим не поддерживают).
Во время инсталляции пакета создаются два каталога: каталог \MAXPLUS2, который содержит все приложения и библиотеки пакета, и каталог \MAX2WORK, который содержит подкаталог \CHIPTRIP со всеми файлами учебного проекта, рассмотренного в руководстве (“MAX+PLUS II Tutorial”), и ряд подкаталогов, используемых электронным справочником (“MAX+PLUS II Help”). В этом же каталоге \MAX2WORK следует размещать и рабочие каталоги создаваемых проектов устройств. Необходимость создания отдельных каталогов для каждого разрабатываемого проекта обусловлена тем, что в процессе разработки проекта системой MAX+PLUS II создаётся и поддерживается множество файлов, относящихся к текущему проекту. Прежде всего - это файл проекта, название которого определяет название проекта в целом. Этот файл содержит основную логику и иерархию проекта, обрабатываемую компилятором. Кроме того, создаётся ряд вспомогательных файлов, связанных с проектом, но не являющихся частью логики проекта. Большая часть вспомогательных файлов создаётся и автоматически помещается в каталог проекта в процессе ввода и компиляции проекта. Это файлы назначений и конфигурации (.ACF), файлы отчётов (.RPT), файлы данных для функционального моделирования и временного анализа (.SNF), файлы данных для программирования (.POF) и ряд других. Названия этих файлов всегда совпадают с названием проекта. Некоторые вспомогательные файлы создаются пользователем: например, для выполнения функционального моделирования создаётся файл (.SCF), содержащий описание начальных и текущих состояний входных сигналов (входов) и перечень выходов, для которых должны быть определены выходные сигналы. Поэтому перед началом работы над новым проектом следует создать рабочий каталог проекта, при этом имя каталога можно выбирать произвольно (т.е. имя каталога может не совпадать с именем файла проекта).
После запуска пакета открывается главное окно. В самой верхней строке содержится имя последнего проекта, с которым велась работа. Две следующие строки являются обычными для приложений Windows: строка основного меню и панель инструментов, в левой части которой расположены стандартные функции Windows (New, Open, Save, Print, Cut, Copy, Paste, Undo), а в правой части – специфические инструменты пакета, с помощью которых осуществляется запуск его основных приложений. Назначение любого инструмента можно узнать, совместив с ним указатель мыши, при этом в строке подсказки (самая нижняя строка окна) появляется текст с пояснением. Для запуска приложений можно использовать также пункты меню “MAX+PLUS II” (в основном меню).
Следует отметить, что устройства, синтезируемые при выполнении лабораторных работ, не являются приложениями, типичными для реализации на ПЛИС. Основное назначение ПЛИС – высокоскоростная обработка сигналов и данных в реальном времени (видео, цифровые тракты ПЧ, устройства SDH/PDH и пр.). Целью данного курса лабораторных работ является получение основных навыков проектирования устройств на ПЛИС.
Лабораторная работа №1
Цель работы:
Изучение цикла проектирования цифровых устройств в САПР “MAX+PLUS II” фирмы Altera.
Задание на лабораторную работу:
Создайте текстовый файл. Сохраните его с именем buscontrol.vhd. Введите при помощи текстового редактора системы MAX+PLUS II программу на языке VHDL устройства контроллера шины стенда:
library IEEE;
use IEEE.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
entity buscontrol is
port(
LED: in std_logic_vector (7 downto 0);
OUT1: in std_logic_vector (7 downto 0);
OUT2: in std_logic_vector (7 downto 0);
DAC: in std_logic_vector (7 downto 0);
IN1: out std_logic_vector (7 downto 0);
clk: in std_logic;
adr: out std_logic_vector (2 downto 0);
datain: in std_logic_vector (7 downto 0);
dataout: out std_logic_vector (7 downto 0);
wr: out std_logic;
rd: out std_logic);
end buscontrol;
architecture behav of buscontrol is
signal adrtemp: std_logic_vector (2 downto 0);
signal oe:std_logic;
signal tdataout: std_logic_vector (7 downto 0);
signal adrinc: std_logic;
signal wrtemp: std_logic;
signal rdtemp: std_logic;
begin
process (clk)
variable cnt: integer range 0 to 3;
begin
if (rising_edge(clk)) then
cnt := cnt + 1;
case cnt is
when 0 => case adrtemp is
when "000" => tdataout <= LED;
oe <= '1';
when "001" => tdataout <= OUT1;
oe <= '1';
when "010" => tdataout <= OUT2;
oe <= '1';
when "011" => tdataout <= DAC;
oe <= '1';
when others => tdataout <= (others => '0');
oe <= '0';
end case;
when 1 => if (adrtemp /= "101") then wrtemp <= '0';
else rdtemp <= '0';
end if;
when 2 => if (adrtemp = "101") then IN1 <= datain;
end if;
when 3 => rdtemp <= '1';
wrtemp <= '1';
end case;
end if;
end process;
adr <= adrtemp;
rd <= rdtemp;
wr <= wrtemp;
adrinc <= rdtemp and wrtemp;
process (adrinc)
begin
if (rising_edge(adrinc)) then
if (adrtemp < 5) then
adrtemp <= adrtemp + 1;
else adrtemp <= (others => '0');
end if;
end if;
end process;
process (oe, tdataout)
begin
if (oe = '1') then dataout <= tdataout;
else dataout <= (others => 'Z');
end if;
end process;
end behav;
Сделайте данный файл файлом верхнего уровня проекта:
Откомпилируйте проект. Для этого выберите иконку
на панели инструментов. Если текст программы введен правильно, компиляция должна пройти без ошибок. Помните, что компиляция выполняется для файла, являющегося файлом верхнего уровня проекта.
Отредактируйте символ проекта. Для этого закройте окно компилятора, сделайте активным окно с программой и выберите в меню File пункт Edit Symbol. После редактирования символ должен выглядеть как показано на рисунке:
Закройте все окна в системе MAX+PLUS II. Создайте новый файл, тип файла – Graphic Editor File (.gdf). Сохраните его с именем lab1.gdf.
С использованием созданного ранее символа, мегафункции LPM_CONSTANT, примитивов input, output и bidir нарисуйте схему:
Для того, чтобы поставить компонент на схему, сделайте двойной клик мышкой по пустому месту на схеме. Вызовется меню выбора элементов:
В списке Symbol Libraries необходимо выбрать библиотеку с символами, в списке Symbol Files – собственно символ. В библиотеке …\max2lib\prim находятся символы примитивов элементарных функций: логических элементов, триггеров, портов ввода-вывода и пр. Назначение этих символов, как правило, ясно из названия. Кроме того, в справочной системе MAX+PLUS II имеется сведения о каждом примитиве. В библиотеке …\max2lib\mf содержатся символы микросхем логики стандартной 74-й серии. Схемы, разработанный ранее можно переносить на платформу ПЛИС с использованием этих компонентов. Однако, применение ПЛИС подразумевает иной подход к проектированию цифровых устройств, и фирма ALTERA не рекомендует такой путь. В библиотеке \max2lib\mega_lpm находятся так называемые параметризованные мегафункции. Это некие «универсальные» компоненты, конкретные свойства которых задаются параметрами. Так, для счетчика задается разрядность входных и выходных шин, возможность предустановки, реверсирования, сброса и пр. Используя эту функцию и меняя ее параметры, можно получить практически любой счетчик. Мегафункция LPM_CONSTANT задает константу. Для этой мегафункции задается разрядность шины и значение.
Аналогично п.2 сделайте данный файл файлом верхнего уровня проекта.
Откомпилируйте проект.
Выберите для данного проекта тип ПЛИС. Для этого в меню Assign выберите пункт Device. Появится окно:
В списке Device Family выберите семейство FLEX10K, в списке Devices – ПЛИС EPF10K10TC144-3. Закройте окно выбора ПЛИС.
Назначьте сигналы физическим выводам. Для этого запустите Floorplan Editor (иконка
на панели инструментов). В открывшемся окне перетаскивайте мышью сигналы из списка на выводы:
Сигнал clk назначьте на вывод 125, ADR0 – на 43, ADR1 – на 42, ADR2 – на41, WR – на 39, RD – на 38, SEG0 – на 26, SEG1 – на 23, SEG2 – на 22, DATA0…DATA6 – на 27…33 соответственно, DATA7 – на 37.
Закройте Floorplan Editor и откомпилируйте проект еще раз.
Для загрузки конфигурации в ПЛИС запустите Programmer (иконка
на панели инструментов).
После загрузки конфигурации в третьем справа разряде индикатора стенда должен высветиться символ “E”.
Контрольные вопросы:
Перечислите основные этапы проектирования цифровых устройств на ПЛИС в САПР “MAX+PLUS II”.
Перечислите основные способы ввода данных проекта в САПР “MAX+PLUS II”.
Допускается ли иерархия в проектах в САПР “MAX+PLUS II”? Покажите на примере.
Можно ли один и тот же проект реализовать в разных типах ПЛИС?