Блок управления внешними регистрами
Блок управления внешними регистрами предназначен для быстрого доступа к 16 внешним 8-разрядным регистрам. Для доступа к этим регистрам в процессорное ядро 8051 модифицировано поведение команды MOV.
При обращении командой MOV в диапазоны памяти E8h-EFh и D8h-DFh резидентного ОЗУ выполняется остановка большей части блоков процессора и задействуется блок управления внешними регистрами. Этот блок выполняет запись/чтение внешнего регистра, разворачивая диаграмму записи/чтения на линиях ввода-вывода. Блок управления внешними регистрами управляет линиями ввода-вывода напрямую, минуя системную шину, что позволяет прочитать или записать данные в регистр за минимальное количество тактов.
Во время остановки процессора продолжает работать таймер и блок обращения к памяти программ, осуществляющий предварительную вычитку данных в FIFO.
Обращение к внешним регистрам
Когда ядро 8051 декодирует одну из команд обращения к внешним регистрам, оно передает эту команду (и, в случае записи, данные для записи) в блок управления внешними регистрами (EXT_ REG_CONTROL). Блок, в свою очередь, выдает сигнал FORCE для GPIOB и GPIOC. Поэтому сигналу на выводы GPIOC начинают выдаваться сигналы SEL, EN и WR/RD для внешних регистров, а на выводы GPIOB выдаются данные для записи в регистр (при записи), либо же эти выводы принимают данные из внешнего регистра (при чтении). Включение/выключение выходного буфера GPIO происходит автоматически, вне зависимости от текущего значения регистра GPIO_DIR. Вывод GPIO должен быть настроен как вывод общего назначения (соединен с портом P процессора) в регистрах GPIO_ALTF0 и GPIO_ALTF1.
Сигнал | Вывод GPIO | Направление | Описание |
---|---|---|---|
DATA<7:0> | GPIOB<7:0> | Выход при записи, вход при чтении | 8-битная шина данных |
SELL<3:0> | GPIOC<7:6; 3:2> | Выход | Выбор внешнего регистра |
EN | GPIOC<1> | Выход | Сигнал разрешения доступак внешнему регистру |
WR/RD | GPIOC<0> | Выход | Сигнал записи/чтения: «1» – запись,«0» – чтение |
До начала диаграммы GPIOB и GPIOC были настроены на вход, поэтому все сигналы (DATA, SEL, EN, WR/RD) находятся в состоянии высокого импеданса.
Сигнал CLK, показанный на диаграммаx – это тактовый сигнал процессора 8051. Это внутренний сигнал системы, он не выдается на внешние регистры, однако именно к нему привязаны обе формируемые диаграммы.
Диаграмма начинается в момент, когда процессор начинает выполнение команды MOV. На такте 1 CPU декодирует полученную из памяти программ команду. На такте 2 он передает команду в блок управления регистрами. В этот момент блок управления внешними регистрами захватывает контроль над GPIOB и GPIOC. Следующие 3 такта (такты 3, 4, 5) блок выдает диаграмму записи или чтения. После этого все линии GPIOB и GPIOC возвращаются в состояние высокого импеданса.
На тактах 6 и 7 несмотря на то, что чтение или запись закончены, CPU удерживается в состоянии остановки. Это сделано для того, чтобы если следующей командой CPU считает значение со своих портов P, он не считал неверные данные. Данные от GPIO к портам P попадают через синхронизатор, который задерживает данные на 2 такта. Соответственно, эти 2 такта, CPU должен удерживаться, чтобы данные успели пройти через синхронизатор. Таким образом, после окончания команды MOV CPU увидит на своих портах точно те же данные, что и до выполнения команды MOV.
На 8 такте CPU начинает выполнение следующей команды.