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

"Проектирование Центрального Устройства Управления микро-ЭВМ"

Цель работы: Разработать ЦУУ микро-ЭВМ на элементной базе и схемотехнике настоящей работы. Модифицировать исходный проект в соответствии предлагаемым вариантов из табл. 1.

На ЦУУ возлагаются следующие функции:

- стартстопные функции (сброс/инициализация системы, задание начального адреса программы, запуск и останов программы);

- функция выборки байт-кода команды из ROM-памяти по адресу на IP и размещение её (команды) на регистре команд IR;

- выборка следующего за байтом команды байт-адреса для операнда, находящегося в RAM-памяти операндов; размещение этого адреса на регистре адреса операндов AR; Для выполнения этих функций в микро-ЭВМ необходимо ввести следующие узлы:

- регистр хранения кода команды IR;

- регистр хранения адресной части команды AR;

- схемы местного управления фазами выборки данных на эти регистры:

favyborc для IR и favybora для AR.

Рекомендуемый порядок выполнения работы.

1. Установка исходной модели проекта Laba5 в рабочей директории.

2. Создание новых модулей и модернизация исходных модулей модели проекта

3. Комплексная сборка и отладка проекта.

4.. Тестирование проекта.

1. Формирование исходной базы модулей проекта

В качестве исходной базы модулей проекта используются все модули (все файлы) из лабораторной работы Laba4 c некоторыми имзенениями, содержащиеся в архиве Lab50bdf.ish.

1.1. Создать в директории проекта папку Lab50.bdf.all и скопировать в эту папку все файлы [*.*] из архива Lab50.bdf.ish.

1.2. Проверить работоспособность проекта notecomp по таймингу notecomp.vwf и схеме notecomp.bdf.

Тайминги проекта notecomp.vwf

Принципиальная схема проекта notecomp.gdf.

2. Частичная модернизация некоторых модулей исходной модели проекта

Существующий проект имеет следующую иерархическую структуру(см. рис.). Её можно увидеть в Project Navigator в разделе Hierarchy.

В состав проекта notecomp входит 5 блоков, один из которых подлежит расширению – это блок unidrive.gdf. Далее смотрите иерархию unidrive.

В состав блока Unidrive входят три суб-блока: favyborc, cntr2syn и ram_clk. В свою очередь блок ctr2syn содержит модуль cnt4dca. Необходимо включить в состав cnt4dcab второй суб-блок cnt4dcb параллельно субблоку cnt4dca.

2.1. Создание нового модуля cnt4dcb для включения в состав проекта notecomp

Схемы модулей cnt4dca.bdf и cnt4dcb.bdf и их различия приведены ниже.

Различие в схемах cnt4dca и cnt4dcb

cnt4dca.bdf:

Cnt4dcb.bdf:

Проверяем тайминги модуля cnt4dcb по vwf.

2.2. Модернизация модуля cnt4dcab.bdf путём включения в его состав cnt4dcb.bdf

Проверить работу схемы по времяграмме cnt4dcab.vwf

Из приведенного фрагмента "времянки" можно видеть, что совместное использование стробов Dca(i) и DCb (j) позволяет, во-первых, удвоить частоту "переднефронтовых" стробирующих импульсов запуска схем проекта и, во-вторых, уменьшить длительности селектирующих сигналов разрешения работы модулей. В частности, именно это будет сделано ниже при модернизации модуля favyborc.bdf.

2.3. Апдейт символа cnt4dcab в схеме верхнего уровня cntr2syn.bdf

Для апдейта cnt4dcab.bsf в схеме cntr2syn вызываем эту схему в графическом виде либо из иерархии проекта, либо как bdf-файл и после выделения "апдейтируемого" символа активируем процедуру апдейта.

Вызов процедуры апдейта производится из контекстного меню по правому щелчку мыши,где выбирается Update Symbol or Block…->Selected symbol(s) or block(s)->OK.

После апдейта необходимо: - скорректировать схему cntr2syn.bdf (добавить дополнительный групповой пин выходной шины DCb[15..0] );

- перекомпилировать cntr2syn.bdf и создать для неё новый символ.

2.4. Модернизация модуля favyborc.bdf а) Первичная модернизация – внесение цепей выработки сигнала IRclkn внутрь модуля favyborc. Копируем цепи выработки сигнала IPclkn из схемы unidrive.bdf и вводим их (через буфер обмена) в схему favyborc.bdf.

"Вставка" цепей стробирования (синхронизации) регистра IP в модуль favyborc.bdf

Изготовление новой схемы favyborc.bdf путём замены/редактирования:

- сигналов IPclkn <= Irclkn;

- имён выходных контактов/ пинов IPclkn <= Irclkn.

б) Вторичная модернизация – сокращение длительности времени selnIP=DCa1 – DCa4, т.е. времени выдачи адреса из регистра IP на шину адреса ADR[7..0], и oe1nROM=DCa2-DCa4.

Достигается заменой строба Dca4 более ранним стробом DCb3, т.е. selnIP=DCa1 – DCb3 и oe1nROM=DCa2-DCb3 (см. ниже vwf-file).

Для IRclkn DCa4 заменяется на DCa3.

Вторичная модернизация осуществляется путём полной перекомпиляции модуля favyborc.bdf после замены в нём входного сигнала Dca4 на сигнал DCb3.

