W tym pytaniu zdefiniowano mapowanie między EBCDIC a nadzbiorem ISO-8859-1.
Twoim zadaniem jest zbudowanie sieci dwuwejściowych bramek NAND, które przyjmą osiem wejść A1, A2, A4, ..., A128
reprezentujących znak EBCDIC i zwrócą osiem wyjść B1, B2, B4, ..., B128
reprezentujących odpowiedni znak „ISO-8859-1” zgodnie z tym odwzorowaniem.
Aby uprościć rzeczy, możesz użyć bramek AND, OR, NOT i XOR na diagramie z następującymi odpowiednimi wynikami:
NOT: 1
AND: 2
OR: 3
XOR: 4
Każda z tych ocen odpowiada liczbie bramek NAND potrzebnych do zbudowania odpowiedniej bramki.
Wygrywa obwód logiczny, który używa najmniejszej liczby bramek NAND do prawidłowego wdrożenia wszystkich powyższych wymagań.
źródło
309 NAND
Naprawdę niskie rozwiązanie w liczbie NAND, ale mogę pójść jeszcze niżej. Po prostu trzeba gdzieś się zatrzymać, a 309 wydaje się do tego dobre. (Właściwie osiągnąłem 308 NAND później, ale potem trafiłem na jakąś barierę.)
Tym razem nie rysowano ołówkiem obrazu obwodu. Być może później, gdy któregoś dnia powrócę do tego problemu i uderzę w niższą krawędź, półkę, granicę w coraz bardziej gęstym gąszczu niewłaściwych obwodów.
Obwód jest przedstawiony w oczywistym kodzie Verilog, gotowy do uruchomienia z dołączonym testem.
Kod Verilog:
źródło