[an error occurred while processing this directive]
[an error occurred while processing this directive]
|
Думаю, это не столько совместимостью вызвано, сколько архитектуройю
Изначально PIC был "периферийным интерфейсным контроллером", разработанным как "заплатка" для какого-то "нормального" процессора (забыл какого). Разработчики, очевидно, решили что для выполнения функции периферийного контроллера ему не надо много памяти и много команд(вполне логично решили, по-моему), зато хорошо было бы непосредственно иметь доступ к любой ячейке памяти, так же, как обычный проц имеет доступ к регистрам. То есть, по сути, у ПИКа памяти вообще нет, одни регистры, зато их довольно много. В результате в поле команды (и так довольно длинном) половину битов занимает адрес этого регистра.
Чтобы сделать линейную адресацию в многобанковом ПИКе им пришлось бы увеличить длину поля команд и соответственно раздуть декодирующее железо. Что они, впрочем, постепенно делают, очевидно, "по мере возможности":
-- у PIC16C5x в 12-битном поле команды - 5-битный адрес регистра
-- у PIC16C7x в 14-битном поле команды - 7-битный адрес регистра
-- у PIC17 в 16-битном поле команды - 8-битный адрес регистра
-- у PIC18 - пока не посмотрел еще :-)
Мне кажется, они просто как бы "не успевают", т.е. увеличить число регистров и навешать банков, очевидно, им проще и дешевле, чем "заранее" увеличить длину поля команды.
E-mail: info@telesys.ru