Скачиваний:
13
Добавлен:
15.06.2014
Размер:
851.46 Кб
Скачать

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

"Ветвления в микро-ЭВМ"

Часть 1 (Просветительная)

В учебном микрокомпьютере (мУК) реализуется естественный порядок следования команд в программе с начального адреса SADR = 2 до конечного адреса моделируемого процесса. Изменение естественного порядка осуществляется с помощью команд ветвления JMP, вызова / возврата к подпрограммам CALL / RET и по команде останова HLT. Ветвления и вызовы могут быть безусловными и условными, зависящими от заданных в алгоритме условий, например, от состояния флажков регистре флагов regFR. мУК Формат этих команд представлен на рисунке: COPCode Operation, CFLCode Flags.

Старший байт – Код команды

Младший байт – Код адреса

Код операции (COP)

Код условий (CFL)

Адрес перехода (ADR)

15 12 11 8 7 0

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

пп.

Assembler

format

Comments

COP

CFL

ADR

1.

Jmp adr

Переход по адресу adr безусловный

0001

0000

adr

2.

Jz adr

Переход на adr при z=0, иначе продолжить

0001

0001

-“-

3.

Js adr

–––-“–––-“––– при s=0, –––“–––-“–––-“––-

0001

0010

-“-

4.

Jc adr

–––-“–––-“––– при z=0, –––“–––-“–––-“––-

5.

Jo adr

–––-“–––-“––– при z=0, –––“–––-“–––-“––-

6.

Call adr

Вызов подпрограммы с adr безусловный

7.

Cz adr

–––-“––– с adr при z=0, –––-“–––-“–––-“––

8.

Cs adr

–––-“–––-“–––- при z=0, –––“–––-“–––-“––

9.

Cc adr

–––-“–––-“ ––- при z=0, –––-“–––-“–––-“––

10.

Co adr

–––-“–––-“ ––- при z=0, –––-“–––-“–––-“––

11.

Ret adr

Возврат из подпрограммы безусловный

12.

Rz adr

–––-“–––-“ ––- при z=0, –––-“–––-“–––-“––

13.

Rs adr

–––-“–––-“ ––- при z=0, –––-“–––-“–––-“––

14.

Rc adr

–––-“–––-“ ––- при z=0, –––-“–––-“–––-“––

15.

Ro adr

–––-“–––-“ ––- при z=0, –––-“–––-“–––-“––

Рассмотрим аппаратную реализацию команды безусловного перехода jmp adr с кодом команды 10h; здесь COP=01, CFL=00. Состояние мУК после фазы выборки команды jmp adr следующее.

В регистре кода операции команды IR уже сохранён COP=01 и в регистре адреса операнда AR находится второй байт команды ADR=CFL=00. В регистре указателе команд IP содержится адрес этого второго байта команды. Далее должна следовать фаза выполнения jmp-команды faexjmp (подобно фазе выполнения snd-команды faexesnd).

Все exe-фазы всех команд начинаются с момента времени Dca8 (см. Unidrive. bdf).

Из модуля faexjmp необходимо управлять следующими действиями:

α) Передать содержимое регистра AR (равное полю ADR команды) в регистр IP;

β) Продолжить выполнение программы с нового адреса

Для выполнения α) и β) действий в модуле faexjmp необходимо выработать следующие селектирующие и стробирующие сигналы:

  • Меандр selJadr, разрешающий ввод содержимого регистра AR со входа Jadr[7..0] в регистр IP;

  • Строб takJMP, предназначенный для записи в регистр IP данных со входа Jadr[7..0].

Происходит это с использованием схемы faexjmp.bdf:

Передача данных из регистра AR в регистр IP производится через входные пины Jadr[7..0] блока blkregIP по шине AR[7..0], что отмечена на фрагменте схемы мУК красным цветом.

Внутри блока blkregIP проход данных контролируется мультиплексором muxSADR

Мультиплексор muxSADR(MUX2X8.DOC) селектирует выборку адреса сигналом selSadr: если selSadr = 1 на выход мультиплексора Y выдаётся значение со входа А: Y [7..0] = A[7..0]=Sadr[7..0]; если selSadr=0, на выход поступает значение со входа В: Y [7..0] = В[7..0]=Jadr[7..0].

