Вы находитесь на странице: 1из 55

ЛАБОРАТОРНАЯ РАБОТА №1

«ЗНАКОМСТВО С САПР Quartus II»


Цель работы: получить знания о системе автоматизированного проектирования
(САПР) Quartus II и умения проектировать на ней цифровые устройства (ЦУ).

ПОСТАНОВКА ЗАДАЧИ
Изучить назначение, возможности, процесс инсталляции, интерфейс пользователя
САПР, технологию создания проекта, методы описания цифрового устройства и
моделирования его работы в САПР.
В результате выполнения данной лабораторной работы студент должен по заданным
исходным данным (24 варианта задания) создать новый проект, синтезировать схему
устройства и промоделировать его работу.
Лабораторная работа рассчитана на 2–4 ч.
МЕТОДИЧЕКИЕ УКАЗАНИЯ
Назначение и возможности САПР
Профессиональная САПР Quartus II предназначена для проектирования ЦУ с
высокой степенью интеграции, включая разработку законченных систем на одном
программируемом кристалле ПЛИС (SOPC – System-on-aprogrammable-chip).
При работе с микросхемами программируемой логики фирмы Altera основным
инструментом проектирования ЦУ является САПР Quartus II. Данная САПР
поддерживает все этапы проектирования: создание проекта, компиляция, верификация
(моделирование) и программирование ПЛИС.
САПР имеет Tutorial (самоучитель), который устанавливается при инсталляции
пакета. Tutorial состоит из занятий, в ходе которых обучаемый проходит весь цикл
проектирования от ввода проекта до программирования микросхем. При инсталляции
также устанавливаются файлы, описывающие проект так, что в ходе изучения Tutorial
можно пропускать отдельные занятия и использовать готовые файлы. Например,
можно пропустить “Ввод проекта” и перейти к разделу “Компиляция проекта”,
используя готовые файлы.
Основные возможности САПР Quartus II:
различные способы ввода поведенческих структурных описаний проекта;
интегрированные средства помощи для создания сложных проектов Mega Wizard &
SOPC;
система синтеза;
система размещения внутренних ресурсов и разводки ПЛИС;
система моделирования;
система временного анализа и анализа потребляемой энергии;
система программирования ПЛИС;
средства оптимизации быстродействия LogicLock;
система интеграции с другими САПР;
система проектирования блоков цифровой обработки сигналов (DSP);
интегрированные средства разработки ПО для микроЭВМ;
поддержка использования IP-модулей;
поддержка ОС – Windows, Solaris, HPUS, Linux.
2
САПР предоставляет следующие способы ввода описания проекта:
в рамках пакета Quartus II:
1) текстовый ввод (языки описания аппаратуры VHDL, AHDL, Verilog);
2) редактор памяти (файлы Hex, Mif);
3) схемный ввод.
возможность ввода проекта в других САПР (через EDIF, HDL, VQM);
возможность использования мегафункций и IP-модулей;
смешанный способ.
Возможности текстового ввода описания проекта:
нумерация линий;
использование заготовок языковых конструкций;
отображение ключевых слов цветом;
выбор используемого языка:
1) AHDL (Altera Hardware Design Language), расширение *.tdf;
2) VHDL (Verilog Hardware Design Language), расширение *.vhd;
3) Verilog расширение *.v.
При использовании схемного ввода описания проекта могут использоваться:
простейшие логические элементы;
параметризируемые модули (LPM модули);
мега-функции Altera;
ранее созданные компоненты (текстовым и др. способами).
Установка САПР Quartus ii на ПК
САПР Quartus II может быть установлена на ПК с ОС Microsoft Windows XP/Vista,
Solaris, HPUS и Linux. Установка данной САПР на ПК ничем не отличается от
установки обычных Windows-приложений. Необходимо лишь отметить, что при
инсталляции следует придерживаться настроек предлагаемых по умолчанию.
Интерфейс пользователя
САПР Quartus II обладает простым и дружественным интерфейсом пользователя
(см. рис. 1). Основными элементами интерфейса являются:
1) рабочая панель используется для отображения и редактирования схемных и
текстовых описаний проекта, временных диаграмм, вывода отчетов симуляции и т.п.;
2) панель инструментов содержит основные инструменты САПР по работе с
файлами и проектом (компилятор, симулятор и т.д.);
3) главное меню;
4) окно вывода сообщений предназначено для вывода сообщений компилятора,
симулятора и другой подобной информации;
5) навигатор проекта содержит три вкладки:
Hierarchy (иерархия проекта);
Files (список файлов проекта);
Design Units (список модулей, использованных в проекте).
3

Рисунок 1. Интерфейс пользователя САПР Quartus II

Создание проекта
Для создания нового проекта необходимо выбрать в меню File пункт New Project
Wizard… – мастер создания новых проектов. В открывшемся окне нажимаем кнопку
Next и попадаем в окно для задания текущей директории, имени проекта и имени
главного файла проекта. Заполняем три строки, как показано на рис. 2. и нажимаем
кнопку Finish для подтверждения создания проекта.

Рисунок 2. Окно мастера создания нового проекта


4
В данном случае текущий проект назван Tutorial и создана директория по адресу
С:\altera\projects\Tutorial. В данной директории будут располагаться все файлы
вашего проекта.
После создания нового проекта произведем создание нового файла проекта. В
закладке меню File выбираем пункт New…. В открывшемся диалоговом окне (см. рис.
3) мы видим список доступных типов файла.
Как уже отмечалось ранее, основными методами ввода описания проекта являются
текстовый и схемный ввод. В списке Design Files (файлы разработки устройств)
текстовому методу ввода соответствуют:
AHDL File – файл с описанием проекта на языке AHDL;
Verilog HDL File – файл с описанием на языке Verilog;
VHDL File – файл с описанием на языке VHDL.

Рисунок 3. Окно выбора типа файла


Для схемного ввода проекта используется Block Diagram/Schematic File
(описание проекта в виде блок-диаграмм выделено синим цветом на рис. 3). Кроме
того, с помощью EDIF File (файл Electronic Design Interchange Format) может быть
произведен ввод описания проекта из другой САПР.
При выполнении лабораторных работ дисциплины “Методы проектирования систем
логического управления” вам понадобится только схемный метод ввода описания
проекта. Поэтому остановимся на данном методе подробнее.
Выберем пункт Block Diagram/Schematic File и нажмем кнопку OK. На рабочей
панели САПР Quartus II откроется окно схемного редактора с файлом Block1.bdf (см.
рис. 4), в котором мы введем схемное описание нашего тестового проекта.
После создания файла проекта становится активной панель инструментов
расположенная слева от рабочей области файла и представленная на рис. 4. На панели
инструментов находятся средства для создания графической схемы проекта (схемного
описания).
5
Инструмент Symbol Tool изображен на рис. 4 в верхнем левом углу панели
инструментов, нажмем на иконку левым щелчком мыши, в результате нам откроется
окно Symbol (см. рис. 5). В левом верхнем углу представлен список стандартных
библиотек основных типов элементов и модулей САПР Quartus II, применяемых на
практике.

Рисунок 4. Редактор схем и окно выбора символа

Рисунок 5. Окно выбора символа


