Was sind die Vorteile der Verwendung von FPGAs gegenüber TTL in der Intro-Computerarchitektur?

Ich unterrichte den einzigen Computerarchitekturkurs an einer Hochschule für freie Künste. Die Lehrveranstaltung ist für das Haupt- und Nebenfach Informatik erforderlich. Wir haben keine Informatik-, Elektrotechnik- oder andere Hardware-Kurse usw. Mein Hauptziel in diesem Kurs ist es, dass die Schüler bis ins kleinste Detail verstehen, wie Computer funktionieren, was sie meiner Meinung nach am besten in einem Hardware-Labor lernen nicht nur durch ein Lehrbuch ( Computer Organization and Designvon Hennessy und Patterson). Mein sekundäres Ziel ist es, sie für Computerarchitektur zu begeistern und ihre Begeisterung für Informatik zu steigern. Es ist kein Ziel, sie direkt für die Industrie vorzubereiten, wohl aber, sie zu motivieren, mehr Computerarchitektur zu studieren. Die Studenten haben im Allgemeinen keine Erfahrung mit dem Bauen oder dem Absolvieren eines Praktikums auf College-Niveau. In der Regel besuchen 10-15 Studierende den Kurs pro Semester.

Ich unterrichte den Kurs seit 1998 auf ähnliche Weise, wie mir Ende der 1980er Jahre am MIT Computerarchitektur und digitale Elektronik beigebracht wurde: Verwendung von DIP-TTL-Chips auf angetriebenen Steckbrettern. In der ersten Hardware-Laboraufgabe bauen die Schüler einen Volladdierer. Etwa zur Hälfte des Semesters fangen sie an, einen einfachen Computer mit einem 8-Bit-Befehlssatz zu bauen. Um die Verkabelung zu reduzieren, stelle ich ihnen eine Platine mit einem Teil der Elektronik zur Verfügung (zwei D-Flip-Flops, zwei 4-Bit-LS-181-ALUs, die zusammen verdrahtet sind, um als 8-Bit-ALU zu fungieren, und einen Tri-State-Puffer). In der ersten dieser Übungen leiten sie die (sehr einfachen) Steuersignale für die beiden Befehlsformate ab und bauen die Schaltung auf, indem sie Befehle an Schaltern eingeben und Ergebnisse von Lampen ablesen. Im zweiten der Labore fügen sie einen Programmzähler (2 LS163s) und ein EPROM (dasMeine ursprüngliche Frage war, bevor sie dazu überging, wie ich Intro-Architektur unterrichten sollte). Im letzten Lab fügen sie eine bedingte Verzweigungsanweisung hinzu. Während die Schüler ziemlich viel Zeit mit Verkabelung und Debugging verbringen, finde ich, dass dort ein Großteil des Lernens stattfindet, und die Schüler gehen mit einem echten Erfolgserlebnis.

Die Leute in diesem Forum haben mir jedoch gesagt, dass ich auf FPGAs umsteigen sollte, mit denen ich vorher noch nicht gearbeitet habe. Ich bin Software-Ingenieur, kein Computer-Ingenieur, und bin jetzt eine Weile nicht mehr in der Schule, aber ich bin lernfähig. Ich würde nicht viel Geld ( vielleicht ein paar tausend Dollar) bekommen, um unsere bestehenden digitalen Trainer zu ersetzen. Wir haben einen einzigen Logikanalysator.

Würden Sie angesichts meiner Ziele und Einschränkungen empfehlen, dass ich bei meinem derzeitigen Ansatz bleibe und auf einen auf FPGAs basierenden umsteige? Wenn letzteres der Fall ist, können Sie mir Hinweise auf Materialien geben, mit denen ich mich weiterbilden kann?

Wie gewünscht, hier ist ein Link zu den Lehrplänen und Laboraufgaben .

Ergänzung: Ja, es ist auch ein digitaler Logikkurs. Als ich an mein College kam, mussten die Studenten jeweils ein Semester Computerarchitektur und digitale Logik belegen, und ich kombinierte sie zu einem einzigen Semester. Das ist natürlich eine Aussage über die Vergangenheit, nicht über die Zukunft.

