Implementieren Sie den in der Vorlesung skizzierten Simulator für digitale Schaltungen. Beginnen Sie mit den drei logischen Grundfunktionen "logisches-nicht", "logisches-und" und "logisches-oder". Programmieren Sie dann die drei elementaren Funktionseinheiten "inverter", "und-gatter" und "oder-gatter". Realisieren Sie danach die Darstellung der Verbindungsdrähte, wobei Sie die fehlende Prozedur "jede-aufrufen" sowie die Interface-Prozeduren ergänzen. Fügen Sie dann die Prozeduren "verzoegert" und "fortfuehren" hinzu.
Entnehmen Sie dazu die Implementierung der Agenda aus der Datei AGENDA.LSP.
Programmieren Sie zuletzt eine "Sonde" zur Ausgabe von Signalwerten auf Drähten. Testen Sie Ihre Implementierung an folgendem Beispiel:
(define die-agenda (konstr-agenda))
(define inverter-verzoegerung 2)
(define und-gatter-verzoegerung 3)
(define oder-gatter-verzoegerung 5)
(define eingabe-1 (konstr-draht))
(define eingabe-2 (konstr-draht))
(define summe (konstr-draht))
(define uebertrag (konstr-draht))
(sonde 'summe summe)
(sonde 'uebertrag uebertrag)
(define (halbaddierer a b s c) ... )
(halbaddierer eingabe-1 eingabe-2 summe uebertrag)
(set-signal! eingabe-1 1)
(fortfuehren)
% AUSGABE: Signal "summe" wechselt zum Zeitpunkt 8 auf 1 %
(set-signal! eingabe-2 1)
(fortfuehren)
% AUSGABE: Signal "uebertrag" wechselt zum Zeitpunkt 11 auf 1 %
% AUSGABE: Signal "summe" wechselt zum Zeitpunkt 16 auf 0 %