С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Я больше боюсь зависимости работы схемы от скорости переключения элементов. Пока попалось только две "линии задержки" на соединённых последовательно инверторах, но они особой роли не играют.
Поясню на примере, что можно упростить в Z80 для повышения наглядности.
Есть провод, указывающий, какие биты опкода брать для получения номера регистра
куча инверсий упрощается до вполне понятной логики "A or B or C"Код:assign w185 = ~(~(w[40] | w[45]) & (w210 | ~w[47]));
Потом мультиплексор, но его выходы также инвертированыКод:assign w185 = w[40] | w[45] | (w[47] & ~T2);
Дальше бардакКод:assign w3[351] = w185 ? ~cmd[0] : ~cmd[3]; assign w3[357] = w185 ? ~cmd[1] : ~cmd[4]; assign w3[361] = w185 ? ~cmd[2] : ~cmd[5];
который с учётом инверсии выходов мультиплексора приводится кКод:assign w3[355] = ~(w3[357] | w3[361]); ... (w3[351] | w3[355]) ... // это обращение к каким регистрам? ... ~(w3[351] | w3[355]) ...или дажеКод:assign w3[355] = (cmdmux1 & cmdmux2); // =1 при обращении к регистру 6 или 7 (SP/[HL]/A) ... (~cmdmux0 | (cmdmux1 & cmdmux2)) ... // =1 - обращение к регистру 0 2 4 6 7 (B D H [HL] A) ... ~(~cmdmux0 | (cmdmux1 & cmdmux2)) ... // =1 - обращение к регистру 1 3 5 (C E L)причём w3[355] больше нигде не используется, его можно убрать.Код:(cmdmux[0]==0) | (cmdmux==7) // любой старший регистр или аккумулятор
Мне кажется в 580ВМ80 логику И-НЕ / ИЛИ-НЕ так же можно будет сильно упростить при переводе на HDL, а инкремент/декремент со всеми ускоренными переносами вообще привести к одной строчке
Или оставлять как есть?
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)