Können Sie Ihren Lehrplan / den Lehrplan posten oder verlinken?
Darf ich vorschlagen, dass Sie einen alternativen Ansatz in Betracht ziehen? Wie wäre es mit der Verwendung von Mikrocontrollern wie Arduinos in Ihren Labors?
@JonnyBoats: ... wie würde das passen? Sie spricht davon, Computer aus Hardware-Toren zu konstruieren.
Um Ihre Frage zu beantworten: Praktisch niemand baut Hardware-Gates, sie kaufen Chips mit bereits implementierten Gates. Bei FPGAs baut man Gatter nicht in Hardware, sondern baut sie in Software auf.
@JonnyBoats: FPGAs konstruieren digitale Designs aus Hardware-Gates (LUTs sind programmierbare Gates). Die Tore existieren als Hardware, und Ihr Design funktioniert auf rein physische Weise. Mit TTL "bauen" Sie nach diesem Standard auch keine Tore ... es sind vorgefertigte Tore. Der einzige Unterschied besteht darin, dass die Gate-Funktionen programmierbar sind, das Routing programmierbar (aber immer noch physisch) ist und es viele Größenordnungen mehr davon gibt. Ich verstehe immer noch nicht, wie ein Arduino überhaupt in einen Kurs für digitales Logikdesign passt. (Es sei denn, Sie wollten, dass sie den Zweck des Kurses selbst ändert?)
Darron: Eigentlich würde ich einen anderen Fokus vorschlagen, aber das ist ein anderer Punkt. Mein Gedanke ist, dass man keine 10.000 Gatter braucht, um digitale Logik zu lehren. Man kann die digitalen E/A-Pins auf einem Arduino verwenden, um alle grundlegenden Logikschaltungen (und, oder, noch usw.) in Software zu implementieren. Verkabeln Sie ein paar Schalter und einige LEDs und Sie können sofort sehen, ob es funktioniert.
@JonnyBoats: Okay, das sehe ich. Ihr Unterrichtsmaterial scheint jedoch deutlich über die einfachen Gatter hinauszugehen (Recheneinheiten, Decodierung/Ausführung von Anweisungen, Caches). Ihre Methode würde jedoch ein gutes Online-Tutorial abgeben.
UPDATE: Ich steige jetzt auf FPGAs um. :-)

Antworten (8)

Angesichts der Ziele der Klasse denke ich, dass der TTL-Ansatz in Ordnung ist, und ich sage dies als "FPGA-Typ". FPGAs sind ein Meer von Logik und man kann alle möglichen lustigen Sachen mit ihnen machen, aber es gibt nur so viel, was in einem Semester menschlich möglich ist.

Wenn Sie sich Ihren Lehrplan ansehen, ist Ihr Kurs eine Mischung aus den Kursen Logikdesign und "Maschinenstrukturen", die ich im Grundstudium belegt habe. (Außerdem ist es für CS-Majors. Ich bin ganz dafür, dass CS-Majors mit echter Hardware konfrontiert werden müssen - sie mit dem Schreiben von Code davonkommen zu lassen, scheint ein Schritt zurück zu sein.) Auf dieser Einführungsstufe, wo Sie die Assembleranweisungen durchgehen aufgeschlüsselt sind, sehe ich keinen wirklichen Vorteil darin, die Schüler Dinge im Code oder von Hand erledigen zu lassen. HDL zu machen bedeutet, HDL zu lernen, zu lernen, wie man synthetisierbares HDL schreibt, und die IDE zu lernen. Dies ist viel mehr konzeptionelle Komplexität und Neuabstraktion. Außerdem müssen Sie sich mit Softwareproblemen befassen.

Im Allgemeinen besteht der Sinn eines Kurses, der FPGAs verwendet, darin, das Erstellen von Logik zu üben, die nützlich ist – nützlich für die Kommunikation mit Peripheriegeräten, serieller Kommunikation, RAM, Videogeneratoren usw. Dies ist ein wertvolles Wissen, das man haben sollte, aber es scheint sehr weit hergeholt zu sein Umfang Ihres Studiums. In fortgeschritteneren Kursen in Computerarchitektur implementieren die Schüler anspruchsvolle CPUs in FPGAs, aber auch dies scheint außerhalb des Rahmens Ihres Kurses zu liegen.