Эти адреса: Sadr[7..0] или Jadr[7..0] поступают на вход DIN[7..0] модуля автоинкрементирующегося регистра inc_regIP(inc_reg.doc) и записываются в регистр IP по стробу clkn = (Ipclkn v (! takSadr)). При отсутствии внешних адресов Sadr[7..0], Jadr[7..], когда (selSadr & selJadr) = 0, в регистр IP записывается по стробу IPclkn содержимое регистра IP увеличенное на +1.

Часть 1 (Исполнительная)

Cледует собрать и отладить схему notejmp.bdf(см. notejmp.doc), поддерживающую выполнение команд JMP adr в соответствии с рекомендациями части 1.

ЗАМЕЧАНИЕ. Обновлённый мУК notejmp.bdf программно совместим с notesnd.bdf снизу-вверх и поддерживает выполнение команды snd ADR, что легко проверяется на стенде через notejmp.vwf = ­­ notesndt.vwf на СОС - звуках.

Проверка работы команд jmp adr производится визуально.

Для озвучивания создаётся программа работы мУК’а в файле rom_jmp.mif. Этот файл легко получить путём редактирования файла rom_sos.mif, как показано в файле rom_howj.txt.

Места JMP’ov в СОС-последовательности показаны на рисунке:

________________________________

_______ | Всего 25 us |

Jmp/ 0F \ |_______________________ ___|

Д_Д_ Д _ КК К__Д_ Д__Д______ ==> Д Д К К Д Д Д К К

| ↑ ↓ ↓

2 6 8 a c e 10 12 16 1a 1e 22 26

3 7 9 b d f 11 13 17 1b 1f 23 27 Двухджамповая последовательность.

\_______________________Jmp 0D приведена на следующей странице

Изготовленный файл rom_jmp.txt сохраняем в рабочей директории проекта, как rom_jmp.mif. Именно его следует использовать для инициализации РОМ-ЗУ при звуковом моделировании.

Напоминание. РОМ/РАМ-ЗУ перезагружается новым или измененным mif-файлом после перекомпиляции блока памяти, инициализируемого этим файлом.

Проверить работу команды jmp ADR можно визуально с помощью двух сигналов: selnJMP и IP]7..0], вводимых в схему notejmp.bdf. Назовём новую схему для джампов notejmpt.bdf. Символ notejmpt.bdf = notejmp.bdf + pinout( IP]7..0], selJADR ).

Симуляторные воздействия для notejmpt формируются в файле notejmpt.vwf = notesndt.vwf + pin_out(IP[7..0] + selJadr). Здесь хорошо видеть и проверять адресные переходы: 08-09/0F/  10-11 при T= 4.72 us и 26-27/0D/  0E-0F.при T= 20.14 us.

Импульсно-меандровая разборка для vwf-портретов выполнения команд безусловного перехода jmp adr приводится в Деталях JUMP’a.

Времяграмма двух джампов из примера инициализации памяти rom_jmpt.mif (ДДКК ДДД КК)

Часть 1 (Приёмо-сдаточная)

По первой части работы реализовать ДДК-последовательность в соответствии с нижеследующей таблицей вариантов, расположив по нужным адресам команды JMP. Пример расположения нужных JMPов для последовательности ДДКК ДДД КК приведен на рисунке в предыдущей части данной работы.

При реализации переходов обратите внимание на указание адреса перехода:

Поскольку далее после faexjmp будет следовать инкремент указателя IP, адрес перехода в командах перехода должен быть уменьшен на 1 и равен (adr – 1). Эта операция выполняется программистом или ассемблером автоматически.

ВАРИАНТЫ ЗАДАНИЙ К ЛАБОРАТОРНОЙ РАБОТЕ № 7

вар.

Resclk

Puskclk

Clkin

Cnt4dca

Favybrx

Вариант

последовательности

1

DFF

TTFE

Nandltch

7468 + 74137

Enadff

Д ККК ККК КК

2

DFFE

TTF

Norltch

7469 + 74138

T470

ККК ДДД ККК

3

LATCH

SRFE

Enadff

7490 + 74139

7471

ККК ДДД ДДД

4

JKFF

SRF

7470

7492 + 74154

7472

ДДД ККК ККК

5

JKFE

JKFE

7471

74160 + 74155

7473

ДДД ККК ДДД

6

SRF

JKF

7472

74168 + 74156

7474

ДДД ДДД ККК

7

SRFE

LATCH

7473

74169 + 7493

7476

ДДД ДДД ДДД

8

TTF

DFFE

7474

74196 + 16mux

7478

ККК ККК ККК

9

TTFE

DFF

7475

741196+16ndmux

74107

ДД ККК ККК К