AVR. Как 16-разр. инструкции передаются по 8-битной шине?

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Аватара пользователя
ktb
Открыл глаза
Сообщения: 43
Зарегистрирован: Пн янв 04, 2010 22:38:20

AVR. Как 16-разр. инструкции передаются по 8-битной шине?

Сообщение ktb »

При чтении даташита на ATMega16 я не смог разобраться каким образом по 8-битной шине данных Data Bus 8-bit передаются 16-разрядные инструкции Most AVR instructions have a single 16-bit word format. На картинке нарисовано, что шина восьмиразрядная, а инструкции 16-разрядные, да еще и выполняются часто за один такт. :shock:
Я чего-то не понял или где-то шины шире чем 8 бит?
Еще не догоняю как по той же 8-разрядной шине передаются данные от 10-разрядного АЦП. Помогите разобраться, плиз. :)

Изображение
Реклама
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

Re: AVR. Как 16-разр. инструкции передаются по 8-битной шине

Сообщение GP1 »

А с чего ты взял что инструкции передаются по шине данных :wink:
смотри внимательнее на левую часть рисунка.
Чем дальше, тем больше становлюсь занудой...
Изображение
Реклама
Аватара пользователя
uldemir
Друг Кота
Сообщения: 7359
Зарегистрирован: Пт авг 28, 2009 21:34:30
Откуда: 845-й км.

Re: AVR. Как 16-разр. инструкции передаются по 8-битной шине

Сообщение uldemir »

Я в AVR не спец, но я не вижу чёрточки со стрелочкой от памяти программ к "восьмибитной шине данных". Не забывайте, это не фон Неймановская архитектура, а Гарвардская.
А люди посмотрят и скажут: "Собаки летят. Вот и осень."
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: AVR. Как 16-разр. инструкции передаются по 8-битной шине

Сообщение YS »

А АЦП имеет два регистра данных, ADCH и ADCL. Восьмибитных.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
ktb
Открыл глаза
Сообщения: 43
Зарегистрирован: Пн янв 04, 2010 22:38:20

Re: AVR. Как 16-разр. инструкции передаются по 8-битной шине

Сообщение ktb »

GP1 писал(а):А с чего ты взял что инструкции передаются по шине данных
смотри внимательнее на левую часть рисунка.
Смотрю... Только там разрядность шины не указана... )))
Надо понимать, что 16-разрядная инструкция из Instruction Register загружается в два 8-битных регистра General Purpose Registers?
В даташите написано:
"In a typical ALU operation, two operands are output from the Register File, the operation is executed,
and the result is stored back in the Register File – in one clock cycle."

uldemir писал(а):Я в AVR не спец, но я не вижу чёрточки со стрелочкой от памяти программ к "восьмибитной шине данных".
Я вообще в электронике не спец, пытаюсь вот разобраться в микроконтроллерах. :)
uldemir писал(а):Не забывайте, это не фон Неймановская архитектура, а Гарвардская.
Только на схемках Гарвардской архитектуры, которую обычно рисуют, блоков гораздо меньше, чем здесь. :)
Смотрю на схему из даташита и не пойму алгоритм работы всех этих блоков.
YS писал(а):А АЦП имеет два регистра данных, ADCH и ADCL. Восьмибитных.
То есть значения из этих регистров за 2 такта пересылаются?

А вот еще такой вопрос...
Что это за стрелка Control Lines, которая выходит из блока Instruction Decoder?
Куда она идет-то потом и какое у нее назначение? Про нее ничего не написано.
Реклама
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: AVR. Как 16-разр. инструкции передаются по 8-битной шине

Сообщение YS »

Только на схемках Гарвардской архитектуры, которую обычно рисуют, блоков гораздо меньше, чем здесь.
Количество блоков не имеет никакой связи с типом архитектуры, оно зависит от особенностей конкретного МК. В данном случае архитектура определяет только принцип адресации. В микроконтроллерах AVR команды не передаются по шине данных.
Надо понимать, что 16-разрядная инструкция из Instruction Register загружается в два 8-битных регистра General Purpose Registers?
Нет. Это другое адресное пространство, ибо гарвардская архитектура.
Из Instruction Register инструкция поступает в Instruction Decoder, который управляет АЛУ. Шина команд не имеет никакого отношения к шине данных.
Что это за стрелка Control Lines, которая выходит из блока Instruction Decoder?
Это линии управления логикой. Instruction Decoder - это и есть блок, обрабатывающий шестнадцатибитные инструкции и управляющий АЛУ. Как не трудно видеть, он соединен с Flash памятью отдельной шестнадцатибитной шиной, не пересекающейся с шиной данных. Из блок-схемы видно, что команды и данные на АЛУ поступают по разным шинам с разной разрядностью.
То есть значения из этих регистров за 2 такта пересылаются?
Как захотим, так и перешлем. Мы должны сами явно их читать.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Реклама
Аватара пользователя
ktb
Открыл глаза
Сообщения: 43
Зарегистрирован: Пн янв 04, 2010 22:38:20

