Lade Inhalt...

VHDL-Entwicklung eines proprietären und parametrisierbaren "System on a Chip"

©2001 Diplomarbeit 207 Seiten

Zusammenfassung

Inhaltsangabe:Einleitung:
Die Entwicklung von mikroelektronischen Schaltungen hat sich in den letzten Jahren rasant verändert, wobei die Entwurfskomplexität stark anstieg und sich die Entwicklungszeiten (Time to market) reduzierten. Ermöglicht wird dieses durch den Einsatz von Hardwarebeschreibungssprachen (z.B. VHDL, Verilog etc.), die es erlauben, eine Verifikation zu simulieren und auch zu synthetisieren.
Realisiert wird dies alles durch den Einsatz von CAE-Werkzeugen, welche z.B. von vielen FGPA oder CPLD Anbietern günstig oder gar umsonst angeboten werden. Ähnlich wie bei der Softwareentwicklung wird der gesamte Entwurf einer größeren Digitalschaltung in einzelne Funktionseinheiten zerteilt, die untereinander über festgelegte Schnittstellen kommunizieren (in VHDL sog. Entities). Viele dieser Funktionseinheiten können ganz universell (reusable) erstellt werden und somit durch Parametrisierung (z.B. BUS-Breite) in unterschiedliche Projekte einfließen.
Es gibt viele Firmen, die sich auf die Erstellung dieser Funktionseinheiten sog. IP-Cores spezialisiert haben. Bei der Strukturverkleinerung ist gerade die 0,13-µm- Prozesstechnik aktuell und ein Ende ist nicht abzusehen. Ermöglicht wird dies durch den Einsatz neuer Werkstoffe. Im Bereich der PLDs gibt es viele interessante Entwicklungen, so besitzen z.B. einige FPGAs einen kleinen Mikrocontroller, der zur Laufzeit Teile der Logik den neuen Erfordernissen anpasst. Die Möglichkeit der dynamischen Rekonfigurierbarkeit stellt eingroßes Potential für die Zukunft da.
Durch das Zusammenspiel dieser Entwicklungen können immer mehr Funktionen auf einem IC abgebildet werden. Komplette Systeme (z.B. für Settop-Boxen) werden auf einem Chip realisiert, man spricht in diesem Fall von einem „System-on-a-Chip (SoC)“. Jeder namhafte Hersteller bietet Produkte aus diesem Marktsegment an. Die Entwicklung eines SoC von der Spezifikation über die Implementation bis hin zur Inbetriebnahme auf einem DIGILAB 1Kx208 ist Thema dieser Diplomarbeit.
Gang der Untersuchung:
Im zweiten Kapitel folgt eine Einführung in die PLDs am Beispiel des verwendeten FPGAs aus der Altera „ACEX“ Familie. Das dritte Kapitel gibt einen kurzen Einblick in eine Auswahl von HW Beschreibungssprachen.
Anschließend geht es weiter mit „Synthese und Optimierung“, welche anhand eines kleinen Beispieles behandelt werden. Die Spezifikation des SoC stand am Anfang der Diplomarbeit und war die Grundlage, nach der die einzelnen Module des […]

Leseprobe

Inhaltsverzeichnis


ID 8167
Zühlke, Bastian: VHDL-Entwicklung eines proprietären und parametrisierbaren
"System on a Chip"
Hamburg: Diplomica GmbH, 2004
Zugl.: Fachhochschule Wedel, Diplomarbeit, 2001
Dieses Werk ist urheberrechtlich geschützt. Die dadurch begründeten Rechte, insbesondere die
der Übersetzung, des Nachdrucks, des Vortrags, der Entnahme von Abbildungen und Tabellen,
der Funksendung, der Mikroverfilmung oder der Vervielfältigung auf anderen Wegen und der
Speicherung in Datenverarbeitungsanlagen, bleiben, auch bei nur auszugsweiser Verwertung,
vorbehalten. Eine Vervielfältigung dieses Werkes oder von Teilen dieses Werkes ist auch im
Einzelfall nur in den Grenzen der gesetzlichen Bestimmungen des Urheberrechtsgesetzes der
Bundesrepublik Deutschland in der jeweils geltenden Fassung zulässig. Sie ist grundsätzlich
vergütungspflichtig. Zuwiderhandlungen unterliegen den Strafbestimmungen des
Urheberrechtes.
Die Wiedergabe von Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. in diesem
Werk berechtigt auch ohne besondere Kennzeichnung nicht zu der Annahme, dass solche
Namen im Sinne der Warenzeichen- und Markenschutz-Gesetzgebung als frei zu betrachten
wären und daher von jedermann benutzt werden dürften.
Die Informationen in diesem Werk wurden mit Sorgfalt erarbeitet. Dennoch können Fehler nicht
vollständig ausgeschlossen werden, und die Diplomarbeiten Agentur, die Autoren oder
Übersetzer übernehmen keine juristische Verantwortung oder irgendeine Haftung für evtl.
verbliebene fehlerhafte Angaben und deren Folgen.
Diplomica GmbH
http://www.diplom.de, Hamburg 2004
Printed in Germany

II
Inhaltsverzeichnis
Inhaltsverzeichnis ... I
Vorwort...X
Danksagungen ...XI
Anmerkung ...XI
1. Einleitung...1
1.1. Aufbau der Diplomarbeit... 2
2. Programmable Logic Devices (PLDs) ...3
2.1. Complex Programmable Logic Device (CPLD) ... 4
2.2. Field Programmable Gate Arrays (FPGA) ... 5
2.2.1. Beispiel: Acex
TM
EP1K100C208-1 ... 6
3. HW-Beschreibungssprachen (HDLs) ...8
3.1. VHDL... 9
3.2. SystemC ... 12
4. Synthese und Optimierung ...15
4.1. Syntheseregeln für getaktete Prozesse ... 16
4.2. Syntheseregeln für komb. Logik und ungetaktete Prozesse ... 16
4.3. Technologieabhängige Synthese ... 17
4.4. Synthese: ein praktisches Beispiel ... 18
4.5. Fazit ... 20

Inhaltsverzeichnis
III
5. System on a Chip (SoC) ­ Spezifikation...21
5.1. Ziele des Soc... 21
5.2. CPU... 23
5.3. GPU... 23
5.4. I/O ... 23
5.4.1. UART... 24
5.4.2. TIMER ... 24
5.4.3. LEDS/7-Segment-Anzeige ... 24
5.4.4. Buttons ... 24
5.5. DMA ... 25
5.6. SELECTOR ... 25
5.7. Externes RAM... 25
5.8. Internes RAM/ROM... 25
6. Reduce Instruction Set Computer (RISC) ...26
6.1. Generelle Unterschiede der Architekturen ... 27
6.1.1. 2/3 Operanden-Maschine ... 27
6.1.2. Überlappende Registerfenster... 27
6.1.3. Besonderheit des Register R0... 27
6.1.4. Besonderheit des Link-Registers... 28
6.2. Instruktionen ... 28
6.3. Load / Store Befehle... 31
6.4. Fazit: ... 31
7. Projekt Konfiguration...32
7.1. Projekthierarchie... 32
7.2. MAX+PLUS II ­ Settings... 33
7.2.1. Assign ­ Device ... 33
7.2.2. Assign ­ Global Project Logic Synthesis... 33
7.2.3. Processing ­ Fitter Settings... 34
7.2.4. Assign ­ PIN/Location/Chip... 35
7.3. Package Konfiguration ... 36
7.3.1. Konstanten... 36
7.3.1.1. Herstellerspezifisch ... 36
7.3.1.2. Global ... 36
7.3.1.3. RS232 ... 37
7.3.1.4. IRAM ... 37
7.3.1.5. IRAM ... 38
7.3.1.6. DMA ... 38
7.3.2. Subtypen ... 38