FPGAs würde ich zumindest einen Vortrag widmen. Führen Sie einige Demos mit einem Entwicklungsboard durch und zeigen Sie ihnen den Arbeitsablauf. Da Sie bei Mills sind, könnten Sie vielleicht die Leute in Berkeley kontaktieren, die CS 150 / 152 betreiben, und sehen, wie sie die Dinge machen.

Ich kann sagen, dass CS150 in den frühen 90er Jahren im Wesentlichen so unterrichtet wurde, wie OP ihre Kursarbeit am MIT beschreibt – hauptsächlich 74xx-Gatter, die in der Konstruktion einer einfachen 8-Bit- (oder 4-Bit-?) CPU gipfelten. Wir hatten ein kurzes Projekt mit FPGAs, die in einem schematischen Erfassungstool (kein HDL) entworfen wurden. Es sieht so aus, als ob der aktuelle Lehrplan hauptsächlich HDL-basiert ist.
Guter Punkt, dass die Klasse eine Mischung aus Logikdesign und Maschinenstrukturen ist. Wie ich der Fragenbeschreibung hinzugefügt habe, gab es früher zwei separate Kurse, die ich zu einem zusammengefasst habe. Vielen Dank für Ihre Hilfe. Ich werde FPGAs erforschen und zumindest einen Vortrag dazu hinzufügen. Bei UCB hat Dave Patterson einen neuen Ansatz für die Intro-Architektur geschaffen, der auf viel höherem Niveau liegt. Ich behalte es im Auge, habe aber nicht vor, eine so große Änderung vorzunehmen.
Ich habe über die Komplexität der FPGA-Umgebungen nachgedacht und vielleicht bin ich nicht wirklich anderer Meinung, dass es für einen Einführungskurs zu viel sein könnte. Es scheint einfach eine echte Schande zu sein, nicht mit modernen Workflows zu unterrichten. Ich habe selbst mit TTL gespielt, und erst als ich mich mit FPGAs beschäftigte, begann ich wirklich zu verstehen, wie (relativ einfache) Computer funktionieren. Die Kursarbeit sieht besser aus als das, womit ich arbeiten musste, also bringt sie die Konzepte vielleicht besser rüber. Aus Sicht von TTL-Logikchips sieht ein "echter" Prozessor jedoch sehr weit weg aus. Nach FPGAs ist es denkbar, eines zu machen.
Mit "wie Computer funktionieren" meine ich, wie man sie tatsächlich baut, kein unscharfes "Clocks and Flops" -Konzept ... wofür TTL natürlich ausreichend ist. (und wieder sieht ihre Kursarbeit so aus, als könnte sie dies gut unterrichten ... mein Problem besteht darin, die Konzepte auf Hardware zu unterrichten, die fast keine wirkliche Anwendung hat, anstatt auf Hardware zu unterrichten, die tatsächlich verwendet wird.)
@darron, TTL ist im Grunde veraltet, aber konzeptionell sauber - es gibt keine Sprache oder IDE, um die Dinge zu komplizieren, nur Diagramme und Punkt-zu-Punkt-Verkabelung. Es wird chaotisch, wenn Ihre Wortgröße zunimmt, aber 8-Bit-Sachen sind nicht so schlimm. Wenn der Kurs weiter gehen würde oder wenn es einen Folgekurs gäbe, wären FPGAs sinnvoll, aber ich denke, es wäre angesichts des behandelten Materials eine unnötige Komplikation.
@ThePhoton, ich dachte eher an Demos, als ich CS150 erwähnte. Die Einführung in Logik und Datenpfad ist jetzt tatsächlich in CS61C. Der aktuelle CS150 läuft darauf hinaus, viele Zustandsmaschinen in Verilog zu implementieren. Nach dem, was ich von CS152 gesehen habe, geht es darum, im Labor zu leben und zuzusehen, wie Ihr CPU-Design Testbänke versagt ;)