В САПР Quartus II интегрированы следующие стандартные библиотеки элементов и
модулей:
megafunctions – множество мегафункций, в том числе библиотека
6
параметризированных модулей (LPM). Сюда например относятся различные модули
памяти (ПЗУ, ОЗУ), сумматоры, регистры, умножители и т.д;
others – логические элементы, унаследованные от САПР MaxPlus II
(предшественник САПР Quartus II);
primitives – простейшие логические элементы (конъюнкторы, дизъюнкторы,
триггеры, буферы, входы, выходы и т.п.).
Мегафункции представляют собой заранее подготовленные параметризованные
модули, описанные на AHDL или VHDL. Параметром мегафункции может быть, к
примеру, разрядность регистра или памяти. Введем тестовую схему в открытом
редакторе. Как показано на рис. 5 из библиотеки выберем primitives/pin/input для
задания входных выводов схемы. Изображение компонента (символ) отображается в
правом окне. Нажмем кнопку OK и приступим к непосредственному расположению
выбранного компонента.
Для размещения компонента необходимо переместить его образ в нужное место и
нажать левую кнопку мыши.
Повторно, воспользовавшись инструментом Symbol Tool, установим кроме
компонента входа input, компонент выхода output, и, например, компонент
двухвходового конъюнктора (AND2) из библиотеки primitives/logic/and2.
Наименования компонент можно напрямую указывать в строке Name окна Symbol,
например указание имени output приведет к непосредственному появлению в рабочей
области компонента выхода.
Произведя установку требуемого числа элементов, мы получаем следующую
схему (см. рис. 6). Сохраним данную схему под именем нашего проекта (команда File-
>Save As…).

Рисунок 6. Схема с размещенными компонентами


После размещения компонентов произведем соединение их входов и выходов,
поместив курсор мыши на один из входов элемента 2-И – необходимо нажать и
удерживать левую кнопку мыши, перемещая курсов на соединяемый выход.
Аналогичным образом соединим остальные выводы компонентов.
Для соединения выводов компонентов на панели инструментов имеется 3
инструмента (см. рис. 7).
7

Рисунок 7. Инструменты для соединения выводов компонентов


В результате получаем проектируемую схему (рис. 8).

Рисунок 8. Соединения компонентов


Для упрощения описания входов и выходов произведѐм их переименование. Для
этого произведем вначале двойной щелчок левой кнопкой мыши по одному из
элементов input. В результате откроется окно изображенное на рис. 9,
представляющее свойства выбранного вывода. В закладке General содержимое строки
Pin name(s) изменим на A, таким образом, присвоив имя A первому вводу. Строка
Default value представляет собой значение логического сигнала на выводе по
умолчанию, в данном случае VСС, т.е. вывод “подтянут” к плюсу питания. Можно
изменить значение по умолчанию на GND.
8

Рисунок9. Свойства вывода


Подобным образом изменим имя второго входного вывода на B, а выходного на
C. Изменения имени сразу же будут отображены на схеме. После изменений имен
выводов наша схема готова для компиляции проекта.
Компиляция проекта
Перед осуществлением компиляции проекта необходимо произвести выбор типа
кристалла, на котором планируется реализовывать проект ЦУ. Для этого выбираем
пункт Device… из главного меню Assignments. В результате должно появиться
следующее окно выбора устройства (см. рис. 10).
9
Рисунок 10. Окно выбора устройства
Для гарантии успешной компиляции проекта рекомендуется выбирать ПЛИС с
максимальными характеристиками (количеством логических элементов, памятью и
др.). В случае выбора ПЛИС с количеством логических элементов меньшим, чем
необходимо проекту, проект не будет скомпилирован.
Компиляция проекта осуществляется командой Processing->
Start Compilation. Ход компиляции отображается в окне статуса компиляции (см. рис.
11).

Рисунок 11. Компиляция проекта


Сообщения компилятора (ошибки и предупреждения) отображаются в окне
вывода сообщений в нижней части интерфейса САПР. В случае отсутствия ошибок
соединений компонентов (нет неподключенных выводов и т.п.) и нет нарушения других
правил проектирования, компиляция будет завершена успешно.
Создание пользовательских модулей
Любое текстовое и схемное описание проекта может быть использовано в
последующих разработках. Для этого необходимо создать символ (УГО) полученного
описания (модуля).
Для создания символа в окне Project Navigator на закладке Files выберите файл
проекта, в котором находится ваша функциональная схема или текстовое описание,
затем выполните команду File->Create / Update->Create Symbol Files For Current
File.
10
В результате в окне выбора символа вы сможете увидеть символ созданного
модуля. Символ ранее собранной схемы вы можете увидеть на рис. 12.

Рисунок 12. Символ тестовой схемы


Далее если вам потребуется ранее разработанный модуль, вы должны будете
скопировать файл его схемного (*.bdf) или текстового (*.tdf) описания вместе с файлом
символа (*.bsf) в папку нового проекта и затем добавить их к нему.
Следует помнить, что копировать также необходимо все файлы модулей,
использованных при создании модуля, символ которого создавался.

Моделирование
После компиляции проекта необходимо проверить работу схемы ЦУ. Для этого
необходимо использовать временной симулятор САПР Quartus II. Покажем пример
подобного тестирования.
Прежде всего, необходимо создать и добавить к ранее созданному проекту файл
векторных диаграмм. Для этого нужно выполнить команду File->New-
>Verification/Debugging Files->Vector Waveform File.
Далее в редакторе векторных диаграмм необходимо заполнить данный файл
входами, выходами и двунаправленными выводами. Редактор векторных диаграмм
изображен на рис. 13.
11

Рисунок 13. Исходный вид редактора векторных диаграмм


Окно разделено на две части. Слева находится список выводов и панель
инструментов для редактирования временных диаграмм. Справа расположено поле
временных диаграмм.
Сохраните файл. Теперь добавьте входы и выходы схемы. Для этого правой
кнопкой мыши кликните на поле списка выводов и выполните команду Insert->Insert
Node or Bus…, в появившемся окне (рис. 14) нажмите кнопку Node Finder….

Рисунок 14. Окно вставки вывода или шины


В результате вы перейдете к окну поиска выводов (см. рис. 15).
12

Рисунок 15. Окно поиска выводов


В поле Filter выберите тип input и нажмите кнопку List. В левой части окна
появится список всех входов проекта. Для добавления полученного списка входов в
файл векторных диаграмм нажмите кнопку >>. Аналогичным образом добавьте все
выводы типов output (выход) и bidirectional (двунаправленный). В завершение
нажмите кнопку ОК.
Также установите шаг временной сетки, выполнив команду Edit->Grid Size… (рис.
16). Для удобства отображения результатов тестирования рекомендуется выбрать шаг
сетки равный 100 нс.

Рисунок 16. Настройки шага временной сетки

Длительность моделирования можно установить через пункт главного меню Edit-


>End Time… . На рис. 17 установлено предельное время моделирования 10
микросекунд.
13
Рисунок 17. Окно установки предельного времени моделирования
В результате вы должны получить файл для временного тестирования подобный
следующему (рис. 18).

Рисунок 18. Вид редактора векторных диаграмм после добавления выводов проекта
После подготовки файла векторных диаграмм можно настроить отображение
значений каждого из выводов в правом поле временных диаграмм. Для этого, кликнув
правой кнопкой мыши по выводу, выберите пункт Properties. Вы увидите следующее
окно редактирования свойств отображения вывода (см. рис. 19).

Рисунок 19. Окно редактирования свойств отображения вывода


