Скачать 143.29 Kb.
|
Урок 1. ЗНАКОМСТВО С ПАКЕТОМ ACTIVE-HDL 7.1 Система автоматизированного проектирования цифровой аппаратуры Active-HDL в последние годы выдвигается на передовые позиции. Её отличает особая лёгкость и элегантность в работе. Фирма ALDEC, создатель этого программного продукта, год от года совершенствует своё детище и наделяет его новыми возможностями. Наиболее популярная версия интегрированной среды проектирования и моделирования цифровой аппаратуры Active-HDL 7.1 по многочисленным опросам пользователей и специалистов занимает лидирующие позиции в мире. Ч тобы запустить управляющую оболочку пакета, щёлкните на пиктограмме, показанной справа. При установке данного программного продукта эта иконка автоматически помещается на рабочем столе вашего компьютера. На стартовой панели Getting Started (рис.1.1) вы можете выбрать из предложенного списка и открыть существующее рабочее пространство (Open existing workspace) или создать новое (Create new workspace). Мы начнём знакомство с создания нового рабочего пространства, а потому установим переключатель в положение Create new workspace. Рис.1.1. На стартовой панели устанавливаем переключатель в положение Create new workspace – создать новое рабочее пространство Понятие «рабочее пространство» является относительно новым, к нему мы ещё вернёмся, а пока удовлетворимся простым пояснением. Это ещё одна надстройка над совокупностью обычных проектов, своего рода суперпроект или мультипроектная рабочая среда. Вы можете «держать под рукой» сразу несколько проектов и иметь быстрый доступ к их совокупному ресурсу. На второй панели New Workspace (рис.1.2) требуется напечатать имя рабочего пространства и указать место, где оно будет расположено. По умолчанию вам будет предложена папка My_Designs, находящаяся в корне того логического диска, на котором установлена система. Чтобы не делать потом лишнюю работу, убедитесь, что установлен флажок Add New Design to Workspace. Рис.1.2. Задаём имя рабочего пространства и его месторасположение на диске На третьей панели New Design Wizard (рис.1.3) по умолчанию предлагается режим Create am Empty Design with Design Flow (создать пустой проект с использованием менеджера маршрута проектирования). Это наиболее разумный вариант, в чём мы позднее убедимся. Рис.1.3. Выбираем вариант создания проекта с помощью менеджера маршрута проектирования Design Flow Manager На четвёртой панели сохраняем всё, как есть (установки по умолчанию), потому что синтез и реализация проекта не поддерживаются данным пакетом, если на вашем компьютере не установлены дополнительные программные средства. Во всяком случае, обсуждение этих вопросов не входит в планы первоначального знакомства с системой Active-HDL 7.1. На пятой панели введём имя проекта, например Lesson_1 (урок_1). Обратите внимание, синхронно с вводом имени проекта заполняется и нижнее поле, где требуется задать имя рабочей библиотеки. По умолчанию предполагается, что они будут иметь одинаковые имена, что представляется весьма разумным. На последней панели мастера New Design Wizard вы должны проверить правильность введенных данных и, если нет нужды возвращаться к уже пройденным панелям, нажать на кнопку «Готово». С этого момента собственно и начинается активная работа по созданию проекта. Она выполняется в интегрированной среде проектирования Active-HDL 7.1 (рис.1.4). В строке заголовка видно это название, а правее в круглых скобках высвечивается имя загруженного рабочего пространства и проекта: Lessons, Lesson_1. Далее следует название активной закладки – Design Flow Manager. Рис.1.4. Управляющая оболочка (Framework) системы проектирования Active-HDL 7.1 Ввод проекта В начале проектирования на экране монитора открыты всего три окна интегрированной среды Active-HDL 7.1:
На закладке Design Flow Manager изображён доступный для заданных установок маршрут проектирования. Он ограничивает наши действия тремя способами описания проекта (HDE, FSM, BDE) и последующим функциональным моделированием (functional simulation). Правда, перед моделированием потребуется ещё установка некоторых опций (options). Если мы собираемся создавать проект в текстовом формате на языке VHDL, Verilog или SystemC, то следует нажать кнопку HDE. В качестве рабочего инструмента будет вызван текстовый редактор HDE (от слов Hardware Description language Editor). Если мы хотим представить описание проекта в виде диаграммы состояний конечного автомата (Finite State Machine), то следует щёлкнуть на кнопке FSM. Однако мы собираемся рисовать схему, а потому нажмём на кнопку BDE и вызовем схемный редактор – Block Diagram Editor. Заметим, что это далеко не единственный способ начать работу. Итак, щёлкнув на кнопке BDE, мы вызовем мастер создания нового исходного файла New Source File Wizard. На первой диалоговой панели мастера нам делать нечего. Надо просто убедиться, что включён флажок Add the generated file to the design – добавить генерируемый файл к проекту (а по умолчанию он установлен), и перейти на следующую панель. На второй панели предлагается выбрать язык описания аппаратуры, на который позднее будет конвертирована наша схема. По умолчанию – это язык VHDL. Нас он вполне устраивает, поэтому оставляем всё, как есть и продвигаемся на третью панель. Здесь требуется ввести имя исходного файла, например mux2_schema (двухканальный мультиплексор), где система будет хранить схемное описание проекта. По умолчанию файл получит расширение *.bde. Имена объекта проекта (entity) и его архитектурного тела (architecture body) могут совпадать с названием файла, поэтому второе и третье поля заполнять не обязательно. На четвёртой панели мастер предлагает ввести интерфейсные порты, соответствующие входам и выходам проектируемого устройства. Мультиплексор на два входа, который мы собираемся проектировать, имеет два информационных входа D0 и D1, селекторный вход A и выход Y. Последовательно нажимая на кнопку New или клавишу Enter, введём описания портов, как показано на рис.1.5. Рис.1.5. Вводим данные об интерфейсных портах проекта Кроме имени порта необходимо указать его направление (in – входной, out – выходной, inout – двунаправленный) и тип (bit, boolean, integer, std_logic и т.д.). По умолчанию тип порта установлен как std_logic, что соответствует нашим желаниям. Щёлкните по кнопке Type, и вы убедитесь в сказанном.
В рабочей области схемного редактора видны только графические изображения портов. Схему мультиплексора ещё предстоит нарисовать. Этим мы сейчас и займёмся. Для удобства рисования схемы распахнём окно редактора Block Diagram Editor на полный экран (горячая клавиша Alt+F9) и отыщем инструментальную панель Diagram Items - VHDL – элементы схемы VHDL (рис.1.7). При создании простой схемы нам потребуются всего три пиктограммы, отмеченные комментарием на рис.1.7. На первом шаге необходимо найти и разместить на чертеже схемы графические изображения нужных нам элементов. Чтобы увидеть «инструментальный ящик с символами», щёлкнем по иконке Show Symbols Toolbox или нажмём на горячую клавишу S (см. рис.1.7). Рис.1.7. Инструментальная панель Diagram Items - VHDL Появится диалоговая панель с одноимённым названием (рис.1.8). В режиме, заданном умолчанием, для рисования схемы доступна только одна библиотека со встроенными символами Built-in symbols. Рис.1.8. Инструментальный ящик символов Symbols Toolbox Раскрыв её содержимое, вы увидите весьма скудный набор простейших логических элементов, там нет даже триггеров. Однако для рисования схемы мультиплексора их вполне достаточно. Найдём подходящие для построения мультиплексора элементы (and2, inv, or2) и отбуксируем их один за другим на чертёж схемы (методом Drag & Drop). Чтобы сделать видимыми позиционные обозначения символов, исполним команду View Texts из меню Diagram. На открывшейся панели View Texts установим флажок NAME. Позиционные обозначения всех символов на схеме станут видимыми (рис.1.9). На втором шаге элементы схемы необходимо соединить проводниками в соответствии со структурой мультиплексора. Нажмём на панели инструментов Diagram Items кнопку Wire или на клавиатуре клавишу W. По изменившейся форме курсора станет ясно, что активизировался режим рисования проводников схемы. Рис.1.9. Размещаем на чертеже схемы логические элементы мультиплексора и визуализируем их позиционные обозначения Поместите курсор в точку, из которой вы собираетесь начать проводник, и щёлкните левой кнопкой мыши (ЛКМ). Переместите курсор в точку назначения, и опять щёлкните ЛКМ. Если проводник имеет сложную форму, придётся фиксировать каждый его сегмент (излом, угол) щелчком мыши. Существуют, конечно, и другие способы создания соединений, но мы поговорим о них на следующих уроках. Законченная схема должна выглядеть так, как показано на рис.1.10. Рис.1.10. Выполняем электрические соединения в схеме мультиплексора На третьем шаге проводникам схемы надо назначить имена (рис.1.11). Следует правда заметить, что в простых схемах, как наша, этот шаг можно вообще пропустить. Действительно, цепи, подключённые к терминалам (входным и выходным портам), автоматически получают те же самые названия, что и соответствующий порт. А внутренние проводники система именует по шаблону, например NET9, NET13, NET17…, так что у них тоже есть системные имена. Рис.1.11. Проводникам схемы назначаем имена Однако если пользователь собирается контролировать сигналы на внутренних цепях, желательно присвоить им какие-то осмысленные названия, хотя бы такие F1, F2 и F3 (рис.1.11). Тогда их станет легче находить. Чтобы сделать имя видимым на экране монитора, достаточно дважды щёлкнуть на проводнике мышью, затем на открывшейся диалоговой панели Wire Properties выбрать закладку View Text и установить флажок NAME. Так же просто заменить системное имя пользовательским. Откройте диалоговую панель Wire Properties и введите в поле Segment желаемое имя. На четвёртом шаге полезно (хотя и не обязательно) выполнить электрический контроль схемы (команда Check Diagram в выпадающем меню Diagram). Эта процедура весьма полезна, если у вас остаются сомнения относительно правильности нарисованной схемы. Система не только проинформирует вас о числе ошибок и предупреждений, но и покажет те места на схеме, где они обнаружены.
Познакомиться с его содержимым можно, если щёлкнуть по иконке (рис.1.13). Ещё проще открыть этот файл, дважды щёлкнув на нём ЛКМ в окне Design Browser (рис.1.12). Сравнивая графическое и текстовое описания мультиплексора, вы без труда обнаружите их полное соответствие. Заметим, правда, что описание компонентов and2, inv и or2 представлены в данном случае в потоковой форме (особенность элементов встроенной библиотеки). library IEEE; use IEEE.std_logic_1164.all; entity mux2_schema is port(A, D0, D1 : in STD_LOGIC; Y : out STD_LOGIC); end mux2_schema; architecture mux2_schema of mux2_schema is signal F1, F2, F3 : STD_LOGIC; begin F2 <= F1 and D0; F3 <= A and D1; F1 <= not(A); Y <= F3 or F2; end mux2_schema; Рис.1.13. Автоматически сгенерированное VHDL - описание мультиплексора mux2_schema Закончив создание схемы, обратим свой взор в окно просмотра проекта Design Browser (рис.1.12). Там слева от имени схемного файла по-прежнему красуется подозрительный знак вопроса . Значит что-то не так. Вероятно, вы уже догадываетесь, в чём причина: система подсказывает, что созданный проект требуется откомпилировать. Щёлкнем на этой строке ПКМ и исполним команду Compile (она дублируется горячей клавишей F11 и иконкой на инструментальной панели). Если компиляция пройдёт успешно, то вместо знака «вопрос» появится зелёная «галочка»: . Задание диаграмм входных сигналов Мысленно поздравив себя с первым успехом, двинемся дальше. Предстоит ещё задать временные диаграммы на входах мультиплексора, без них моделятор отказывается работать. Временные диаграммы внешних воздействий задаются в специальном окне редактора сигналов Waveform Editor, который вызывается щелчком по пиктограмме New Waveform на инструментальной панели Standard. Дословно Waveform переводится как «форма волны», «сигнал». Отсюда и название – редактор сигналов или сигнальный редактор. При запуске редактор Waveform Editor открывает новую закладку поверх ранее нарисованной схемы, которая состоит из двух частей. Левая часть предназначена для ввода сигналов, правая – для показа временных диаграмм. Щёлкнем ПКМ в левой части окна и выберем в контекстном меню команду Add Signals. Она дублируется также на инструментальной панели иконкой . Откроется одноимённая панель со списком всех доступных сигналов: D0, D1, A, Y, F1, F2, F3. С помощью клавиш Shift или Ctrl сформируем список сигналов, которые мы хотим наблюдать на экране монитора, например D0, D1, A и Y. Нажатием кнопки Add перенесём выбранные сигналы в окно редактора Waveform Editor (рис.1.14) и закроем панель Add Signals (кнопка Close). Выделим один или несколько программируемых сигналов и щелчком на иконке Stimulators исполним одноимённую команду Stimulators. С тем же успехом её можно выполнить из контекстного меню. Для входных сигналов D0 D1 и A зададим временные диаграммы. В пакете есть много различных способов выполнить такую работу. Подробно мы познакомимся с ними на втором уроке. А сейчас воспользуемся одним из самых простых стимуляторов типа Clock. Рис.1.14. Задаём список сигналов, которые система будет выводить на экран монитора Откроется диалоговая панель Stimulators (рис.1.15), где и предстоит немного поработать. В окне Signals выделим первый сигнал D0, в окне Type определим для него тип стимулятора Clock и в правом окне зададим частоту (Frequency) 10MHz. Нажмём кнопку Apply, и, не закрывая панель, перейдём к программированию второго сигнала D1. Рис.1.15. Программируем внешние воздействия D0, D1 и A Для него зададим частоту вдвое меньше – 5MHz. Наконец, для третьего входа A назначим частоту 1MHz. Покончив с описанием входных сигналов, закроем панель Stimulators (кнопка Close). Моделирование проекта
Имеется несколько способов запустить схему на моделирование (рис.1.17). Проще всего исполнить команду Run For из меню Simulation. Она дублируется кнопкой и горячей клавишей F5. Имитатор, получив такую команду, продвинет моделирование на один шаг, величина которого задаётся в соседнем окне справа от кнопки . Рис.1.17. Кнопки управления процессом моделирования По умолчанию шаг равен 100 ns, но его всегда можно поменять. Повторное исполнение этой команды продвинет время моделирования ещё на один шаг и т.д. В паузе перед очередным шагом вы можете изменить не только его длительность, но и перепрограммировать параметры входных сигналов. Такое пошаговое моделирование весьма полезно при отладке схемы. Если вы предпочитаете выполнить непрерывное моделирование на всём интересующем вас интервале модельного времени, то можно воспользоваться командой Run Until…из меню Simulation. Она дублируется кнопкой на инструментальной панели (рис.1.17). При этом откроется окно с одноимённым названием (рис.1.18), где и следует задать желаемое время, например 1.2us (1.2 микросекунды). Рис.18. Задаём финальное время моделирования На инструментальной панели есть ещё одна «весьма опасная» команда Run (Alt+F5). Она запускает моделирование на неопределённое время, пока не будут обработаны все планируемые события (transactions) в схеме. Если хотя бы один входной сигнал описан как периодический (Clock), события на входах будут генерироваться бесконечно, и имитатор не остановится, до тех пор, пока время моделирования не достигнет максимального значения TIME’HIGH. Лучший выход из создавшейся ситуации – воспользоваться командой принудительного останова, щёлкнув на иконке Break , или исполнить команду Restart . Возможно, по этой причине команда Run отсутствовала на инструментальной панели более ранних версий пакета. Заметим, что управлять моделированием можно не только из графического интерфейса пользователя, но и из окна консоли Console. Наберите в командной строке следующий текст «run 1200ns» и нажмите Enter. Моделирование сразу продвинется на заданное время (рис.1.19). Рис.1.19. Результаты моделирования мультиплексора mux2_schema Из временных диаграмм видно, что пока на селекторном входе A низкий уровень, на выход передаётся входной сигнал D0. Если A принимает значение ‘1’, на выходе появляется сигнал D1. Именно так и должен работать мультиплексор (коммутатор) на два входа. Сохраним результаты моделирования. С этой целью щёлкнем ПКМ на названии закладки с временными диаграммами и исполним команду Save. Редактор предложит сохранить результаты в файле Waveform Editor 1.awf. Лучше отказаться от такого предложения и ввести более информативное имя сигнального файла, например mux2_schema.awf. В среде Active-HDL 7.1 результаты моделирования можно представить не только в графической, но и в табличной форме. Вернитесь на начало моделирования (команда Restart) и исполните команду New List (иконка ). Откроется новая закладка list1, на которую надо поместить интересующие нас сигналы D0, D1, A и Y (команда Add Signals или кнопка ). Выполнив несколько шагов моделирования, вы увидите результаты в табличной форме (рис.1.20). Рис.1.20. Табличная форма представления результатов моделирования (фрагмент) Просматривая различные закладки (схему, временные диаграммы, таблицу), вы обнаружите, что они синхронно заполняются данными по мере того, как продвигается моделирование в пошаговом режиме. Ну, вот и всё. Как говорится, лиха беда начало. Кажется, оно у нас получилось вполне успешным. Теперь попробуйте самостоятельно проделать ту же самую работу ещё раз, выбрав в качестве объекта проектирования любую схему, которая вам понравится. |