Wie kann ich eine digitale Schaltung mit booleschen Logikgattern implementieren?
Wie Sie sehen, tritt bei jeder steigenden Flanke eine Oszillation auf und das Signal kehrt nach der Oszillation auf den HIGH-Logikpegel zurück. Dies gilt auch für die fallende Flanke.
Versuchen Sie, zwei neue Signale mit einer Verzögerungs-RC-Schaltung und einem Schmitt-Trigger zu erstellen: -
Verwenden Sie dann exklusive ODER-Gatter für die drei Signale, um Ihr gewünschtes Ausgangssignal zu erzeugen.
Wenn dies, wie Sie sagen, ein rein asynchrones Design ist, müssen Sie eigene Zeitsignale generieren. Wenn dies eine Frage zum Universitätsstudium ist, besteht die erwartete Antwort wahrscheinlich darin, die Ausbreitungsverzögerungen unabhängiger Gates zu verwenden, um Signale nach oben und unten zu treiben. Verbinden Sie mehrere Gatter (z. B. Inverter) hintereinander, um Signale mit unterschiedlichen Laufzeitverzögerungen zu erzeugen. Verwenden Sie dann unabhängige Logikgatter, um die verzögerten Signale zu der gewünschten Ausgangswellenform zu kombinieren. Diese Techniken sind mit vollständig benutzerdefiniertem IC-Design oder durch Verwendung separater Logikgatter (wie z. B. Logik-ICs der Serie 74HCxxx) möglich. Aber diese Designmethodik ist mit FPGAs nicht möglich, da FPGAs keine separaten Gates haben. (Es sei denn, Sie platzieren und routen das FPGA von Hand mit Gates aus handverlesenen Makrozellen, deren Eigenschaften Sie kennen.)
Andere Entwurfsmethoden erfordern die Erzeugung eines Taktsignals durch Verwendung einer Art Oszillator. Anschließend können Sie dieses Taktsignal verwenden, um ein synchrones Design zu erstellen, das mit jeder Designmethode Ihrer Wahl, wie z. B. FPGAs, implementiert werden kann. (Ich erwähne FPGAs, weil Sie in einer anderen Frage von Ihnen darüber sprechen).
Ich habe die Schaltung sktechd im folgenden Schema implementiert:
Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan
Die Implementierung in Verilog und die Simulation auf Xilinx ISE unter Berücksichtigung von Gate-Verzögerungen führt zu folgendem Ergebnis:
(* KEEP = "TRUE" *)
INV-Gatter hinzugefügt, um zu vermeiden, dass sie während der Synthese entfernt werden.
PkP
VSB
EM-Felder
PkP
VSB
PkP