В данном окне вы можете выбрать, в какой системе счисления будут отображаться
значения выводов.
Далее с помощью панели инструментов расположенной слева окна редактора
временных диаграмм производится задание значений входов. Значения выходов
соответствующих заданным входам будут получены в результате тестирования.
После установки входных сигналов необходимо запустить процесс
моделирования. С помощью кнопки Start Simulation ) на панели
( инструментов.
После окончания симуляции создаѐтся файл Simulation Report (см. рис. 20).
14
На рис. 20 показан результат моделирования сигналов на входах А и В, которые
были заданы на рис. 18. На входы А и В поданы двоичные последовательности: 00, 10,
00, 01, 00, 11. Результат на выходе С соответствует выражению А & В: 0, 0, 0, 0, 0, 1.

Рисунок 20. Окно результатов моделирования

ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ


После изучения теоретического материала, необходимо создать новый проект в
САПР, синтезировать схему ЦУ, в соответствии с вариантом задания (табл. 1), и
промоделировать его работу. Номер варианта задания выдаѐт преподаватель.

Таблица 1. Варианты задания

СОДЕРЖАНИЕ ОТЧЁТА
Отчет по лабораторной работе должен содержать следующее:
1. Цель работы.
2. Задание на лабораторную работу со своим вариантом.
3. Функциональную схему.
4. Результат моделирования с описанием.
5. Таблица функционирования схемы ЦУ.
6. Выводы по работе в целом.
15
ЛАБОРАТОРНАЯ РАБОТА №2
ПРОЕКТИРОВАНИЕ М УЛЬТИПЛЕКСО РОВ

Цель: проектирование мультиплексоров для ПЛИС в базисе примитивов


4.1. Мультиплексор
Мультиплексор представляют собой логическую схему, имеющую n
сигнальных входов, m входов адреса и один выход Q.
D1
D2
... MUX
Dn
QQ
Q
К1
К2
...
Кm
Обычно для мультиплексоров выполняется соотношение: n=2m
Алгоритм работы мультиплексора достаточно прост: На выход Q передается
значение сигнала с входа, номер которого определяется адресом. Например, для
восьмивходового мультиплексора если входной адрес равен пяти (К1=1, К2=0, К3=1) то
Q=D5.
Наиболее просто мультиплексоры реализуются по пирамидальной схеме, при
которой мультиплексоры большой размерности строятся из стандартного «кирпичика» -
мультиплексора 2 1. Схема такого элементарного мультиплексора приведена на
рисунке 4.1.1.

Рисунок 4.1.1– Мультиплексор 2 1

Используя модуль мультиплексора 2 1 можно набирать схемы большой


размерности. Пример построения мультиплексора 8 1 приведен на рис. 4.2
16
Рисунок 4.1.2 – Схема мультиплексора 4 1

При моделировании работы мультиплексора нужно убедиться, что сигнал на выход


проходит с нужного входа. Пример временной диаграммы, демонстрирующей такую
работу, приведен на рис. 4.1.3

Рисунок 4.1.3 – Временная диаграмма работы мультиплексора

ЗАДАНИЕ НА ЛАБОРАТОРНУЮ РАБОТУ


1. Используя готовый мультиплексор MUX41 (микросхема 74153), как исходный
построить схему мультиплексора согласно варианту задания.

Рисунок 4.1.4 – Схема мультиплексора 4x1

2. Используя готовый дешифратор 74138 (тип - 1) или 74139 (тип - 2), как исходная
составляющая построить схему мультиплексора согласно варианту задания.
3. Используя только простые логические элементы построить схему
мультиплексора согласно варианту задания.

Таблица 1 – Варианты заданий


Варианты 1 2 3 4 5 6 7 8 9 10
17
Число входов 5 6 7 8 9 8 7 6 8 7
Тип дешифратора 1 2 1 2 1 2 1 2 1 2

Поочередно устанавливая все возможные кодовые комбинации на адресных


входах A0, А1 и А2 определите номера коммутируемых каналов. Номер коммутируемого
канала определяется путем поочерѐдного подключения к входам X0, X2, X3, X4 уровня
логической единицы и наблюдения за выходом Y. Заполните таблицу 5.

Таблица 5. Таблица истинности, описывающая работу мультиплексора

А2 A1 А0 Номер коммутируемого канала


0 0 0
0 0 1
0 1 0
0 1 1
и так далее – до заданного варианта

4. Сравнить полученные результаты с исходными данными (составленной


таблицей истинности для мультиплексора).
5. Дать пояснения относительно задержки времени срабатывания схемы и гонок в
ней.
Порядок построения схемы и выполнения проверки еѐ работы в системе Quartus II
смотри в методических указаниях к лабораторной работе №1.
По результатам работы оформить отчет.

Содержание отчета

1. Цель работы
2. Схемы исследования мультиплексора при разных построениях.
3. Таблицы истинности для каждой схемы.
4. Порядок проведения исследования.
5. Результаты наблюдения и их анализ.
6. Выводы по каждому заданию и обобщенный вывод по работе.

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

1. Принцип работы мультиплексора?


2. Как синтезировать мультиплексор с произвольным числом входов?
3. Как работает мультиплексор?
4. Изобразите таблицу истинности мультиплексора.
5. Как работает демультиплексор?
6. Как устроен, канал передачи данных с применением мультиплексом и
демультиплексора?
7. Зачем нужен дешифратор в мультиплексоре?
8. Как в лабораторной работе проводилось исследование мультиплексора?
18
Литература:
1. Угрюмов Е. П. Цифровая схемотехника. СПб, БХВ-Петербург, 2004.
2. 2. Шило В. Л. Популярные цифровые микросхемы. М, Радио и связь, 1987.
19
ЛАБОРАТОРНАЯ РАБОТА №3
ПРОЕКТИРОВАНИЕ МНОГОФУНКЦИОНАЛЬНЫХ РЕГИСТРОВ

Ц е л ь : изучить один из основных узлов цифровых схем - регистр хранения и


сдвига; овладеть методом проектирования многофункциональных регистров; получить
навыки проектирования многофункциональных регистров на VHDL; приобрести опыт
экспериментального исследования регистра.

ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ

Упорядоченную последовательность запоминающих элементов, предназначенную


для хранения информации, называют регистром. При построении регистров в качестве
запоминающих элементов обычно используют триггерные схемы. Запоминающие
элементы (разряды) регистра нумеруют любым удобным образом. Как правило, регистры
снабжают дополнительными цепями, которые позволяют выполнять различные
микрооперации: прием, выдачу, сдвиг и преобразование кодов.
Регистры имеют широкий диапазон применений. Они обеспечивают создание
управляющих, контролирующих и запоминающих схем, генераторов кодов,
последовательно-параллельных и параллельно-последовательных преобразователей
кодов, арифметических блоков и т.д. В настоящей работе рассматривается
проектирование регистров с заданным набором микроопераций.

Регистры сдвига
При реализации различных операций в арифметическом и других устройствах
компьютеров широкое применение находят различные виды сдвигов информации.
Операция сдвига, как правило, выполняется на регистрах сдвига. Регистр сдвига
представляет собой схему на триггерах, соединения между которыми, называемые
цепями сдвига, обеспечивают передачу двоичной информации от одних триггеров
регистра к другим.
Сдвиги могут выполняться на один или несколько разрядов одновременно.
Применяются сдвиги на k разрядов как в сторону младших разрядов числа (правый
сдвиг), так и в сторону старших разрядов числа (левый сдвиг). Операция сдвига кода в
регистре означает, что каждый триггер Тi этого регистра должен передать хранимую
информацию элементу Тi+k и после этого принять информацию от триггера Тi-k (сдвиг на
k разрядов).
В некоторых случаях освобождающиеся при сдвиге k старших (младших) разрядов
регистра или сохраняют прежнее состояние, или заполняются нулями, или принимают
новую информацию извне. Информация, выдвигаемая из k младших (старших) разрядов
регистра, теряется или передается во внешние цепи. В других случаях регистр, может
быть замкнут в кольцо так, что информация, выдвигаемая из младших (старших)
разрядов регистра, принимается в освобождающиеся триггеры старших (младших)
разрядов регистра.
Основная трудность, которая возникает при построении регистров сдвига, состоит в
том, что при выполнении сдвига каждый запоминающий элемент (разряд) должен
одновременно и выдавать информацию в следующий разряд и принимать новую
информацию из предыдущего разряда. Поэтому при построении регистров сдвига
20
используют синхронные триггеры с динамическим управлением записью либо с
двухступенчатой организацией. Внутренняя организация данных триггерных схем
предусматривает разделение во времени этапов приема входной информации и смены
выходного сигнала триггера. По одному фронту синхронизирующего импульса
происходит прием информации, по другому - смена выходного сигнала. Это позволяет
обойтись одним триггером на каждый разряд при построении регистров сдвига.

Регистр сдвига на один разряд


На рис. 5.1,а изображена схема четырехразрядного регистра сдвига на один разряд
вправо на D-триггерах. Для реализации функции сдвига вправо необходимо соединить
прямой выход триггера i-го разряда с входом D триггера (i+1)-го разряда. Объединенные
синхронизирующие входы всех триггеров образуют шину сдвига.
Сдвиг на один разряд выполняется подачей одного импульса на шину сдвига. В
момент поступления импульса значения сигналов на входе D каждого триггера
определяют его переход в новое состояние. Это новое состояние каждый триггер
принимает после окончания синхроимпульса (данный триггер переключается по заднему
фронту синхроимпульса). На рис. 5.1,б приведена временная диаграмма, поясняющая
работу регистра сдвига.

Рисунок 5.1. Регистр сдвига (а) и диаграмма его работы (б)

Последовательный входной сигнал DП0 - это новый бит, который «вдвигается» с


одного конца на данном такте. Этот бит появляется на последовательном выходе Q3
спустя 4 такта и теряется на следующем такте (см. рис. 5.1). Таким образом, n-разрядный
регистр сдвига с последовательным вводом и последовательным выводом можно
использовать для задержки сигнала на п тактов.
Если у регистра сдвига с последовательным вводом выведены наружу выходы всех
триггеров и они доступны для других схем (см. рис. 5.1), то таким регистром можно
воспользоваться для выполнения преобразования последовательного кода в
параллельный.

Регистр сдвига на k разрядов


Если регистр выполняет микрооперацию сдвига на один разряд, то для сдвига кода
на k разрядов необходимо подать k импульсов сдвига. Для уменьшения времени,
21
требуемого для k-разрядного сдвига, в регистре можно организовать цепи сдвига кода
одновременно на k разрядов.
Регистр сдвига на два разряда вправо, построенный на D-триггерах, приведен на рис.
5.2. Цепи сдвига соединяют выход i-го триггера регистра с входом D (i-2)-го триггера.

Рисунок 5.2. Регистр сдвига на два разряда

Реверсивные регистры сдвига


В цифровых устройствах часто используют регистры, на которых выполняется как
микрооперация сдвига кода влево, так и микрооперация сдвига кода вправо. Регистры,
выполняющие как левый, так и правый сдвиги, называют реверсивными регистрами
сдвига. Схема такого регистра на D-триггерах показана на рис. 5.3.
Данный регистр помимо шины сдвига С имеет управляющий вход У. Его назначение
состоит в том, чтобы из двух микроопераций сдвига, выполняемых регистром, выбрать
одну, требуемую в данный момент времени. Таким образом, сигнал, поступающий на
вход У, настраивает определенную цепь сдвига от одних триггеров к другим и запрещает
работу остальных цепей. При У=0, информация сдвигается от Q0 к Q3, а при У=1 - от Q3
к Q0 (см. рис. 5.3).

Рисунок 5.3. Реверсивный регистр сдвига


Очевидно, на одном и том же регистре можно организовать выполнение нескольких
различных сдвигов как влево, так и вправо. При этом увеличивается и число
управляющих входов.
22
Параллельный ввод информации в регистрах сдвига
В рассмотренных выше схемах регистра сдвига предполагается последовательный
ввод информации. Однако важна и возможность параллельного ввода информации.
Пример схемы регистра сдвига с последовательным и параллельным вводом и выводом
информации приведен на рис. 5.4. Данный регистр построен на D-триггерах, имеющих
вход разрешения синхросигнала СЕ. Обозначения входов регистра соответствуют тем,
которые приняты в условных графических обозначениях регистров сдвига:
С (clock) – вход синхронизации,
СЕ (clock enable) – вход разрешения синхросигнала; высокий уровень на этом входе
разрешает изменение состояния регистра по фронту синхросигнала,
L (load enable) – вход разрешения параллельной загрузки; высокий уровень на этом
входе разрешает параллельную загрузку регистра по входам D0 Dn,
SLI (shift-left serial input) – левый последовательный вход данных (левый разряд
регистра имеет индекс 0),
D0 Dn – параллельные входы данных.

Рисунок 5.4. Регистр сдвига с последовательным и параллельным приемом и


выводом информации

Микрооперации, выполняемые данным регистром, приведены в табл. 5.1. Регистр


выполняет следующие элементарные операции: параллельный прием (загрузку) n-
разрядного кода, сдвиг на 1 разряд (от Q0 к Qn) и хранение.
Состояние входа L определяет одну из двух микроопераций: параллельную загрузку
(L = 1) или сдвиг (L = 0).
Регистр устанавливается в любое требуемое состояние при L=1 подачей кода на
параллельные входы D0-Dn и синхроимпульса на вход С. Обратим внимание, что вход
разрешения CE может находиться в произвольном состоянии, поскольку единичное
23
значение сигнала L через элемент ИЛИ поступает на разрешающие входы CE триггеров
(см. рис. 5.4).

Таблица 5.1 - Таблица микроопераций регистра


Входы Микрооперация
L CE SLI Dn – D0 C
1 X X Dn – D0 0/1 Загрузка по входам Dn – D0
0 1 SLI X 0/1 Сдвиг вправо от Q0 к Qn
(Q0=SLI, Q1=Q0, …Qn= Qn-1)
0 0 X X X Хранение

При L=0 синхроимпульс, приходящий на вход С, по фронту 0/1 реализует сдвиг


хранимой в регистре информации на 1 разряд только при единичном значении сигнала на
входе CE регистра. При этом вход SLI служит для последовательного приема
информации в регистр (см. рис. 5.4).
Последовательный вывод информации происходит подачей серии тактовых
импульсов на шину сдвига и снятии кода с выхода триггера последнего разряда регистра
(см. рис. 5.4).
Параллельный вывод информации может быть осуществлен непосредственно с
выходов триггеров регистра (см. рис. 5.4).
Все эти возможности расширяют область применения регистров сдвига. Они могут
быть использованы полностью или частично в зависимости от применения регистра.
Например, с помощью регистра сдвига с параллельным вводом и последовательным
выводом можно осуществить преобразование параллельного кода в последовательный.

Регистры сдвига с обратными связями


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

ПРОЕКТИРОВАНИЕ МНОГОФУНКЦИОНАЛЬНОГО РЕГИСТРА

Обобщенная схема логической структуры многофункционального регистра


приведена на рис. 5.5.
На логические входы триггеров регистра информация может поступать как с
внешних входов, так и по обратной связи с выходов триггеров через комбинационную
24
схему КС1 (см. рис. 5.5). Это обстоятельство позволяет реализовать широкий набор
микроопераций.
Это различные микрооперации преобразования кода, хранимого в триггерах
регистра, например, логические и арифметические сдвиги, получение обратного кода и
т.п., а также загрузка кода в регистр и синхронная установка регистра в состояние «0»
или «1» по входам R или S. Выбор требуемой микрооперации осуществляется с помощью
управляющих входов У. Исполнение выбранной микрооперации происходит с
поступлением импульса на синхронизирующий вход С при наличии разрешающего
сигнала СЕ.
Комбинационная схема КС2 реализует приоритет среди управляющих и
установочных входов. Например, cинхронный вход R должен иметь наивысший
приоритет и обеспечивать установку регистра в «0» вне зависимости от состояния других
управляющих входов. Напомним, синхронная установка в «0» реализуется подачей
импульса на синхровход С при R=1. Другой пример, вход разрешения параллельной
загрузки L имеет более высокий приоритет, чем вход разрешения синхросигнала СЕ (см.
рис. 5.4 и табл. 5.1).
При проектировании регистра с требуемым набором микроопераций прежде всего
необходимо определить число управляющих входов и задать их приоритет. Число
управляющих входов находят по следующей формуле: k=]log 2 M [ , где М - число
микроопераций. Далее задача логического проектирования схемы регистра заключается
в составлении функций возбуждения каждого триггера. Поскольку структура регистра
регулярна, то достаточно получить выражения только для одного триггера.
25

Рисунок 5.5. Обобщенная схема логической структуры многофункционального регистра:


С - синхронизирующий вход; CE – вход разрешения синхросигнала; CLR - асинхронный
вход установки регистра в «0»; R, S - синхронные входы установки регистра в «0» и «1»;
D - входы для параллельного приема информации; DP - входы для последовательного
приема информации; У - управляющие входы.

задания

Разработать схему сдвигового регистра с заданной разрядностью 4, 6, 8, 10, 12 на Д —


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

Таблица 5.1 Варианты заданий


вариант 1 2 3 4 5 6 7 8 9 10 11

разрядность 4 6 8 10 12 4 6 8 10 12 6
Направление П Л П Л РЕВ П Л РЕВ П Л РЕВ
сдвига
Наличие + + + + +
загрузки
Сброс + + + + + +
26
Сдвиг на 2 3 3 4 3 1 2 4 3 5 4
разрядов

ПРИМЕР выполнения задания

Требуется спроектировать многофункциональный регистр на D-триггерах без входа


разрешения синхросигнала СЕ, который должен выполнять следующие микрооперации:
1. сдвиг кода влево на 1 разряд;
2. сдвиг кода вправо на 1 разряд;
3. параллельную загрузку;
4. хранение при наличии синхронизирующих импульсов (СИ) на входе С регистра;
5. асинхронную установку регистра в «0».
Проектирование комбинацион ной схемы КС1
При реализации микроопераций, выполняемых по логическим входам триггеров
регистра, вначале необходимо определить число управляющих входов У.
В нашем случае четыре микрооперации выполняются при поступлении СИ на
синхронизирующий вход С регистра. Следовательно, регистр должен иметь два
управляющих входа У1 и У2. Поскольку приоритет микроопераций не задан, то выберем
вариант кодирования микроопераций, представленный в табл. 5.2.

Таблица 5.2 – Кодирование микроопераций регистра


Вход У1 Вход У2 Микрооперация
0 0 Хранение
0 1 Сдвиг влево на 1 разряд
1 0 Сдвиг вправо на 1 разряд
1 1 Параллельная загрузка

По условию задания необходимо обеспечить режим хранения при наличии


синхронизирующих импульсов на входе С регистра. Это можно реализовать
перезаписью текущего состояния регистра при поступлении синхронизирующих
импульсов.
Режим хранения обеспечивается подачей на D вход триггера сигнала с выхода Q
этого же триггера. Составим таблицу истинности функции возбуждения fi логического
входа триггера i-го разряда регистра (табл. 5.3).

Таблица 5.3 – Функция возбуждения входа Di триггера i-го разряда


У У2 Qi+1 Qi-1 Di Qi fi
1
0 0 X X X 0 0
0 0 X X X 1 1
0 1 0 X X X 0
0 1 1 X X X 1
27
У У2 Qi+1 Qi-1 Di Qi fi
1
1 0 X 0 X X 0
1 0 X 1 X X 1
1 1 X X 0 X 0
1 1 X X 1 X 1
Примечание. Di – внешний вход регистра для параллельного приема информации в i
й разряд.
Непосредственно из таблицы, используя правило записи функции по единицам и
опуская те переменные, которые могут иметь произвольное значение ( ), можно записать
выражение для функции fi:
f i =У1 
⋅У2⋅Qi ∨У1⋅У2⋅Qi+1∨У1⋅У2⋅Qi−1∨У1
⋅У2⋅Di
Схема, реализующая данное выражение, - это мультиплексор с двумя адресными
входами.
Условное графическое обозначение (УГО) регистра приведено на рис. 5.6,
логическая схема многофункционального регистра, построенная на библиотечных
элементах, приведена на рис. 5.6, а временная диаграмма его дана на рис. 5.8.

Рис. 5.7. Условное графическое обозначение


многофункционального регистра
28

Р
исунок 5.8. Схема многофункционального регистра

ДИНАМИЧЕСКИЕ ПАРАМЕТРЫ РЕГИСТРОВ


Универсальные регистры с входами различного функционального назначения имеют
и разнообразные динамические параметры. В паспорте регистра обычно указывают
следующие параметры:
1. минимальные длительности синхронизирующих и установочных импульсов,
2. задержки переключения регистра по синхронизирующему и установочному
входам,
3. время предварительной установки сигналов на управляющих входах и входах
данных,
4. время удержания сигналов на входах данных.
29
Минимальные длительности импульсов по входам CLR (tиCLR) и С (tиС)
определяются соответствующими параметрами триггеров, на которых построен регистр.
Задержки переключения регистра по входам CLR и С также определяются
задержками переключения триггеров, составляющих регистр.

Время удержания сигналов


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

Рисунок 5.8. Временная диаграмма работы многофункционального регистра

Примечание: наблюдайте за тем, что происходит при изменениях на входах Y1 Y2 и


сверяйтесь с таблицей 5.2

ПОДГОТОВКА К ВЫПОЛНЕ НИЮ РАБОТЫ


1. Изучить описание лабораторной работы.
2. Спроектировать и изобразить логическую схему заданного варианта
многофункционального регистра.
3. Нарисовать условное графическое обозначение многофункционального регистра (см.
рис. 5.7).
4. Разработать и изобразить схему исследования многофункционального регистра.
5. Создать МОДЕЛЬ регистра в графическом редакторе, и проверьте его
функциональность в соответствии с условиями варианта.
30
ПОРЯДОК ВЫПОЛНЕНИЯ Р АБОТЫ
1. Выполнить ввод и отладку моделированием спроектированной схемы
регистра в редакторе схем системы Quartus II.
2. Создать подсхему (макроэлемент) введенной схемы регистра.
3. Выполнить ввод и отладку регистра, где были реализован схемный вариант регистра.
4. Выполнить подготовку и размещение двух вариантов регистра на кристалле.
6. Продемонстрировать преподавателю работу отлаженных схем.
7. Измерить задержки переключения загруженных схем регистра.
6. Сдать преподавателю оформленный отчет в конце занятия.

ОТЧЕТ ПО РАБОТЕ
Отчет должен содержать:
1) исходные данные варианта задания;
2) этапы проектирования схемы многофункционального регистра;
3) принципиальную схему регистра и его УГО;
4) схему исследования многофункционального регистра.
5) Выводы по отдельным разделам и по всей работе в целом.

