В декабре 2017 я уже начал было рассуждать как же нам затолкать TRIADOR в микросхему DIP48:
Shaos wrote:
Оставаясь в DIP48 минимальная распиновка может быть такой:
1 земля
1 питание
1 вход тактирования
6 адрес для внешней памяти
5 слово из внешней памяти
3 тестовых выхода (подцепляются к внутренним точкам в зависимости от тестового адреса)
3 тестовый адрес (чтобы покрыть 27 тестовых триад идущих изнутри схемы для тестовых целей)
3 входы для R13 (по умолчанию цепляются к выходам R13) - это нужно для организации клавиатуры калькулятора (можно это автоматом зацепить на R13 если скажем тестовый адрес будет NNN)
вместо вывода содержимого ВСЕХ регистров одновременно, просто цепляем их на тестовые выходы при выборе специального тестового адреса (скажем от OOP до PPP будут цепляться к регистрам, OOO и OON к половинкам PC и т.д.)
всего получилось 23 ноги...
Чтобы не мешаться в основном топике про
TRIADOR, создаю новую тему
Предполагается, что память программ будет снаружи, а дополнительная память данных - внутри (теоретически до 729 трайтов, но на самом деле вряд ли будет больше 243 и скорее всего эта память будет обычной двоичной статической памятью - можно скажем в названии чипа указывать сколько трайтов памяти данных есть на борту - Triador3243, Triador3081 и т.д.).
Считаем ноги:
1 питание (1);
1 уровень для третьего состояния 2.5 В (2);
2 уровни 1.666 В и 3.333 В для компараторов (4);
1 вход резистора для токового зеркала (5);
1 вход сигнала сброса/прерывания (6);
1 тактирование синусоидой (7);
6 вывод адреса внешней памяти программ (13);
5 ввод командного слова из внешней памяти программ (18);
3 вывод тестовой триады для выдачи состояния регистров и т.д. (21);
6 ввод тестового адреса для выдачи тестовой триады (27);
6 выход виртуальной ячейки памяти OOO OOO для листания памяти программ и скажем для организации клавиатуры (33);
6 вход для чтения виртуальной ячейки памяти OOO OOO - для простоты может быть замкнуто на выходы (39);
1 выход запроса EX на внешнюю схему из диапазона CUSTOM CIRCUITS (40);
4 вход для новых значений C и R1 после выполнения внешней команды EX (44);
3 возможно выходы флагов A,B,C для связи с внешним миром (47);
1 земля (48).
Внешняя схема обработки EX получив сигнал, что есть запрос на исполнение внешней команды EX, останавливает тактирование чипа и, подавая на тестовый адрес некоторые значения, читает нужную информацию (содержимое регистров, защёлок PEX, памяти данных и т.д.), затем выполняет некие действия и пишет обратно новые значения для C,R1, возобновляя тактирование (чип при продолжении работы первым делом читает эти 4 трита и записывает C,R1). Сигнал EX можно совместить с индикацией состояния HLT (например P может означать, что есть запрос на обработку внешней команды EX, а N - что чип вошёл в состояние HLT). Вход сброса/прерывания просто может означать разные способы старта - P может означать полный сброс с обнулением регистров и защёлок и старт с адреса OOO OOO (причём в этом случае в адресном пространстве программ Nxx xxx отображается память данных для того, чтобы была возможность динамически подгружать и запускать подпрограммы), а N - вход в прерывание с адреса NNN NNN с сохранением состояния всех регистров и защёлок (в этом случае вся работа идёт с внешним ПЗУ программ - хотя прерывания можно отложить на будущее и пока ограничиться одним способом рестарта).
P.S. Возможная адресация триад тестовым адресом:
Nxxxxx - младшие триады памяти данных из адресов NNNNNN...NPPPPP
Pxxxxx - старшие триады памяти данных из адресов NNNNNN...NPPPPP
ONxxxx - все триады защёлок PEX (читая их снаружи можно организовать экран 9x13)
OOOxxx - регистры R1-R13 плюс ещё 14 тестовых триад (например значения R1-1 и R1+1)
остальные тестовые адреса могут покрывать другие тестовые точки внутри чипа
P.P.S. Раз уж память программ в области Nxx xxx уже смотрит на ОЗУ, то может попробовать "захардкодить" внутрь области Oxx xxx простую программу, которая при старте будет читать из последовательной флешины прошивку? Управлять режимом бута можно скажем путём заземления некоторых входов пока вход сброса активен - один из режимов будет означать загрузку прошивки из флеша через входы-выходы флагов...
P.P.P.S. В первой версии Triador3000 можно память данных вывести наружу (соответственно команды MWW, MRL, MRH станут внешними EX-командами по типу CUSTOM CIRCUITS) - количество ног при этом уменьшится на 12, т.к. ввод-вывод виртуальной ячейки OOO OOO уже будет ненужен (вся обработка памяти данных будет снаружи, включая виртуальную ячейку) - так можно уместиться в DIP40, но возможность простого ввода-вывода исчезнет. С другой стороны в 2017 году у меня была идея использовать R13 для ввода-вывода - это ещё 3 входа и 3 выхода т.е. 48-12+6=42...
P.P.P.P.S. В будущем возможно также придётся разрешить внешним EX-командам менять PC (скажем для реализации "железных" CALL и RET с независимым стеком возвратов), соответственно надо будет ещё 6 входов предусмотреть и 1 тритик про что мы меняем по итогам выполнения внешней EX-инструкции - [A,B,]C,R1 (N) или ничего (O) или PC (P). Так что возможно придётся уходить в PLCC68 хотя входы C,R1 и PC можно совместить, если одновременно их менять не предвидится - в этом случае количество ног увеличится только на 3...