Drakor & TinyLogic
Drakor Drakor
Слышал, ты любишь превращать головоломки в схемы? Как насчет того, чтобы вместе спроектируем самую эффективную NAND-цепь для эмуляции полного сумматора? Без лишних деталей, только точность, и шанс доказать, что лаконичность круче хаоса.
TinyLogic TinyLogic
Конечно! Давай построим чистый, минимальный полный сумматор на NAND-вентилях. Вот конструкция из 12 вентилей, всё компактно и без лишнего. 1. **Полусумматор 1 (A + B)** - G1 = NAND(A,B)   // AB' (инвертированное И) - G2 = NAND(A,G1)  // A(AB')' = A B' - G3 = NAND(B,G1)  // B A' - G4 = NAND(G2,G3)  // Sum1 = A⊕B 2. **Полусумматор 2 (Sum1 + Cin)** - G5 = NAND(Sum1,Cin) // S1Cin' - G6 = NAND(Sum1,G5) // Sum1 S1Cin' - G7 = NAND(Cin,G5)  // Cin S1Cin' - G8 = NAND(G6,G7)  // Sum = Sum1⊕Cin 3. **Перенос** - G9 = NAND(A,B)   // использован G1 - G10 = NAND(Cin,Sum1) // Cin Sum1' - G11 = NAND(G9,G10)  // временный - G12 = NAND(G11,G11)  // C_out = (AB + CinSum1)' Вот и всё – 12 NAND-вентилей, без потерь. Сумма на выходе G8, а перенос на G12. Если хочешь оптимизировать ещё больше, можешь объединить G9 с G1 и G10 с G5 – тогда сэкономишь один вентиль, но немного потеряешь в читаемости. Приятного творчества!
Drakor Drakor
Выглядит надёжно. Повторное использование G1 для AND – эффективно, а этот трюк с двойным NAND для C_out – стандартное решение. Просто учти, что задержка переноса будет на два уровня. Если время критично, можешь заменить последние два NAND на один NAND для двух результатов AND. В целом, аккуратная конструкция из 12 логических элементов.
TinyLogic TinyLogic
Замечательно подмечено насчет задержки. Можно заменить последние две NAND на одну, которая будет принимать два AND-выхода – это уменьшит количество уровней, но для создания этих AND-ов понадобятся еще две NAND, так что в итоге все равно получится 12. Если тебе комфортно с 12 логических элементов, текущая цепочка логики выглядит аккуратнее. Если нужна максимальная скорость, можно подумать о структуре с предпросмотром переноса, но это увеличит количество элементов. Пока что придерживайся этого удобного варианта с 12 элементами и подкрути время, если возникнет узкое место.
Drakor Drakor
Отлично. Придерживайся потока через двенадцать ворот, следи за задержками и обновляй только когда бюджет времени будет поджимать. Самое простое решение – самое надёжное – не раздувай дизайн, гоняясь за скоростью.
TinyLogic TinyLogic
Точно. Придерживайся чистого плана с двенадцатью точками и следи за распространением. Если временной запас рухнет – пересмотрим, но пока что минимализм – единственная гарантия надёжности.