Инструменты пользователя

Инструменты сайта


microprocessor_kit_z80-book1:04

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
microprocessor_kit_z80-book1:04 [2020-07-09 11:43]
GreyWolf [4.6. Цикл подтверждения немаскируемого прерывания]
microprocessor_kit_z80-book1:04 [2020-07-09 19:22] (текущий)
GreyWolf [4.3. Циклы ввода/вывода]
Строка 13: Строка 13:
   * выполнение команды останова.   * выполнение команды останова.
  
-Все команды состоят из последовательности машинных циклов. Каждый из этих машинных циклов продолжается от 3 до 6 тактов и может быть удлинён путём введения дополнительных +Все команды состоят из последовательности машинных циклов. Каждый из этих машинных циклов продолжается от 3 до 6 тактов и может быть удлинён путём введения дополнительных тактов TW (время ожидания),​ если скорость ЦП ограничивается быстродействием внешнего устройства.
-тактов TW (время ожидания),​ если скорость ЦП ограничивается быстродействием внешнего +
-устройства.+
  
-Рис. 4.1 показывает,​ что команды,​ как правило,​ состоят из 3 машинных циклов. Первый +[[#​pict_4_1|Рис. 4.1]] показывает,​ что команды,​ как правило,​ состоят из 3 машинных циклов. Первый машинный цикл каждой команды ​— это цикл извлечения кода операции,​ который длится 4, 5 или 6 тактов синхронизации (если он не продлевается сигналом /WAIT), в цикле M1 из памяти извлекается код команды,​ которая потом выполняется. В последующих машинных циклах осуществляется передача данных между ЦП и памятью или устройством вводавывода. Эти цикли продолжаются от 3 до 6 тактов и также могут быть продлены сигналом /WAIT, если ЦП должен синхронизироваться с внешним устройством.
-машинный цикл каждой команды ​это цикл извлечения кода операции,​ который длится 4, 5 или 6 тактов синхронизации (если он не продлевается сигналом /WAIT), в цикле M1 из памяти извлекается код команды,​ которая потом выполняется. В последующих машинных циклах осуществляется передача данных между ЦП и памятью или устройством ввода-вывода. Эти цикли +
-продолжаются от 3 до 6 тактов и также могут быть продлены сигналом /WAIT, если ЦП должен +
-синхронизироваться с внешним устройством.+
  
-Далее рассматриваются временные диаграммы базовых машинных циклов. Очередность их +Далее рассматриваются временные диаграммы базовых машинных циклов. Очередность их выполнения,​ а также точное время выполнения команд (в тактах) приведены в [[#n54|5.4]].
-выполнения,​ а также точное время выполнения команд (в тактах) приведены в 5.4.+
  
-FIXME Рис. 4.1. Пример выполнения команды+{{anchor:​pict_4_1}} 
 +{{pict_4_1.png|}} 
 +\\ Рис. 4.1. Пример выполнения команды
  
 +{{anchor:​n41}}
 ===== 4.1. Извлечение кода операции ===== ===== 4.1. Извлечение кода операции =====
  
-На рис.4.2 отражены временные процессы цикла M1. Содержимое счётчика команд PC (адрес кода операции в памяти) подается на шину адреса непосредственно в начале машинного цикла. Через полтакта (когда адрес памяти стабилизируется на шине) активизируется сигнал /MREQ. Его спадающий фронт прямо используется для выбора микросхемы запоминающего устройства. Одновременно с этим включается сигнал /RD и позволяет передать данные из памяти на шину данных ЦП. По нарастающему фронту такта T3 данные вводятся в ЦП. Этот же фронт используется и для выключения сигналов /MREQ и /RD+На [[#​pict_4_2|рис.4.2]] отражены временные процессы цикла M1. Содержимое счётчика команд PC (адрес кода операции в памяти) подается на шину адреса непосредственно в начале машинного цикла. Через полтакта (когда адрес памяти стабилизируется на шине) активизируется сигнал /MREQ. Его спадающий фронт прямо используется для выбора микросхемы запоминающего устройства. Одновременно с этим включается сигнал /RD и позволяет передать данные из памяти на шину данных ЦП. По нарастающему фронту такта T3 данные вводятся в ЦП. Этот же фронт используется и для выключения сигналов /MREQ и /RD
  
 Во время тактов T3 и T4 происходит дешифрация и выполнение извлеченной команды внутри МП. Одновременно с этим производится регенерация динамической памяти:​ на 7 младших битов шины адреса подается адрес регенерации,​ и активизируется сигнал /RFSH указывая на то, что ША содержит адрес регенерации. Само восстановление происходит по сигналу /MREQ; сигнал RFSH нельзя использовать для этого, т.к. Устойчивость адреса регенерации обеспечивается только ко времени включения /MREQ. Во время регенерации сигнал /RD не формируется,​ чтобы избежать передачи данный из различных областей памяти на шину данных. Во время тактов T3 и T4 происходит дешифрация и выполнение извлеченной команды внутри МП. Одновременно с этим производится регенерация динамической памяти:​ на 7 младших битов шины адреса подается адрес регенерации,​ и активизируется сигнал /RFSH указывая на то, что ША содержит адрес регенерации. Само восстановление происходит по сигналу /MREQ; сигнал RFSH нельзя использовать для этого, т.к. Устойчивость адреса регенерации обеспечивается только ко времени включения /MREQ. Во время регенерации сигнал /RD не формируется,​ чтобы избежать передачи данный из различных областей памяти на шину данных.
  
-FIXME Рис. 4.2. Извлечение кода операции (цикл M1)+{{anchor:​pict_4_2}} 
 +{{pict_4_2.png|}} 
 +\\ Рис. 4.2. Извлечение кода операции (цикл M1)
  
-На рис.4.3 показано,​ как продлевается цикл извлечения кода операции,​ если память активизирует линию /WAIT. Во время спадающего фронта такта T2 и каждого последующего такта ​T w ЦП анализирует линию /WAIT. Если она активна,​ то микропроцессор вырабатывает дополнительный такт ожидания ​T w . Т.е. цикл считывания продолжается сколь угодно долго и +На [[#​pict_4_3|рис.4.3]] показано,​ как продлевается цикл извлечения кода операции,​ если память активизирует линию /WAIT. Во время спадающего фронта такта T2 и каждого последующего такта ​Tw ЦП анализирует линию /WAIT. Если она активна,​ то микропроцессор вырабатывает дополнительный такт ожидания ​Tw. Т.е. цикл считывания продолжается сколь угодно долго и приводится в соответствие со временем доступа к любой памяти.
-приводится в соответствие со временем доступа к любой памяти.+
  
-FIXME Рис. 4.3. Извлечение кода операции (цикл M1) с тактами ожидания+{{anchor:​pict_4_3}} 
 +{{pict_4_3.png|}} 
 +\\ Рис. 4.3. Извлечение кода операции (цикл M1) с тактами ожидания
  
 +{{anchor:​n42}}
 ===== 4.2. Цикл чтения памяти и цикл записи в память ===== ===== 4.2. Цикл чтения памяти и цикл записи в память =====
  
-На рис. 4.4 показаны временные процессы циклов чтения из памяти и записи в память. Длительность этик циклов 3 такта, если не активизирована линия /WAIT. Сигналы /MREQ и /RD используются так же, как в цикле M1. В обоих циклах сигнал /MREQ активизируется,​ когда уровни сигналов на шине адреса стабилизировались,​ поэтому его спадающий фронт используется для выбора микросхемы ЗУ. В цикле записи линия /WR активизируется,​ когда данные на шине данных уже стабилизировались,​ т. о. этот сигнал непосредственно используется как импульс записи для всех типов полупроводниковой памяти. Он выключается на полтакта до изменения содержимого ША и ШД, что удовлетворяет параметрам всех типов полупроводниковых ОЗУ.+На [[#​pict_4_4|рис. 4.4]] показаны временные процессы циклов чтения из памяти и записи в память. Длительность этик циклов 3 такта, если не активизирована линия /WAIT. Сигналы /MREQ и /RD используются так же, как в цикле M1. В обоих циклах сигнал /MREQ активизируется,​ когда уровни сигналов на шине адреса стабилизировались,​ поэтому его спадающий фронт используется для выбора микросхемы ЗУ. В цикле записи линия /WR активизируется,​ когда данные на шине данных уже стабилизировались,​ т. о. этот сигнал непосредственно используется как импульс записи для всех типов полупроводниковой памяти. Он выключается на полтакта до изменения содержимого ША и ШД, что удовлетворяет параметрам всех типов полупроводниковых ОЗУ.
  
-FIXME Рис. 4.4. Цикл чтения из памяти и цикл записи в память+{{anchor:​pict_4_4}} 
 +{{pict_4_4.png|}} 
 +\\ Рис. 4.4. Цикл чтения из памяти и цикл записи в память
  
-На рис.4.5 показано,​ как запрос /WAIT продлевает операцию чтения или записи в память.+На [[#​pict_4_5|рис. 4.5]] показано,​ как запрос /WAIT продлевает операцию чтения или записи в память.
 Это происходит так же, как в цикле M1. Это происходит так же, как в цикле M1.
  
-FIXME Рис. 4.6. Цикл чтения из памяти и цикл записи в память с тактами ожидания+{{anchor:​pict_4_5}} 
 +{{pict_4_5.png|}} 
 +\\ Рис. 4.5. Цикл чтения из памяти и цикл записи в память с тактами ожидания 
 + 
 +{{anchor:​n43}}
 ===== 4.3. Циклы ввода/​вывода ===== ===== 4.3. Циклы ввода/​вывода =====
  
-На рис. 4.6 изображены временные диаграммы циклов ввода–вывода.+На [[#​pict_4_6|рис. 4.6]] изображены временные диаграммы циклов ввода–вывода.
  
-При вводе/​выводе содержимое шины адреса различно для двух случаев.+При вводе/​выводе содержимое шины адреса различно для двух случаев
 +  - Команды IN А,(п) и OUT (n),A: 
 +    * A0–A7 — содержит адрес канала (n) 
 +    * A8–A15 — содержимое аккумулятора 
 +  - Команды IN r,(C), INI, INIR, IND, INDR и OUT (C),r, OUTI, OTIR, OUTD, OTDR: 
 +    * A0–A7 — Содержимое регистра C 
 +    * A8–A15 — содержимое регистра B((т.е. МП Z80 может адресовать 64К устройств ввода/​вывода (в отличие от I8080, где А8–А15 дублируют А0–А7) ))
  
-  - 1). Команды IN А,​(п) ​и OUT (n),A: +Важно отметитьчто в операциях ввода–вывода __автоматически__ вводится такт ожидания Tw*, потому что время от включения сигнала /IORQ до момента опроса линии ожидания центральным процессором недостаточно для ​декодирования адреса устройства ввода–вывода и активизации им линии /WAITВо время этого такта также опрашивается линия ожидания, что ​даёт возможность согласовать ​работу ЦП с работой любых медленно действующих ​устройств. В операции ​ввода ​сигнал ​/RD используется для передачи данных адресованного канала на шину данных ЦП, как и при чтении памяти. В операциях вывода сигнал /WR используется как строб записи. Он выключается за полтакта до изменения состояния ША и ШДчто обеспечивает надежность записи в канал.
-    - A0-A7 — содержит адрес канала (n). +
-    - A8-A15 — содержимое ​аккумулятора. +
-  - 2) Команды IN r,(C), INI, INIR, IND, INDR и OUT (C),r, OUTI, OTIR, OUTD, OTDR: +
-    - A0-A7 — Содержимое регистра C. +
-    - A8-A15 — содержимое регистра ​B((Т. МП Z80 может адресовать ​64К устройств ввода/вывода ​(в отличие от I8080, где А8-А15 +
-дублируют А0-А7).)).+
  
-Важно отметить, что в операциях ввода-вывода __автоматически__ вводится такт ожидания Tw*, потому что время от включения сигнала /IORQ до момента опроса линии ожидания центральным процессором недостаточно для декодирования адреса устройства ​ввода-вывода и активизации им линии /WAIT. Во время этого такта также опрашивается ​линия ожидания,​ что даёт ​возможность согласовать работу ЦП с работой любых медленно действующих устройств. В операции ввода ​сигнал /RD используется для передачи данных адресованного канала на шину данных ЦП, как и при чтении памяти. В операциях вывода сигнал /WR используется как строб записи. Он выключается за полтакта до изменения состояния ША и ШД. что обеспечивает надежность записи в канал.+{{anchor:​pict_4_6}} 
 +{{pict_4_6.png|}} 
 +\\ Рис. 4.6. Цикл ввода и цикл вывода
  
-FIXME На рис. 4.7 изображены циклы ввода/​вывода с дополнительными тактами ожидания.+На [[#​pict_4_7|рис. 4.7]] изображены циклы ввода/​вывода с дополнительными тактами ожидания.
  
 +{{anchor:​pict_4_7}}
 +{{pict_4_7.png|}}
 +\\ Рис. 4.7. Цикл ввода и цикл вывода с тактами ожидания
  
-FIXME Рис. 4.7. Цикл ​ввода и цикл вывода с тактами ожидания+{{anchor:​n44}} 
 +===== 4.4. Цикл ​предоставления доступа к шине =====
  
-===== 4.4. Цикл предоставления доступа к шиине ===== +[[#​pict_4_8|Рис. 4.8]] отражает временные диаграммы запроса на доступ к шине и цикла подтверждения запроса. Сигнал /BUSRQ воспринимается ЦП во время нарастающего фронта последнего такта каждого машинного цикла. Если он имеет активный низкий уровень,​ то во время нарастающего фронта следующего тактового импульса (т.е. по окончании цикла) ЦП переводит шины адреса и данных,​ а также трехстабильные Сигналы управления в высокоомное состояние и активизирует сигнал подтверждения /BUSAK. Т.е. максимальное время до предоставления шины равно длительности машинного цикла (если запрос поступил в начале этого цикла).
- +
-Рис. 4.8 отражает временные диаграммы запроса на доступ к шине и цикла подтверждения запроса. Сигнал /BUSRQ воспринимается ЦП во время нарастающего фронта последнего такта каждого машинного цикла. Если он имеет активный низкий уровень,​ то во время нарастающего фронта следующего тактового импульса (т.е. по окончании цикла) ЦП переводит шины адреса и данных,​ а также трехстабильные Сигналы управления в высокоомное состояние и активизирует сигнал подтверждения /BUSAK. Т.е. максимальное время до предоставления шины равно длительности машинного цикла (если запрос поступил в начале этогоцикла).+
  
 Теперь внешнее устройство,​ запросившее доступ,​ может управлять шинами и передавать данные между памятью и УВВ. Этот режим называется прямым доступом к памяти (ПДП — DMA — Direct Memory Access). Его нельзя прервать ни сигналом /INT, ни /NMI. Теперь внешнее устройство,​ запросившее доступ,​ может управлять шинами и передавать данные между памятью и УВВ. Этот режим называется прямым доступом к памяти (ПДП — DMA — Direct Memory Access). Его нельзя прервать ни сигналом /INT, ни /NMI.
Строка 82: Строка 93:
 Следует помнить,​ что во время длительных циклов ПДП (например,​ в случае пересылки больших блоков данных) и при использовании динамического ЗУ регенерацию должно осуществлять внешнее устройство. Следует помнить,​ что во время длительных циклов ПДП (например,​ в случае пересылки больших блоков данных) и при использовании динамического ЗУ регенерацию должно осуществлять внешнее устройство.
  
-FIXME Рис. 4.6. Цикл предоставления доступа к шине+{{anchor:​pict_4_8}} 
 +{{pict_4_8.png|}} 
 +\\ Рис. 4.8. Цикл предоставления доступа к шине
  
 +{{anchor:​n45}}
 ===== 4.5. Цикл подтверждения маскируемого прерывания ===== ===== 4.5. Цикл подтверждения маскируемого прерывания =====
  
-На рис.4.9 показаны временные процессы при запросе и подтверждении прерывания.+На [[#​pict_4_9|рис.4.9]] показаны временные процессы при запросе и подтверждении прерывания.
  
 Сигнал прерывания /INT опрашивается ЦП во время нарастающего фронта последнего такта в Сигнал прерывания /INT опрашивается ЦП во время нарастающего фронта последнего такта в
 конце каждой команды. Запрос игнорируется,​ если триггер разрешения прерывания сброшен или активен сигнал /BUSRQ. Если запрос воспринимается,​ то ЦП __вырабатывает специальный__ цикл M1, в котором активизируется сигнал /IORQ (вместо /MREQ). Низкий уровень сигнала /IORQ указывает устройству,​ запросившему прерывание,​ что оно может подать на шину данных 8 разрядный вектор прерывания. В этот цикл __автоматически__ включаются два такта ожидания Tw* (это позволяет сравнительно легко реализовать схему приоритетных прерываний),​ которые дают необходимое время для определения запросившего устройства и стабилизации вектора прерывания на шине данных. конце каждой команды. Запрос игнорируется,​ если триггер разрешения прерывания сброшен или активен сигнал /BUSRQ. Если запрос воспринимается,​ то ЦП __вырабатывает специальный__ цикл M1, в котором активизируется сигнал /IORQ (вместо /MREQ). Низкий уровень сигнала /IORQ указывает устройству,​ запросившему прерывание,​ что оно может подать на шину данных 8 разрядный вектор прерывания. В этот цикл __автоматически__ включаются два такта ожидания Tw* (это позволяет сравнительно легко реализовать схему приоритетных прерываний),​ которые дают необходимое время для определения запросившего устройства и стабилизации вектора прерывания на шине данных.
  
-FIXME Рис. 4.9. Цикл подтверждения маскируемого прерывания+{{anchor:​pict_4_9}} 
 +{{pict_4_9.png|}} 
 +\\ Рис. 4.9. Цикл подтверждения маскируемого прерывания
  
 Кроме двух обязательных тактов ожидания активным сигналом /WAIT могут быть введены Кроме двух обязательных тактов ожидания активным сигналом /WAIT могут быть введены
-дополнительные такты ожидания,​ что отражено на рис. 4.10.+дополнительные такты ожидания,​ что отражено на [[#​pict_4_10|рис. 4.10]].
  
-FIXME Рис. 4.10. Цикл подтверждения маскируемого прерывания с тактами ожидания+{{anchor:​pict_4_10}} 
 +{{pict_4_10.png|}} 
 +\\ Рис. 4.10. Цикл подтверждения маскируемого прерывания с тактами ожидания
  
 +{{anchor:​n46}}
 ===== 4.6. Цикл подтверждения немаскируемого прерывания ===== ===== 4.6. Цикл подтверждения немаскируемого прерывания =====
  
-На рис. 4.11 показан цикл запроса/​подтверждения немаскируемого прерывания.+На [[#​pict_4_11|рис. 4.11]] показан цикл запроса/​подтверждения немаскируемого прерывания.
  
 Информация о запросе /NMI анализируется одновременно с сигналом /INT (подробнее см. 6.2), но /NMI имеет более высокий приоритет и его нельзя запретить программно. Назначение /NMI — немедленное реагирование ЦП на внешние события (например,​ отказ питания). Ответ ЦП сходен с обычным циклом M1, с той лишь разницей,​ что шина данных игнорируется,​ т. к. при NMI ЦП выполняет повторный запуск с адреса 66H и вектор прерывания не нужен. Информация о запросе /NMI анализируется одновременно с сигналом /INT (подробнее см. 6.2), но /NMI имеет более высокий приоритет и его нельзя запретить программно. Назначение /NMI — немедленное реагирование ЦП на внешние события (например,​ отказ питания). Ответ ЦП сходен с обычным циклом M1, с той лишь разницей,​ что шина данных игнорируется,​ т. к. при NMI ЦП выполняет повторный запуск с адреса 66H и вектор прерывания не нужен.
Строка 106: Строка 125:
 В цикле подтверждения NMI сигнал /WAIT не воспринимается. В цикле подтверждения NMI сигнал /WAIT не воспринимается.
  
-FIXME +{{anchor:​pict_4_11}} 
 +{{pict_4_11.png|}} ​
 \\ Рис. 4.11. Цикл подтверждения немаскируемого прерывания \\ Рис. 4.11. Цикл подтверждения немаскируемого прерывания
 +
 +{{anchor:​n47}}
 ===== 4.7. Выполнение команды останова ===== ===== 4.7. Выполнение команды останова =====
- 
  
 Команда HALT вводит МП в состояние останова. Каждый цикл в состоянии останова представляет собой обычный цикл M1 с той лишь разницей,​ что извлекаемые из памяти данные Команда HALT вводит МП в состояние останова. Каждый цикл в состоянии останова представляет собой обычный цикл M1 с той лишь разницей,​ что извлекаемые из памяти данные
Строка 115: Строка 136:
  
 Сигнал /HALT своим активным уровнем сообщает,​ что ЦП находится в состоянии останова. Выход из этого состояния возможен только по прерыванию (маскируемому,​ если оно разрешено,​ или немаскируемому). Обе линии прерывания опрашиваются во время нарастающего Сигнал /HALT своим активным уровнем сообщает,​ что ЦП находится в состоянии останова. Выход из этого состояния возможен только по прерыванию (маскируемому,​ если оно разрешено,​ или немаскируемому). Обе линии прерывания опрашиваются во время нарастающего
-фронта такта T4. как показано на рис. 4.12. Если прерывание воспринято,​ то следующий цикл будет циклом подтверждения прерывания.+фронта такта T4. как показано на [[#​pict_4_12|рис. 4.12]]. Если прерывание воспринято,​ то следующий цикл будет циклом подтверждения прерывания. 
 + 
 +{{anchor:​pict_4_12}} 
 +{{pict_4_12.png|}} 
 +\\ Рис. 4.12. Выполнение команды останова 
  
 ---- ----
microprocessor_kit_z80-book1/04.1594284190.txt.gz · Последние изменения: 2020-07-09 11:43 — GreyWolf