Файл favyborc.vwf необходимо также исправить, сделав в нём аналогичную замену сигналов. Требуемый волновой формат сигнала DCb3 можно скопировать из времяграммы cnt4dcab.vwf. Все остальные входные сигналы тоже копировать от источников этих сигналов.

Приведенный ниже рисунок наглядно иллюстрирует выигрыш в сокращении времени селекции (выдачи) адреса с выхода регистра IP на шину адреса ADR[7..0] более коротким сигналом selnIP.

* Сигналы Dca3, DCb3 введены в рисунок временно для иллюстрации.

Сигналы DCa[i] следуют через каждые 40 ns, сигналы DCb[i] следуют в промежутках между Dca, что сокращает интервал минимальной паузы при управлении с 40 ns до 20 ns при их совместном использовании.

Окончательная схема модуля favyborc.bdf и её волны favyborc.vwf представлена на нижеследующих рисунках.

2.5. Редактирование схемы модуля unidrive.bdf а) Схема исходного unidrive.bdf модуля

б) Рисовка необходимых шин и соединений, их имён, текстовых пояснений

в) Схема изменённого модуля unidrive.bdf приведена на нижнем рисунке

г) Импульсный портрет unidrive.vwf приведен на следующем рисунке

Сигнал selnIP (запускается Dca1) разрешает, с помощью мультиплексора muxIPRZ, выдачу адреса содержащегося в регистре IP на шину адреса ADR[7..0]. Установленный на шине адрес ADR[7..0] = IP[7..0] поступает на адресные входы ROM-памяти, откуда, через некоторое время, будет считано содержимое адресо­ванной ячейки. Это время есть время адресации ROM-ZU и оно составляет величину ~ 27 ns, после чего можно выдавать данные с выходов ROM-ZU на шину данных DAT[7..0] с помощью сигнала oenROM (запускается стробом Dca2 через 40 ns после Dca1). Появившиеся на шине DAT[7..0] данные из РОМ поступают на вход регистра IR и записываются/ фиксируются в нём сигналом DCa3 через 40 ns. Заканчивается фаза выборки кода команды favyborc по стробу DCb3 через 20 ты после Dca3.

После фазы выборки кода команды следует фаза favybora - выборки адресной части команды, т.е. чтение из РОМ-ЗУ следующего байта команды и запись его в регистр AR. Для перехода к выполнению этой фазы необходимо увеличить адрес, хранящийся в регистре IP, на +1. Сигнал IPclkn (по стробу Dca3) инкрементирует содержимое регистра IP (см. схемотехнику блока blkregIP).

2.6. Схема блока blkregIR ( блока Регистра Кода Операции Команды)

Блок blkregIR построен на 8-битном регистровом примитиве 74825b, в котором отредактированы как "Unused" (или заведена «земля») на входные сигналы clkenn, oen13.

Иерархическая схема Регистра Кода Операции команды IR

2.7. Схема блока регистра адреса операнда blkregAR

Эта схема с точностью до обозначений аналогична схеме blkregIR.

2.8. Подключение блоков blkregIR и blkregAR к системной шине.

В регистре IR хранится код операции команды. Часть этого кода понадобится исполнительным устройствам (АЛУ, плеерам, саунд-генераторам) для выполнения запрограммированных командой действий. Передачи из регистра IR производятся по шине данных DAT[7..0].

В регистре AR содержится адрес операнда, находящегося в RAM- памяти. Для извлечения операнда из памяти необходимо этот адрес поместить на шину адреса ADR[7..0]. Схема подключения блоков blkregIR и blkregAR к системной шине приведена на рисунке.

Выход регистров на системную шину осуществляется с помощью шинных буферных выключателей busdatz. Неудаляемые (пока!!) входные контакты selnAR и selnIR необходимы для отключения блоков blk от системной шины, если на vwf-файле задать им значение = «H».

Схема busdatz на основе трёхстабильного буферного примитива TRI приведена на рисунке.

В этой схеме используется двунаправленный выходной пин BUSZ[7..0 ] (см. правила подключения буфера TRI и пинов BIDIR к общей шине по: [TRI] + F1).

Проверить отсутствие ошибок в собранной схеме notecomp.bdf.

2.9. Разработка локального модуля управления регистром AR

Имя модуля: favybora.bdf.

Назначение модуля: управление фазой выборки адреса операнда.

Управляющие сигналы: sel2nIPвыдача второго байта команды из регистра IP на шину адреса ADR[7..0];

oen2ROMразрешение выдачи из ROM-ZU адресованных данных на шину данных DAT [7...0];

ARclknстроб записи данных от ШД DAT [7..0] в регистре AR

Запускающие импульсы: Dca5 – Dca7 для селектора sel1nIP;

Dca6 – Dca7 для oe2nROM, разрешения выдачи из ROM-ZU;

DCb7 – для строба записи данных в регистр AR с шины данных.

Итого: В регистре AR содержится второй байт команды, равный адресу операнда для данной команды, код которой содержится в регистре IR.

Схема и поведение модуля приведена на рисунках

Подсказка 1. Поскольку схема модуля favybora.bdf подобна схеме модуля favyborc.bdf с точностью до имен пинов и проводников (nodes), его можно переделать в модуль favybora.bdf (переименовать файл и имена в схеме favyborc.bdf).

Подсказка 2. Аналогичным образом создается файл favybora.vwf. Четверка управляющих таймингов для favybora.vwf - {Dca5, Dca6, Dca7, DCb7} заимствуется из результата моделирования ctr2syn.vwf.

Соседние файлы в папке laba50_quartus