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

Re: AVR. Как 16-разр. инструкции передаются по 8-битной шине
Добавлено: Сб апр 24, 2010 19:11:14
GP1
А с чего ты взял что инструкции передаются по шине данных
смотри внимательнее на левую часть рисунка.
Re: AVR. Как 16-разр. инструкции передаются по 8-битной шине
Добавлено: Сб апр 24, 2010 19:13:20
uldemir
Я в AVR не спец, но я не вижу чёрточки со стрелочкой от памяти программ к "восьмибитной шине данных". Не забывайте, это не фон Неймановская архитектура, а Гарвардская.
Re: AVR. Как 16-разр. инструкции передаются по 8-битной шине
Добавлено: Сб апр 24, 2010 22:07:29
YS
А АЦП имеет два регистра данных, ADCH и ADCL. Восьмибитных.
Re: AVR. Как 16-разр. инструкции передаются по 8-битной шине
Добавлено: Сб апр 24, 2010 22:50:41
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?
Куда она идет-то потом и какое у нее назначение? Про нее ничего не написано.
Re: AVR. Как 16-разр. инструкции передаются по 8-битной шине
Добавлено: Сб апр 24, 2010 23:46:25
YS
Только на схемках Гарвардской архитектуры, которую обычно рисуют, блоков гораздо меньше, чем здесь.
Количество блоков не имеет никакой связи с типом архитектуры, оно зависит от особенностей конкретного МК. В данном случае архитектура определяет только принцип адресации. В микроконтроллерах AVR команды не передаются по шине данных.
Надо понимать, что 16-разрядная инструкция из Instruction Register загружается в два 8-битных регистра General Purpose Registers?
Нет. Это другое адресное пространство, ибо гарвардская архитектура.
Из Instruction Register инструкция поступает в Instruction Decoder, который управляет АЛУ. Шина команд не имеет никакого отношения к шине данных.
Что это за стрелка Control Lines, которая выходит из блока Instruction Decoder?
Это линии управления логикой. Instruction Decoder - это и есть блок, обрабатывающий шестнадцатибитные инструкции и управляющий АЛУ. Как не трудно видеть, он соединен с Flash памятью отдельной шестнадцатибитной шиной, не пересекающейся с шиной данных. Из блок-схемы видно, что команды и данные на АЛУ поступают по разным шинам с разной разрядностью.
То есть значения из этих регистров за 2 такта пересылаются?
Как захотим, так и перешлем. Мы должны сами явно их читать.
Re: AVR. Как 16-разр. инструкции передаются по 8-битной шине
Добавлено: Вс апр 25, 2010 01:25:39
ktb
YS писал(а):Instruction Decoder - это и есть блок, обрабатывающий шестнадцатибитные инструкции и управляющий АЛУ. Как не трудно видеть, он соединен с Flash памятью отдельной шестнадцатибитной шиной, не пересекающейся с шиной данных. Из блок-схемы видно, что команды и данные на АЛУ поступают по разным шинам с разной разрядностью.
А тогда что означают стрелки, идущие из
Instruction Register к
General Purpose Register и
Data SRAM?
Команда даже еще не поступила в
Instruction Decoder и не обработана АЛУ, а уже какие-то данные загружаются в регистры и ОЗУ.
Это что-то типа DMA получается что ли?

