
Лабораторная работа № 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, oen1– 3.
Иерархическая схема Регистра Кода Операции команды 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.