литература / Пухальский Проектирование микропроцессорных систем 2001
.pdf250 |
Глава 3. Интерфейсные БИС |
D5 - |
EW (Extended Write) — задание расширенной длительности активных уровней (0) |
системных сигналов управления MEMW и I/O W в активном режиме работы DMAC (длитель ность этих сигналов при значении EW = 1 показана на рис. 3.66 штриховой линией);
D6 = TCS (Terminal Count Stop) — разрешение автоматического сброса в 0 разряда СН„, по окончании пересылки всего блока данных по каналу т при TCS = 1, что предотвращает про должение дальнейших DMA-операций по этому каналу, если внешнее устройство I/O,,, не сняло запрос DRQm= 1. Если разряд TCS = 0, то прекращение DMA-операций возлагается на внешнее устройство 1/От, информируемое о конце пересылок значением сигнала ТС = 1;
D7 = AL (Auto Load) — разрешение автоматической загрузки значений ARG3 и TCRG3 кана ла 3 в соответствующие регистры канала 2 после его обслуживания. Если разряд AL = 1, то при загрузке параметров АВ2 и АА2 в регистры ARG2 и TCRG2 они автоматически дублируются
врегистрах ARG3 и TCRG3 канала 3. Затем эти параметры используются для автоматического восстановления исходных значений ARG2 и TCRG2 (цикл обновления) после передачи блока данных без непосредственного программного вмешательства между блоками. Такой режим работы DMAC используется, например, при регенерации изображения на дисплее (блок данных
впамяти содержит экранную информацию). Разряд СН2 не сбрасывается автоматически в 0 после обслуживания канала 2 при значении разрядов AL = 1 и TCS = 1.
До установки значения разряда СНт = 1 следует произвести загрузку регистров ARGm и TCRGm канала т значениями базового адреса АВтсистемной памяти и размером пересылаемого
блока данных ДАШдля предотвращения разрушения хранящихся в памяти данных при случай ном запросе ПДП внешним устройством 1/От.
Инициатором ПДП может быть как I/O, так и МП. Если значение сигнала DRQm = 1, то ПДП вызывает МП подачей команды установки режима, в которой разряд СНт= 1. Перед по дачей этой команды должен быть запрограммирован начальный адрес ARGm = АВт и размер блока TCRGm= ДА,„.
Регистр состояния DM AC 8257. Формат слова состояния SW показан на рис. 3.69. Разря ды ТСт устанавливаются в 1 при обнулении терминального счетчика (ТС,„ = 1 означает, что канал m обслужен). Разряд UP (флаг обновления) устанавливается в 1 при автозагрузке (при значении разряда A L = 1). При чтении слова состояния SW все разряды ТСт сбрасываются в 0, при этом флаг UP не сбрасывается. Сброс этого флага производится при подаче сигнала сис темного сброса или при сбросе режима автозагрузки (разряд AL в команде установки режима сбрасывается в 0), а также при окончании цикла обновления.
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
Status Register |
0 |
0 |
0 |
UP |
ТСЪ |
тс2 |
тсх |
ТСо |
(,SRG) |
|
|
|
|
т |
|
|
|
|
|
Update F lag ---- |
Terminal Count Status Bits |
|
Рис. 3.69. Формат слова состояния DMAC
У правление электронны м диском. Объем системной памяти МП-систем, построенных на основе МП 8080А/8085А, равен всего 64 Кбайта. Это иногда вызывает необходимость ис пользовать внешнюю память для хранения больших объемов оперативных данных или загру жаемых в системную память прикладных программ. Внешнюю память можно реализовать как на магнитных дисках (требуется некоторая дисковая операционная система), так и на БИС по стоянной и оперативной памяти (на электронном диске). Принципиальная схема контроллера прямого доступа к памяти, управляющего обменом данными между системной памятью и электронным диском была приведена на рис. 2.23.
3.6. Контроллеры прямого доступа к памяти 8257 и 8237А |
251 |
Пересылка блоков размером до 256 байт из электронного диска в системную память (DMA-запись) инициируется программой:
|
|
Инициализация счетчика адресов электронного диска (см. рис. 2.23) |
|
MVI |
A, A led |
А |
Aled — младший байт адреса электронного диска |
OUT |
90h |
1533ИЕ7 <- Aled |
|
MVI |
A, Ahed |
А <— Ahed — старший байт адреса электронного диска |
|
OUT |
0A0h |
1533ИЕ7 <- Ahed |
|
MVI |
A, Aim |
А |
Aim — младший байт базового адреса системной памяти Ав0 |
OUT |
80h |
ARG0 ^— Aim |
|
MVI |
A, Ahm |
А <— А /mi — старший байт базового адреса системной памяти Ав0 |
|
OUT |
80ft |
ARGq t— Ahm |
|
MVI |
A, Vw |
А <— Vm — младший байт размера пересылаемого блока АА0 |
|
OUT |
81ft |
TCRGo <— Vm |
|
MVI |
A, 40ft |
А <- RdW rCl3Cn C n C i0C9Cs = 0100 0000 (RdWr = 01 — DMA-запись) |
|
OUT |
81ft |
TCRG0 RdW rCl3C i2C u C 10C9Cs |
|
MVI |
A, 41ft |
A <- C W = 0100 0001 (D6 = TCS = 1 , D0= CH0= 1) |
|
OUT |
88ft |
MSRG CW — передача управления шинами контроллеру DMA |
Пересылка блоков размером до 256 байт из системной памяти в электронный диск (DMA-чтение) инициируется такой же программой при задании значения TCRG0 = 80/г вместо 4Oh в старшем байте регистра TCRG0. Для пересылок блоков большего размера следует задать значения старших шести разрядов размера блока С 13С 12С ц С 10С 9С я Ф 000000.
С труктурная схема контроллера ПДП 8237А. Этот контроллер (рис. 3.70) обладает зна чительно большими возможностями, чем рассмотренный выше. В частности, в контроллере ПДП 8237А предусмотрены независимая автоинициализация всех четырех приоритетных кана лов ПДП, передачи типа “память-память”, инкремент и декремент адреса, каскадирование для увеличения числа каналов ПДП и независимое управление полярностью сигналов DREQm и DACKm (значением активного уровня сигналов). В контроллере ПДП 8237А введены три базо вых режима передачи данных и значительно расширены возможности программного управле ния, что позволяет увеличить производительность МП-системы при передаче данных и произ водить системную оптимизацию [12, 13]. Кроме того, допускается динамическая реконфигура ция под управлением программного обеспечения. Каждый канал может управлять пересылкой блоков данных размером от одного байта до 64 Кбайт.
Принцип работы DMAC 8237А такой же, что и DMAC 8257 (см. выше). Передачи типа “Memory-1/O” и “1/О-Метогу” выполняются за четыре такта сигнала синхронизации CLK, а передачи типа “М етогу-М етогу” — за восемь тактов (первые четыре такта на чтение памяти с сохранением байта данных во внутреннем регистре и следующие четыре такта на запись бай та данных в память по новому адресу).
На структурной схеме DMAC 8237А, изображенной на рис. 3.71, многие управляющие сигналы между блоками не показаны. Контроллер содержит 27 регистров памяти (всего 344 триггера). Основные узлы контроллера имеют назначение:
Timing and Control — устройство синхронизации и управления, генерирующее внутренние и внешние сигналы управления;
Priority Encoder and Rotating Priority Logic — приоритетная решающая схема с цикличе ским изменением приоритетов, выбирающая один из четырех каналов ПДП, имеющий наи больший приоритет (при одновременном запросе ПДП сигналами DREQm от нескольких //0,„,
где m = 0, 1, 2, 3);
3.6. Контроллеры прямого доступа к памяти 8257 и 8237А |
253 |
Inc/Decrementor, Temp Address Reg (инкрементор/декрементор и регистр временного хра нения текущего значения адреса системной памяти) — устройство, вычисляющее значение АВт+ 1 или АВт - 1 в каждом DMA-цикле;
Decrementor, Temp Word Count Reg (декрементор и регистр временного хранения текущего значения числа оставшихся DMA-циклов) — устройство, в каждом DMA-цикле, вычисляющее значение ААт - 1;
Current Address — четыре 16-разрядных регистра хранения текущих значений адресов Ат системной памяти;
Current Word Count — четыре 16-разрядных регистра хранения текущих значений числа оставшихся DMA-циклов;
Command — 8-разрядный регистр хранения команд;
Mask — 4-разрядный регистр хранения маски запросов DMA от внешних устройств;
Request — 4-разрядный регистр хранения запросов DMA по требованию МП;
Mode — четыре 6-разрядных регистра хранения режимов работы каналов DMA;
Command Control — устройство управления, декодирующее различные команды, полу ченные от МП до обслуживания запроса DMA, а также декодирующее слово управления режи мами, задающее тип передач DMA при обслуживании;
Status — 8-разрядный регистр слова состояния;
Temporary — 8-разрядный регистр временного хранения байта данных при передачах типа “память-память”.
Назначение сигналов DM AC 8237А. Обозначения и назначение большинства сигналов DMAC 8257 и 8237А совпадают, поэтому нет смысла описывать их заново (сигналы DREQ3_0 соответствуют сигналам DRQ3_0 — DMA Request). Отличительные особенности некоторых сиг налов DMAC 8257:
DREQi^o (DMA Request) — сигналы запросов DMA от внешних устройств I/Om (m = 0 ... 3). Если не используется циклический сдвиг приоритетов, то вход DRQ0 имеет наибольший, а вход DRQi наименьший приоритет. Полярность (значение активного уровня) сигналов DREQ,,, про граммируется пользователем — можно задать прямые DREQm или инверсные DREQm сигналы (активные уровни 1 и 0 соответственно). Значение сигнала сброса RESET = 1 задает прямые сигналы DREQm. Значение DREQm = 1 должно удерживаться до тех пор, пока соответствующий сигнал подтверждения DACKmне перейдет в активное состояние;
DACK3 (DMA Acknowledge) — сигнал подтверждения DMA для внешнего устройства I/Om(m = 0 ... 3). Полярность сигналов DACKm программируется пользователем. Значение сиг нала сброса RESET = 1 задает инверсные сигналы DACK,,,. Пары сигналов DREQm и DACKm (или DACKm) являются сигналами квитирования ввода-вывода по прямому доступу к памяти для DMАС и I/Om;
ЕОР (End o f Process) — двунаправленная линия, по которой передается сигнал, активный уровень которого (0) указывает окончание процесса передачи данных (завершение обслужива ния по прямому доступу к памяти). Контакт ЕОР (вход) можно использовать для подачи внеш него сигнала ЕОР = 0, требующего окончания процесса. Если контакт ЕОР не используется для подачи внешнего сигнала, то его следует подключить к источнику напряжения питания +5 В через нагрузочный резистор, чтобы предотвратить ошибочное окончание процесса помехами. Значение выходного сигнала ЕОР = 0 генерируется при достижении конца счета DMA-циклов,
когда текущее значение ДАШстанет равным 0. Длительность низкого уровня сигнала ЕОР равна одному такту сигнала CLK в момент пересылки последнего байта данных, т. е. в этом случае сигнал ЕОР выполняет функцию сигнала ТС контроллера 8257 (см. рис. 3.66). Значение сигна ла ЕОР ~ 0 (внутреннее или внешнее) заставляет контроллер прекратить обслуживание внеш него устройства, сбрасывает запрос и если разрешена автоинициализация, содержимое базовых (Base) регистров (АНт и ААт) перезаписывается в текущие (Current) регистры обслуженного
256 |
|
|
|
|
|
Глава 3. Интерфейсные БИС |
о 7 D6 Ds |
d 4 |
Оз |
d 2 |
D\ |
D0 |
Control Word Command Register |
0 0 0 |
0 |
0 |
0 |
0 |
0 |
<= RESET = 1 и команда M aster Clear |
0 — Memory-to-memory disable (запрет передач “память-память”) 1 — Memory-to-memory enable (разрешение передач)
0 — Channel 0 address hold disable (запрет удержания адреса кан. 0)
1— Channel 0 address hold enable (разрешение удержания адреса)
х— если значение разряда D0 = О
0— Controller enable (разрешение DMA-передач)
1— Controller disable (запрет DMA-передач для всех каналов DMAC)
0 — Normal timing (выполнение передач за четыре такта)
1— Compressed timing (выполнение передач за два такта)
х— если значение разряда D0 = 1 (режим Compressed нельзя использовать)
0 — Fixed priority (фиксированные приоритеты)
1 — Rotating priority (циклические приоритеты)
0 — Late write selection (активные уровни MEMW и HOW нормальн. длительности) 1 — Extended write selection (активные уровни MEMW и HOW расширенной
х — если значение разряда D3 = 1 длительности; см. рис. 3.66)
0 — DREQ sense active high (задание прямого сигнала DREQ — активный уровень 1)
1 — DREQ sense active low (задание инверсного сигнала DREQ — активный уровень 0)
0 — DACK sense active low (задание инверсного сигнала DACK — активный уровень 0) 1 — DACK sense active high (задание прямого сигнала DACK — активный уровень 1)
Рис. 3.73. Формат слова управления регистра команд
Слово управления регистра режимов. Данное слово управления (рис. 3.74) задает инди видуальные режимы работы для каждого канала DMA (port = хВй) — шесть разрядов слова управления D7 2 записываются в выбранный разрядами DiD0 = т регистр режима канала т. Назначение разрядов слова управления:
D[D0 = т — выбор регистра режима канала ш;
D3D2 — выбор режима работы канала т. Эти разряды по назначению эквивалентны разря дам RdWr для контроллера 8257 (см. рис. 3.67);
D4 — запрет (D4 = 0) и разрешение (D4 = 1) автоинициализации канала т. Если значение разряда D4 = 1, то после передачи текущего блока данных содержимое АВт регистра хранения базового адреса Base Address и содержимое ААт регистра хранения размеров пересылаемых блоков Base Word Count автоматически переписываются в регистры хранения текущих значе ний этих величин Current Address и Current Word Count (см. рис. 3.71);
D5 — выбор направления передачи данных памяти для канала /и; D7D6 — выбор режима передачи данных для канала т.
В реж име одиночной передачи (D7D 6 = 01) после каждого DMA-цикла контроллер осво бождает шины микропроцессору минимум на один цикл шины данных (снимается запрос за хвата шин HRQ = 1), но сразу же начинает проверку входов DREQm, и как только обнаруживает активный уровень, инициирует следующий DMA-цикл (подается новый запрос захвата шин HRQ = 1). Так продолжается до тех пор, пока не будут пересланы все ДАт байт данных и не будет получено значение ЕОР = 0. Значение активного уровня сигнала DREQmдолжно поддер живаться до получения активного уровня сигнала DACKm.
258 |
Глава 3. Интерфейсные БИС |
Слово управления регистра запросов. Операция, выполняемая при подаче этого слова управления (рис. 3.75), аналогична операции поразрядной установки/сброса в БИС 8255А (см. рис. 3.3) — производится запись значения 0 или 1 только в один из разрядов 4-разрядного регистра программных запросов DMA (port = х9h).
Установка в 1 разряда запроса DMA какого-либо канала т эквивалентна подачи активного уровня сигнала DREQm от внешнего устройства, т. е. прямым доступом к памяти можно управ лять программным способом. Этот разряд автоматически сбрасывается в 0 при завершении передачи значением сигнала ЕОР - 0.
Слово управления регистра маски. Операция, выполняемая при подаче этого слова управления (рис. 3.76), аналогична операции поразрядной установки/сброса в БИС 8255А (см. рис. 3.3) — производится запись значения 0 или 1 только в один из разрядов 4-разрядного регистра маски DMA (port - xAh).
X X X X X d 2 D , Do Control Word Mask Register (D , Df) = m)
00 — Select Channel 0 (селекция канала 0)
01 — Select Channel 1 (селекция канала 1)
10 — Select Channel 2 (селекция канала 2)
11 — Select Channel 3 (селекция канала 3)
0 — Clear mask bit (сброс в 0 разряда маскирования DMA канала m) 1 — Set mask bit (установка в 1 разряда маскирования DMA канала т)
Рис. 3.76. Формат слов управления регистра запросов и регистра маски
Установка в 1 разряда маски DMA какого-либо канала т блокирует аппаратные запросы DMA этого канала DREQm (программные запросы не блокируются). Разряд маски обслуживае мого канала т автоматически устанавливается в 1 при завершении передачи значением сигнала ЕОР = 0, если канал т не запрограммирован на автоинициализацию.
Слово управления установки маски. Это слово управления (рис. 3.77) используется для установки маски DMA сразу для всех четырех каналов т (port = xFh). Установку в 0 всех раз рядов маски можно выполнить командой Clear Mask Register (см. табл. 3.13).
X X X X D 3 d 2 о , D0 Control Word All Mask Register Bits
0 — Clear channel 0 mask bit (запросы DMA кан. 0 обслуживаются) 1 — Set channel 0 mask bit (запросы DMA канала 0 блокируются)
0 — Clear channel 1 mask bit (запросы DMA канала 1 обслуживаются) 1 — Set channel 1 mask bit (запросы DMA канала 1 блокируются)
0 — Clear channel 2 mask bit (запросы DMA канала 2 обслуживаются) 1 — Set channel 2 mask bit (запросы DMA канала 2 блокируются)
0 — Clear channel 3 mask bit (запросы DMA канала 3 обслуживаются) 1 — Set channel 3 mask bit (запросы DMA канала 3 блокируются)
Рис. 3.77. Формат слова управления установки маски