Jag har nördat in mig på digitalteknik och tänkte att jag skulle bygga mig några enkla kombinatoriska nät.
Något jag tänkte att jag skulle börja med var att bygga ett enkelt (trodde jag...) kombinatoriskt nätverk för att driva ett sjusegmentselement. Jag såg Ben Eaters pedagogiska video* där han konstruerade just ett sådant på ett kopplingsdäck och blev inspirerad att göra detsamma. Jag tänkte dock designa det själv och även försöka göra det enbart med 2-ingångars NAND-grindar. Satte upp en sanningstabell enligt nedan och började rita Karnaughdiagram.
Det som slog mig efter ett tag var att det är ineffektivt att inte dela logik mellan utsignalerna (a b c d e f g) eftersom en del av logiken blir redundant. Jag sökte lite på nätet och hittade ett schema gjort av Kim Øyhus (https://codegolf.stackexchange.com/ques ... ogic-gates) som endast använder 30 NAND2-grindar. Schemat förbryllar mig något då jag inte hittat metoder för hur man konstruerar kombinatoriska multinivånät med flera utvariabler och få grindar likt detta. Jag har också förgäves försökt att kontakta honom.
Är det någon som vet hur man går tillväga för att konstruera kombinatoriska multinivånät likt detta? Finns det kända metoder eller är det specifika programvaror som kan användas?
För skojs skull började jag skriva på ett C-program för att generera sanningstabeller för alla möjliga konfigurationer av 2-ingångars NAND-grindar där min tanke var att i efterhand kunna söka efter den önskade sanningstabellen och på så sätt hitta det "optimala" (med avseende på antalet grindar) schema för denna uppgift. Problemet är bara att det finns så oerhört många sätt detta kan göras på att det redan vid 5 grindar blir närmar 1 GB (i textformat) av sanningstabeller. Att söka efter 6 grindar blir mer än 10 gånger så dyrt och 7 grindar ytterligare mer än 10 gånger så dyrt. Därmed praktiskt omöjligt att hitta schema med 30 grindar på detta sätt enligt vad jag förstår.
w3 w2 w1 w0 a b c d e f g 0000 1111110 0001 0110000 0010 1101101 0011 1111001 0100 0110011 0101 1011011 0110 1011111 0111 1110000 1000 1111111 1001 1110011 1010 1110111 1011 0011111 1100 1001110 1101 0111101 1110 1001111 1111 1000111