Inhaltsverzeichnis
IV
8. System on a Chip - Hardware Manual ...39
8.1. Port Signale... 41
8.2. Interne Signale (Auswahl)... 42
8.3. CPU (cu.vhd,) ... 42
8.4. DMA / Direct Memory Access (dma.vhd)... 43
8.5. RAM / External Random Access Memory Controller (ram.vhd) ... 43
8.6. GPU / Graphic Process Unit (gpu.vhd)... 43
8.7. IO / Input - Output Control Unit (io.vhd) ... 43
8.8. IRAM / Internal Random Access Memory Controller (iram.vhd) ... 44
8.9. RESET_CALC ... 44
8.10. SELECTOR ... 44
8.11. CPU/CU... 45
8.11.1. Port Signale ... 47
8.11.2. Interne Signale (Auswahl) ... 48
8.11.3. ALU / Arithmetic and Logic Unit (alu.vhd) ... 50
8.11.4. IR / Interrupt Control Unit (ir.vhd)... 50
8.11.5. PC / Program Counter (pc.vhd) ... 50
8.11.6. Regfield (regfield.vhd) ... 50
8.11.7. TBIT_CALC ... 51
8.11.8. IMM_CALC ... 51
8.11.9. OP_CALC ... 51
8.11.10. STATE_CALC... 52
8.11.11. FSM... 53
8.11.12. Befehle ... 58
8.11.12.1. Befehls-Aufbau ... 58
8.11.12.2. Befehls-Gruppen ... 59
8.11.12.2.1. LS/IO-Befehle ... 59
8.11.12.2.2. Immediate-Befehle... 60
8.11.12.2.3. ALU-Befehle ... 61
8.11.12.2.4. Vergleichsbefehle ... 62
8.11.12.2.5. Absolute Sprünge... 63
8.11.12.2.6. Relative un- und bedingte Sprünge ... 64
8.11.13. Arithmetic and Logic Unit / ALU ... 65
8.11.13.1. Ports ... 67
8.11.13.2. Carry Berechnung (CFLAG_O1)... 67
8.11.13.3. Overflow Berechnung (CFLAG_O2) ... 67
8.11.13.4. ADD/ADC... 68
8.11.13.5. EXTUB/EXTSB ... 68
8.11.13.6. EXTUW/EXTSW ... 68
8.11.13.7. Schiebebefehle ... 68
8.11.13.8. SLR/SAR ... 68

Inhaltsverzeichnis
V
8.11.14. Program Counter / PC... 69
8.11.14.1. Ports ... 69
8.11.14.2. Interne Signale... 70
8.11.14.3. Ablauf ... 70
8.11.15. Interrupt Control Unit / IR... 71
8.11.15.1. Ports ... 72
8.11.15.2. Interne Signale... 72
8.11.15.3. ADR_CALC... 72
8.11.15.4. CLEAR_CALC ... 72
8.11.16. Register Field Controller / REGFIELD... 73
8.11.16.1. Ports ... 73
8.11.16.2. Konfiguration von lpm_ram_dp_xx ... 74
8.11.17. Register / REG ... 75
8.11.17.1. Ports ... 75
8.11.18. Stack Register / SREG... 76
8.11.18.1. Ports ... 76
8.12. Graphic Process Unit / GPU ... 77
8.12.1. Ports ... 78
8.12.2. Interne Signale... 79
8.12.3. RAM_FSM ... 80
8.12.4. Port Control Process (PCP)... 82
8.12.5. MAIN ... 83
8.12.6. NLA: VGA_DATA <= COL and COUNT_H(0) and CLK and HP and VP... 85
8.13. Input-Output Control Unit / I/O... 86
8.13.1. Ports ... 87
8.13.2. Interne Signale... 88
8.13.3. SEG_CNTRL ... 88
8.13.4. MAIN_CALC ... 89
8.13.4.1. Port Control Unit / PCU ... 89
8.13.4.2. TIMER-IR Erzeugung und Verwaltung... 90
8.13.4.3. SERIAL-READ-IR-Verwaltung:... 90
8.13.4.4. SERIAL-WRITE-IR-Verwaltung: ... 90
8.13.4.5. CLK2-Erzeugung:... 90

Inhaltsverzeichnis
VI
8.13.5. Universal Asynchron Receive Transmit Unit / UART ... 91
8.13.5.1. Ports ... 92
8.13.5.2. RXCVER... 93
8.13.5.2.1. Ports... 94
8.13.5.2.2. Interne Signale... 94
8.13.5.2.3. FSM... 95
8.13.5.2.4. CLK2_CALC ... 96
8.13.5.2.5. Filter ... 97
8.13.5.3. TXMIT... 98
8.13.5.3.1. Ports... 98
8.13.5.3.2. Interne Signale... 99
8.13.5.3.3. FSM... 99
8.13.5.3.4. NLA:
READY OR DAT(0)
...100
8.13.5.3.5. Simulationsergebnis...100
8.14. Internal Random Access Memory Controller/ IRAM ...101
8.14.1. Ports ...102
8.14.2. Interne Signale...102
8.14.3. Konfiguration von lpm_ram_dq...103
8.14.4. Genereller Ablauf eines Speicherzugriffs...104
8.14.5. TIR_CALC ...105
8.14.6. WE_CALC ...106
8.14.7. TDAT_I_CALC ...106
8.14.8. DAT_O_CALC ...107
8.14.9. Simulationsergebnis...108
8.15. External Random Access Memory Controller / RAM ...109
8.15.1. Signale...110
8.15.2. Interne Signale...111
8.15.3. TIR_CALC ...111
8.15.4. DAT_IO_CALC ...111
8.15.5. FSM...112
8.15.6. Information über das SRAM TC55V16255J von Toshiba ...114
8.15.7. Simulationsergebnis...116
8.16. DMA ...117
8.16.1. Ports ...118
8.16.2. Interne Signale...119
8.16.3. FSM...119
8.16.4. STATE_CALC...120

Inhaltsverzeichnis
VII
9. System on a Chip - Software Manual...121
9.1. CPU...121
9.1.1. Memory Data Formats...121
9.1.2. General Registers ...121
9.1.3. Control Registers ...122
9.1.3.1. TBIT ...122
9.1.3.2. SBIT (SUPER) ...122
9.1.3.3. IMASK ...122
9.1.4. System Registers...122
9.1.4.1. PC ...122
9.1.5. Exceptions (Interrupts) ...123
9.1.5.1. Exception Typen und Prioritäten...123
9.1.5.2. Ablauf der IR-Verarbeitung...124
9.1.6. Befehlserklärung ...125
9.1.6.1. ADD (ADD, Arithmetic Instruction)...127
9.1.6.2. ADC (Add with Carry, Arithmetic Instruction) ...127
9.1.6.3. ADDI (ADD Immediate, Arithmetic Instruction)...128
9.1.6.4. AND (AND, Logic Instruction)...129
9.1.6.5. BF (Branch If False, Branch Instruction) ...129
9.1.6.6. BR (Branch, Branch Instruction) ...130
9.1.6.7. BSR (Branch to Subroutine, Branch Instruction) ...131
9.1.6.8. BT (Branch if True, Branch Instruction)...131
9.1.6.9. EXTSB (Extend signed Byte to signed Long, Conv. Instruction)...132
9.1.6.10. EXTSW (Extend signed Word to signed Long, Conv. Instruction) ...133
9.1.6.11. EXTUB (Extend unsigned Byte to unsigned Long, Conv. Instruction)...134
9.1.6.12. EXTUW (Extend unsigned Word to unsigned Long, Conv. Instruction)...135
9.1.6.13. IN (In Data from Port, Port Instruction)...135
9.1.6.14. JMP (Jump, Branch Instruction) ...136
9.1.6.15. JSR (Jump, Branch Instruction)...136
9.1.6.16. LDB (Load Byte, L&S Instruction) ...137
9.1.6.17. LDL (Load Long, L&S Instruction)...137
9.1.6.18. LDW (Load Word, L&S Instruction)...138
9.1.6.19. MOV (Move, Transfer Instruction)...138
9.1.6.20. MOVA (Move Effective Adress, Transfer Instruction) ...139
9.1.6.21. MOVI (Move Immediate, Transfer Instruction) ...140
9.1.6.22. NOT (Not ­ Logical Complement, Logic Instruktion) ...141
9.1.6.23. RTE (Return from Exception, Branch Instruction) ...141
9.1.6.24. SAR (Shift Arithmetic Right, Shift Instruction) ...142
9.1.6.25. SIRM (Set Interrupt Mask, System Instruction) ...143