Re: AVR. Как 16-разр. инструкции передаются по 8-битной шине
Добавлено: Вс апр 25, 2010 09:09:09
GP1
Это означает, что в регистре инструкций формируются управляющие сигналы для взаимодействия между различными устройствами в МК в соответствии с кодом команды.
Re: AVR. Как 16-разр. инструкции передаются по 8-битной шине
Добавлено: Вс апр 25, 2010 11:04:40
ktb
GP1 писал(а):Это означает, что в регистре инструкций формируются управляющие сигналы для взаимодействия между различными устройствами в МК в соответствии с кодом команды.
Если в регистре инструкций формируются управляющие сигналы в соответствии с кодом команды, то чем же тогда занимается декодер команд?
Re: AVR. Как 16-разр. инструкции передаются по 8-битной шине
Добавлено: Вс апр 25, 2010 11:25:16
Arlleex
Он их декодирует. При этом на выходе дешифратора команд сигналы идут на АЛУ, Память, например, т.е. активирует те устройства, которые необходимы для выполнения текущей команды.
Да, и еще, не всегда в регистре команд (Program counter) содеджится 2 байт. Может и 1.
Re: AVR. Как 16-разр. инструкции передаются по 8-битной шине
Добавлено: Вс апр 25, 2010 11:35:54
Arlleex
ktb писал(а):При чтении даташита на ATMega16 я не смог разобраться каким образом по 8-битной шине данных
Data Bus 8-bit передаются 16-разрядные инструкции
Most AVR instructions have a single 16-bit word format. На картинке нарисовано, что шина восьмиразрядная, а инструкции 16-разрядные, да еще и выполняются часто за один такт.
Я чего-то не понял или где-то шины шире чем 8 бит?
Еще не догоняю как по той же 8-разрядной шине передаются данные от 10-разрядного АЦП. Помогите разобраться, плиз.
А почему нельзя слать байт за байтом? Например, переслал младший байт, потом переслал старший байт? (так оно и происходит во многоих МК и МП).
Re: AVR. Как 16-разр. инструкции передаются по 8-битной шине
Добавлено: Вс апр 25, 2010 12:14:27
ktb
Stalker46 писал(а):Он их декодирует. При этом на выходе дешифратора команд сигналы идут на АЛУ, Память, например, т.е. активирует те устройства, которые необходимы для выполнения текущей команды.
Это понятно, только стрелки к памяти идут
до блока дешифратора команд.

Получается, что вроде как прям из регистра инструкций что-то шлется в регистровый файл и ОЗУ.
Stalker46 писал(а):Да, и еще, не всегда в регистре команд (Program counter) содеджится 2 байт. Может и 1.
Program Counter - это счетчик команд, вроде. А регистр команд - это Instruction Register. О чем именно речь?
Stalker46 писал(а):А почему нельзя слать байт за байтом? Например, переслал младший байт, потом переслал старший байт? (так оно и происходит во многоих МК и МП).
Изначально меня смутило то, что многие команды выполняются за 1 такт.
Re: AVR. Как 16-разр. инструкции передаются по 8-битной шине
Добавлено: Вс апр 25, 2010 13:08:01
YS
Люди, вы меня конечно извините, но вы читать умеете? По английски? Что написано на тех линиях, которые
"стрелки, идущие из Instruction Register к General Purpose Register и Data SRAM?". Ладно, прочитаю сам - Direct Adressing! Если кто не в курсе, команда содержит адреса операндов. Вот они то и
передаются дешифратору адреса памяти и регистров. Еще раз: это
Гарвардская архитетура,
команды по шине
данных ПРИНЦИПИАЛЬНО НЕ ПЕРЕДАЮТСЯ (В рабочем режиме. А то вдруг кто-то знает про бутлоадер...

)!!!
Re: AVR. Как 16-разр. инструкции передаются по 8-битной шине
Добавлено: Вс апр 25, 2010 13:16:46
Arlleex
ktb писал(а):Stalker46 писал(а):Он их декодирует. При этом на выходе дешифратора команд сигналы идут на АЛУ, Память, например, т.е. активирует те устройства, которые необходимы для выполнения текущей команды.
Это понятно, только стрелки к памяти идут
до блока дешифратора команд.

Получается, что вроде как прям из регистра инструкций что-то шлется в регистровый файл и ОЗУ.
Stalker46 писал(а):Да, и еще, не всегда в регистре команд (Program counter) содеджится 2 байт. Может и 1.
Program Counter - это счетчик команд, вроде. А регистр команд - это Instruction Register. О чем именно речь?