Ein Vorteil der Verwendung von TTL wäre jedoch, dass bei den sehr elementaren Schaltungen die Details der HDL die eigentliche Schaltung gewissermaßen maskieren würden und die meisten Schüler einfach die meiste Zeit damit verbringen würden, HDL zu schreiben und zu lernen. Ich denke, TTLs für den ersten Teil und dann FPGA für den Architekturteil wären besser, da es schwierig ist, tatsächlich ein programmierbares System mit TTLs zu erstellen.

+1 HDL verbirgt Schaltkreise. Es gibt ein paar verschiedene Möglichkeiten, Multiplexer in HDLs zu schreiben, und die meisten von ihnen haben sehr wenig oder gar nichts damit zu tun, wie die Gates angeordnet sind, um einen Mux zu erstellen.
Das ist der entscheidende Punkt – es ist viel zu einfach, Code für ein FPGA zu schreiben, ohne tatsächlich auf einer grundlegenden Ebene zu verstehen, wie es funktioniert. Nun, es gibt Möglichkeiten, dies zu vermeiden, z. B. enthält Alteras IDE einen schematischen Eingabemodus, der Ihnen helfen kann, sich auf das Design auf Gate-Ebene zu konzentrieren, aber wenn Sie dabei bleiben, können Sie die Leistungsfähigkeit von FPGAs nicht wirklich ausschöpfen, so wie dort macht es überhaupt Sinn zu wechseln?

Ich stimme Photon sehr zu. Die Verwendung von FPGAs bietet viele Vorteile. Hier sind einige interessante Punkte zu beachten:

1) Einfache Plattform, um ein Gate-Design sehr schnell auszuprobieren, ohne Stunden oder möglicherweise Tage an Arbeit, um Dinge zu verkabeln. FPGAs ermöglichen ganz einfach potenziell sehr komplexe digitale Designs. (VIEL mehr Theorie, weniger Arbeit)

2) Bedeutende Teile der Arbeit eines Studenten könnten in Simulationen außerhalb des Labors durchgeführt werden.

3) Die Softwareumgebung ist kostenlos (im Allgemeinen einschließlich des Simulators).

4) Es gibt viele relativ günstige FPGA-Plattformen. Akademische Preise sollten helfen. So etwas wie das Terasic DE0-Nano kostet 59 US-Dollar für ein komplettes Kit (und es sieht ziemlich gut aus). $50-60 scheint der Bereich pro Board zu sein, den Sie sich ansehen würden.

5) Es gibt viele wirklich coole Dinge, die mit FPGAs zu tun haben. Es gibt Websites wie OpenCores , die Hunderte von vorgefertigten Modulen für die Verwendung mit FPGAs bereitstellen. Es gibt FPGA4Fun mit vielen Tutorials und Projekten. Zur reinen Unterhaltung widmet sich FPGA Arcade dem Erstellen von Spielen mit FPGAs. Je nachdem, was Sie rund um die FPGA-Boards einrichten, könnte dies eine wirklich unterhaltsame Klasse werden.

6) Einige Boards haben scheinbar fertige digitale Designklassen: Intro to Digital Design (Warnung: großer Download) mit einem etwas alten Xilinx Spartan 3E-basierten Board. (Obwohl dieses auf ActiveHDL basiert, würde ich persönlich ein eher standardmäßiges VHDL oder Verilog bevorzugen.) Die großen FPGA-Anbieter haben auch Universitätsprogramme: Xilinx University Program , Altera University Program , Lattice University Program .

7) Der Workflow ist viel näher an der heutigen professionellen Designarbeit. Arbeitskenntnisse in der FPGA-Entwicklung sind eine sofort vermarktbare Fähigkeit.

Vielen Dank. Ich werde diese auf jeden Fall ausprobieren. FWIW, wenn ich ein zweites Semester Hardwarelabor hätte, würde ich definitiv FPGAs oder Arduino damit machen.

Ich denke, wenn man sich heutzutage mit Dingen auf der Gate-Ebene beschäftigt, arbeitet man nicht im Bereich "Computerarchitektur", sondern macht wirklich nur grundlegende digitale Elektronik. Aber man kann auch nicht alles, was man wissen muss, von digitaler Elektronik auf Gatterebene bis hin zu Caching-Algorithmen, parallelen Computerarchitekturen, SIMD, Netzwerken usw. in einem einzigen Semester unterrichten.