Inhaltsverzeichnis
VIII
9.1.6.26. SLL (Shift Logical Left, Shift Instruction) ...143
9.1.6.27. SLR (Shift Logical Right, Shift Instruction) ...144
9.1.6.28. STB (Store Byte, L&S Instruction) ...145
9.1.6.29. STL (Store Long, L&S Instruction) ...145
9.1.6.30. STW (Store Word, L&S Instruction) ...146
9.1.6.31. SUB (Subtract, Arithmetic Instruction) ...146
9.1.6.32. SUBI (Subtract Immediate, Arithmetic Instruction) ...147
9.1.6.33. TEQ (Test if Equal, Compare Instruction) ...148
9.1.6.34. THI (Test if (unsigned) Higher, Compare Instruction) ...148
9.1.6.35. THS (Test if (unsigned) Higher or Same, Compare Instruction)...149
9.1.6.36. TGE (Test if (signed) Greater or Equal, Compare Instruction)...150
9.1.6.37. TGT (Test if (signed) Greater, Compare Instruction) ...150
9.1.6.38. TRAP (Trap, System Instruction) ...151
9.1.6.39. OR (OR , Logic Instruction) ...152
9.1.6.40. OUT (Out Data to Port, Port Instruction) ...152
9.1.6.41. XOR (Exclusive OR, Logic Instruction) ...153
9.1.7. Assembler Direktiven ...154
9.1.7.1. Program Pointer (PP)...154
9.1.7.2. Alignment...154
9.1.7.3. Daten Deklarationen ...154
9.1.7.4. Speicherbereich Deklarationen...154
9.2. I/O ...155
9.2.1. Ports ...155
9.2.2. Interrupts ...155
9.2.3. 7-SEG...157
9.2.4. Buttons ...158
9.2.5. UART...158
9.2.6. Timer ...160
9.2.7. LEDS ...160
9.3. GPU...161
9.3.1. Exceptions ...162
9.3.2. Konfiguration: Sync-Signale ...163
9.3.3. Konfiguration: Bildbereich...164
9.3.4. Konfiguration: Auflösung ...165
9.3.5. Konfiguration: Framebufferadresse...167
9.3.6. Konfiguration: Zeileninkrement ...168

Inhaltsverzeichnis
IX
10. Zusammenfassung...169
10.1. Probleme ...170
10.1.1. Zu lange Signalwege vom RAM zur CPU/GPU ...170
10.1.2. MAX+Plus II ...170
10.1.3. Testboard...171
10.2. Ausblicke...171
10.2.1. DMA ...171
10.2.2. CPU...172
10.2.2.1. Pipelining ...172
10.2.3. GPU / 6Bit-RGB ...173
10.2.4. Software...173
10.2.4.1. C- Compiler...173
10.2.4.2. Konfigurationstool ...173
I. Synthese - Ergebnisse...XI
II. Assembler... XIV
III. Beispiele: ... XVI
IV. Emulator ... XVII
V. PC<->SoC Datenaustausch... XIX
VI. Software ... XXI
VII. Glossar ... XXII
VIII. Literaturverzeichnis...XXV
IX. Internetquellen ...XXVI
X. Abbildungsverzeichnis...XXVII
XI. Blockdiagrammverzeichnis ...XXVIII
XII. FSM-Diagramm-Verzeichnis...XXIX
XIII. Waveform-Verzeichnis ...XXIX
XIV. Tabellenverzeichnis ...XXX
XV. Eidesstattliche Erklärung ...XXXII

Vorwort
X
Vorwort
Seit ich Ende 1998 zum erstenmal Kontakt mit dem "Education Board"
1
von Altera und der
HW-Beschreibungssprache VHDL hatte, wollte ich ein kleines Rechnersystem erstellen.
Mein Ziel war es ein komplettes System nicht nur auf dem Papier oder im Simulator zu
entwickeln, sondern eines, das real existiert und von Dritten benutzt und erweitert werden
kann.
Durch einen Zufall bekam ich die Chance meinen Wunsch zu verwirklichen, somit konnte
ich viele meiner Ideen realisieren.
Die Aufgaben der Diplomarbeit waren sehr vielfältig vom Programmieren über das
Spezifizieren bis hin zum Löten war alles vorhanden.
Nach diesen Erfahrungen habe ich für mich persönlich entschieden, im Bereich der
Chipentwicklung weiterzuarbeiten.
1
Diese Board hatte die FH-Wedel, im Rahmen eines Universitäts-Programms, von Altera bekommen. Es
war mit einem FPGA aus der FLEX-Familie und einem CLPD aus der MAX-Familie bestückt.

Danksagungen
XI
Danksagungen
Ich möchte mich bei Herrn Poock-Haffmans für den großen Spielraum, den ich bei der
Gestaltung meiner Diplomarbeit bekommen habe, bedanken.
Ein großes Dankeschön geht ebenso an Sven Rösecke, der mich in den letzten Wochen
der schriftlichen Ausarbeitung tatkräftig unterstützt hat. Ich freue mich schon auf unsere
weitere gemeinsame Zusammenarbeit.
Ich bedanke mich zudem bei Tim Böscke für die vielen interessanten Gespräche rund ums
Thema Prozessoren, weiterhin viel Erfolg in Kanada.
Meine letzte persönliche Danksagung gilt meiner Freundin Hanna, nicht nur für ihr
Verständnis und ihre Geduld, während der Diplomarbeit. Sie hat einige Kapitel Korrektur
gelesen und sprachlich aufgewertet.
Anmerkung
Aufgrund des großen Themen-Spektrums dieser Diplomarbeit, können viele Einzel-heiten
leider aus Zeit- und Platzgründen nicht bis ins Detail beschrieben werden. Dies bedeutet,
dass ein breitgestreutes Wissen - in den Kernbereichen: VHDL, RISC-Entwicklung,
Digitale-HW-Entwicklung, Programmierung, serielle RS232-Datenüber-tragung, CRT-
Syncsignale und SRAM-Ansteuerung - zum Verständnis benötigt wird.

Einleitung
1
1. Einleitung
Die Entwicklung von mikroelektronischen Schaltungen hat sich in den letzten Jahren
rasant verändert, wobei die Entwurfskomplexität stark anstieg und sich die Entwick-
lungszeiten (Time to market) reduzierten. Ermöglicht wird dieses durch den Einsatz von
Hardwarebeschreibungssprachen (z.B. VHDL, Verilog etc.), die es erlauben eine
Verifikation zu simulieren und auch zu synthetisieren. Realisiert wird dies alles durch den
Einsatz von CAE-Werkzeugen welche z.B. von vielen FGPA oder CPLD Anbietern günstig
oder gar umsonst angeboten werden.
Ähnlich wie bei der Softwareentwicklung wird der gesamte Entwurf einer größeren
Digitalschaltung in einzelne Funktionseinheiten zerteilt, die untereinander über festgelegte
Schnittstellen kommunizieren (in VHDL sog. Entities). Viele dieser Funktionseinheiten
können ganz universell (reusable) erstellt werden und somit durch Parametrisierung (z.B.
BUS-Breite) in unterschiedliche Projekte einfließen. Es gibt viele Firmen die sich auf die
Erstellung dieser Funktionseinheiten sog. IP-Cores spezialisiert haben.
Bei der Strukturverkleinerung ist gerade die 0,13-µm- Prozesstechnik aktuell und ein Ende
ist nicht abzusehen. Ermöglicht wird dies durch den Einsatz neuer Werkstoffe.
Im Bereich der PLDs gibt es viele interessante Entwicklungen, so besitzen z.B. einige
FPGAs einen kleinen Mikrocontroller, der zur Laufzeit Teile der Logik den neuen
Erfordernissen anpasst. Die Möglichkeit der dynamischen Rekonfigurierbarkeit stellt ein
großes Potential für die Zukunft da.
Durch das Zusammenspiel dieser Entwicklungen können immer mehr Funktionen auf
einem IC abgebildet werden. Komplette Systeme (z.B. für Settop-Boxen) werden auf
einem Chip realisiert, man spricht in diesem Fall von einem "System-on-a-Chip (SoC)".
Jeder namhafte Hersteller bietet Produkte aus diesem Marktsegment an.
Die Entwicklung eines SoC von der Spezifikation über die Implementation bis hin zur
Inbetriebnahme auf einem DIGILAB 1Kx208 ist Thema dieser "Diplomarbeit".