Список литературы
1. Голдсуорт Б. Проектирование цифровых логических устройств. /Пер. с англ.; Под
ред. Ю.И.Топчеева. - М.: Машиностроение, 1985.
2. Янсен Й. Курс цифровой электроники: В 4-х т. Т. 2. Проектирование устройств на
цифровых ИС. /Пер. с голланд. - М.: Мир, 1987.
3. Угрюмов Е.П. Цифровая схемотехника. – СПб.: БХВ, 2000.
4. Дж. Ф. Уэйкерли. Проектирование цифровых устройств. В 2-х т. Т. 1-2. М.:
Постмаркет, 2002.
5. Суворова Е.А., Шейнин Ю.Е. Проектирование цифровых систем на VHDL. – СПб.:
БХВ-Петербург, 2003.
6. Сарапул 2006

ЛАБОРАТОРНА РОБОТА 4

ЛІЧІЛЬНИКИ

1. МЕТА
Ознайомлення з побудовою та роботою лічильників за допомогою
інструментальних засобів Quartus II. Визначення впливів затримок на роботу.

2. ЗАВДАННЯ ПО ЛАБОРАТОРНІЙ РОБОТІ


2.1. Побудувати схему лічильника заданої розрядності N.
2.1.1. Зібрати схему в пакеті Quartus II.
2.1.2. Виконати дослідження його роботи.
2.1.3 Виконати додавання нових функцій:
Добавим к счетчику, который пока умеет только считать, следующие
функциональные возможности:
31
6. Вход синхронного и асинхронного сброса (R и SR);
7. Вход разрешения счета E;
8. Входы параллельной синхронной загрузки данных D[3..0], PE;
9. Выход переполнения Ovf.