Re: AVR. Как 16-разр. инструкции передаются по 8-битной шине

Сообщение ktb »

YS писал(а):Instruction Decoder - это и есть блок, обрабатывающий шестнадцатибитные инструкции и управляющий АЛУ. Как не трудно видеть, он соединен с Flash памятью отдельной шестнадцатибитной шиной, не пересекающейся с шиной данных. Из блок-схемы видно, что команды и данные на АЛУ поступают по разным шинам с разной разрядностью.
А тогда что означают стрелки, идущие из Instruction Register к General Purpose Register и Data SRAM?
Команда даже еще не поступила в Instruction Decoder и не обработана АЛУ, а уже какие-то данные загружаются в регистры и ОЗУ.
Это что-то типа DMA получается что ли? :)
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

Re: AVR. Как 16-разр. инструкции передаются по 8-битной шине

Сообщение GP1 »

Это означает, что в регистре инструкций формируются управляющие сигналы для взаимодействия между различными устройствами в МК в соответствии с кодом команды.
Чем дальше, тем больше становлюсь занудой...
Изображение
Аватара пользователя
ktb
Открыл глаза
Сообщения: 43
Зарегистрирован: Пн янв 04, 2010 22:38:20

Re: AVR. Как 16-разр. инструкции передаются по 8-битной шине

Сообщение ktb »

GP1 писал(а):Это означает, что в регистре инструкций формируются управляющие сигналы для взаимодействия между различными устройствами в МК в соответствии с кодом команды.
Если в регистре инструкций формируются управляющие сигналы в соответствии с кодом команды, то чем же тогда занимается декодер команд?
Arlleex
Друг Кота
Сообщения: 4435
Зарегистрирован: Сб мар 07, 2009 20:44:36

Re: AVR. Как 16-разр. инструкции передаются по 8-битной шине

Сообщение Arlleex »

Он их декодирует. При этом на выходе дешифратора команд сигналы идут на АЛУ, Память, например, т.е. активирует те устройства, которые необходимы для выполнения текущей команды.
Да, и еще, не всегда в регистре команд (Program counter) содеджится 2 байт. Может и 1.
Не умеешь - не берись, но не взявшись не научишься...
Arlleex
Друг Кота
Сообщения: 4435
Зарегистрирован: Сб мар 07, 2009 20:44:36

Re: AVR. Как 16-разр. инструкции передаются по 8-битной шине

Сообщение Arlleex »

ktb писал(а):При чтении даташита на ATMega16 я не смог разобраться каким образом по 8-битной шине данных Data Bus 8-bit передаются 16-разрядные инструкции Most AVR instructions have a single 16-bit word format. На картинке нарисовано, что шина восьмиразрядная, а инструкции 16-разрядные, да еще и выполняются часто за один такт. :shock:
Я чего-то не понял или где-то шины шире чем 8 бит?
Еще не догоняю как по той же 8-разрядной шине передаются данные от 10-разрядного АЦП. Помогите разобраться, плиз.
А почему нельзя слать байт за байтом? Например, переслал младший байт, потом переслал старший байт? (так оно и происходит во многоих МК и МП).
Не умеешь - не берись, но не взявшись не научишься...
Аватара пользователя
ktb
Открыл глаза
Сообщения: 43
Зарегистрирован: Пн янв 04, 2010 22:38:20

Re: AVR. Как 16-разр. инструкции передаются по 8-битной шине

Сообщение ktb »

