How to make your own processor: Comparison and flow control
Πως να φτιάξετε τον δικό σας επεξεργαστή: Σύγκριση και έλεγχος ροής
17 Nov 2025
17 Νοε 2025
·
Electronics
Ηλεκτρονική
·
logic
λογική
Introduction Εισαγωγή
In our previous article, we showed how we can use NAND gates to implement addition . In this article, we will show how to implement comparators, multiplexers and demultiplexers. The implementations we present in this page are interactive (you can press buttons and change the inputs).
Στο προηγούμενο άρθρο μας δείξαμε πώς μπορούμε να χρησιμοποιήσουμε NAND πύλες για να υλοποιήσουμε την πρόσθεση . Σε αυτό το άρθρο θα δείξουμε πώς να υλοποιήσουμε συγκριτές, πολυπλέκτες και αποπολύπλεκτες. Οι υλοποιήσεις που παρουσιάζουμε σε αυτή τη σελίδα είναι διαδραστικές (μπορείτε να πατάτε κουμπιά και να αλλάζετε τις εισόδους).
Comparison Σύγκριση
Equal to zero comparator Συγκριτής ίσο με μηδέν
It outputs 1 if -and only if- all bits in the input are 0.
Α3 A2 Α1 Α0 Output
0 0 0 0 0
X X X 1 1
X X 1 X 1
X 1 X X 1
1 X X X 1
{ "width":350,
"height":160,
"editable": false,
"showToolbox":false,
"devices":[
{"type":"NumSrc","id":"dev0", "x":20, "y":25, "label":"A0","state":{"direction":0,"on":false}},
{"type":"NumSrc","id":"dev1", "x":20, "y":55, "label":"Α1","state":{"direction":0,"on":false}},
{"type":"NumSrc","id":"dev2", "x":20, "y":85, "label":"A2","state":{"direction":0,"on":false}},
{"type":"NumSrc","id":"dev3", "x":20, "y":115,"label":"Α3","state":{"direction":0,"on":false}},
{"type":"NAND", "id":"dev4", "x":60, "y":15, "label":"NAND"},
{"type":"NAND", "id":"dev5", "x":60, "y":45, "label":"NAND"},
{"type":"NAND", "id":"dev6", "x":60, "y":75, "label":"NAND"},
{"type":"NAND", "id":"dev7", "x":60, "y":105,"label":"NAND"},
{"type":"NAND", "id":"dev8", "x":110, "y":30, "label":"NAND"},
{"type":"NAND", "id":"dev9", "x":110, "y":90, "label":"NAND"},
{"type":"NAND", "id":"dev10","x":160, "y":30, "label":"NAND"},
{"type":"NAND", "id":"dev11","x":160, "y":90, "label":"NAND"},
{"type":"NAND", "id":"dev12","x":210, "y":60, "label":"NAND"},
{"type":"NAND", "id":"dev13","x":260, "y":60, "label":"NAND"},
{"type":"NumDsp","id":"dev14","x":315, "y":68, "label":"Output","state":{"direction":2}}],
"connectors":[{"from":"dev0.out0","to":"dev4.in0"},
{"from":"dev0.out0","to":"dev4.in1"},
{"from":"dev1.out0","to":"dev5.in0"},
{"from":"dev1.out0","to":"dev5.in1"},
{"from":"dev2.out0","to":"dev6.in0"},
{"from":"dev2.out0","to":"dev6.in1"},
{"from":"dev3.out0","to":"dev7.in0"},
{"from":"dev3.out0","to":"dev7.in1"},
{"from":"dev4.out0","to":"dev8.in0"},
{"from":"dev5.out0","to":"dev8.in1"},
{"from":"dev6.out0","to":"dev9.in0"},
{"from":"dev7.out0","to":"dev9.in1"},
{"from":"dev8.out0","to":"dev10.in0"},
{"from":"dev8.out0","to":"dev10.in1"},
{"from":"dev9.out0","to":"dev11.in0"},
{"from":"dev9.out0","to":"dev11.in1"},
{"from":"dev10.out0","to":"dev12.in0"},
{"from":"dev11.out0","to":"dev12.in1"},
{"from":"dev12.out0","to":"dev13.in0"},
{"from":"dev12.out0","to":"dev13.in1"},
{"from":"dev13.out0","to":"dev14.in0"}]}
Flow control Έλεγχος ροής
Μultiplexer (Data selector) Πολυπλέκτης (Επιλογέας δεδομένων)
A multiplexer (mux) routes one of several input lines to a single output line.
Ένας πολυπλέκτης (mux) κατευθύνει μια από τις πολλαπλές γραμμές εισόδου στη μοναδική γραμμή εξόδου.
Selector Input A Input B Output
0 0 0 0
0 0 1 0
0 1 0 1
0 1 1 1
1 0 0 0
1 0 1 1
1 1 0 0
1 1 1 1
{ "width":320,
"height":160,
"editable": false,
"showToolbox":false,
"devices":[
{"type":"DC", "id":"dev0","x":20,"y":20, "label":"DC"},
{"type":"Toggle","id":"dev1","x":70,"y":20, "label":"Selector","state":{"on":false}},
{"type":"NumSrc","id":"dev2","x":30,"y":75, "label":"Input A","state":{"direction":0,"on":false}},
{"type":"NumSrc","id":"dev3","x":30,"y":115,"label":"Input B","state":{"direction":0,"on":true}},
{"type":"NAND", "id":"dev4","x":120,"y":20,"label":"NAND"},
{"type":"NAND", "id":"dev5","x":170,"y":40,"label":"NAND"},
{"type":"NAND", "id":"dev6","x":220,"y":60,"label":"NAND"},
{"type":"NAND", "id":"dev7","x":120,"y":85,"label":"NAND"},
{"type":"NumDsp","id":"dev8","x":280,"y":70,"label":"Output","state":{"direction":2}}],
"connectors":[
{"from":"dev0.out0","to":"dev1.in0"},
{"from":"dev1.out0","to":"dev4.in0"},
{"from":"dev1.out0","to":"dev4.in1"},
{"from":"dev4.out0","to":"dev5.in0"},
{"from":"dev2.out0","to":"dev5.in1"},
{"from":"dev5.out0","to":"dev6.in0"},
{"from":"dev6.out0","to":"dev8.in0"},
{"from":"dev1.out0","to":"dev7.in0"},
{"from":"dev3.out0","to":"dev7.in1"},
{"from":"dev7.out0","to":"dev6.in1"}]}
Demultiplexer (Data distributor) Αποπολυπλέκτης (Διανομέας δεδομένων)
A demultiplexer (demux) takes one input signal and routes it to one of several output lines.
Ένας αποπολυπλέκτης (demux) λαμβάνει ένα σήμα εισόδου και το κατευθύνει σε μία από τις γραμμές εξόδου.
Selector Input Output A Output B
0 0 0 0
0 1 1 0
1 0 0 0
1 1 0 1
{ "width":320,
"height":140,
"editable": false,
"showToolbox":false,
"devices":[
{"type":"DC", "id":"dev0","x":20, "y":80,"label":"DC"},
{"type":"Toggle","id":"dev1","x":70, "y":80,"label":"Selector","state":{"on":false}},
{"type":"NumSrc","id":"dev2","x":27, "y":30,"label":"Input","state":{"direction":0,"on":true}},
{"type":"NAND", "id":"dev3","x":120,"y":50,"label":"NAND"},
{"type":"NAND", "id":"dev4","x":220,"y":80,"label":"NAND"},
{"type":"NAND", "id":"dev5","x":170,"y":20,"label":"NAND"},
{"type":"NAND", "id":"dev6","x":220,"y":20,"label":"NAND"},
{"type":"NumDsp","id":"dev7","x":280,"y":30,"label":"A","state":{"direction":2}},
{"type":"NumDsp","id":"dev8","x":280,"y":90,"label":"B","state":{"direction":2}}],
"connectors":[
{"from":"dev0.out0","to":"dev1.in0"},
{"from":"dev1.out0","to":"dev3.in1"},
{"from":"dev2.out0","to":"dev3.in0"},
{"from":"dev3.out0","to":"dev4.in0"},
{"from":"dev3.out0","to":"dev4.in1"},
{"from":"dev4.out0","to":"dev8.in0"},
{"from":"dev2.out0","to":"dev5.in0"},
{"from":"dev3.out0","to":"dev5.in1"},
{"from":"dev5.out0","to":"dev6.in0"},
{"from":"dev5.out0","to":"dev6.in1"},
{"from":"dev6.out0","to":"dev7.in0"}]}