Таблица Вариантов заданий


Параметр/ 1 2 3 4 5 6 7 8 9 10
вар.
N 4 5 6 7 3 4 5 6 3 6
R и SR R SR R SR R SR R, SR R SR
SR
E; E E E E E E
D[N..0], 45 67 78 14 27 45 34 21 36 33
Ovf. + + + +

Теоретические сведения и порядок проектирования


Счетчик на элементах ПЛИC. Графический редактор Quartus II

Выполнение проектирования элементов счетчика


Рисуем схему счетчика. Открываем Quartus II - для этого надо запустить файл
max2win.exe в папке с программой. Начнем рисовать простую схему 4-разрядного
двоичного счетчика. Нарисуем один элемент триггера со счетным входом и проверим его
работу на симуляторе.
Делаем так: File>New. Открывается окошко

Соответственно, нам предлагают на выбор создать


графический, символьный, текстовый или диаграммный
файл. Выбираем первое - графический (Graphic Editor file).
Появляется оконце графического редактора. Вот
именно в нем мы и будем рисовать. Два раза щелкаем
мышкой внутри этого окна. Выводится окошко "Enter
Symbol".
32

В верхней строчке пишем "dff". DFF - это символьное обозначение синхронного D-


триггера (D-FlipFlop).
Жмем OK. Теперь окно перестало быть белоснежно-чистым. На нем появился
элемент DFF.

