Eine kurze Zusammenfassung des Themas bietet die Einleitung.
Nachschlagen in vier Gliederungsebenen kann man im ausführlichen Inhaltsverzeichnis.
Die wichtigsten Kapitel sind diese:
(als gepacktes TAR-Archiv verfügbar)
Zurück zu Carstens Homepage geht es hier.
Studienarbeit
Entwurf, Realisierung und Dokumentation eines
Chipsatzes für einen Einplatinenrechner mit variabler CPU
Carsten Kelling
Universität Hamburg, Fachbereich Informatik
Arbeitsbereich Technische Grundlagen der Informatik
Vogt-Kölln-Str. 30, D-22527 Hamburg
Email: 1kelling@informatik.uni-hamburg.de
Hamburg, im Februar 1996
Carsten Kelling
Ratiborweg 16
22043 Hamburg
Tel.: 6549 36 61
Fax: 653 22 13
Email: 1kelling@informatik.uni-hamburg.de
Für Alke
Viel übrig bleibt zu tun,
möge nur keiner lässig ruhn!
Goethe
Danksagung
An dieser Stelle möchte ich mich sehr herzlich bei allen bedanken, ohne
deren Unterstützung weder das Hilfs-FPGA noch seine hier vorliegende Dokumentation
hätten zu Ende entwickelt werden können.
Mein besonderer Dank gilt hierbei Norman Hendrich, dem Betreuer dieser Arbeit, für seine Unterstützung und seine stete Bereitschaft, mir Details der Spezifikation zur erklären und Hinweise für deren Umsetzung zu geben.
Ebenso intensiv zu Dank verpflichtet bin ich Bernd Schütz, der viel Zeit in den Aufbau des Mikroprozessorboards investierte und erster Ansprechpartner für technische Fragen war.
Unverzichtbar für das Fortschreiten der Arbeiten war auch Manfred Grove, der die Software zur Steuerung des Hilfs-FPGAs schrieb, wartete und den sich wandelnden Bedürfnissen anpasste.
Den beiden letztgenannten gebührt auch mein Dank für die großartige Unterstützung bei der Suche nach Fehlern im Hilfs-FPGA oder auf dem Mikroprozessorboard per Oszilloskop und Logikanalysator.
Ich danke allen Mitarbeitern des Arbeitsbereiches TECH für ihre Unterstützung,
vor allen Dingen aber für die gemeinschaftliche Weiterentwicklung der Spezifikation
des Hilfs-FPGAs und ihre psychologische Festigung meiner Person durch ihre
kollektive Anwesenheit bei meinen ersten Versuchen mit der Wrap-Pistole.
Ich danke Microsoft für eine heimische, benutzerfreundliche Alternative
zu TEX.
Allen fleißigen Korrekturlesern, als da wären Bernd Schütz, Norman Hendrich,
Alke und die Fehlerkorrektur von MS Word sei ein "Danke schön!"
ausgesprochen; die ersten drei bemängelten dabei nicht nur Rechtschreibfehler,
sondern gaben wichtige Hinweise zu Layout und Lesbarkeit, wissenschaftlichem
Stil und selbstverständlich den harten Fakten des Inhaltes.
Ich danke Alke, meiner steten Ablenkung wie Motivation.
Einleitung
In üblichen Personalcomputern werden aus Platz- und Kostengründen Großteile der neben den ICs mit allseits bekannten Aufgaben (wie CPU, Speicher, I/O) notwendigen Logik in sogenannten Chipsätzen zusammengefaßt, die wenige Bausteine umfassen. Es handelt sich hierbei meist um kundenspezifische Schaltungen, die für eine Vielzahl von Prozessoren mit identischem Pin-Layout nutz- oder anpassbar sind. Die hohe Logikkapazität solcher ICs ermöglicht im Vergleich zu "glue logic" auch die Implementation aufwendiger Verwaltungs- und Überwachungsfertigkeiten.
Am Arbeitsbereich Technische Grundlagen der Informatik wurde im Sommersemester 1995 das Projekt "Entwurf eines Mikrorechners" durchgeführt, dessen Teilnehmer einen Mikroprozessor entwerfen sollten. Als Testumgebung wurde die sogenannte Mikrorechner-Platine spezifiziert und entworfen, bestückt mit Standardkomponenten und ausgerüstet mit einer Kabelverbindung zu einem gewöhnlichen PC. Für einen projektierten Betrieb als Einplatinenrechner enthielt das Board weiterhin ein ASCII-kompatibles LCD-Display mit 20x2 Zeichen Anzeigefläche und 20 einfache Drucktaster. Das Aufbringen eines neuen Prozessor-Designs auf die Platine ist ohne Hardwareaustausch möglich durch die FPGA-Technologie von programmierbaren Logikbausteinen (Altera FLEX8000-Familie, Modell 81500, SRAM-basiert, vor Ort programmierbar, ca. 1200 nutzbare Flipflops).
Für alle Steuerungs- und Überwachungsaufgaben enthält die Mikrorechner-Platine
einen zweiten FPGA-Baustein (Modell 81188, ca. 1000 nutzbare Flipflops),
das sogenannte Hilfs-FPGA, in der Funktion eines Chipsatzes. Es arbeitet
mit verschiedenen, nur im Pin-Layout gleichen, Prozessoren zusammen und
erledigt dabei u.a. folgende Aufgaben:
Die vorliegende Dokumentation beschreibt kurz die gesamte Mikrorechner-Platine
(Kap. 1), danach die Spezifikation des Hilfs-FPGAs in Überblick (Kap. 2.1)
und Detail (Kap. 2.2). Es folgen Informationen zur Realisierung und Erläuterungen
der Quellcodes der Hardwarebeschreibung (Kap. 2.3), anschließend "Sonstiges"
(Kap. 2.4). Die vorletzte Sektion (Kap. 3) hält Schaubilder bereit: Eine
Übersicht der Mikrorechner-Platine, Timing-Diagramme, Blockschaltbilder,
Zeichnungen der verwendeten endlichen Automaten und deren Abhängigkeiten.
Abschließend (Kap. 4) folgen die Quellcodes der Hardwarebeschreibung.
1.2.1 Aufzählung aller Bauteile
1.2.2 Bauteile im Detail
2.2.1 Kommandowörter des Interfaces zwischen PC und Hilfs-FPGA
2.2.2 Kommandos des Interfaces zwischen PC und Hilfs-FPGA
2.2.2.1 Halt
2.2.2.2 Go
2.2.2.3 Single Step
2.2.2.4 Single Instruction
2.2.2.5 Store Address
2.2.2.6 Store Data
2.2.2.7 Write RAM
2.2.2.8 Read RAM
2.2.2.9 Read Register
2.2.2.10 Reset Processor
2.2.2.11 Eval Keys/Don't Eval Keys
2.2.2.12 Config Start
2.2.2.13 Config Data
2.2.2.14 Config End
2.2.2.15 Report Status
2.2.2.16 Abort
2.2.3 Eingänge
2.2.3.1 reset_unsync
2.2.3.2 clk, clk_invers
2.2.3.3 progr_m_status
2.2.3.4 m_astrobe
2.2.3.5 m_reg_ack
2.2.3.6 m_halt_ack
2.2.3.7 progr_conf_done
2.2.3.8 m_obf_unsync
2.2.3.9 ibf_unsync
2.2.3.10 tast_reihe
2.2.3.11 disp_d7_in
2.2.4 Bidirektionale Signale
2.2.4.1 databus(15 downto 0)
2.2.4.2 address(19 downto 0)
2.2.4.3 pc_if_data(7 downto 0)
2.2.4.4 m_oe
2.2.4.5 m_we
2.2.5 Ausgänge
2.2.5.1 m_ack
2.2.5.2 m_stb
2.2.5.3 disp_d(6 downto 0)
2.2.5.4 disp_e
2.2.5.5 disp_rw
2.2.5.6 disp_rs
2.2.5.7 clk1_democom, clk2_democom
2.2.5.8 reset_democom
2.2.5.9 m_highz
2.2.5.10 chipsel_sram, chipsel_pio, chipsel_sio, chipsel_rom
2.2.5.11 progr_m_config
2.2.5.12 progr_dclk
2.2.5.13 progr_data
2.2.5.14 m_reg_req, reg_select(3 downto 0)
2.2.5.15 m_halt
2.2.5.16 tast_spalte(1 to 5)
2.2.5.17 disp_d7_out, disp_d7_oe
2.3.1 Das Top-Level-Design "ctrl_pur.vhd"
2.3.1.1 Das Protokoll für den User Mode des Displays
2.3.1.2 Die Tastatur-Ansteuerung
2.3.1.3 Der Takt für den Mikrorechner: clk1_democom, clk2_democom
2.3.1.4 Die Busfreigabe: m_highz
2.3.1.5 Die Logik mittendrin: a_or_d_changed und pc_if_data
2.3.1.6 Die Synchronisation von Signalen
2.3.1.7 Die Chipselect-Logik
2.3.1.8 Die Multiplexer und Tri-State-Treiber für Adreß- und Datenbus
2.3.1.9 Verwaltung der Ein-/Ausgangspuffer areg_muxout, dreg_muxout
und areg_rollin, dreg_rollin
2.3.1.10 Die RAM-Zugriffsmaschine
2.3.2 Das Interface zum PC "pc_if.vhd"
2.3.2.1 Die diverse Logik
2.3.2.2 Die Puffer für die Automatenzustände: c_state_buffer und c_state2_buffer
2.3.2.3 Das Instruktionsregister i_reg
2.3.2.4 Das Konfigurationsregister konf_reg
2.3.2.5 Das Statusregister status_reg
2.3.2.6 Der Multiplexer an pc_if_data_out
2.3.2.7 Der Multifunktions-Zähler counter
2.3.2.8 Die zwei Automaten
2.3.2.9 Vermeidung von Verklemmungen durch Teilparallelität
2.3.3 Die Ansteuerung des 20x2-Zeichen-Displays "display.vhd"
2.3.3.1 Die Pufferung der Zustände des zweiten Automaten:
c_state2_buffer
2.3.3.2 Die Beschäftigungsanzeige: user_disp_busy
2.3.3.3 Die Daten und Steuersignale für das Display: disp_d, disp_d7_out,
disp_e, disp_rs, disp_rw
2.3.3.4 Die Pufferung von disp_d7: disp_d7_ff
2.3.3.5 Das Einstellen des Betriebsmodus: user_mode_ff
2.3.3.6 Die Pufferung von a_or_d_changed: a_or_d_changed_ff
2.3.3.7 Die darzustellenden Daten: Multiplexer und Wandlung nach ASCII
2.3.3.8 Die zwei Automaten
2.3.4 "A guide to Carsten's VHDL"
2.3.5 Besondere Designentscheidungen im Detail
2.3.5.1 Warum statische RAM-Bausteine (SRAMs)?
2.3.5.2 Taktung der Prozesse - Fehlervermeidung
2.3.5.3 Momentane und maximale Taktfrequenz
2.4.1 Anmerkung zur Notation
2.4.2 Altera FLEX8000-Bausteinfamilie
2.4.3 Die Problematik VHDL <-> AHDL
2.4.4 Beliebte Fehler - Hinweise für zukünftige Entwürfe
2.4.5 Unerfüllte Wünsche
3.1.1 Blockschaltbild MPB
3.1.2 Detailansicht MPB
3.2.1 Speicher lesen
3.2.2 Speicher schreiben
3.3.1 Blockschaltbild Hilfs-FPGA
3.3.2 Blockschaltbild PC-Interface
3.3.3 Blockschaltbild Display-Steuerung
3.4.1 Automaten im PC-Interface
3.4.1.1 Erster Automat
3.4.1.2 Zweiter Automat
3.4.2 Automaten zur Ansteuerung von Display und Speicher
3.5.1 Automaten im PC-Interface
3.5.1.1 Erster Automat
3.5.1.2 Zweiter Automat
3.5.2 Automaten zur Ansteuerung von Display und Speicher
(als gepacktes TAR-Archiv verfügbar)
FPGA: field programmable gate array, eine Technik für programmierbare Logikbausteine. Diese haben geringe Kapazität (höchstens einige hundert Flipflops) und Geschwindigkeit, sind aber dennoch für Testaufbauten und Prototypen sehr beliebt, da sie direkt in der Entwicklungsstätte programmiert werden; bei EPROM-ähnlichen Techniken ist dies mittels eines Programmieradapters einige hundert Male, bei SRAM-Basierung beliebig oft in situ möglich.
(Benutzen Sie den "Back"-Pfeil Ihres Web-Browsers, um zurückzuspringen.)