Stalker46 писал(а):Он их декодирует. При этом на выходе дешифратора команд сигналы идут на АЛУ, Память, например, т.е. активирует те устройства, которые необходимы для выполнения текущей команды.
Это понятно, только стрелки к памяти идут до блока дешифратора команд. :) Получается, что вроде как прям из регистра инструкций что-то шлется в регистровый файл и ОЗУ.
Stalker46 писал(а):Да, и еще, не всегда в регистре команд (Program counter) содеджится 2 байт. Может и 1.
Program Counter - это счетчик команд, вроде. А регистр команд - это Instruction Register. О чем именно речь? :)
Stalker46 писал(а):А почему нельзя слать байт за байтом? Например, переслал младший байт, потом переслал старший байт? (так оно и происходит во многоих МК и МП).
Изначально меня смутило то, что многие команды выполняются за 1 такт.
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: AVR. Как 16-разр. инструкции передаются по 8-битной шине

Сообщение YS »

Люди, вы меня конечно извините, но вы читать умеете? По английски? Что написано на тех линиях, которые "стрелки, идущие из Instruction Register к General Purpose Register и Data SRAM?". Ладно, прочитаю сам - Direct Adressing! Если кто не в курсе, команда содержит адреса операндов. Вот они то и передаются дешифратору адреса памяти и регистров. Еще раз: это Гарвардская архитетура, команды по шине данных ПРИНЦИПИАЛЬНО НЕ ПЕРЕДАЮТСЯ (В рабочем режиме. А то вдруг кто-то знает про бутлоадер... :wink: )!!!
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Arlleex
Друг Кота
Сообщения: 4435
Зарегистрирован: Сб мар 07, 2009 20:44:36

Re: AVR. Как 16-разр. инструкции передаются по 8-битной шине

Сообщение Arlleex »

ktb писал(а):
Stalker46 писал(а):Он их декодирует. При этом на выходе дешифратора команд сигналы идут на АЛУ, Память, например, т.е. активирует те устройства, которые необходимы для выполнения текущей команды.
Это понятно, только стрелки к памяти идут до блока дешифратора команд. :) Получается, что вроде как прям из регистра инструкций что-то шлется в регистровый файл и ОЗУ.
Stalker46 писал(а):Да, и еще, не всегда в регистре команд (Program counter) содеджится 2 байт. Может и 1.
Program Counter - это счетчик команд, вроде. А регистр команд - это Instruction Register. О чем именно речь? :)
Да, точно, ошибся.
А те стрелочки, это шина!
А стрелочка после дешифратора управляет АЛУ, памятью, и т.д. что там необходимо для выполнения текущей команды.
Не умеешь - не берись, но не взявшись не научишься...
Аватара пользователя
ktb
Открыл глаза
Сообщения: 43
Зарегистрирован: Пн янв 04, 2010 22:38:20

Re: AVR. Как 16-разр. инструкции передаются по 8-битной шине

Сообщение ktb »

YS писал(а):Если кто не в курсе, команда содержит адреса операндов. Вот они то и передаются дешифратору адреса памяти и регистров.
Попробую по-другому мысль сформулировать...
Понятно, что адреса операндов в команде содержатся, но как АЛУ понимает по какому адресу данные взять, если команда из регистра команд еще не поступила в дешифратор команд? Если бы стрелки к памяти и регистрам шли после дешифратора команд, то я бы это понял...
Почитал AVR Instruction Set.
Насколько я понимаю, поля адресов операндов в команде не находятся в фиксированной позиции. Вариантов много... Пока команда не дешифрована в Instruction Decoder, неизвестно с какого по какой бит считывать адреса.
Как тогда Instruction Register знает по какому адресу обращаться с помощью Direct Addressing, если команда еще не дошла до Instruction Decoder?

Упомянутый дешифратор адреса находится в регистре команд или дешифраторе команд?
Последний раз редактировалось ktb Вс апр 25, 2010 14:00:49, всего редактировалось 1 раз.
Arlleex
Друг Кота
Сообщения: 4435
Зарегистрирован: Сб мар 07, 2009 20:44:36

Re: AVR. Как 16-разр. инструкции передаются по 8-битной шине

Сообщение Arlleex »

Команда сразу декодируется декодером! Сначала счетчик команд инкрементировал свое состояние. Понятно?
Затем, ЦПУ выдает сигнал считывания на вход ПЗУ. Понятно?
По шине данных, 8 разрядные данные направляются из ПЗУ в регистр команд, а оттуда сразу же в декодер команд. Понятно?
декодер команд декодирует ту двоичную комбинацию, которая и представлена КОП. На выходе дешифратора команд генерируется сигнал активации каких либо-устройств. Понятно?
например:
Пуста дв. комбинация 00000001 поступила из ПЗУ. Она сразу засылается в регистр команд. Пусть эта дв. комбинация декодируется как "сложить содержимое регистров А и В. Дешифратор команд активирует регистр А и В, а также АЛУ на режим сложения.
Данные по шине данных передаются в АЛУ из регистров А и В. Содержимые регистров складываются.
Не умеешь - не берись, но не взявшись не научишься...
Arlleex
Друг Кота
Сообщения: 4435
Зарегистрирован: Сб мар 07, 2009 20:44:36