D-триггер имеет следующие выводы:


D - синхронный вход данных, состояние на котором "запоминается" по фронту
тактового сигнала,
Clk (обозначен треугольником) - вход тактового сигнала,
PRN - асинхронная установка триггера (в лог. 1),
CLRN - асинхронный сброс (в лог. 0),
Q - выход.
PRN и CLRN - инверсные, то есть активное состояние на них - лог.0. По
умолчанию они неактивны (на них поданы единицы).

Таблица истинности триггера DFF имеет следующий вид:


33

H - это "1" (Высокий уровень сигнала);


L - это "0" (Низкий уровень сигнала);
X - это любой из возможных уровней сигнала;
- фронт тактового сигнала;
Qо*, Qо - состояние не изменяется;
Illegal - неразрешенное состояние входов.

Счетчик состоит из совокупности счетных триггеров и схем связи. Счетный


триггер - это синхронный D-триггер, инверсный выход которого замкнут на вход
данных. Таким образом, по каждому тактовому импульсу, состояние счетного триггера
изменяется на противоположное. Почему? Проведем анализ работы триггера.
Допустим, сначала состояние триггера = 0. То есть, на прямом выходе - 0, на
инверсном - 1. Значит, на вход данных D поступает 1. При следующем импульсе на
тактовом входе, состояние D запишется в триггер. На прямом выходе появится 1, на
инверсном - 0, и этот ноль поступит на вход D. При следующем такте ноль на D
запишется в триггер и так далее…

Для получения счетчика необходимо включить последовательно несколько таких


триггеров через инверторы. Для этого щелкнем еще раз по пустому месту и наберем
символ "not". Появится треугольник с кружочком на носу – элемент NOT, то есть
инвертор. Он нам необходим, чтобы у D-триггера был и инверсный выход.

Для рисования схемы, на панели инструментов (слева) надо нажать на кнопочку


34

Нарисовали:

Вводим еще два новых элемента: input и output. Ввели?! Дорисовываем схему:

Дважды щелкнув мышкой в слова PIN_NAME, вводим осмысленные названия для


входа и выхода. Названия не могут начинаться с цифры и могут содержать только буквы
латиницы и некоторые "разрешенные" символы. Мы обзовем вход CLK, а выход - Q1.

Итак, у нас образовалась схема счетного триггера с входом и выходом. Сначала


проверим работу триггера с такой схемой на симуляторе.
Для начала необходимо сохранить файл. File>Save, вводим имя - counter.
35

Файл будет называться: counter.gdf.


Теперь делаем так: File>Project>Set Project to Current File - сделаем этот файл
основным файлом проекта.
Затем скомпилируем схему, выбрав: Quartus II > Compiler , в результате чего
открывается окошко:

Выбираем Start. Если все в схеме правильно - компилятор говорит что все
нормально. Нажимаем ОК.
Теперь можно составить временной график работы симулятора. Для этого
запускаем редактор графиков: Quartus II > Waveform Editor, который представляется
активным окном следующего вида:
36

Два раза щелкаем мышкой по пустому месту в графах Name или Value, в
результате чего открывается окно:

Нажимаем List - в окошке Nodes&Groups from SNF. Открывается список всех


выводов нашей схемы:

CLK (I),
Q1 (O).

Поставим сначала вход, то есть - CLK. Выделяем его, жмем OK - и он размещается


на графике. Точно так же выводим выход Q1.
37

Теперь выделяем вход CLK и нажимаем слева на кнопочку , чтобы задать


тактовую частоту в открывшемся окне:

В нем нас спрашивают о начальном значении (Starting Value) и о том, через


сколько линий сетки изменяется состояние сигнала. Сетка на графике обозначается
серыми вертикальными пунктирными линиями. Ничего не трогаем и жмем OK.
Вот что получилось:

Теперь самое время сохранить файл. Сохраняем под тем же именем, что и
графический файл - counter. Иначе временные установки не будут привязаны к
нарисованной схеме.
Теперь идем: MAX+plus II > Simulator.

Жмем Start – симулятор проводит моделирование работы схемы. Если со стороны


моделирующей программы замечаний нет, то смотрим в окошко редактора графиков
(Waveform Editor) на полученные результаты:
38

Этот график наглядно демонстрирует работу счетного триггера: по фронтам


