Московский Государственный Технический Университет
им. Н.Э.Баумана


Кафедра САПР (РК-6)


Лабораторная работа

"Использование языка VHDL для моделирования цифровых устройств на регистровом уровне"

Методические указания по курсу "Разработка САПР"

Норенков И.П., Федорук Е.В.

Цель работы: освоение языка VHDL для использования в задачах описания и анализа дискретных устройств.

Теоретическая часть


Некоторые сведения о системе проектирования электронных схем и печатных плат
Electric VLSI Design System

В данной лабораторной работе используется система проектирования электронных схем и печатных плат Electric VLSI Design System, которая является зарегистрированной торговой маркой компании Static Free Software, США, распространяется по лицензии GNU General Public License и является бесплатным программным продуктом.

Система Electric позволяет разрабатывать схемы различной сложности, начиная с простых принципиальных схем логических элементов и заканчивая топологиями и многослойными печатными платами. Система Electric имеет большой набор инструментов, включая программы контроля проектных норм, симуляторы, маршрутизаторы, средства разработки технологий и т.д. Система Electric имеет средство контроля связей в схеме, которое делает возможным нисходящее проектирование, гарантируя надежность и правильность соединений.

Данная лабораторная работа реализуется в операционной системе Linux (cистема Electric может работать и под другими операционными системами).

Использование мыши в cистеме Electric ( в операционной системе Linux )

Кнопка мыши - Действие

left - выбор объекта
shift + left - инвертированный выбор (убирает выделение с уже выбранных объектов и добавляет, если объект не был выбран до этого)
ctrl + left - дополнительный выбор (добавляет новый объект в набор выбранных, если нужно выбрать несколько объектов)
shift + ctrl + left - инвертированный дополнительный выбор
alt + left - специальный выбор (позволяет работать с "трудновыбираемыми" объектами)
shift + alt + left - инвертированный специальный выбор
shift + ctrl +alt + left - инвертированный специальный дополнительный выбор
двойное нажатие left - получение информация об объекте
right - создание или редактирование
alt + right - выбор области (обозначить прямоугольную область)
shift + alt + right - зум области (обозначить прямоугольную область и увеличить ее изображение)

При входе в систему Electric появляется главное окно, имеющее следующий вид.

Слева от этого окна располагается панель компонентов (Components), вид которой соответствует выбранной в данный момент технологии проектирования. Технологию проектирования можно изменить, выбрав в меню Technology главного окна пункт Change current Technology. В данной лабораторной работе будет использоваться технология schematic, digital.

Снизу от главного окна располагается окно сообщений системы (Electric Messages), в котором помещаются сообщения об ошибках, предупреждения, ответы на запросы.

Пользователь системы Electric создает графическое изображение моделируемой схемы. Система Electric автоматически генерирует VHDL - код для этой схемы. Затем можно выполнить моделирование работы схемы, выбрав в меню Tools главного окна пункт Simulation (Built in)(Simulate).

Практическая часть

Пусть необходимо спроектировать счетчик по модулю 10, построенный на JK-триггерах с запрещающими связями.

Логическая схема счетчика

В ходе лабораторной работы необходимо подготовить графическое изображение логической схемы счетчика, получить VHDL - код и выполнить моделирование для этой схемы, добиваясь правильной работы счетчика.

В этом счетчике используются JK-триггеры, логическая схема которых выглядить следующим образом:

Запустите систему Electric.
Для этого надо загрузить операционную систему Linux (password: demos).
Зайти в систему под следующими параметрами :

login: electric
password: electric

Далее дать следующие команды:

startx
electric &

После запуска появится начальное окно системы Electric - About Electric.

В этом окне выберите название страны Russia и нажмите электронную кнопку <Ok> .После этого появятся главное окно системы Electric, окно компонентов и окно ошибок. Можно начинать создавать схему счетчика.

Сначала необходимо определить библиотеку, с которой вы будете работать в процессе моделирования. Для этого надо использовать меню File главного окна. Для создания новой библиотеки выберите пункт New Library и назовите ее, например, TestLib.

По умолчанию в системе Electric установлена технология проектирования schematic-analog. Так как в данной работе проектируется устройство на цифровых элементах, необходимо изменить технологию. Для этого в меню главного окна Technology выбирается пункт Change Current Technology, в котором определяется технология schematic, digital. Панель компонентов теперь представлена набором логических элементов. Подведя курсор к любому из значков панели, в строке информации (нижняя строка главного окна) можно прочесть название каждого значка. Ознакомьтесь со всеми элементам панели компонентов. Для создания логической схемы счетчика по модулю 10 вам потребуются такие элементы панели компонентов как элемент И (And) и элемент "узел" (Wire-Pin).

Основной структурной единицей для построения схемы является ячейка - Cell. В состав счетчика по модулю 10 входят JK-триггеры и элементы 2И.

Для JK-триггера надо создать новую ячейку. Для этого используется в меню Cells главного окна пункт Edit - New Cell. В появившемся окне New Cell Creation определяется имя новой ячейки, например, trigger, и ее вид (Cell view) - schematic.

Элемент И панели компонентов может иметь любое количество входов и быть прямым или инверсным, что определяется в момент создания связей между элементами.