Re: AVR. Как 16-разр. инструкции передаются по 8-битной шине

Сообщение Arlleex »

ktb писал(а):
YS писал(а):Если кто не в курсе, команда содержит адреса операндов. Вот они то и передаются дешифратору адреса памяти и регистров.
Попробую по-другому мысль сформулировать...
Понятно, что адреса операндов в команде содержатся, но как АЛУ понимает по какому адресу данные взять, если команда из регистра команд еще не поступила в дешифратор команд? Если бы стрелки к памяти и регистрам шли после дешифратора команд, то я бы это понял...
Почитал AVR Instruction Set.
Насколько я понимаю, поля адресов операндов в команде не находятся в фиксированной позиции. Вариантов много... Пока команда не дешифрована в Instruction Decoder, неизвестно с какого по какой бит считывать адреса.
Как тогда Instruction Register знает по какому адресу обращаться с помощью Direct Addressing, если команда еще не дошла до Instruction Decoder?


Упомянутый дешифратор адреса находится в регистре команд или дешифраторе команд?
дешифратор адреса - это вообще отдельное устройство. И к дешифратору команд и регистру команд никакого отношения не имеет.
Не умеешь - не берись, но не взявшись не научишься...
Arlleex
Друг Кота
Сообщения: 4435
Зарегистрирован: Сб мар 07, 2009 20:44:36

Re: AVR. Как 16-разр. инструкции передаются по 8-битной шине

Сообщение Arlleex »

YS писал(а):Если кто не в курсе, команда содержит адреса операндов.
Почему это? Это при какой адресации? Только при косвенной регистровой и прямой.
Не умеешь - не берись, но не взявшись не научишься...
Аватара пользователя
ktb
Открыл глаза
Сообщения: 43
Зарегистрирован: Пн янв 04, 2010 22:38:20

Re: AVR. Как 16-разр. инструкции передаются по 8-битной шине

Сообщение ktb »

Stalker46 писал(а):Пуста дв. комбинация 00000001 поступила из ПЗУ. Она сразу засылается в регистр команд. Пусть эта дв. комбинация декодируется как "сложить содержимое регистров А и В. Дешифратор команд активирует регистр А и В, а также АЛУ на режим сложения.
Данные по шине данных передаются в АЛУ из регистров А и В. Содержимые регистров складываются.
:)) Все это мне понятно. )))
Просто, глядя на схему, я подумал, что сначала из инструкции каким-то непонятным образом выделяются поля адресов операндов, а уж потом инструкция декодируется в дешифраторе команд.
Stalker46 писал(а):дешифратор адреса - это вообще отдельное устройство. И к дешифратору команд и регистру команд никакого отношения не имеет.
А где оно находится на схеме, в каком блоке?
Stalker46 писал(а):Почему это? Это при какой адресации? Только при косвенной регистровой и прямой.
У нас-то вроде прямая.

Кстати, вот пример команды ADD из AVR Instruction Set http://atmel.com/dyn/resources/prod_doc ... oc0856.pdf
Изображение
ddddd - номер регистра Rd;
rrrrr - номер регистра Rr;
Написано: 0000 11rd dddd rrrr
Может кто объяснит почему старший бит номера регистра Rr оказался перед старшим битом номера Rd?
Почему не 0000 11dd dddr rrrr?
Последний раз редактировалось ktb Вс апр 25, 2010 16:06:46, всего редактировалось 1 раз.
Arlleex
Друг Кота
Сообщения: 4435
Зарегистрирован: Сб мар 07, 2009 20:44:36

Re: AVR. Как 16-разр. инструкции передаются по 8-битной шине

Сообщение Arlleex »

ktb писал(а): А где оно находится на схеме, в каком блоке?
на схеме он не показан
У нас-то вроде прямая
Да, поэтому не при всех типах адресации команда - это всего лишь КОП и адрес операнда. Например, при неявной адресации никаких адресов не используется.
Из последнего ничего не понял.
Не умеешь - не берись, но не взявшись не научишься...
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»