входного сигнала, состояние выхода изменяется на противоположное. Как видите,
момент изменения выхода отстает от фронта по входу примерно на 2,5 нс. Это -
нормально. Это - задержка на распространение сигнала. Дело в том, что симулятор
просчитывает и задержки, присущие выбранной элементной базе микросхемы.
Далее мы составим схему на четырех счетных триггерах и аналогичным образом
промоделируем его работу.
39

Двоичный 4-разрядный счетчик.


Открываем наш проект (File>Open), в результате чего выдается окно:

Выбираем тип открываемого файла - Graphic Editor files *.gdf


Выбираем из списка и открываем наш файл - counter.gdf : OK.
Еще раз представляем этот файл проектом:
File>Project>Set Project to Current File
Рисуем схему, которая должна выглядеть так:

Схема 4-разрядного счетчика состоит из 4-х триггеров со счетными входами,


включенных последовательно.
Компилируем.
40
Открываем Waveform editor и вводим обозначения всех входов и выходов схемы.

В File>End Time… устанавливаем время окончания графика Time = 10.0us.

Генерируем на входе CLK тактовую частоту, сохраняем файл под


именем counter.snf и запускаем симулятор. По окончании моделирования смотрим на
график, который должен выглядеть примерно так:

Увеличив масштаб в интервале (140 ns – 180 ns), можно увидеть, что состояния
всех триггеров по выходам Q0 – Q3 устанавливаются с нарастающими задержками от
фронта подсчитываемых импульсов CLK:

Необходимо сделать так, чтобы все триггеры меняли свое состояние


одновременно… Для этой цели создадим регистр, в который по переднему фронту CLK
логические сигналы по входам D[3..0] вписываются во все триггеры. Рисуем схему
такого регистра:
41

Временная диаграмма работы этой схемы выглядит так:

Так как каждое последующее значение счетчика равно предыдущему,


увеличенному на единицу, то давайте создадим специальную схему, которая будет
прибавлять единицу к 4-разрядному числу, и включим эту схему между параллельным
выходом и параллельным входом регистра. Таблица истинности для такой схемы
суммирования имеет вид:

Таблица 1 – Таблица истинности для суммирования


CLK D[3210] Q[3210]
0 0000 0001
1 0001 0010
2 0010 0011
42
3 0011 0100
4 0100 0101
5 0101 0110
6 0110 0111
7 0111 1000
8 1000 1001
9 1001 1010
10 1010 1011
11 1011 1100
12 1100 1101
13 1101 1110
14 1110 1111
15 1111 0000

По таблице истинности строим следующую схему:

В схеме применены следующие


логические элементы:
AND2, AND3 – схемы И на 2 и 3
входа;
XOR – схема исключающего ИЛИ
(сумматор по модулю 2).

Представим эту схему в виде отдельного


логического элемента:
5. Сохраняем файл со схемой, назвав
его, например, increment.gdf;
6. File>Create Default Symbol;
7. Открываем схему регистра, которую мы нарисовали и дважды щелкаем по
пустому месту, в результате чего появляется окошко:

Из списка Symbol Files выбираем только что созданный символ, который


появляется для нашей схемы в следующем виде:
43

Дополняем этим символом, ранее созданную схему регистра:

Проверяем его работу на симуляторе:

Увеличиваем масштаб:
44
Задержка после тактового сигнала, конечно же, осталась, однако остальные -
исчезли. Полученный 4-разрядный счетчик можно оформить отдельным символом,
например, таким:

Добавление новых функций


Добавим к счетчику, который пока умеет только считать, следующие
функциональные возможности:

10. Вход синхронного и асинхронного сброса (R и SR);


11. Вход разрешения счета E;
12. Входы параллельной синхронной загрузки данных D[3..0], PE;
13. Выход переполнения Ovf.

Сначала приделаем к счетчику входы сброса, для чего открываем файл counter.gdf.
Вызываем элемент input и даем ему имя R – это будет асинхронный сброс, который
устанавливает во всех разрядах счетчика нули в любой момент времени.
Вызываем символ input еще раз (или копируем существующий) и даем ему имя SR,
которое будет представлять синхронный сброс, который обеспечивает сброс счетчика в
нулевое состояние по фронту тактового импульса CLK.
Асинхронный сброс организовать просто, так как на триггерах DFF есть входы
асинхронного сброса CLRN, которые достаточно соединить вместе.
Синхронный сброс можно организовать, подав на входы данных (D) всех триггеров
нули. Поскольку у нас на входы (D) уже идут сигналы с элемента increment, то каждый
из них достаточно подавать туда через элемент AND2 совместно с сигналом синхронного
сброса SR.
Дополняем нашу схему:
45

Необходимо помнить, что входы сброса - инвертированные. То есть, сброс


происходит при подаче нуля.
Для организации параллельной загрузки 4-разрядного кода в счетчик нам
необходимо подключать каждый вход триггера (D) либо к своему выходу (Q), либо к
соответствующему разряду входного кода. Таким счетверенным переключателем
является мультиплексор, который в зависимости от заданного адреса подключает к
выходу соответствующий вход.
Для построения мультиплексора, переключающего с двух направлений
одновременно четыре сигнала на одно выходное направление поступаем так:

5) File>New>Graphic Editor File.


6) Выводим на поле чертежа схемы 9 входов и 4 выхода.
7) Даем имена: для данных - D00…D03 и D10…D13, адреса - A0 и выходов -
Q0…Q3.

Заготовка схемы мультиплексора предстанет в таком виде:


46

Для каждого входа D0.i и D1.i помещаем одинаковые логические фрагменты,


подключающие по значению сигнала адреса А выходное значение i-того разряда на
выход Qi. Схема 4-разрядного мультиплексора предстанет в следующем виде.

Сохраняем файл схемы с именем mux_2x4.gdf


Чтобы скомпилировать и проверить работу мультиплексора, представляем этот
файл текущим проектом (Set Project to Current File). Компилируем. Проверяем работу с
помощью Waveform Editor.
47

Если все работает как надо, создаем для мультиплексора символ (Create default
symbol).

Возвращаемся к схеме счетчика и представляем ее проектом. Вызываем символ


mux_2x4 и вставляем его в схему:
48

Когда на входе PE – логическая единица, сигнал на триггеры подается с элемента


increment и счетчик находится в состоянии счета
Когда на PE - 0, триггеры подключаются к входу данных D0..D3.

Чтобы сделать вход для сигнала разрешения счета, необходимо применить еще
один мультиплексор. Этот мультиплексор будет подавать на входы триггеров данные
либо с инкрементора, либо напрямую с выходов самих себя. Соответственно, в первом
случае будет счет, во втором - не будет.
Ниже представим только ту часть схемы, в которой необходимо произвести
изменения:
49

Осталось сделать только выход переполнения. Что это такое?


На выходе переполнения должен появляется сигнал, когда счетчик досчитывает до
максимального значения. У 4-разрядного счетчика максимальное значение равно 15 (в
двоичном представлении 1111). Значит, нужна такая схема, которая будет выдавать
единицу только на двоичном коде 1111. С такой задачей справится один-единственный
элемент И на 4 входа (and4).

Подставив его в схему, получим окончательную схему двоичного


полнофункционального счетчика:
50

Теперь можно представить это все одним символом.


Компилируем, проверяем.
Получаем, в конечном счете, вот такой апробированный в работе логический
элемент:

2.6. По результатам виконання лабораторної роботи оформити звіт.


51