Einleitung
2
1.1. Aufbau der Diplomarbeit
Im nachfolgenden Kapitel folgt eine Einführung in die PLDs am Beispiel des verwendeten
FPGAs aus der Altera "ACEX" Familie.
Das dritte Kapitel gibt einen kurzen Einblick in eine Auswahl von HW Beschreibungs-
sprachen.
Anschließend geht es weiter mit "Synthese und Optimierung", welche anhand eines
kleinen Beispieles behandelt werden.
Die Spezifikation des SoC stand am Anfang der Diplomarbeit und war die Grundlage nach
der die einzelnen Module des Gesamtsystems entwickelt wurden. Kapitel 5 be-schreibt
den Aufbau des SoC und welche Ziele verfolgt wurden.
Das Thema RISC wird, anhand eines Vergleichs, im Kapitel 6 behandelt.
Kapitel 7 beschäftigt sich mit dem Aufbau und der Konfiguration des Gesamtprojekts.
Dieses Kapitel sollte vor dem HW-Manual gelesen werden, weil dort die wichtigsten
Konstanten etc. beschrieben werden. Des weiteren werden dort wichtige Informa-tionen
gegeben, falls das Projekt auf andere Bausteine (als von Altera) portiert werden soll.
Im HW-Manual werden alle entwickelten Module mit Hilfe von Blockschaltbildern, Wave-
und FSM-Diagrammen beschrieben.
Das Gesamtsystem bietet viel Potential zur Verwirklichung von Softwareideen. Kapitel 9
gibt alle notwendigen Informationen um die Leistung voll auszuschöpfen.
Mit einer Zusammenfassung, dem Anhang und einem Glossar endet dann dieses
Dokument.

Programmable Logic Devices (PLDs)
3
2. Programmable Logic Devices (PLDs)
In den letzten Jahren gab es eine kleine Revolution im Bereich der "PLDs". Durch die
drastische Strukturverkleinerung können immer mehr Logikelemente auf einem Chip
untergebracht werden. Und dieser Trend setzt sich fort und bietet für den Hardware-
entwickler ein enormes Potential, denn nun passen ganze Prozessoren samt Peri-pherie
in einen programmierbaren Baustein. In vielen Fällen kann auch ganz auf den Prozessor
verzichtet werden und es entsteht dadurch ein reines Hardware Design.
Viele Hersteller bieten in ihren FPGAs und CPLDs die Möglichkeit an, bestimmte Zellen
als RAM- oder ROM-Komponenten (z.B. On-Chip-RAM) zu benutzen. Da-neben werden
Multiplizierer und andere arithmetische Funktionen mit auf dem Chip integriert. Diese
Spezial-Funktionen haben den Vorteil, dass sie meistens schneller arbeiten als die
programmierten Lösungen, und weil sie fest integriert keine program-mierbaren
Ressourcen verbrauchen. Daneben beschleunigen diese Komponenten die Entwicklung
digitaler Schaltungen, was die Anzahl der potentiellen Einsatz-gebiete stark erhöht.
Es darf davon ausgegangen werden, dass die PLDs eine ernsthafte Konkurrenz ge-
genüber der ASIC
2
-Entwicklung sind. Im Rahmen dieser Diplomarbeit werden zwei
Vertreter der großen Gruppe von PLDs vorgestellt.
2
ASIC: Application Specific Integrated Circuit

Programmable Logic Devices (PLDs)
4
2.1. Complex Programmable Logic Device (CPLD)
Macrocell
Macrocell
Macrocell
Macrocell
Switch
Matrix
Abbildung 2-1 : CPLD - Grundstruktur
Die Makrozellen werden in einem
Complex Programmable Logic Device über die
konfigurierbare Switch-Matrix miteinander verbunden. Eine Makrozelle umfasst eine
Vielzahl von kombinatorischen Logiken (AND, NAND und OR) und FlipFlops. Makro-zellen
können so programmiert werden, dass diese unterschiedlich komplexe Logiken
abarbeiten.
Im Gegensatz zu den FPGAs sind die Durchlaufzeiten durch eine Makrozelle konstant und
in den meisten Fällen auch schneller. Deshalb werden diese Bausteine besonders für
High-Performance Applikationen eingesetzt.

Programmable Logic Devices (PLDs)
5
2.2. Field Programmable Gate Arrays (FPGA)
Field Programmable Gate Arrays können für alle Arten von Hardwareentwicklung
eingesetzt werden. Oft werden FPGAs zum Prototyping benutzt, also für ein Design was
später mal als ASIC realisiert werden soll. Abbildung 2-1 stellt eine typische FPGA-
Struktur dar, die aus drei Grundstrukturen besteht.
IOE
LE
IOE
IOE
IOE
IOE
IOE
IOE
IOE
IOE
IOE
IOE
IOE
IOE
IOE
IOE
IOE
LE
LE
LE
LE
LE
LE
LE
LE
Programmable Interconnect
I/O Element
Logic Element
Abbildung 2-1 : FPGA - Grundstruktur
In den "Logic Elements" (LEs) wird die gewünschte Logik abgebildet. Jeder der "I/O
Elements" (IOE) stellt die Funktion eines Input, Output oder Bidirektionalen Zugriffes zur
Verfügung. Dabei können die Signale von den internen LEs verarbeitet oder bereitgestellt
werden. Die "programmable Interconnect" Leitungen können so konfi-guriert werden, dass
definierte Ein- und Ausgänge der LEs und IOEs miteinander verknüpft werden. Ein "Logic
Element" besteht meist aus 4 Eingängen die beliebig logisch verknüpft werden und ein
FlipFlop. Das Hintereinanderschalten vieler dieser einfachen Elemente ermöglicht die
Realisierung komplexer digitaler Schaltungen.

Programmable Logic Devices (PLDs)
6
2.2.1. Beispiel: Acex
TM
EP1K100C208-1
3
Dieser FPGA-Typ befindet sich auf dem DIGILAB 1Kx208 und wird kurz vorgestellt.
Features
Typical Gates
100.000
Maximum Sytem Gates
257.000
Logic Elements (LEs)
4.992
EABs
12
Total RAM bits
49.152
I/O-Pins
147
Tabelle 2-1 : EP1K100208-1 - Features
Abbildung 2-1 : ACEX Grundstruktur
Die EABs können über Makrofunktionen angesprochen werden und bieten z.B. RAM/ROM
Funktionalitäten an.
3
Quelle: http://www.altera.com

Programmable Logic Devices (PLDs)
7
Abbildung 2-2 : ACEX Logik Element
Jedes dieser "Logic Elements" besitzt eine LUT mit vier Eingängen. Damit lässt sich jede
mögliche Funktion für 4 Werte generieren. Daneben beinhaltet jedes Element ein FlipFlop
welches als D, T, JK oder SR programmiert werden kann. Das Ergebnis aus der LUT kann
über spezielle Carry- und Cascade-Chains zum nächsten LE weitergereicht werden. Damit
lassen sich schnelle arithmetische Operationen realisieren. Da die beiden Ausgänge von
der LUT und dem FlipFlop unabhängig voneinander bedient werden können, kann ein
Element eine rein kombinatorische Aufgabe erfüllen und gleichzeitig als Register
verwendet werden. Diese Möglichkeit wird als "Register Packing" bezeichnet.

HW-Beschreibungssprachen (HDLs)
8
3. HW-Beschreibungssprachen (HDLs)
Es gibt eine Vielzahl von HDLs, und alle hier aufzuzählen und vollständig vorzu-stellen
würde den Rahmen sprengen. Deshalb werden nur Teilausschnitte einer Sprache
behandelt.
VHDL gehört zu den ältesten und etabliertesten HW-Beschreibungssprachen, während
SystemC eine recht neue Entwicklung ist. Da SystemC interessante Ansätze bietet und
außerdem von fast allen Herstellern unterstützt wird oder die Unterstützung angekündigt
ist, lohnt sich eine genauere Betrachtung.
Die beiden Sprachen werden anhand eines identischen Beispiels vorgestellt.
Dabei handelt es sich um die Realisierung eines "
Program Counters" (PC). Im Beispiel
kann der PC zurückgesetzt (synchroner reset), gesetzt (we) und inkrementiert (inc)
werden. Wobei die Daten zum setzten gleichzeitig zum inkrementieren genutzt werden.
Verwendete Signale:
- 1 Clock
(CLK)
- 3 Steuersignale
(RESET, WE, INC)
- 1 Input von Daten
(DAT_I)
- 1 Output von Daten
(DAT_O)