Es kommt also darauf an, was Sie unterrichten möchten. Wenn Sie sich auf digitale Elektronik auf Gate-Ebene konzentrieren möchten, bietet die Arbeit mit Chips auf Gate-Ebene den Schülern etwas Praktisches, mit dem sie arbeiten können, und vermittelt ihnen ein besseres Verständnis dieses Materials. Aber wenn Sie Computerarchitektur unterrichten wollen, müssen sie wahrscheinlich auf einer viel höheren Abstraktionsebene arbeiten als UND- und ODER-Gatter.

Zumindest sind Sie es sich wahrscheinlich selbst schuldig, HDL zu lernen und ein oder zwei FPGA-basierte Designs zu implementieren, damit Sie (als Bildungsexperte hier) einschätzen können, wie diese Fähigkeiten zu Ihren Zielen für Ihre Schüler passen würden. Ich gehe davon aus, dass andere Antworten viele Hinweise auf kostengünstige und kostenlose Materialien geben werden, mit denen Sie sich in kurzer Zeit mit dem FPGA-Design vertraut machen können. (Tipp: Xilinx und Altera bieten beide kostenlose Software-Design-Tools und Simulatoren an, zusammen mit Tonnen von Anwendungshinweisen und anderen Lehrmaterialien).

Ich bin nicht der Meinung, dass die Klasse, wie sie ist, keine Computerarchitektur lehrt. Die Studenten lernen, wie man eine ISA implementiert, was definitiv Teil der Computerarchitektur ist, und ich unterrichte auch etwas über Pipelining und Caches. Ich stimme zu, dass Architektur mehr ist als das, was ich in einem Kurs lehre. Ich habe als Student an mehreren anderen Architekturkursen teilgenommen, habe akademische und industrielle Forschung in Architektur betrieben usw. Ich schätze die Ermutigung, mich mit HDLs und FPGAs zu befassen.

Ich denke, der richtige Ansatz wäre, damit zu beginnen, ein paar Gatter aus Relais zu bauen, die leicht zu sehen und zu verstehen sind, aber für moderne Anwendungen offensichtlich zu langsam und leistungshungrig sind. Zeigen Sie dann, wie Transistoren verwendet werden können, um dasselbe kompakter, schneller und effizienter zu tun, und verpackte Gates [z. B. "Quad NAND"] können dies sogar noch besser. Sobald Sie an diesem Punkt angekommen sind, würde ich vorschlagen, dass Sie zeigen, wie man Dinge wie Multiplexer und Latches aus Gattern baut, und dann, wie etwas größere Strukturen aus gepackten Multiplexen, Latches usw. gebaut werden können. Niemand geht Heutzutage kann man einen Computer bauen, indem man unzählige Tausende diskreter Transistoren physisch zusammenlötet, aber die interne Funktionsweise eines Computers ist der der Transistoren sehr ähnlich, außer dass alles viel kleiner ist.

Ein großer Vorteil, den die Schüler meiner Meinung nach aus dieser Art von Unterricht ziehen würden, ist ein Verständnis dafür, warum viele Dinge so funktionieren, wie sie funktionieren. Wenn man beispielsweise einen Befehlssatz "simulieren" würde, der keine praktische physikalische Realisierung haben müsste, wäre es nicht erforderlich, dass ein "Speicher laden"-Befehl drei Zyklen benötigt, während die meisten anderen Befehle einen benötigen. Einige Dinge könnten verstanden werden, ohne auf die Transistorebene herunterzugehen, aber einige nicht (z. B. die Bedeutung von synchronen gegenüber asynchronen Eingängen).

Bleiben Sie bei einfachen TTL-Geräten auf dem Tisch ... zumindest für den Beginn des Kurses.

Eines der coolsten Dinge beim Verketten einzelner Gates auf dem Desktop – insbesondere wenn Sie langsamere Geräte verwenden – ist, dass Sie die Schüler die Ein-/Ausgänge mit einem Oszilloskop versehen können. Stellen Sie sicher, dass Ihre Labornotizen instabile Konstruktionen mit Feedback enthalten, um Schwingungen zu verursachen, und bitten Sie die Schüler zu erklären, warum es schwingt.