Да, точно, ошибся.
А те стрелочки, это шина!
А стрелочка после дешифратора
управляет АЛУ, памятью, и т.д. что там необходимо для выполнения текущей команды.
Re: AVR. Как 16-разр. инструкции передаются по 8-битной шине
Добавлено: Вс апр 25, 2010 13:51:27
ktb
YS писал(а):Если кто не в курсе, команда содержит адреса операндов. Вот они то и передаются дешифратору адреса памяти и регистров.
Попробую по-другому мысль сформулировать...
Понятно, что адреса операндов в команде содержатся, но как АЛУ понимает по какому адресу данные взять, если команда из
регистра команд еще не поступила в
дешифратор команд? Если бы стрелки к памяти и регистрам шли
после дешифратора команд, то я бы это понял...
Почитал
AVR Instruction Set.
Насколько я понимаю, поля адресов операндов в команде не находятся в фиксированной позиции. Вариантов много... Пока команда не дешифрована в
Instruction Decoder, неизвестно с какого по какой бит считывать адреса.
Как тогда
Instruction Register знает по какому адресу обращаться с помощью
Direct Addressing, если команда еще
не дошла до
Instruction Decoder?
Упомянутый
дешифратор адреса находится в
регистре команд или
дешифраторе команд?
Re: AVR. Как 16-разр. инструкции передаются по 8-битной шине
Добавлено: Вс апр 25, 2010 14:00:40
Arlleex
Команда сразу декодируется декодером! Сначала счетчик команд инкрементировал свое состояние. Понятно?
Затем, ЦПУ выдает сигнал считывания на вход ПЗУ. Понятно?
По шине данных, 8 разрядные данные направляются из ПЗУ в регистр команд, а оттуда сразу же в декодер команд. Понятно?
декодер команд декодирует ту двоичную комбинацию, которая и представлена КОП. На выходе дешифратора команд генерируется сигнал активации каких либо-устройств. Понятно?
например:
Пуста дв. комбинация 00000001 поступила из ПЗУ. Она сразу засылается в регистр команд. Пусть эта дв. комбинация декодируется как "сложить содержимое регистров А и В. Дешифратор команд активирует регистр А и В, а также АЛУ на режим сложения.
Данные по шине данных передаются в АЛУ из регистров А и В. Содержимые регистров складываются.
Re: AVR. Как 16-разр. инструкции передаются по 8-битной шине
Добавлено: Вс апр 25, 2010 14:01:55
Arlleex
ktb писал(а):YS писал(а):Если кто не в курсе, команда содержит адреса операндов. Вот они то и передаются дешифратору адреса памяти и регистров.
Попробую по-другому мысль сформулировать...
Понятно, что адреса операндов в команде содержатся, но как АЛУ понимает по какому адресу данные взять, если команда из
регистра команд еще не поступила в
дешифратор команд? Если бы стрелки к памяти и регистрам шли
после дешифратора команд, то я бы это понял...
Почитал
AVR Instruction Set.
Насколько я понимаю, поля адресов операндов в команде не находятся в фиксированной позиции. Вариантов много... Пока команда не дешифрована в
Instruction Decoder, неизвестно с какого по какой бит считывать адреса.
Как тогда
Instruction Register знает по какому адресу обращаться с помощью
Direct Addressing, если команда еще
не дошла до
Instruction Decoder?
Упомянутый
дешифратор адреса находится в
регистре команд или
дешифраторе команд?
дешифратор адреса - это вообще отдельное устройство. И к дешифратору команд и регистру команд никакого отношения не имеет.
Re: AVR. Как 16-разр. инструкции передаются по 8-битной шине
Добавлено: Вс апр 25, 2010 14:07:41
Arlleex
YS писал(а):Если кто не в курсе, команда содержит адреса операндов.
Почему это? Это при какой адресации? Только при косвенной регистровой и прямой.
Re: AVR. Как 16-разр. инструкции передаются по 8-битной шине
Добавлено: Вс апр 25, 2010 14:24:14
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?
Re: AVR. Как 16-разр. инструкции передаются по 8-битной шине
Добавлено: Вс апр 25, 2010 15:21:07
Arlleex
ktb писал(а):
А где оно находится на схеме, в каком блоке?
на схеме он не показан
У нас-то вроде прямая
Да, поэтому не при всех типах адресации команда - это всего лишь КОП и адрес операнда. Например, при неявной адресации никаких адресов не используется.
Из последнего ничего не понял.