ЗМІСТ ЗВІТУ
Зміст звіту з лабораторної роботи складається з наступних частин:
1. Порядковий номер роботи та тема – назва роботи.
2. Мета – прагнення в роботі.
3. Індивідуальне завдання – що потрібно зробити.
4. Звіт повинен містити всі розробки схеми, що досліджено згідно завдання.
5. Обраховані параметри схеми.
6. Результати дослідження роботи схем, таблиці і графіки одержаних у всіх дослідах
з докладним коментуванням виконання роботи.
7. Звіт повинен обов’язково мати результати моделювання по всіх дослідах.
8 Висновки. Після кожного досліду необхідно сформулювати висновок, що
відображає якісні результати досліду і відмінність їх від результатів інших дослідів
лабораторної роботи.
9. В кінці звіту необхідно привести узагальнені висновки по лабораторній роботі в
цілому.

КОНТРОЛЬНІ ЗАПИТАННЯ

1. Призначення елементів І-АБО-НІ в схемі досліджуваного лічильника.


2. Чому в асинхронних лічильниках не можна змінювати напрямок рахунка (складання,
віднімання) у процесі рахунку? У яких лічильниках це можливо?
3. Як задається рахунковий режим у досліджуваного лічильника?
4. Що таке коефіцієнт перерахування лічильника?
5. Як змінюється значення коду на прямих і інверсних виходах лічильника (при різних
режимах роботи) з подачею кожного нового імпульсу на рахунковий вхід лічильника?
6. Чому не можна вольтметр підключати безпосередньо до виходів і входів тригерів
досліджуваного лічильника? Як уникнути цього недоліку?
7. Як встановити досліджуваний лічильник у 0?
8. Як встановити досліджуваний лічильник у 1?
9. Способи запису початкового коду в досліджуваний лічильник.
10. Чим визначається навантажувальна здатність досліджуваного лічильника?
11. Яким навантаженням є досліджуваний лічильник по входу установки в 0?
12. Чим визначається швидкодія досліджуваного лічильника?
13. Схемні способи збільшення швидкодії лічильників.
52
ЛАБОРАТОРНАЯ РАБОТА №5

ПРОЕКТИРОВАНИЕ ДЕШИФРАТОРОВ

Ц е л ь : изучить один из основных узлов цифровых схем дешифраторов; овладеть


методом проектирования дешифраторов; получить навыки проектирования
дешифраторов на VHDL; приобрести опыт экспериментального исследования
дешифратора.
ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ
4.10. Дешифратор
Дешифратор представляют собой логическую схему, имеющую n
входов и m выходов
Q1
A1 DC Q2
A2 ...
... Qn
Am

Обычно выполняется соотношение


n=2m
Дешифратор работает по следующему алгоритму. Из всех выходных шин Qi
только одна, номер которой определяется кодом адреса А[m..1], имеет значение, равное
1. Все остальные имеют состояние, равное 0.
Обычно дешифраторы реализуются на элементах многовходовой логики «И».
Пример простого дешифратора приведѐн на рис. 4.10.1. Временная диаграмма работы
дешифратора представлена на рис 4.10.2.
53
Рис 4.10.1. Схема 8-разрядного дешифратора.

Рис 4.10.2. Временная диаграмма работы восьми разрядного дешифратора

ПОДГОТОВКА К ВЫПОЛНЕНИЮ РАБОТЫ


4. Изучить описание лабораторной работы.
5. Спроектировать и изобразить логическую схему заданного варианта
дешифратора.
6. Нарисовать условное графическое обозначение дешифратора (см. рис. 6.1).
6. Разработать и изобразить схему исследования дешифратора.
7. Создать МОДЕЛЬ дешифратора в графическом редакторе, и проверьте его
функциональность в соответствии с условиями варианта.
6.Открыть проект. Для этого в окне File верхнего меню выбрать New project
wizard, указать путь к проекту D:/KCX/students/m8.../m8.n…/xx, объявить его имя,
нажать Next. Окно добавления внешних файлов пока проигнорировать, Next. Выбрать
тип кристалла: Cyclone – верхнее окно меню, EP1C6T144C8 – нижнее окно меню.
Нажать FINISH.
7. Открыть файл VHDL- редактора. Для этого проделать следующий путь: File –
New – VHDL File. При таком выборе откроется окно редактора. На открывшемся поле
записать программу функционирования дешифратора на 3 входа. Обратите внимание
на то, что в программе имя устройства –dec. Замените его в соответствии с именем
вашего проекта или файла верхнего уровня.

library ieee;
use ieee.std_logic_1164.all;
entity dec1 is
port(
adr_i: in std_logic_vector(2 downto 0);
data_out: out std_logic_vector(7 downto 0)
54
);
end dec1;
architecture BBB of dec1 is
begin
p0: process (adr_i)
begin
case adr_i is
when "000"=>data_out<="00000001";
when "001"=>data_out<="00000010";
when "010"=>data_out<="00000100";
when "011"=>data_out<="00001000";
when "100"=>data_out<="00010000";
when "101"=>data_out<="00100000";
when "110"=>data_out<="01000000";
when "111"=>data_out<="10000000";
when others=>data_out<="ZZZZZZZZ";
end case;
end process;
end ;

8.Сохранить и откомпилировать полученный файл. Путь к компилятору: Processing –


Start Compilation, или соответствующий значок верхнего меню редактора. Если
компилятор указывает на ошибки, обратиться к преподавателю или лаборанту.

9. Построить временные диаграммы работы устройства. Для этого открыть файл


временных диаграмм File – New – Others Files – Vector Waveform File. C помощью двух
кликов мышью с левой стороны от вертикальной оси открыть окно Insert Node or Bus,
выбрать в нем кнопку Node Finder. В разделе Filter выбрать Pins all, затем нажать List и
проверить наличие списка выводов схемы в левом окне. Перенести список в правую
часть с помощью кнопки >>, нажать OK. Временные интервалы – клик на обозначении
вывода, обращение к опции C бокового меню, выбор в открывшемся окне пути Timing,
установка временного интервала в ns. (20ns, 40ns, 80ns).
Сохранить файл и обратиться к симулятору: Processing – Start Simulation или
соответствующий значок верхнего меню редактора. При получении сообщения об
ошибках обратиться к преподавателю или лаборанту. Если симуляция прошла без
ошибок, проанализировать полученные диаграммы.
10 Сравните полученные диаграммы для двух схем DC.

Отчет должен содержать программу устройства и диаграммы его работы.

В качестве проверки полученных знаний попробуйте самостоятельно составить


программу работы шифратора на 4 входа и проанализировать временные диаграммы
этого устройства.
55
Внимание! При записи программы по образцу, указанному выше необходимо запись
bit_vector заменить на std_logic_vector и, т.к. оператор требует записи всех комбинаций,
последняя строка описания поведения устройства имеет следующий вид:
when others=>adr_out<=”ZZ”

ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ


1. Выполнить ввод и отладку моделированием спроектированной схемы
дешифратора в редакторе схем системы Quartus II.
2. Создать подсхему (макроэлемент) введенной схемы дешифратора.
3. Выполнить ввод и отладку регистра, где были реализован схемный вариант
дешифратора.
4. Выполнить подготовку и размещение двух вариантов дешифратора на кристалле.
5. Продемонстрировать преподавателю работу отлаженных схем.
6. Измерить задержки переключения загруженных схем дешифратора.
7. Сдать преподавателю оформленный отчет в конце занятия.

ОТЧЕТ ПО РАБОТЕ
Отчет должен содержать:
1. исходные данные варианта задания;
2. этапы проектирования схемы дешифратора;
3. принципиальную схему регистра и его УГО;
4. схему исследования дешифратора.
5. Выводы по отдельным разделам и по всей работе в целом.