Hier sind viele Dinge wichtig. Die Anstiegs-/Abfallzeit ist selbst mit einem einfachen Oszilloskop messbar, ebenso wie die Ausbreitungsverzögerung. Es ist sehr wichtig, dass die Schüler lernen, dass digitale Logik nur ein analoger Prozess mit voreingestellten Schwellenwerten für "Ein" und "Aus" ist. Diese realen Verhaltensweisen werden mit zunehmender Übergangsrate und Komplexität der Logik immer wichtiger. Für einen Einführungskurs in die Computerarchitektur, in dem Sie eine sehr einfache MCU in einem FPGA bauen, setzt die Ausbreitungszeit (sogar innerhalb des FPGA) eine Obergrenze für die MCU-Taktrate, bevor sie beginnt, sich unvorhersehbar zu verhalten.

Ich stellte fest, dass die meisten Schüler die physikalische Realität digitaler Schaltungen nicht verstanden, bis sie sie tatsächlich auf einem Oszilloskop sahen, und es ist immer noch zu einfach, in die Falle zu tappen, anzunehmen, dass Übergänge augenblicklich und Wellenformen perfekte Quadrate sind.

Sie haben ein ganzes Semester Zeit, sodass Sie nicht mehr als ein paar Wochen Unterrichtszeit aufwenden müssen, um sicherzustellen, dass die Studenten die realen Auswirkungen der digitalen Schaltungen verstehen, mit denen sie arbeiten.

Fahren Sie dann damit fort, das in HDL zu übersetzen und Dinge in FPGAs zu bauen, wenn Sie dorthin wollen, aber es gibt keinen Ersatz dafür, Dinge auf der Bank zu bauen und ihr Verhalten in der realen Welt zu untersuchen.

Ich denke, Sie überschätzen vielleicht, wie viel Sie in einem Semester tun können. Ich bin mir nicht sicher, ob Sie die Studenten in einem Semester von "keine Ahnung, was eine Karnaugh-Karte ist" zu "einen Prozessor in einem HDL machen" bringen können, insbesondere nicht, wenn Sie möchten, dass sie wirklich verstehen, was sie tun.
Ich habe vor einigen Jahren im zweiten Jahr EE digitale Logik unterrichtet. Der Lehrplan wurde von der Universität vorgeschrieben, aber ich sage aus Erfahrung, dass Sie sicherlich eine Gruppe von Studenten in einem Semester von im Wesentlichen null auf die grundlegende MCU bringen können. Zugegebenermaßen haben wir eher durch schematische Erfassung als durch HDL gelehrt.
Denken Sie daran, dass Sie, wenn Sie diesen Weg gehen, den Schülern beibringen müssen, wie sie VHDL oder Verilog von Grund auf verwenden, und Sie müssen sich mit Vorurteilen darüber auseinandersetzen, dass es sich um eine "Programmiersprache" handelt (was sie nicht ist, und es funktioniert ganz anders als eins).
Vielen Dank für Ihre Antwort, obwohl @Hearth Recht hat, dass ich viel Material zu behandeln habe. Dies ist der einzige Architektur-/Betriebssystemkurs in einem CS-Programm (nicht CE oder EE), daher decke ich auch Assemblersprache, Computerarithmetik, Caches und virtuellen Speicher ab. Mir ist klar, dass dieses Forum auf EEs ausgerichtet ist.

Obwohl ich die Bedeutung einiger praktischer Erfahrung mit der physischen Schaltungsmontage voll und ganz anerkenne , denke ich, dass es auch wichtig ist zu erkennen, dass Sie moderne Computerpraktiken nicht ohne ein gewisses Maß an etwas abdecken können, das sich wie Simulation anfühlt oder zu viel Abstraktion verbirgt Das Beste, was Sie tun können, ist zu versuchen, auf jeder Ebene etwas Arbeit zu leisten, bevor Sie genügend Abstraktion hinzufügen, um den Versuch der nächsten Komplexitätsebene plausibel zu machen. Der MIT-Kurs, auf den Sie sich beispielsweise beziehen, begann irgendwann mit einer Softwaresimulation einer 32-Bit-RISC-Maschine, die auf der 8-Bit-Mikroprogrammiermaschine mit Chips und Modulen lief, die physisch "gebaut" wurde. An diesem Punkt würde ich argumentieren, dass es effektiver ist, eine solche Maschine einfach in einem FPGA zu implementieren (etwas, von dem ich vermute, dass sie es seitdem wahrscheinlich getan haben).