Для построения схемы JK-триггера используются элементы 3И-НЕ (and) и элемент "узел" (Wire-Pin). Разместите в главном окне необходимое количество этих элементов. Для этого выделите необходимый элемент в окне компонентов, нажав левую кнопку мыши. Затем переместите курсор в нужное место главного окна и подтвердите выбор положения левой кнопкой мыши. Если изображение элемента слишком большое или маленькое, можно воспользоваться пунктами Zoom In или Zoom Out меню Windows главного окна. Для копирования элементов можно использовать возможности редактирования (меню Edit главного окна).

После того, как размещены все необходимые элементы, необходимо установить связи между ними. Для этого курсор устанавливается в начало линии связи и подтверждается левой кнопкой мыши, затем курсор устанавливается в место расположения конца линии связи и подтверждается правой кнопкой мыши. Линию связи можно сделать ломонной. Для этого после определения начала линии связи левой кнопкой мыши, проводится линия связи при постоянно нажатой правой кнопке. В месте изгиба линии правая кнопка отпускается, а затем опять нажимается для продолжения линии в нужном направлении.

После того, как размещены все связи между элементами, надо инвертировать выходы элементов 3И-НЕ. Для этого выделяется выход элемента И (или связь, соответствующая выходу) и нажимаются <Ctrl>+T.

Проверьте правильность соединения всех элементов. Это можно сделать, выделив любой узел. При этом пунктиром выделяеся вся цепь, связанная с этим узлом.

Для того, чтобы созданную схему можно было использовать как элемент в схеме счетка, надо определить внешние узлы - экспорты. Для создания внешнего узла выбирается необходимый узел. Затем в главном окне в меню Export выбирается пункт Create Export. В появившемся окне Create Export on Highlighted Node введите имя внешнего узла и его тип (input или output).

Воспользовавшись меню View главного окна, создайте "икону" для триггера (Make Icon View). Если расположение входов и выходов для триггера вас не устраивает, можете изменить его.

Схема триггера должна выглядеть следующим образом:

Сохраните библиотеку, выбрав в меню File главного окна пункт Save Library.

Можно проверить правильность работы созданного триггера. Для этого в главном окне выбирается режим Tools -> Simulation (Built-in) ->Simulate. Если схема была создана без ошибок, то создается VHDL-код для данной схемы и появляется окно временных диаграмм.

VHDL-код для триггера имеет следующий вид:

Окно временных диаграмм для триггера имеет следующий вид:


Если окно диаграмм не открылось, смотрите сообщения системы в окне сообщений.

Теперь создайте новую ячейку - счетчик по модулю 10 - аналогично тому, как вы создавали ячейку для триггера. Для того, чтобы использовать только что созданный триггер, используйте команду Inst. окна компанентов. Выбирите Trigger ->Trigger{sch}. Далее можно использовать триггер как стандартный элемент окна компанентов.

После того, как вы подготовили схему счетчика, проверьте правильность соединений и определите внешние выводы счетчика, дав им, например, имена clk, one, preset, reset, q1, q2, q3, q4.

Схема счетчика должна выглядеть следующим образом:

Проверьте правильность соединений в схеме счетчика. Для этого выделите каждый элемент . На схеме пунктирной линией выделяются все связи входов или выходов выбранного элемента.

VHDL-код для счетчика имеет следующий вид:

Выполните моделирование проектируемого счетчика (режим Tools -> Simulation (Built-in) ->Simulate). Если схема счетчика подготовлена без ошибок, то появится окно временных диаграмм.

В этом окне присутствуют строки с именами созданных внешних узлов схемы, а также некоторых внутренних узлов. При необходимости можно удалить конкретную диаграмму, выделив имя узла и нажав Delete.

На диаграмме белые вертикальные линии определяют временную границу моделирования (линия с крестом) и текущий момент. Линию текущего момента можно двигать курсором.

Для выполнения моделирования схемы надо определить входные сигналы.

Для определения сигнала CLC надо выбрать соответствующую строку временных диаграмм и нажать C. В появившемся окне Clock Specification

выберите Period для определения периодического сигнала и задайте значение 50e-9.

Для определения сигнала RESET используется также команда C, но форма сигнала определяется как Custom (Low - 50t-9, High -1).

Сигналы ONE и PRESET можно задать постоянными, равными "1".

Проанализируйте полученные временные диаграммы работы счетчика по модулю 10. Добейтесь правильной работы счетчика.

Контрольные вопросы

  1. Каково назначение языка VHDL?
  2. Из каких частей состоит описание схемы на языке VHDL?
  3. Каково назначение части описания схемы, называемой сущностью (entity)?
  4. Каково назначение части описания схемы, называемой архитектурным телом?
  5. Чем отличаются структурное и поведенческое описания сущностей?
  6. Какие операторы применяются в языке VHDL?
  7. Какой метод моделирования используется в языке VHDL?

Литература

  1. Армстронг Дж. Р. Моделирование цифровых систем на языке VHDL/Пер. с англ. - М.:Мир, 1992.
  2. Бибило П.Н. Основы языка VHDL. - М.:Солон-Р, 2002.
  3. Норенков И. П. Основы автоматизированного проектирования. - М.:МГТУ им. Н.Э.Баумана, 2002.
  4. IEEE Standard VHDL Lanquaqe Reference Manual, IEEE Std 1076-1993.