Блок счетчика команд (СК)

Структура блока счетчика команд приведена на рис 6.

В состав блока СК входят:

- регистр счетчика команд (СК) - предназначен для хранения адреса очередной команды;

 

Рис.6. Структура блока счетчика команд

- регистр адреса (РА) - предназначен для хранения адреса текущей команды и формирования его на шине адреса на время операции чтения памяти;

- блок инкремента - обеспечивает автоматическое увеличение содержимого регистра СК при выполнении операции чтения памяти программ;

- буфер СК - предназначен для согласования 8-разрядной шины данных и внутренней 16-разрядной шины блока СК;

- регистр указатель DPTR - хранит адрес при работе с внешней памятью данных.

 

Блок счетчика команд (СК) имеет три режима работы.

1. Режим формирования адреса команды.

В начале цикла обращения к памяти программ содержимое регистра счетчика команд выставляется на внутреннюю шину блока, по которой поступает в регистр адреса, затем по шине адреса микроконтроллера поступает в память программ. Одновременно с этим адрес поступает в блок инкремента, где автоматически увеличивается на единицу, а затем записывается в регистр счетчика команд.

2.Режим коррекции регистра счетчика команд.

При выполнении команд условного и безусловного перехода происходит коррекция содержимого регистра счетчика команд. Для этого адрес по шине данных в два этапа (сначала старший, затем младший байт) поступает в буфер программного счетчика, затем полный шестнадцатиразрядный адрес по внутренней шине блока записывается регистр счетчика команд.

3.Режим формирования адреса внешней памяти данных.

Для работы с внешней памятью данных адрес предварительно записывается в регистр указатель DPTR. При выполнении команд обращения к внешней памяти данных (чтение или запись) адрес из указателя отправляется в регистр адреса, затем по шине адреса микроконтроллера на внешние контакты портов Р0 и Р2 микроконтроллера.

Процедура чтения и выполнения команды осуществляется следующим образом (рис.7):

- регистр счетчика команд (СК) хранит адрес очередного байта программного кода;

Рис.7. Взаимодействие блоков при чтении и выполнении команды

- в начале очередного машинного цикла блок управления формирует управляющий сигнал блоку счетчика команд;

- при получении сигнала от блока управления содержимое регистра счетчика команд по внутренней 16-разрядной шине блока отправляется в регистр адреса, где хранится в течение цикла обращения к памяти и откуда выставляется на шину адреса микроконтроллера. Одновременно с этим содержимое регистра СК поступает в блок инкремента, увеличивается на 1, затем записывается обратно в регистр СК (таким образом обеспечивается последовательное считывание программного кода из памяти программ);

- адрес по шине адреса поступает в память программ, здесь дешифрируется и обеспечивает доступ к ячейке памяти с указанным адресом. Содержимое ячейки выставляется на шину данных и передается в блок управления;

- код команды записывается в регистр команд. После этого дешифратор преобразует восьмиразрядный код команды в 24-разрядный код для программируемой логической матрицы (ПЛМ), которая формирует управляющие сигналы для выполнения команды.