HW-Beschreibungssprachen (HDLs)
9
3.1. VHDL
Name:
Very High Speed Integrated Circuit
Hardware
Description Language
Start der Entwicklung:
Anfang der achtziger Jahre.
Aktuell zuständig:
Accellera
Aktuelle Version(en):
IEEE 1076-1993 (VHDL´93)
Bezugsmöglichkeit:
Diverse Hersteller
Anmerkung:
VHDL ist eine "strongly typed language". Daraus resultiert ein
teilweise aufgeblähter Code.
Beispiel:
File: pc.vhd
entity PC is
port(
CLK
: in std_logic;
RESET: in std_logic;
WE
: in std_logic;
INC
: in std_logic;
DAT_I : in std_logic_vector(31 downto 0);
DAT_O : out std_logic_vector(31 downto 0);
);
end PC;
architecture A_PC of PC is
signal DAT : std_logic_vector(31 downto 0);
begin
DAT_O <=
DAT;
process (CLK)
begin
if CLK='1' and CLK'event then
if RESET='1' then
DAT <= (others=>'0');
elsif WE='1' then
DAT <= DAT_I;
elsif INC='1' then
DAT <= DAT + DAT_I;
end if;
end if;
end process;
end A_ PC;
Tabelle 3-1 : Beispiel eines Program Counter in VHDL

HW-Beschreibungssprachen (HDLs)
10
PC
DAT_I[31 downto 0]
CLK
DAT_O[31 downto 0]
RESET
WE
INC
Blockdiagramm 3-1 : Beispiel einer entity
Die
entity definiert die Schnittstellen eines VHDL-Funktionsblocks nach außen, ver-
gleichbar mit den Anschlüssen eines IC-Gehäuses. Diese Anschlüsse werden als
port-
Signale bezeichnet und durch die port-Anweisung deklariert.
DAT_I[31 downto 0]
CLK
DAT_O[31 downto 0]
RESET
WE
INC
FF
DAT
MUX
+
MUX
MUX
const
"00."
'1'
'0'
'1'
'0'
'1'
'0'
Blockdiagramm 3-2 : Beispiel einer Architecture
Die Funktionalität wird durch die
architecture beschrieben, zu einer entity gehört
mindestens eine. Die
architecture beschreibt sozusagen das Innenleben eines IC.
Die
port-Signale werden benötigt um verschiedene VHDL-Funktionsblöcke miteinander
zu verbinden.

HW-Beschreibungssprachen (HDLs)
11
Im Beispiel werden die Signale
RESET, WE, INC
und
DAT_I
als Eingangssignale und
DAT_O
als Ausgangssignal definiert. Eingangssignale dürfen nur gelesen und
Ausgangssignale nur beschrieben werden.
Zum Inkrementieren müsste aber der aktuelle Wert in
DAT_O
gelesen werden, da dieses
nicht möglich ist wird das interne Signal
DAT
deklariert, das gelesen und das beschrieben
werden darf.
Mit der Anweisung
DAT_O <= DAT
wird DAT dem Signal
DAT_O
zugewiesen, dabei
handelt es sich um eine nebenläufige Anweisung die parallel ausgeführt wird.
Daneben bietet VHDL
process als weiteres Strukturelement an. Dem Prozess kann eine
Empfindlichkeitsliste ("sensitivity List") übergeben werden (im Beispiel:
CLK
), dabei
handelt es sich um eine beliebige Anzahl von Signalen. Wenn sich eines dieser Signale
verändert, wird der Prozess neu angestoßen.
Die Anweisung
if CLK='1' and CLK'event then
ist ein Warten auf die nächste stei-gende
Taktflanke. Das Signalattribut
'event
gibt bei einem beliebigen Signalwechsel
TRUE
zurück. Man spricht bei dieser Art von Prozess auch von einem "getakteten Prozess".
Signale die in einer getakteten Umgebung eine Wertzuweisung erfahren, werden in der
Regel zu FlipFlops synthetisiert (siehe Blockdiagramm 3-2).
Das Beispiel des "Program Counter" wird nochmals ausführlicher im Kapitel "Synthese
und Optimierung" durchleuchtet.

HW-Beschreibungssprachen (HDLs)
12
3.2. SystemC
Name:
SystemC
4
Start der Entwicklung:
1999
Wer entwickelt:
,,
Open SystemC Initiative"
Aktuelle Version(en):
2.0 (2001)
Bezugsmöglichkeit:
http://www.systemc.org
Anmerkung:
SystemC ist ohne Lizenzgebühren erhältlich. Es wird nur ein
ANSI C++ Compiler benötigt, da es sich bei SystemC um eine
C++ Klassenbibliothek handelt.
Beispiel:
File: pc.h
File: pc.cpp
#include systemc.h
SC_MODULE(pc)
{
sc_inbool clk;
sc_inbool reset;
sc_inbool we;
sc_inbool inc;
sc_inint dat_i;
sc_outint dat_o;
sc_int32 dat;
void do_pc();
SC_CTOR(pc)
{
SC_METHOD(do_pc);
sensitive_pos(clk);
dat= 0;
}
};
#include pc.h
void pc::do_pc()
{
if (clk.event())
if (reset)
dat= 0;
else
if (we)
dat= dat_i;
else
if (inc)
dat= dat + dat_i;
dat_o= dat;
}
Tabelle 3-1 : Beispiel eines Program Counter in SystemC
4
Quelle: Muhr/Cadek TU-Wien, Notbauer/Niedrist Siemens AG (Östereich), Einsatz von C-basierten
Methoden in der
Systementwicklung

HW-Beschreibungssprachen (HDLs)
13
Im Headerfile wird das Modul PC definiert, mit den Anschlüssen
clk, reset, we, inc
und
dat_i
als Eingangssignale und
dat_o
als Ausgangssignal. Genau wie in VHDL gilt auch in
SystemC, das lesen von Ausgangssignalen und das schreiben auf Ein-gangssignale ist
verboten. Das macht es wiederum erforderlich, das interne Signal
dat
zu deklarieren.
SystemC arbeitet mit Prozessen, um die Funktionalität zu beschreiben und stellt drei
verschiedene zur Verfügung:
1. METHOD-Prozesse geben nach der Ausführung die Kontrolle dem Scheduler
zurück. Sobald sich ein Signal in der Empfindlichkeitsliste verändert, wird der
Prozess wieder angestoßen.
2. THREAD-Prozesse können als nebenläufige Anweisung betrachtet werden, wobei
diese Prozesse sehr viel CPU-Zeit in der Simulationszeit benötigen.
3. CTHREAD-Prozesse sind automatisch Taktflanken getriggert. Alle Aktionen werden
erst zur nächsten gewünschten Taktflanke sichtbar
Im Konstruktor (beginnend ab dem Macro
SC_CTOR) wird die Membermethode
do_pc
durch das Macro
SC_METHOD als Method-Prozess beim Scheduler ange-meldet.
do_pc
wird bei jeder positiven Taktflanke des
clk
-Signals aufgerufen. In pc.cpp steht dann die
Implementierung der Funktion, welche sich kaum von der in VHDL unterscheidet.

HW-Beschreibungssprachen (HDLs)
14
Zum Abschluss eine kleine Übersicht über weitere Features von SystemC:
Module
Können weitere Module und Prozesse beinhalten und werden dann nur
durch ihr Top-Level Interface repräsentiert.
Signale
Genau wie VHDL werden Signale verwendet um einzelne Module miteinander zu
verbinden.
Datentypen
Neben den C++ ,,built-in-Typen" unterstützt SystemC noch Fixkommatypen, ganzzahlige
Typen mit unbeschränkter Länge und zwei- und vierwertige Logiktypen.
Clocks
Im Gegensatz zu VHDL sind Clocks bei SystemC spezielle Signale.
Reactivity
SystemC unterstützt Ereignisse (events) wie z.B. Signaländerung. Außerdem lassen sich
bestimmte Signale überwachen (watching).