In Anbetracht dessen wäre ich versucht, sowohl eine Chips & Wires-Phase früh als auch eine FPGA-Phase später in den Kurs einzubeziehen. Da Sie bereits die Steckplatinen-Kits haben, könnten Sie die frühen Labore einfach darauf belassen und entweder eine FPGA-Karte oder vielleicht ein Steckplatinen-FPGA-Modul für die späteren Labore verwenden. Der Bau einer Hybridmaschine, bei der das FPGA von einer externen Schaltung abhängt, die einen Teil des Prozessors implementiert, wäre möglich, würde sich aber sehr künstlich anfühlen - ein vollständiger Technologiewechsel an dem Punkt, an dem die Komplexität ein Steckbrettstück übersteigt, könnte am realistischsten sein.

Sie sollten in der Lage sein, vorhandene eigenständige FPGA-Boards für weniger als 100 US-Dollar pro Stück zu Bildungspreisen zu beziehen.

Eine andere Option könnte darin bestehen, im Rahmen des Kurses eine eigene zu konstruieren, vielleicht als ersten Teil des Projekts eine FPGA-Schnittstelle zum seriellen Laden zu erstellen. Ein netter Vorteil davon ist, dass die Kosten niedrig genug wären, dass die Studenten ihre Tafeln behalten könnten, anstatt sie am Ende des Semesters abgeben zu müssen, was hoffentlich zu anhaltendem Interesse und Bewusstsein bei einer Handvoll führen würde.

Vielen Dank. Ich war mir der Veränderung am MIT bewusst. Tatsächlich habe ich an meiner jetzigen Institution mit alten 6.004/6.111-Laborkits angefangen, die das MIT nicht mehr benötigte. Meine Studenten sind jedoch keine MIT-Studenten und können in einem Semester nicht so viel aufnehmen, also muss ich wählerisch sein. (Tatsächlich fand ich am MIT heraus, dass die meisten Studenten auch nicht so viel aufnehmen konnten, wie ihnen zugeworfen wurde, aber das ist eine andere Diskussion.) Die niedrigeren Kosten von FPGA-Boards sind definitiv attraktiv.

Diskrete TTL-Geräte sind keine schlechte Idee, aber ich denke, dass diskrete CMOS 4000 eine noch bessere Idee für das Unterrichten von einführenden digitalen Dingen ist.

