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.
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.
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.
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.
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 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.
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.
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.
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.
Kevin Vermeer
JonnyBoats
darron
JonnyBoats
darron
JonnyBoats
darron
Ellen Spertus