Synthese und Optimierung
15
4. Synthese und Optimierung
Synthese
Dokumentation
Simulation
VHDL-Sprachumfang
Abbildung 4-1 : VHDL Sprachumfang
5
Da der synthesefähige Syntaxanteil von VHDL nur einen Teil des gesamten Sprach-
umfangs darstellt, ist es ratsam im voraus zu wissen, was synthetisiert werden kann und
was nicht. Dies ist umso wichtiger, wenn es um die Erstellung von IP-Cores geht, denn
diese müssen von verschiedenen VHDL-Entwicklungsumgebungen erfolgreich
synthetisiert werden können.
Daneben spielt die Technologie auf der gemapped werden soll eine wichtige Rolle, denn
nicht alle Sprachelemente und Designphilosophien können immer erfolgreich synthetisiert
werden (Im Unterkapitel 4.3 wird auf diese Problematik eingegangen).
Dies schränkt den synthesefähigen Syntaxanteil nochmals ein.
5
Quelle: FH-WEDEL - Vorlesung Digitaltechnik 2 ­ Poock-Haffmans

Synthese und Optimierung
16
4.1. Syntheseregeln für getaktete Prozesse
6
-
Nur eine Taktflankenabfrage ist in einem Prozess erlaubt.
-
Signalzuweisungen werden zu Registern synthetisiert.
-
Variablen, die erst gelesen und dann beschrieben werden, werden ebenfalls zu
Registern synthetisiert. Ansonsten werden Variablen zu kombinatorischen Logiken und
eventuell herausoptimiert.
-
Signale oder Variablen, die eine Wertzuweisung innerhalb eines getakteten Umfeldes
erfahren, dürfen außerhalb keinen Wert zugewiesen bekommen (Ausnahme:
aynchroner RESET bzw. PRESET).
4.2. Syntheseregeln für komb. Logik und ungetaktete Prozesse
7
-
Bei einem Prozess müssen alle Signale, aus denen gelesen wird, in der
Empfindlichkeitsliste stehen.
-
Um die Entstehung von Latches zu vermeiden, sollten alle Signale und Variablen in
jeder Verzweigung einen Wert zugewiesen bekommen.
-
Ein Signal oder eine Variable aus der zuerst gelesen wird, wird entweder zu einem
Latch oder zu einer kombinatorischen Rückkopplungsschleife synthetisiert.
Alle in VHDL entwickelten Module dieser Diplomarbeit halten sich an diese Regeln, und
deshalb sollten auch keine großen Probleme auftreten, das System unter ver-schiedenen
VHDL-Umgebungen zu kompilieren.
6
Quelle: Oldenbourg - VHDL-Synthese ­ J.Reichardt/B.Schwarz
7
Quelle: Oldenbourg - VHDL-Synthese ­ J.Reichardt/B.Schwarz

Synthese und Optimierung
17
4.3. Technologieabhängige Synthese
Intern unterstützen FPGAs in der Regel keine Tri-States. Somit können auch keine
bidirektionalen Busse realisiert werden.
Abbildung 4-1 : Tri-State zu Multiplexer
8
Dieses Problem lässt sich auf zwei Arten lösen: Alle Tri-State Signale werden in IN und
OUT aufgeteilt, und die gewünschten Datenpfade werden dann über Multiplexer
freigeschaltet.
Abbildung 4-2 : Tri-State werden außerhalb des Bausteins verbunden
9
Die Signale werden auf die I/O-Pins gelegt und dort untereinander verbunden. Dieser Weg
ist aber nur zu empfehlen, wenn auf die PINs verzichtet werden kann und/oder dieser Teil
des Systems nicht zu zeitkritisch ist.
8
Quelle: http://www.altera.com/support/examples/ged/tri_state.html
9
Quelle: http://www.altera.com/support/examples/ged/tri_state.html

Synthese und Optimierung
18
4.4. Synthese: ein praktisches Beispiel
Neben den Kenntnissen, die benötigt werden, um synthesefähigen VHDL-Code zu
erzeugen, ist es ein Vorteil, zu verstehen wie bestimmte Konstrukte bei der Synthese
abgebildet werden. Denn besonders bei zeitkritischen Einheiten kommt es immer wieder
zu Setup/Holdtime Verletzungen. Oft reicht eine kleine Änderung aus, um die fehlerfreie
Funktion zu gewährleisten.
Als Beispiel wird der schon aus dem letzten Kapitel bekannte Program Counter
verwendet.
DAT_I[31..0]
CLK
DAT_O[31..0]
RESET
WE
INC
FF
DAT
MUX
+
MUX
MUX
const
00.
'1'
'0'
'1'
'0'
'1'
'0'
Abbildung 4-1 : Mögliche Synthese des PC
Wie in Abbildung 4-1 zu sehen ist, wird beim compilieren des VHDL-Codes der gesamte
getaktete Prozess in parallel arbeitende Einheiten aufgelöst, nur ein Register (
DAT
,
bestehend aus FlipFlops, die bei jeder positiven Taktflanke den Eingang übernehmen und
dann am Ausgang bereitstellen) ist noch abhängig vom Takt.

Synthese und Optimierung
19
Randbedingung:
Das Signal
DAT_I
steht erst zwischen 8-12ns vor der nächsten Taktflanke zur Verfügung,
und nun wird überprüft, ob diese Einheit das leistet.
Waveform 4-1 : Fehlerhafter PC
Sobald
DAT_I
nur 8ns vor der nächsten Flanke anliegt, ist dass Ergebnis falsch bzw. nicht
definiert, wie in dem Waveform-Diagramm ersichtlich ist. Es wird weiter ange-nommen,
dass sich die Geschwindigkeit nicht durch weiteres optimieren erhöhen lässt. Wie kann
dieses Problem gelöst werden ?
Es liegt auf der Hand, dass das durchlaufen eines Addierwerkes mit 32 Bit wohl die meiste
Zeit beansprucht. Eine Lösung wäre es, die Werte von
DAT_I
während der Taktflanke nur
zu übernehmen und die Addition danach auszuführen.
architecture A_PC of PC is
signal SDAT : std_logic_vector(31 downto 0);
signal ADAT : std_logic_vector(31 downto 0);
begin
DAT_O =
SDAT+ADAT;
process (CLK)
begin
if CLK='1' and CLK'event then
if RESET='1' then
SDAT = (others='0');
ADAT = (others='0');
elsif WE='1' then
SDAT = DAT_I;
ADAT = (others='0');
elsif INC='1' then
SDAT = SDAT + ADAT;
ADAT = DAT_I;
end if;
end if;
end process;
end A_ PC;
Tabelle 4-1 : Lösung / Neuer PC
Fehler! 11223343 ist Korrekt

Synthese und Optimierung
20
Waveform 4-2 : Überprüfung
Diesmal arbeitet die Einheit korrekt, doch wie aus dem Waveform-Diagramm zu
entnehmen ist, liegt an
DAT_O
(gegenüber der ersten Lösung) erst um einige ns verzögert
das richtige Ergebnis an. Als weiteren Nachteil kann gesehen werden, dass sich die Zahl
der benötigen Logic Cells" von 94 auf 161 erhöhen wird und die maximale Taktfrequenz
von 102 auf 91,74Mhz absinkt.
4.5. Fazit
Durch ein tieferes Verständnis der internen Abläufe der Synthese können Probleme, die
durch spezielle Randbedingungen entstehen, gelöst werden. Ein unnötiges und
zeitintensives Redesign" kann vermieden werden.

System on a Chip (SoC) ­ Spezifikation
21
5. System on a Chip (SoC) ­ Spezifikation
Am Anfang der Diplomarbeit stand die Fragestellung:
Was soll das SoC leisten ?
und
Mit welchen Einheiten kann dieses Ziel realisiert werden?
5.1. Ziele des Soc
·
Lauffähig auf dem Testboard DIGILAB 1Kx208
10
·
Entwicklung in VHDL
·
CPU in RISC-Style
·
Datenaustausch über ein Standard Interface
·
Ansteuerung der Peripherie des Testboards (SRAM, LEDS, BUTTONS etc.)
·
Video-Ausgabe
·
Flexibles Design
·
Parametrisierbar
·
Unified Memory
All diese Überlegungen werden in der Abbildung 5-1 zusammengefasst und in über-
schaubarer Form dargestellt.
10
DIGILAB 1Kx208 wurde von der Firma El Camino entwickelt und wird dort vertrieben. Weitere
Informationen befinden sich auf der CD-ROM im Verzeichnis doku/testboard