Die fast 50 Jahre alte CD4000-Familie hat im Rahmen eines Praktikums auf jeden Fall Vorteile.

  1. Alle relevanten Teile sind weiterhin bei TI in DIP-Paketen erhältlich und normalerweise auf Lager
  2. Sie sind CMOS-Geräte, genau wie so ziemlich die gesamte heute hergestellte digitale Logik (im Vergleich zum bipolaren TTL).
  3. Sie haben einen geringen Stromverbrauch, der proportional zur Taktgeschwindigkeit ist - wenn sie gestoppt sind, sind sie im Wesentlichen offene Schaltkreise, und bei Audiofrequenzen sind sie Mikropower und können mit 3-V-Knopfzellen oder 2x1,5-V-Knopfzellen betrieben werden
  4. die Eingänge sind im Wesentlichen offene Schaltkreise bei DC und etwa 5 pF bei AC; Das statische Fanout ist unendlich (gegenüber dem Schmerz, den es in TTL gibt)
  5. Sie laufen gut von ungeregelten Netzteilen
  6. Sie arbeiten mit 3-V- bis 15-V-Versorgungen, und die Versorgungsspannung moduliert ihre Geschwindigkeit: Bei 3 V sind das langsame und gutartige Geräte, und ein 10-20-MHz-Oszilloskop ist alles, was Sie brauchen, um die Signale genau darzustellen!
  7. Die 12-V-Versorgung gewährleistet die mit dieser Familie erreichbare Höchstgeschwindigkeit, ohne dass Sie sich Sorgen machen müssen, die Chips zu zerstören, wenn die Versorgung ein paar Volt ausfällt
  8. 9V-12V-Versorgungen sind typisch und garantieren eine so gute Leistung, wie Sie sie von dieser Familie erhalten
  9. Die Ausgangsanstiegsgeschwindigkeiten sind 1-2 Größenordnungen langsamer als bei moderneren Logikfamilien: Es gibt nur wenige oder gar keine Probleme mit der Signalintegrität, selbst wenn Designs auf lötfreien Steckplatinen ausgelegt sind
  10. die Rauschabstände sind bei höheren Versorgungsspannungen sehr großzügig
  11. die Ausgänge sind kurzschlussfest
  12. Die Ausgänge können für eine höhere Treiberstärke parallel geschaltet werden - genau wie bei einem ASIC durch Ändern der Kanalbreite der Ausgangsstufe - und sind "schwach" genug, um solche Effekte selbst mit groben Messtechniken leicht zu beobachten
  13. Der CD4007UB-Chip mit 3 PMOS- und 3 NMOS-Transistoren ermöglicht eine sanfte Einführung in Techniken, die für das Logikdesign auf Transistorebene relevant sind: schwache vs. harte Treiber, Transistorstapelung für zwei-drei Eingangsgatter, Schmitt-Trigger, Durchgangsgatter usw.
  14. AND, OR, NAND, NOR sind in Varianten mit 2, 3, 4 und 8 Eingängen verfügbar
  15. Viele Geräte in der Familie arbeiten im unterschwelligen Nanopower-Regime bei Spannungen weit unter 3 V; Der Betrieb unter dem Schwellwert wird in der Produktion in Nanopower-Schaltkreisen eingesetzt und ist ziemlich relevant
  16. Es gibt genug Abwechslung, um fortgeschrittenere Techniken zu demonstrieren, z.
  • Der CD4048 ist ein breites programmierbares Gatter zur Implementierung komplexer programmierbarer kombinatorischer Logikäquivalente oder ein praktischer "universeller Baustein" mit bis zu 9 Eingängen

  • Die Ratenmultiplikatoren CD4089 und CD4527 ermöglichen (langsame) digitale Nachbildungen analoger Computer - Sie können Differentialgleichungen usw. lösen.

  • CD4068-, 78-, 85- und 86-Gatter mit breitem Eingang ermöglichen eine 1:1-Implementierung programmierbarer kombinatorischer Logik (nicht registrierte PALs)

  • CD4007, 16, 53 und 66 sind Durchgangstore (mehr oder weniger getarnt)

Ab Januar 2022 waren die folgenden Geräte in PDIP bei TI bestellbar – sie alle sind CD4xxxBE-Teilenummern, sofern nicht anders angegeben:

4001-4002, 4007, 4009UBE, 4010-4031, 4033, 4035, 4040, 4041UBE, 4042--4048, 4049UBE, 4050-4056, 4060, 4063, 4066, 4068, 4069UBE, 4070-4073, 4075-4078, 4081 -4082, 4085-4086, 4089, 4093-4094, 4098-4099, 40102-40103, 40105-40107, 40109-40110, 40117, 40147, 40160BF (CDIP), 40161, 40174-40175, 40192-40194, 40257, 4502-4504, 4508BNS, 4510-4512, 4516-4518, 4520-4522, 4527, 4532, 4536, 14538, 4541, 4555-4556, 4572UBE, 4585, 4724.

Dies sind übrigens auch die weit verbreiteten Geräte der CD4000/MC14000-Familie. Einige von ihnen sind mit der Suchfunktion auf der TI-Website schwer zu finden, und ich habe eine Weile gebraucht, um die obige Liste zusammenzustellen.

Die einzige Funktion, die leider auf dieser Liste fehlt – und heute nicht mehr regulär hergestellt wird – sind die parallelen Addierer. Wenn Sie darauf bestehen, sie zu haben, und ungefähr hundert auf einmal kaufen können, bin ich sicher, dass Rochester Electronics einige haben wird. Ansonsten ist es nicht allzu schwer, sie aus der Vielzahl der verfügbaren Tore zu bauen.