Например если есть алгоритм, который на 6502 выглядит проще и логичнее и соответственно работает быстрее (кстати кое-кто до сих пор уверен, что 6502 на 1 МГц работал быстрее, чем Z80 на 3.5 МГц - я сам не знаю не проверял, но вполне возможно ибо в 6502 был конвейер команд - чуть ли не самый первый в истории процессоростроения)pvlad wrote:Я о том же - кому что нравится. Но я не представляю ситуации, чтобы часть кода выполнял 8085, потом встречается команда переключения процессора и остальной код выполняет 6502. Это что-то новое. В чем уникальное различие этих процессоров, чтобы в одной задаче необходимо было попеременно использовать два процессора?Shaos wrote: Замысел в том, чтобы одним и тем же контроллером пользовались и любители 8080, и любители 6502 и экспериментаторы типа меня![]()
У меня шина получается 27 ногpvlad wrote:Будем считать - это первый вариант:Shaos wrote: По поводу шин адреса и данных - можно конечно всё напрямую вывести, но это будет уже 16+8+2=26 ног (27 если считать M/IO), которые можно было бы отдать под порты ввода-вывода.
Шина 29 ног (Adr+Data+M/IO+WR+RD), порты 4х8=32ноги. Это уже 61+остальное служебное управление, видео и т.д.=100ног.

Или предполагается что будут ещё 2 адресных сигнала?
Всё таки хочется присмотреться к стандартному 40-ногому корпусу - чтобы заиметь прототип реального чипа (чем чёрт не шутит - может и дойдёт до производства ; ) ну или хотя бы с замашками на DIP-плату типа BASIC-stamp (современные хоббисты это дело любят, т.к. в бредборду втыкать легко)
Вот я и предлагаю 3 режима:pvlad wrote:Пусть это будет второй вариант. Давайте прикинем, что мы выиграем, а что проиграем. Плюс: экономим ноги ПЛИС - шина, мсх-ма памяти, чуть меньше печатная плата. Минус: теряем 2-3 порта, мало внутренней памяти под код. При расширении памяти, все равно микросхему придется повесить, да и еще расхлебывать мультиплексирование. Ну и, видимо, дополнительная плата расширения.Если честно, то первый вариант более логичный. Я бы от второго отказался. Кроме того, можно для первого варианта сделать дополнительный режим: внешняя память не ставится (но место на печатке есть), а используется только внутренняя 8К, т.е 2К видео-ОЗУ+6К под код. Как переключать эти модификации первого варианта - не знаю. Может быть через дополнительную ножку ПЛИС?Shaos wrote: А что если сделать настраиваемым формат использования портов ввода-вывода (как у многих микроконтроллеров - если цель в итоге получить микроконтроллер в одном корпусе)?
1) только порты ввода-вывода, память только внутренняя (в 40-ногом корпусе можем иметь до 5 портов (пятый не полный));
2) внешняя память допустима, но по мультиплексированной шине (в 40-ногом корпусе можем иметь 40-2-16-4=18 т.е. 2 порта или чуть больше);
3) внешняя память подключается по полной шине (в 40-ногом корпусе можем иметь 40-2-16-8-3=11 т.е. 1 порт и ещё чуть-чуть)
Режимы можно переключать через прошивку "микроконтроллера" (аналог прожигания "фьюзов" на современных микропроцессорах)
Не думаю что нужно выбирать плис на этом этапе - надо сделать универсальный вариант, который бы прижелании мог быть прошит как в FPGA (а может даже и в большую CPLD), так и в ASICpvlad wrote:Но здесь хотелось бы уточнить, какие варианты ПЛИС по ногам применимы в нашем случае. От чего плясать?
Ок - убедилиpvlad wrote:Согласен, но необходимо чтобы одна и та же команда в любой ситуации выполнялась за одно и тоже количество тактов. Пусть будет другое количество тактов, чем в 8085 и другое время выполнения, но оно должно быть стабильным в любой ситуации для данной команды. Иначе задержки в программе не просчитать. А сделать новую справочную таблицу количества тактов на каждую команду - не сложно.Shaos wrote:По поводу времени выполнения команд - это будет CISC и скорее всего с микрокодом, т.е. времянки в любом случае будут отличаться от оригиналов и расчёт времени выполнения того или иного куска программы уже будет нетривиален...

Насколько оправдано иметь программный переключатель тактовой частоты? Я не представляю ситуации, чтобы часть кода выполнялось на одной частоте, потом встречается запись в порт тактовой частоты и остальной код выполняется в два раза быстрее...pvlad wrote:Другое дело, необходимо сделать несколько тактовых частот, переключаемых с помощью внутреннего порта. Например, минимальная, максимальная и 1-2 промежуточные. Частоты должны быть кратны под UART. Если останутся своб.ноги, то можно сделать выход тактовой частоты (после какого-то деления).

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