System on a Chip (SoC) ­ Spezifikation
22
I/O
UART
Timer
LEDS
7-SEG
Buttons
GPU
CPU
DMA
SELECTOR
Extern RAM
SRAM 256kx16
Intern RAM/ROM
Bootloader
Abbildung 5-1 : SoC Übersicht
Die Aufgabe und Funktionalität jeder dieser Einheiten wird kurz umgangssprachlich
umrissen, wobei nur wenig auf technische Randbedingungen eingegangen wird.

System on a Chip (SoC) ­ Spezifikation
23
5.2. CPU
Anforderungskatalog:
·
RISC-CPU
·
2 Operand Maschine
·
Load Store - Einheit
·
16Bit Befehlsbreite
·
16 universelle Register
·
Interruptverarbeitung
·
Adress-Breite parametrisierbar
·
Daten-Breite parametrisierbar (=16)
·
Hersteller Technologie unabhängig
·
Port-Befehle (I/O-BUS)
5.3. GPU
Die GPU holt sich Bilddaten aus dem Hauptspeicher und stellt diese auf einem
Ausgabegerät (implementiert für einen Standard VGA-Monitor) dar. Dieses Modul kann
zur Laufzeit über den I/O-BUS der CPU beliebig konfiguriert (Auflösung, Frequenz und
Bildbereich) werden.
5.4. I/O
Das I/O Modul verwaltet UART, Timer, LEDs, 7-Segment-Anzeige und Buttons. Der
Datenaustausch mit der CPU erfolgt über den I/O-BUS. Eine weitere Aufgabe besteht in
der Erzeugung von Interrupts (UART und TIMER).

System on a Chip (SoC) ­ Spezifikation
24
5.4.1. UART
Diese Einheit wird verwendet um mit der Außenwelt zu kommunizieren. Imple-mentiert
ist diese Einheit als eine RS-232 Schnittstelle (115200 Baud, StopBit 2, Parity none, 8Bit
Data und FlowControl none). Dabei erfolgt der Datenaustausch mit der CPU wahlweise
über Polling oder Interruptgesteuert.
5.4.2. TIMER
Diese Einheit erzeugt zyklisch (t
zykl
) einen Interrupt (wenn Enabled) man spricht dann
von einem Timer Interrupt. Die Zykluszeit berechnet sich wie folgt:
t
zykl
= n*Taktdauer (n ist dabei eine beliebig konfigurierbare 32Bit Zahl).
5.4.3. LEDS/7-Segment-Anzeige
LEDs und 7-Segment-Anzeigen bieten die einfache Möglichkeit dem Benutzer Infor-
mationen anzuzeigen. Auf dem Testboard können 8 Leds direkt über einen Port
angesprochen werden, dabei repräsentiert jedes Bit den invertierten Status einer Led
(1=OFF, 0=ON). Es stehen 4x7-Segment-Anzeigen zur Verfügung. Jede einzelne dieser
Anzeigen kann direkt über einen Port angesprochen werden. Während die LEDs direkt
angesteuert werden können, muss für die Ansteuerung der 7-Seg-An-zeigen eine kleine
Logik entwickelt werden.
5.4.4. Buttons
Es kann der Status von 4 Knöpfen abgefragt werden, wodurch kleine, schnelle
Interaktionen mit dem Benutzer realisiert werden können. Die Statusabfrage erfolgt über
den I/O-BUS der CPU.

System on a Chip (SoC) ­ Spezifikation
25
5.5. DMA
Die DMA­Einheit regelt den prioritätsgesteuerten (GPU vor CPU) Zugriff auf den
Hauptspeicher.
5.6. SELECTOR
Die CPU und GPU verwenden logische Speicheradressen, physikalisch werden diese
durch verschiedene Speichermedien repräsentiert (SRAM, FPGA-Blockram), die
wiederum verschiedene Kapazitäten besitzen. Bei einer Speicheranfrage entscheidet die
Adresse, welche der physikalischen Medien anzusprechen ist.
5.7. Externes RAM
Diese Einheit steuert ein externes RAM an und hat als Aufgabe 8/16/32Bit Daten zu
speichern und zu lesen. Dabei können die Daten direkt vom Prozessor übernommen bzw.
ihm zur Verfügung gestellt werden. Dafür notwendige Transformationen der Daten werden
ebenso vorgenommen.
5.8. Internes RAM/ROM
In diesem RAM/ROM-Modul befindet sich nach dem Einschalten der Bootloader. Dies ist
ein kleines Programm, mit dessen Hilfe weitere Programme in den Hauptspeicher geladen
werden können. Des weiteren können auch gewünschte Speicherbereiche ausgelesen
und über das UART-Modul versendet werden.
Realisiert ist diese Einheit durch die Verwendung des internen Speichers des ACEX1K,
und kann als normaler Speicher angesprochen werden.

Reduce Instruction Set Computer (RISC)
26
6. Reduce Instruction Set Computer (RISC)
Die für diese Diplomarbeit zu entwickelnde CPU soll einer RISC-Architektur zugrunde
liegen, weshalb sich dieses Kapitel mit der Frage beschäftigt:
Was ist RISC überhaupt ?
In der Literatur besteht die Charakterisierung einer RISC-CPU aus Forderungen
11
wie z.B.:
1. Anzahl der Instruktionen = 150
2. Anzahl der Adressierungsmodi = 4
3. Anzahl der Instruktionsformate = 4
4. Anzahl allgemeiner CPU-Register = 32
5. Ausführung aller oder der meisten Instruktionen in einem Zyklus
6. Speicherzugriff nur über Load/Store-Befehle
7. Festverdrahtete Kontrolle
8. Unterstützung höherer Programmiersprachen.
Anhand eines Vergleichs zwischen der RISC I
12
­ Architektur und der im Rahmen der
Diplomarbeit entwickelten RISC-Architektur (YARC) werden die aufgezählten Forderungen
eingehender betrachtet.
Forderung\
Architektur
1
2
3
4
5
6
7
8
RISC I
J (31)
J (2)
J (2)
J (138)
J
J
J
J
YARC
J (41)
J (2)
J (2)
N (16)
J
13
J
J
J
Tabelle 6-1 : Ergebnis: Forderungsüberprüfung
11
Quelle: ,,RISC-Definition", Daniel, Tabak, George Mason University
12
Die RISC I-Architektur wurde Anfang der achtziger an der University of California at Berkeley, unter der
Leitung von David A. Patterson entwickelt und gilt als Ur-RISC.
13
z.Zt. nicht implementiert, aber vom Grundkonzept möglich.

Reduce Instruction Set Computer (RISC)
27
6.1. Generelle Unterschiede der Architekturen
6.1.1. 2/3 Operanden-Maschine
Bei der RISC I handelt es sich um eine 3-Operanden-Architektur während die YARC
Architektur nur 2 Operanden verwendet.
Beispiel: 3-Operanden-Maschine
ADD
R3,R2,R1
; R1= R3+R2
Beispiel: 2-Operanden-Maschine
ADD
R2,R1
;R1=R1+R2
6.1.2. Überlappende Registerfenster
Die RISC I Architektur ist für Prozeduraufrufe optimiert. Besonders in RISC-Programmen
erhöht sich die Anzahl der Aufrufe, denn dort werden komplexe Instruk-tionen sehr oft in
Unterprogrammen realisiert. Es müssen also oft Register gerettet und neu geladen
werden, dies kostet sehr viel Zeit.
Deshalb gibt es in RISC I 10 sog. globale Register (R0-R9) und 22 Register die zu dem
Registerfenster gehören. Die 22 Register sind wiederum in 3 Teile aufgeteilt:
R10 bis R15 sind die Low Register und enthält die Parameter für die aufzurufende
Prozedur.
R17 bis R27 sind die Local Register und enthalten die lokalen Werte der Prozedur.
R26 bis R31 sind die High Register und enthalten die Übergabe-Parameter von der
aufrufenden Prozedur. Bei einem Prozeduraufruf werden die Low Register zu den High
Register.
Dieser Ansatz erhöht die Anzahl der benötigten Register doch erheblich, was zu einer
Vergrößerung der Chipfläche führt.
6.1.3. Besonderheit des Register R0
Das Register R0 ist bei RISC I immer Null, während bei YARC diese Register keine
Sonderrolle einnimmt.

