Skip to main content

Блок управления внешними регистрами

Блок управления внешними регистрами предназначен для быстрого доступа к 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>ВыходВыбор внешнего регистра
ENGPIOC<1>ВыходСигнал разрешения доступак внешнему регистру
WR/RDGPIOC<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 начинает выполнение следующей команды.