Блок счетчика команд (СК)
Структура блока счетчика команд приведена на рис 6.
В состав блока СК входят:
- регистр счетчика команд (СК) - предназначен для хранения адреса очередной команды;
Рис.6. Структура блока счетчика команд
- регистр адреса (РА) - предназначен для хранения адреса текущей команды и формирования его на шине адреса на время операции чтения памяти;
- блок инкремента - обеспечивает автоматическое увеличение содержимого регистра СК при выполнении операции чтения памяти программ;
- буфер СК - предназначен для согласования 8-разрядной шины данных и внутренней 16-разрядной шины блока СК;
- регистр указатель DPTR - хранит адрес при работе с внешней памятью данных.
Блок счетчика команд (СК) имеет три режима работы.
1. Режим формирования адреса команды.
В начале цикла обращения к памяти программ содержимое регистра счетчика команд выставляется на внутреннюю шину блока, по которой поступает в регистр адреса, затем по шине адреса микроконтроллера поступает в память программ. Одновременно с этим адрес поступает в блок инкремента, где автоматически увеличивается на единицу, а затем записывается в регистр счетчика команд.
2.Режим коррекции регистра счетчика команд.
При выполнении команд условного и безусловного перехода происходит коррекция содержимого регистра счетчика команд. Для этого адрес по шине данных в два этапа (сначала старший, затем младший байт) поступает в буфер программного счетчика, затем полный шестнадцатиразрядный адрес по внутренней шине блока записывается регистр счетчика команд.
3.Режим формирования адреса внешней памяти данных.
Для работы с внешней памятью данных адрес предварительно записывается в регистр указатель DPTR. При выполнении команд обращения к внешней памяти данных (чтение или запись) адрес из указателя отправляется в регистр адреса, затем по шине адреса микроконтроллера на внешние контакты портов Р0 и Р2 микроконтроллера.
Процедура чтения и выполнения команды осуществляется следующим образом (рис.7):
- регистр счетчика команд (СК) хранит адрес очередного байта программного кода;
Рис.7. Взаимодействие блоков при чтении и выполнении команды
- в начале очередного машинного цикла блок управления формирует управляющий сигнал блоку счетчика команд;
- при получении сигнала от блока управления содержимое регистра счетчика команд по внутренней 16-разрядной шине блока отправляется в регистр адреса, где хранится в течение цикла обращения к памяти и откуда выставляется на шину адреса микроконтроллера. Одновременно с этим содержимое регистра СК поступает в блок инкремента, увеличивается на 1, затем записывается обратно в регистр СК (таким образом обеспечивается последовательное считывание программного кода из памяти программ);
- адрес по шине адреса поступает в память программ, здесь дешифрируется и обеспечивает доступ к ячейке памяти с указанным адресом. Содержимое ячейки выставляется на шину данных и передается в блок управления;
- код команды записывается в регистр команд. После этого дешифратор преобразует восьмиразрядный код команды в 24-разрядный код для программируемой логической матрицы (ПЛМ), которая формирует управляющие сигналы для выполнения команды.