Reduce Instruction Set Computer (RISC)
28
6.1.4. Besonderheit des Link-Registers
Bei YARC wird die Rücksprungadresse bei einem Unterfunktionsaufruf (BSR oder JSR) in
das Register 15 gelinkt, während bei RISC I das Register frei gewählt werden kann.
6.2. Instruktionen
In den nächsten Tabellen werden die Instruktionen der beiden Architekturen gegenüber
gestellt.
Rd, Rs, Rx, Rm
eins von 32 Registern (mit R0=0)
S2
Register oder 13-Bit Konstante
COND
4-Bit Condition
Y
19-Bit Konstante
PC
Program Counter
CWP
Current Window Pointer
Tabelle 6-1 : Legende RISC I
Ra, Rb
eins von 16 Registern
IMM8S
8 Bit Signed Immediate
IMM8U
8 Bit Unsigned Immediate
IMM4
4 Bit Unsigned Displace
PC
Program Counter
IMASK
Interrupt Maske
Tabelle 6-2 : Legende YARC
RISC I
YARC
Befehl
Operanden Beschreibung
Befehl
Operanden
Beschreibung
LDW
(Rx),S2,Rd RD-M[Rx+S2] LDL
Ra,Rb,IMM4 Ra-M[Rb+IMM4*4]
LDHU
(Rx),S2,Rd RD-M[Rx+S2] LDW
Ra,Rb,IMM4 Ra-M[Rb+IMM4]
LDHS
(Rx),S2,Rd RD-M[Rx+S2]
LDBU
(Rx),S2,Rd RD-M[Rx+S2] LDB
Ra,Rb,IMM4 Ra-M[Rb+IMM4]
LDBS
(Rx),S2,Rd RD-M[Rx+S2]
STW
rm,(Rx),S2 M[Rx+S2]-Rm STL
Rb,IMM4,Ra M[Rb+IMM4]-Ra
STH
rm,(Rx),S2 M[Rx+S2]-Rm STW
Rb,IMM4,Ra M[Rb+IMM4]-Ra
STB
rm,(Rx),S2 M[Rx+S2]-Rm STB
Rb,IMM4,Ra M[Rb+IMM4]-Ra
Tabelle 6-3 : Load Store ­ Befehle

Reduce Instruction Set Computer (RISC)
29
RISC I
YARC
Befehl
Operanden Beschreibung
Befehl
Operanden Beschreibung
ADD
Rs,S2,Rd
Rd-Rs+S2
ADD
Ra,Rb
Ra-Ra+Rb
ADDI
Ra,IMM8U
Ra-Ra+IMM8U
ADDC
Rs,S2,Rd
Rd-Rs+S2+carry ADC
Ra,Rb
Ra-Ra+Rb+carry
SUB
Rs,S2,Rd
Rd-Rs-S2
SUB
Ra,Rb
Ra-Ra-Rb
SUBI
Ra,IMM8U
Ra-Ra-IMM8U
SUBC
Rs,S2,Rd
Rd-Rs-S2-carry
SUBR
Rs,S2,Rd
Rd-S2-Rs
SUBCR Rs,S2,Rd
Rd-S2-Rs-carry
AND
Rs,S2,Rd
Rd-Rs and S2
AND
Ra,Rb
Ra-Ra and Rb
OR
Rs,S2,Rd
Rd-Rs or S2
OR
Ra,Rb
Ra-Ra or Rb
XOR
Rs,S2,Rd
Rd-Rs xor S2
XOR
Ra,Rb
Ra-Ra xor Rb
SLL
Rs,S2,Rd
Rd-Rs by S2
SLL
Ra,Rb
Ra-Ra by Rb
SRL
Rs,S2,Rd
Rd-Rs by S2
SLR
Ra,Rb
Ra-Ra by Rb
SRA
Rs,S2,Rd
Rd-Rs by S2
SAR
Ra,Rb
Ra-Ra by Rb
NOT
Ra,Rb
Ra-not Rb
Tabelle 6-4 : Arithmetisch ­ logische Operationen im Vergleich
RISC I
YARC
Befehl
Operanden
Beschreibung
Befehl Operanden Beschreibung
JMP
COND,S2(Rx) if COND then
PC-Rx+S2
JMPR
COND,Y
if COND then
PC-PC+S2
BT
IMM8S
If TBIT then
PC-PC+IMM8S
BF
IMM8S
If !TBIT then
PC-PC+IMM8S
CALL
Rd,S2(Rx)
Rd-PC;
PC-Rx+S2;
CWP-CWP-1
JSR
Ra
PC-Ra
R15-PC
CALLR Rd,Y
Rd-PC;
PC-PC+Y;
CWP-CWP-1
BSR
IMM8S
PC-PC+IMM8S
RET
Rm,S2
PC-Rm+S2,
CWP-CWP+1
JMP
Ra
PC-Ra
Tabelle 6-5 : Verzweigungsbefehle

Reduce Instruction Set Computer (RISC)
30
RISC I
YARC
Befehl
Operanden Beschreibung Befehl
Operanden Beschreibung
CALLINT
Rd
RD-lst PC;
CWP-CWP-1
TRAP
Ra
last PC.PC
PC=Ra
RETINT
Rm,S2
RD-
M[Rx+S2]
RET
PC-last PC
LDHI
(Rd,Y
RD-
M[Rx+S2]
GTLPC
Rd
RD-
M[Rx+S2]
GETPSW Rd
RD-
M[Rx+S2]
PUTPSW Rm
M[Rx+S2]-
Rm
EXTUW
Ra,Rb
Ra=Rb0xffff
EXTSW
Ra,Rb
if Rb0 then
Ra-0xffff0000|
(Rb0xffff)
else Ra-Rb0xffff
EXTUB
Ra,Rb
Ra=Rb0xff
EXTSB
Ra,Rb
if Rb0 then
Ra-0xffffff00|
(Rb0xffff) else
Ra-Rb0xffffff
SIRM
Ra
IMASK- Ra
MOV
Ra,Rb
Ra-Rb
MOVI
Ra,IMM8U
Ra-IMM8U
MOVA
Ra,IMM8S
Ra-PC+IMM8S
TEQ
Ra,Rb
TBIT= Rb==Ra
THI
Ra,Rb
TBIT= RbRa
THS
Ra,Rb
TBIT= Rb=Ra
TGE
Ra,Rb
TBIT= Rb=Ra
signed
TGT
Ra,Rb
TBIT= RbRa
signed
Tabelle 6-6 : Restliche Befehle
In Tabelle 6-1 : Ergebnis: Forderungsüberprüfung steht die Anzahl der Instruktionen, die
bei RISC I 31 und bei YARC 41 sein sollen, doch es muss an dieser Stelle erwähnt
werden, dass viele der RISC I-Instruktionen sowohl in Register-Register als auch in
Register-Immediate vorliegen. Auch die 5 Test-Instruktionen bei YARC werden durch nur
einen JMP bei RISC I ersetzt. Somit verringert sich die Anzahl der Befehle im angepaßten
Vergleich von 41 auf 34

Details

Seiten
Erscheinungsform
Originalausgabe
Jahr
2001
ISBN (eBook)
9783832481674
ISBN (Paperback)
9783838681672
DOI
10.3239/9783832481674
Dateigröße
960 KB
Sprache
Deutsch
Institution / Hochschule
Fachhochschule Wedel – Technische Informatik
Erscheinungsdatum
2004 (Juli)
Note
1,0
Schlagworte
risc fpga schaltung schnittstelle
Zurück

Titel: VHDL-Entwicklung eines proprietären und parametrisierbaren "System on a Chip"
book preview page numper 1
book preview page numper 2
book preview page numper 3
book preview page numper 4
book preview page numper 5
book preview page numper 6
book preview page numper 7
book preview page numper 8
book preview page numper 9
book preview page numper 10
book preview page numper 11
book preview page numper 12
book preview page numper 13
book preview page numper 14
book preview page numper 15
book preview page numper 16
book preview page numper 17
book preview page numper 18
book preview page numper 19
book preview page numper 20
book preview page numper 21
book preview page numper 22
book preview page numper 23
book preview page numper 24
book preview page numper 25
book preview page numper 26
book preview page numper 27
book preview page numper 28
book preview page numper 29
book preview page numper 30
book preview page numper 31
book preview page numper 32
book preview page numper 33
book preview page numper 34
book preview page numper 35
book preview page numper 36
book preview page numper 37
book preview page numper 38
book preview page numper 39
book preview page numper 40
book preview page numper 41
207 Seiten
Cookie-Einstellungen