Post on 10-Apr-2022
VGA Grafik mit RAPTOR2000
Projektgruppe SS03
Tim Kaulmann, Christian Hilker, Jens Hagemeyer
betreut durch
Dipl.-Ing. M. Franzmeier
Heinz Nixdorf Institut
Universitat Paderborn
Inhaltsverzeichnis
1 Einleitung 1
2 Teilsysteme 4
2.1 Lokalbus to Wishbone Bridge (lbs wbm.vhd) . . . . . . . . . . . . . . . . 4
2.2 Schnittstelle zum SDRAM (mc wb.vhd) . . . . . . . . . . . . . . . . . . 5
2.3 I2C-Bridge (i2c master top.vhd) . . . . . . . . . . . . . . . . . . . . . . . 7
2.4 VGA-Core (vga enh top.v) . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.5 Wishbone-Matrix (wb interconn.vhd) . . . . . . . . . . . . . . . . . . . . 8
3 Simulation, Synthese und Place&Route 10
3.1 Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.2 Synthese . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.3 Place and Route . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
4 Gesamtsystem 12
4.1 Takte und Adressierung . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.2 Anwendungsbeispiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
5 Hardware und Software 19
5.1 DVI Adapter Modul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
5.2 Software VGA Control v1.0 . . . . . . . . . . . . . . . . . . . . . . . . . 20
6 Zusammenfassung 22
A Anhang 23
A.1 Tabellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
A.2 Schematic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
i
Abbildungsverzeichnis 30
Tabellenverzeichnis 31
ii
1. Einleitung
Das am Fachgebiet Schaltungstechnik entwickelte RAPTOR2000-System ist eine sehr leis-
tungsfahige Plattform fur den prototypischen Entwurf mikroelektronischer Schaltungen.
Fur Demonstrationszwecke ist es wunschenswert, die Datenverarbeitung der Plattform
grafisch aufzubereiten und darzustellen. Die Aufbereitung und Darstellung soll in Zu-
kunft vom RAPTOR2000-System ohne einen externen PC geleistet werden. Zu diesem
Zweck soll in dieser Projektarbeit ein zusatzliches System entwickelt werden, das ohne
weitere externe Hardware eine VGA-Ausgabe des RAPTOR2000-Systems auf Standard-
Bildschirmen bereitstellt.
Als Grundlage des VGA-Systems wird das am Fachbereich vorhandene DB-VS Modul
zuruckgegriffen, welches ein FPGA VirtexE-600 und 128 MB SDRAM bereitstellt. Zusatz-
lich wird ein DB-VGA Zusatzmodul entwickelt, welches die eigentliche VGA-Schnittstelle
und weitere zum Betrieb erforderliche Komponenten enthalt.
Wishbone-Interconnect-Matrix
LB / WB
BridgeVGA Core
I2C BridgeSDRAM
Controller
EEPROM DVI Converter
PLL ClockChip
SDRAM
VirtexE-600
RAPTOR DB-VS
RAPTOR DB-VGA
Abbildung 1.1: Schematische Darstellung des Gesamtsystems
Da das VGA-System den wesentlichen Teil aus dem VGA-Core bezieht, ist hier der
prinzipielle Aufbau des Gesamtsystems dargestellt (siehe Abbildung 1.1).
Die zusatzliche Platine ist erforderlich, da der FPGA weder analoge Signale darstellen (im
1
2
Fall einer”normalen“, analogen Schittstelle), noch digitale Signale mit der erforderlichen
Geschwindigkeit erzeugen kann (im Fall von serieller Ubertragung uber DVI). Weiterhin
ist auf dem DB-VGA ein PLL-Chip zur Erzeugung der variablen Pixelclock und ein
EEPROM zur Datenspeicherung vorhanden.
Das HDL-Design setz sich zusammen aus VHDL und VERILOG, da in diesem bereits fer-
tige Komponenten vom Fachgebiet Schaltungstechnik und OpenCores verwendet wurden,
welche in unterschiedlichen HDL-“Dialekten“ vorlagen. Verwendet wurden:
VGA/LCD Core 2.0 Richard Herveille (www.opencores.org) / Verilog, Der eigentliche
VGA-Core, fur die Verwendung im Design modifiziert.
I2C Master Core Richard Herveille (www.opencores.org) / Verilog, Fur die Ansteue-
rung der Bausteine des DB-VGA, mit leichten Modifikationen verwendet.
SDRAM Controller Boris Kettelhoid / VHDL, Als Komponente im SDRAM-Controller.
LokalbusSlaveSimple Rainer Schmidt / VHDL, Als Komponente in der RAPTOR-
Lokalbusschnittstelle.
Im Folgenden werden die Fahigkeiten des VGA-Cores kurz vorgestellt, da dieser maßgeb-
lichen Einfluss auf die Funktionalitat des Systems hat.
Hardware Cursor 0
X,Y Postition
Base Adress
Colormode
Colorlookuptable
Hardware Cursor 1
X,Y Postition
Base Adress
Colormode
Colorlookuptable
Framebuffer 0
Base Adress
Framebuffer 1
Base Adress
Colorlookuptable 0
256 x 24 Bit
Colorlookuptable 1
256 x 24 Bit
Colordepth
Colorizer
Pixel Processor
Logic
Abbildung 1.2: Schematische Darstellung des VGA-Cores
3
Der in Abbildung 1.2 dargestellte VGA-Core besteht aus:
2 Framebufferpointer
2 Colorlookuptables
2 Hardwarecursor
Der Anwender hat die Moglichkeit, zwei oder mehr separate Buffer zu beschreiben und
abwechselnd darzustellen. Dieses kann mit Hilfe der beiden Framebufferpointer geschehen.
Um einen flackerfreien Bildaufbau zu erreichen ist es sinnvoll die Interrupts des Cores
zu nutzen. Dieser stellt verschiedene Interupts zur Verfugung, welche vorerst nur durch
Polling benutzt werden konnen. Eine gangige Methode ist, zwei Buffer im RAM des
FPGA Moduls zu reservieren und dort abwechselnd Daten zu schreiben, wahrend der
gerade nicht beschriebene Buffer angezeigt wird (Doublebuffering).
Bei diesem Betrieb werden zuerst beide Buffer gefullt, der Core aktiviert und dann das
Video-Bufferswitch Signal gesendet. Die Bufferpointer mussen hierbei auf die jeweiligen
Bufferadressen zeigen. Ist der erste Buffer vollstandig ausgelesen, wird vom Core der
Interrupt gesetzt. Nun kann man den ausgelesenen Buffer erneut fullen und anschliessend
das Video-Bufferswitch Signal senden. Sendet man es nicht, wird solange der andere Buffer
ausgelesen und so verhindert, dass der Core ein halbes Bild dastellt.
Auf die selbe Weise konnen auch die Colorlookuptables genutzt werden (nur Doublebuffe-
ring). Eine Colorlookuptable (CLUT) nimmt eine Farbpalette fur ein indiziertes Bild auf.
Indizierte Bilder haben in der Regel einen geringeren Datenaufwand da sie nur Indizes
anstatt Farbwerten im Bild speichern.
2. Teilsysteme
2.1 Lokalbus to Wishbone Bridge (lbs wbm.vhd)
Dual
Ported
BlockRam
Dual
Ported
BlockRam
Read
FIFO
Write
FIFO
FIFO
Controller
Wishbone
Master
Localbus
Slave
Simple
Abbildung 2.1: Bridge Lokalbus Slave auf Wishbone Master
Diese Komponente beinhaltet hauptsachlich drei Funktionen. Zum einen stellt sie die
Schnittstelle zwischen dem Lokalbus des RAPTOR2000-Systems und dem Wishbone Bus
des Designs dar. Zum anderen wird die Komponente zur korrekten Ubermittelung zwi-
schen Lokalbustakt LCLK13 und dem Takt des Wishbone-Bussystems, mit LCLK23 be-
zeichnet, benotigt. Schliesslich wird auch die Bildung der 32 Bit breiten Wishboneadresse
in dieser Komponente ausgefuhrt. Wie in Abbildung 2.1 dargestellt, wird die unmittelba-
re Schnittstelle zum Lokalbus durch die Entity LokalbusSlaveSimple von Rainer Schmidt
realisiert. LokalbusSlaveSimple stellt hier die Tristatebuffer fur den Lokalbus bereit und
fuhrt eine Vorverarbeitung der Signale des Lokalbus durch. LokalBusSlaveSimple.vhd ist
als Komponente in lbs wbm.vhd instanziert. Die Entity lbs wbm.vhd selbst besteht aus
zwei Zustandsautomaten, wobei einer mit Lokalbusfrequenz LCLK13 und die andere mit
Wishbonefrequenz LCLK23 getaktet ist. Weiter ist ein Prozess zur Umsetzung der Lokal-
busadressen auf die Wishboneadressen implementiert. Die Datenubermittelung zwischen
den beiden Automaten erfolgt uber zwei aysnchrone FIFOs, welche in der Sythese als
Blackboxmodule eingebunden werden, da diese mit dem Xilinx CoreGenerator erzeugt
wurden. Die Dauer eines Zugriffs auf die Bridge ist abhangig davon, ob es sich um einen
Lese, oder Schreibzugriff handelt. In Bezug auf Schreibzugriffe unterstutzt die Bridge
4
2.2. Schnittstelle zum SDRAM (mc wb.vhd) 5
Lokalbus-Bursts. Schreibzugriffe konnen somit, unter der Voraussetzung eines nicht vol-
len Schreib-FIFOs, in einem Takt abgeschlossen werden. Der Schreibvorgang wird als
beendet angesehen, sobald das entsprechende Datenwort im FIFO liegt. Die Tatsache,
dass ein Schreibvorgang auf dem Lokalbus abgeschlossen ist, stellt somit nicht sicher,
dass das System bereits uber die Information verfugt. Dieses stellt aber kein Problem
dar, solange die Reihenfolge der Schreibzugriffe eingehalten wird, was durch Verwendung
eines FIFO der Fall ist. Im Fall eines Lesezugriffs ergibt sich ein anders Verhalten. Da das
System die benotigte Information erst uber den Wishbonebus bereitstellen muss, dauert
ein einzelner Lesezugriff in jedem Fall langer als ein Takt und ist abhangig vom VerhaltnisLCLK13LCLK23
, der Auslastung des Wishbonebusses und der Komponente selbst.
2.2 Schnittstelle zum SDRAM (mc wb.vhd)
Abbildung 2.2: Schematische Darstellung der SDRAM-Schnittstelle
Wie aus Abbildung 2.2 hervorgeht, stellt die Entity mc wb.vhd die Schnittstelle zwi-
schen dem eigentlichem SDRAM-Controller und dem Wishbonebus dar. Die Schnittstelle
besteht dabei im wesentlichen aus zwei endlichen Zustandsautomaten(Finite State Ma-
schine), wobei ein Automat das Wishbone-Interface bildet und der andere den SDRAM-
2.2. Schnittstelle zum SDRAM (mc wb.vhd) 6
Controller steuert. Weiterhin ist ein Dual-Ported-BlockRAM als Cachespeicher integiert.
Die beiden Zustandsautomaten sind hier notwendig, obwohl SDRAM-Controller als auch
Wishbonebus mit der gleichen Frequenz laufen, da es, z.B. aufgrund der Refreshzyklen
des Controllers oder aufgrund der Caching-Funktionalitat von mc wb.vhd, zu paralle-
len, gleichzeitig ablaufenden Prozessen kommen kann. Die Verbindung zwischen den Zu-
standsautomaten wird durch eine Reihe von Registern realisiert, die jeweils von einer
Statemaschine gesetzt und von der anderen zuruckgesetzt werden. Aus dem Grund der
parallelen Prozesse ist ebenfalls erforderlich, Dual-Ported-BlockRAM’s fur die Implemen-
tierung des Caches zu benutzen.
Die Schnittstelle unterstutzt sieben verschiedene Zugriffsmoglichkeiten, wobei vier da-
von auf das Lesen und Schreiben der Parameterregister des SDRAM-Controllers entfal-
len. Diese Zugriffe werden durch Schreib und Lesevorgange an die Wishbone-Adressen
0x60000000 und 0x60000004 durchgefuhrt. Zum eigentlichen Zugriff auf SDRAM-Inhalte
stellt die Schnittstelle Single-Writes, Single-Reads und Burst-Reads bereit. Die Unter-
scheidung zwischen Single- und Burst-Read erfolgt dabei uber das CTI-Signal (Cycle
Type Identifier) der Wishboneschittstelle. Im Wishboneprotokoll sind verschiede Burst-
Modi spezifiziert, die uber das BTE-Signal (Burst Type Extension) unterschieden werden,
allerdings unterstutzt mc wb.vhd nur lineare Bursts (BTE = 000), hier Leseoperationen
auf zusammenhangende Adressbereiche. Im folgenden wird der Ablauf der Schreib und
Lesezugriffe erlautert.
Ein Cacheeintrag besteht dabei aus 32 Bit-Daten, 20 Bit-Tag und einem Valid Bit. Bei
einem Single-Read wird zunachst auf den gleichen Tag der aktuellen Adresse und des
entsprechenden Cacheeintrages sowie auf ein gesetztes Valid-Bit gepruft. Abhangig da-
von, wie der Vergleich ausfallt, wird das entsprechende Datum aus dem SDRAM oder
aus dem Cache gelesen. Der Inhalt des Cache wird in keinem Fall verandert. Im Fall eines
Burst-Read wird bei jedem Datum wie im Fall des Single-Read auf Miss oder Hit gepruft.
Tritt ein Miss auf, so wird der aktuelle Burst temporar unterbrochen und die entsprechen-
den Daten aus dem SDRAM gelesen. Der Wishbone Burst wird, nachdem die Daten zur
Verfugung stehen, normal ausgefuhrt, allerdings liest der Memory-Controller alle Daten
bis zum Ende der aktuellen Page weiter und speichert diese im Cache. Eine Page hat eine
Grosse von 1024 Byte, entsprechend ist die Große des BlockRAM’s gewahlt, welches als
Cache verwendet wird. Da vom VGA-Core lineare Zugriffe (ansteigende Adressen auf den
Speicher) zu erwarten sind, wird durch diese Strategie eine hohe Hitrate erwirkt, was sich
positiv auf die Latenz beim SDRAM-Zugriff und letztendlich auch auf den Datendurch-
satz auswirkt. Bei Schreibzugriffen wird, ahnlich wie beim Single-Read, zunachst auf einen
Hit gepruft, allerdings wird das Valid-Bit hierbei ignoriert. Im Fall eines Miss wird das
Datum nur in das SDRAM, im Fall eines Hit zusatzlich in den Cache geschrieben. Durch
diese Strategie wird ein ungultiger Cacheinhalt verhindert. Wenn in jedem Fall auch in
den Cache geschrieben wurde, konnte dieses negativen Einfluss auf die Hitrate haben, da
eventuell komplette Pages im Cache durch einzelne Eintrage, die nicht in der Page liegen,
zerstort werden. Im SDRAM-Controller, in mc wb.vhd als Komponente eingebunden, be-
findet sich, ebenfalls als Komponente eingebunden, das Modul clock gen.vhd, welches eine
2.3. I2C-Bridge (i2c master top.vhd) 7
Verdopplung des Taktes bewirkt und die Taktruckfuhrung des SDRAM einbindet. Diese
Komponente wurde fur die Verwendung im System nicht benutzt, da die entsprechenden
(und andere) Funktionalitaten bereits in clock ctrl.vhd implementiert sind. Anderungen
im Code bestehender Module wurden mit dem Kommentar”sct-mod“ versehen.
2.3 I2C-Bridge (i2c master top.vhd)
Der verwendeten Wishbone-I2C Bridge wurde ein Modul von OpenCores zugrunde gelegt.
Dieses Modul musste zur Nutzung im System modifiziert werden, um Fehler bei Simu-
lation und Synthese zu beseitigen. Die I2C-Bridge ist im Gegensatz zum Wishbone-Bus
nur fur 8 Bit-Datenbreite ausgelegt. Soll ein Zugriff vom Wishbonebus auf den I2C-Bus
erfolgen, konnen auf dem Wishbonebus nur die unteren 8 Bit genutzt werden, da in der
I2C-Bridge keinerlei Umsetzung der 32 Bit-Daten auf vier einzelne 8 Bit-Zugriffe im-
plementiert ist. Die Datenrate auf dem I2C-Bus wurde mit 400kHz gewahlt, da Chips
mit gleicher Spezifikation als Slaves eingesetzt wurden. Die Bridge unterstutzt einen 10
Bit-Adressierungsmodus, der der erweiterten I2C-Spezifikation entspricht. Dieser Modus
ist abwartskompatibel zum 7 Bit-Adressierungsmodus, so dass hier Chips beider Adres-
sierungsarten eingesetzt werden konnten. Ein Konfigurations-Manager, der die Bridge
benutzen soll, wurde in dieser Version in die parallel entwickelte Software integriert. Die-
ser Teil, sowie die I2C Bridge sollen in einer nachsten Version des VGA-Systems durch
einen eingebetteten Xilinx MicroBlaze-Core vollstandig ersetzt werden. Neben der reinen
Bridge-Funktion und dem Konfigurations-Management kann der MicroBlaze Prozessor
auch fur weitere Aufgaben, wie z.B. einen geplanten Textmodus, eingesetzt werden.
2.4 VGA-Core (vga enh top.v)
Eine schematische Darstellung des Cores ist in Abbildung 2.3 abgebildet. Zur Verwen-
dung im System musste der VGA-Core modifiziert werden, da einige Konstrukte im
Core nicht auf die Zielarchitektur abgebildet werden konnten oder in der Simulation
nicht funktionierten. Die Anderungen im Code wurden mit dem Kommentar”sct-mod“
gekennzeichnet. Die der Implementierung zugrundeliegende Version ist am 01.08.2003
auf www.opencores.org veroffentlicht worden, die Anderungen der aktuellen Version vom
23.09.2003 sind nicht berucksichtigt, enthalten allerdings nach einer”ersten Durchsicht“
keine gravierenden Anderungen. Die Anderungen beziehen sich vor allem auf die nach-
folgenden Punkte:
Der Line-Fifo, welcher die Umsetzung auf die Pixeltaktdomane bewerkstelligt, wur-
de aufgrund von Problemen bei der Simulation durch ein Blackboxmodul aus dem
Xilinx CoreGenerator ersetzt. Da der FIFO durch ein Dual-Ported-Memory reali-
siert wurde, wurde auch generic dpram.v uberflussig.
2.5. Wishbone-Matrix (wb interconn.vhd) 8
Abbildung 2.3: Schematische Darstellung des VGA-Cores
Die Implementierung der Single-Ported-Memorys, realisiert durch generic spram.v,
welche fur die Implementierung der Color-Lookuptable(vga csm pb.v) und des Cur-
sorBuffers(vga curproc.v) zustandig waren, wurden ebenfalls durch Blackboxmodu-
le ersetzt, die direkt in den entsprechenden Modulen instanziert werden.
Die Funktionen in vga fifo.v, welche eine allgemeine Implementierung des FIFOs er-
lauben, wurden aufgrund von Problemen im Synthesetool FC2 durch entsprechende
spezielle Varianten ersetzt.
Mehrere Anderungen in vga pgen.v und vga wb master.v, um Probleme mit nicht
vorhandenen Signalen in Simulation und Synthese zu beheben.
Die Hardwarecursor sowie der Cursorschatten konnen in vga defines.v durch entspre-
chende Verilog-Preprocessordirektiven in die Synthese eingebunden werden. Da es in den
Sythesetools teilweise Probleme mit dem Gultigkeitsbereich dieser defines gab, wurde
diese in den entsprechenden Modulen nochmals gesetzt.
2.5 Wishbone-Matrix (wb interconn.vhd)
Die Wishbone-Matrix, dargestellt in Abbildung 2.4 (in der Wishbone-Spezifikation wird
ein solches System auch Wishbone-Interconnect-Matrix genannt), stellt eine exklusive
Verbindung zwischen einem Master und einem Slave her. Es konnen mehrere Master-Slave
Verbindungen gleichzeitig existieren, solange die beteiligten Master-Slave Paare disjunkt
2.5. Wishbone-Matrix (wb interconn.vhd) 9
SDRAM
Slave
0
VGA
Slave
I2C
Slave
VGA
Master
Localbus
Master
0
0
0
0
Abbildung 2.4: Darstellung der Wishbone-Interconnectmatrix
sind. In diesem System wurde der Ansatz der Wishbonematrix vor allem aufgrund des
vereinfachten Routings im Vergleich zur Shared-Bus Implementierung gewahlt. Da der
Prozess der Arbitrierung aufgrund der Implementierung als Moore-Automat eine Latenz
von einem Takt aufweist, sind alle Master, die keine Bursts unterstutzen (hier nur der
Lokalbusmaster), zur Verkurzung des kritischen Pfades durch ein Register gebuffert.
3. Simulation, Synthese und
Place&Route
3.1 Simulation
Die Simulation des System wurde mit Cadence durchgefuhrt. Fur die Simulation ist es
notwendig, eine Verhaltenbeschreibung fur die Blackboxmodule zur Verfugung zu haben.
Fur alle Module, die mit dem Xilinx CoreGenerator erzeugt wurden, ist dieses moglich,
da entsprechende Modelle in den entsprechenden Modulen instanziert werden, und im
CoreGeneratorSystem als Sourcen zur Verfugung stehen. Um auch Verhaltsbeschreibun-
gen fur die verwendeten DLLs und Buffer zu haben, ist die Verwendung der Unisim-
Libary notwendig. Da diese nicht uberall zur Verfugung steht, wurde eine auf die fur das
System benotigten Komponenten reduzierte Version der Unisim-Libary erstellt, die den
Sourcen beliegt (unisim VCOMP.vhd, unisim vital.vhd, unisim vpkg.vhd). Neben den
Verhaltensmodellen der CoreGeneratorModelle und den Unisim-Sourcen ist weiterhin ein
Modell zur Simulation des SDRAM und ein Modell zur Simulation eines I2C-Slaves vor-
handen, welches in den Testbenchen (vga cp tb2.vhd und vga cp tb3.vhd) entsprechend
eingebunden wird. Da die Unisim-Libary ein eigenes Package erstellt, das von anderen
Komponenten dann benotigt wird, ist es notwendig, zunachst die oben genannten Entitys
zu ubersetzen, um im Verzeichnis”work“ ein entsprechendes Package zur Verfugung zu
haben (die Option”-smartorder“ hilft hier nicht). Die Testbench vga tb 2.vhd initiali-
siert das System uber das Lokalbusinterface und simuliert danach einen I2C-Zugriff. Die
Testbench vga tb 3.vhd initialisiert das System und schreibt danach eine Bitfolge, welche
in der Datei testv2 gespeichert ist, in das SDRAM. Nach dem anschliessenden Auslesen
der Werte wird der VGA-Core aktiviert. Dieser gibt die Werte entsprechend der aktu-
ellen Konfiguration aus. Alle fur die Simulation benotigten Dateien sind im Verzeichnis
”Simulation“ zu finden.
3.2 Synthese
Die Synthese wurde mit den Tools Synopsys FPGA Compiler II in den Versionen 3.6.1
und 3.7.2 sowie Synplicity Synplify Pro 7.3.0 durch gefuhrt. Als Zielarchitektur wurde
ein VirtexE600-8 in BG560-Bauform verwendet. Bei Verwendung des FC2 ist darauf zu
achten, dass die Option”Merge Duplicate Registers“ deaktiviert und die Treiberstarke
der Ausgangsbuffer auf”F 24 LVTTL“ eingestellt ist, um ein moglichst gunstiges Ti-
mingverhalten zu erzielen. Bei Verwendung von Synplify sind die Optionen”Retiming“
sowie”Pipelining“ zu aktivieren. Optimiert wurde in beiden Fallen auf Zeit, die Vorgabe
fur alle Takte ist 80 MHz. Als Toplevel-Modul ist allen Fallen vga cp.v zu verwenden.
Alle fur die Synthese benotigten Dateien sind im Verzeichnis”Synthese“ zu finden.
10
3.3. Place and Route 11
3.3 Place and Route
Als Place and Route Tool wurde vorwiegend ISE Foundation 5.2.03i verwendet. Neben
dem EDF-File, welches aus der Synthese gewonnen wurde, mussen noch die Module
eingebunden werden, die in der Sythese als Blackboxmodule eingesetzt wurden. Dieses
geschieht in Form von EDN-Files. Diese sind im ISE-Verzeichnis zu finden. Weiterhin ist
die Verwendung eines UCF-Files unabdingbar, um die Zuordnung der Pads zu den Pins zu
gewahrleisten und Timing-Constrains zu setzen. Aufgrund unterschiedlicher Netzlisten-
Formate verwenden FC2 und Synplify auch unterschiedliche Formate in den UCF-Files.
Die entsprechenden UCF-Files sind im Verzeichnis UCF zu finden. Weiterhin kann noch
angemerkt werden, dass sich die Synthese mit Synplify sehr viel angenehmer als mit FC2
gestaltet, was vor allem an den ausfuhrlicheren Warnungen und Anmerkungen liegt. In
Tabelle 3.1 sind die Ergebnisse der verschiedenen Synthesetools gegenubergestellt. Zum
weiteren Vergleich wurde ein kompletter XST-Flow mit ISE 6.1.01i durchgefuhrt, bei
dem Synthese und Place and Route in einem Werkzeug kombiniert sind. Generell ist zu
beachten, dass die maximale Wishbonefrequenz LCLK23 vom Place and Route Tool nicht
richtig ausgegeben wird, da hier auch sogenannte”False-Paths“ berucksichtigt werden,
also Pfade, welche in der wirklichen Schaltung nie aktiviert werden. Zur Ermittlung der
maximalen Frequenz ist somit eine Betrachtung der entsprechenden Pfade erforderlich.
In allen Fallen wurde das Place and Route Tool so parametrisiert, dass die Schaltung auf
Geschwindigkeit optimiert wurde.
Synplify FC2-3.6.1 FC2-3.7.2
ISE 5.2ISE 6.1 XST
Große EDF-File 4700119 7817588 6774723 -
max. LCLK13 79,051 75,826 54,110 63,691
max. LCLK23 52,083 50,813 51,052 55,624
max. CLK DB 72,595 74,750 92,859 93,826
Slice FFs 2192 3467 3455 1987
LUTs 3312 6099 5170 3482
Total equiv. Gate-Count 641484 651261 643299 637077
Block-RAMs 34 34 34 34
GCLKs 3 3 3 3
GCLKIOBs 4 4 4 4
DLLs 3 3 3 3
Tabelle 3.1: Vergleich der Synthesetools
4. Gesamtsystem
4.1 Takte und Adressierung
Die Kommunikation der einzelnen Komponeten erfolgt uber das Wishbone-Protokoll.
Zum Betrieb des System sind drei verschiedene Taktfrequenzen notig, die Lokalbusfre-
quenz, die Wishbonefrequenz und die Pixelfrequenz. Die Taktfrequenzen sind prinzipiell
unabhangig voneinander wahlbar, allerdings muss gewahrleistet werden, dass der Wish-
bonebus die fur den VGA-Core bei gegebener Pixelfrequenz notwendige Datenrate trans-
portieren kann. In Tabelle 4.1 sind die Taktfrequenzen, Signalnamen und Taktquellen
zusammengefasst.
Signalname Quelle
Lokalbustakt LCLK13 RAPTOR-Systemtakt (linker Sockel)
Wishbonetakt LCLK23 2. Taktsockel des Raptorboards (rechter Sockel)
Pixeltakt CLK DB Sockel auf DB-VS
Tabelle 4.1: Taktsignale des Systems
Die Frequenzen fur Wishbonetakt und Pixeltakt werden vom DB-VGA generiert und
auf die entsprechenden Sockel zuruckgefuhrt. Der Wishbone und Pixeltakt werden dabei
zunachst uber eine DLL (Delay-Locked-Loop) vom Takteingang entkoppelt. Dieses ist
moglich, da auf diese Bereiche des Systems keine Signale von ausserhalb des FPGAs
einwirken (keine externen Eingange). Realisiert wird dieses in der Entity clock-ctrl.vhd,
gleichzeitig wird auch das Taktsignal fur den Ausgang zum DVI-Transmitter generiert
und die Taktruckfuhrung des SDRAM in das System eingebunden. Dadurch wird erreicht,
dass die Bausteine des SDRAM synchron zum Wishbonetakt angesprochen werden. Das
System arbeitet intern mit 32 Bit-Adressen, wobei die Register der einzelnen Module
sowie des SDRAMs in diesem Speicherbereich aufgeteilt sind. In Tabelle 4.2 sind die
Bereiche dargestellt.
Die Adressierung erfolgt gemass Wishbone-Spezifikation zwar Byteweise, allerdings sind
nur 32 Bit-Worte als Datum zugelassen, wodurch sich die Sprunge in den Adressen er-
klaren. Da der I2C-Core intern nur mit 8 Bit-Worten arbeitet, wird beim Zugriff auf
diesen nur das unterste Byte des 32 Bit-Datenwortes ausgewertet. Beim lesendem Zugriff
auf die Bridge werden die obersten Stellen als Nullen gelesen, beim Schreibem igno-
riert. Der Zugriff auf das System durch ein Host-System erfolgt durch den Lokalbus des
RAPTOR2000 Systems. Auf diesem ist fur ein Daughterboard allerdings nur eine 21
Bit-Adresse vorgesehen. Um trotzdem den gesamten Adressbereich des Moduls anspre-
chen zu konnen, werden die oberen 12 Bit der 32 Bit-Adresse in einem Register der
12
4.1. Takte und Adressierung 13
Modul Adressbereich Beschreibung
SDRAM-Contr. 0x00000000 - 0x07FFFFFC 128 MB - SDRAM
SDRAM-Contr. 0x08000000 - 0x5FFFFFFC -reserved-
SDRAM-Contr. 0x60000000 Parameterregister 1
SDRAM-Contr. 0x60000004 Parameterregister 2
SDRAM-Contr. 0x60000008 - 0x7FFFFFFC -reserved-
VGA-Core 0x80000000 Controll-Register
VGA-Core 0x80000004 Status-Register
VGA-Core 0x80000008 Horizontal Timing Register
VGA-Core 0x8000000C Vertikal Timing Register
VGA-Core 0x80000010 Horiz. + Vert. Length Register
VGA-Core 0x80000014 SDRAM Base Addr. Register A
VGA-Core 0x80000018 SDRAM Base Addr. Register B
VGA-Core 0x8000001C - 0x8000002C -reserved-
VGA-Core 0x80000030 Cursor0 X,Y Register
VGA-Core 0x80000034 Cursor0 Base Address Register
VGA-Core 0x80000038 - 0x8000003C -reserved-
VGA-Core 0x80000040 - 0x8000005C Cursor0 Color Register
VGA-Core 0x80000060 - 0x8000006C -reserved-
VGA-Core 0x80000070 Cursor1 X,Y Register
VGA-Core 0x80000074 Cursor1 Base Address Register
VGA-Core 0x80000078 - 0x8000007C -reserved-
VGA-Core 0x80000080 - 0x8000009C Cursor1 Color Register
VGA-Core 0x800000A0 - 0x800007FC -reserved-
VGA-Core 0x80000800 - 0x80000FFC Color Lookup Table
VGA-Core 0x80001000 - 0xBFFFFFFC -reserved-
I2C-Core 0xC0000000 Prescaler-Low Byte
I2C-Core 0xC0000004 Prescaler-High Byte
I2C-Core 0xC0000008 Prescaler-Controll Byte
I2C-Core 0xC000000C Transmit/Recieve Register
I2C-Core 0xC0000010 Command/Status Register
I2C-Core 0xC0000014 - 0xFFFFFFFC -reserved-
Tabelle 4.2: 32 Bit-Adressbereich des Systems
Lokalbus/Wishbone Bridge gespeichert, und die eigentliche Adresse beim Zugriff durch
den Host generiert. In Tabelle 4.3 ist der Zusammenhang dargestellt. Mit dem Pagere-
gister ist es so moglich, den gesamten Adressraum des Systems zu adressieren. Es wird
eine Pagegroße von 1 MB verwendet. Im restlichem Adressbereich des Lokalbus werden
wichtige Bereiche des Systems gespiegelt, um auf diese ohne erneutes Schreiben des Page-
registers zugreifen zu konnen. Beim Beschreiben des Pageregisters ist zu beachten, dass
nur die oberen 12 Bit des Datenworts ausgewertet werden. Die unteren 20 Bit werden
4.2. Anwendungsbeispiele 14
Adressbereich(Lokalbus) Adressbereich(System) Beschreibung
0x000000 - 0x00FFFC ((Page-Reg20)+Lokalbusadresse) Gesamtes System
0x100000 - 0x100FFC 0x80000000 - 0x80000FFC VGA-Core
0x101000 - 0x101004 0x60000000 - 0x60000004 SDRAM-Parameterreg.
0x101008 - 0x101FFC 0x60000008 - 0x60001FFC -reserved-
0x102000 - 0x102010 0xC0000000 - 0xC0000010 I2C-Core
0x102014 - 0x1FFFF8 0x80000000 - 0x801FFFF8 -reserved-
0x1FFFFC - Pageregister
Tabelle 4.3: Adressbereich des Lokalbus
als Nullen gelesen und beim Schreiben ignoriert. Uber die I2C-Bridge des Systems wer-
den die ICs des DB-VGA parameterisiert und gesteuert. Der I2C-Core ubernimmt dabei
die Generierung der I2C-Signale, allerdings muss der Ablauf des I2C-Zugriffs uber das
Hostsystem gesteuert werden (siehe dazu auch die Beispiele im nachsten Kapitel oder
die Datenblatter im Anhang). Das I2C-Protokoll ist dabei so aufgebaut, dass zunachst
die Slaveadresse, dann die Adresse innerhalb des Slaves, welche 8 oder 16 Bit breit sein
kann, ubertragen wird. Danach werden die entsprechenden Daten geschrieben oder ge-
lesen. In Tabelle 4.4 sind die Adressen der I2C-Slaves zusammengefasst. Zur Bedeutung
Slaveadresse IC Beschreibung
0x70 TI - TFP410 DVI-Transceiver write
0x71 TI - TFP410 DVI-Transceiver read
0xA0 Fairchild - FM24C256 EEPROM write
0xA1 Fairchild - FM24C256 EEPROM read
0xD2 Cypress - CY22395 PLL-Chip write
0xD3 Cypress - CY22395 PLL-Chip read
Tabelle 4.4: I2C-Slaveadressen
der Subadressen innerhalb der Module wird auf die Datenblatter der IC-Hersteller oder
die Anwendungsbeispiele verwiesen.
4.2 Anwendungsbeispiele
Der VGA-Core ist so aufgebaut, dass es theoretisch moglich ist, jede denkbare Auflosung
darzustellen. Weiterhin existiert scheinbar kein bindender Standard, vielmehr haben sich
verschiedene”Quasi-Standards“ etabliert. In Tabelle A.1 sind die vertikalen und in Ta-
belle A.2 die horizontalen Timinginformationen mit erforderlichen Parametern fur aus-
gewahlte Auflosungen dargestellt. Die erforderlichen Parameter fur die Timing-Register
4.2. Anwendungsbeispiele 15
des VGA-Core (0x80000008 - 0x80000010) ergeben sich dabei aus den Werten fur den
Synchronization-Pulse, den Back-Porch, der Active-Time sowie der Gesamtzeit fur einen
kompletten Bildaufbau bzw. eine Zeile. Der Front-Porch spielt hierbei keine Rolle, da
er sich aus den anderen Werten ergibt. Anzumerken ist noch, dass die Position des Bil-
des durch Variation der Back/Front-Porch-Zeiten (Lines/Pixel) verandert werden kann,
wobei die Summe der beiden Werte allerdings konstant ist.
Zur Veranschaulichung der Zusammenhange wird im folgenden davon ausgegangen, dass
eine Auflosung von 640x480 bei 60Hz dargestellt werden soll. Das Bild soll dabei im
24 Bit-Format (4/3 Datenworte pro 32 Bit-Wort) vorliegen. Nach Tabelle A.2 muss
die Pixelclock CLK DB = 25, 125 MHz betragen. Fur die Wishbonefrequenz werden
LCLK23 = 55 MHz angenommen, die Lokalbusfrequenz LCLK13 beeinflusst das Sys-
tem nicht wesentlich, die Eingangsfrequenz des PLL-Chips betrage 20 MHz. Zunachst
muss das System initialsiert werden.
Initialisierung des Systems
Als erstes ist es nach einem Reset des Systems notwendig, die Parameterregister des
SDRAM (0x60000000-0x60000004) neu zu setzen. Die Berechnungen, welche hierzu not-
wendig sind, finden sich im Handbuch des SDRAM-Controllers. In Tabelle 4.5 sind diese
nochmals zusammengefasst. In der letzten Spalte ist der Wert der benotigten Konstanten
fur das Infinieon-SDRAM auf dem DB-VS angegeben, auf welchem das System lauft.
Parameter Bezeichnung Berechnung fur System
CL CAS Latency Datenblatt 2
RCD RAS to CAS delay tRCD · fLCLK23 tRCD = 20 ns
RC Row Active Time tRC · fLCLK23 tRC = 70 ns
RP Row Precharge Time tRP · fLCLK23 tRP = 20 ns
WA Write Access Time TWR + tRP · fLCLK23 − 1 TWR = 2
BL Burst Length - 0x01
NZeilen = 8192REF PERIOD Refreshperiode tREF
NZeilen· fLCLK23 tREF = 64ms
PAGE SIZE Pagegrosse - 0x400
Tabelle 4.5: Parameter fur Initialisierung des SDRAM
Mit diesen Parametern ergibt sich:
Adresse Lokalbusadresse Wert
0x60000000 0x101000 0x00001E4A
0x60000004 0x101004 0x004001AD
4.2. Anwendungsbeispiele 16
Es ist wichtig, dass diese Register nach jedem Reset neu initialisiert werden, bevor das
SDRAM mit Daten gefullt wird. Weiterhin muss nach jedem Reset der I2C-Core neu
initialisiert werden. Der Wert des Prescalers errechnet sich nach Gleichung 4.1.
Prescaler =
⌈fLCLK23
5 · fI2C
⌉− 1 (4.1)
Der Prescaler wird in ein Low- und ein High-Byte zerlegt. Es wird dabei fI2C = 400KHz
gesetzt. Es ergibt sich somit:
Adresse Lokalbusadresse Wert
0xC0000000 0x102000 0x0000001B
0xC0000004 0x102004 0x00000000
0xC0000008 0x102008 0x00000080
Durch den Schreibvorgang an Adresse 0xC0000008 wird der Core aktiviert. Es ist wichtig,
dass Anderungen am Prescaler nur im deaktivierten Zustand durchgefuhrt werden.
Parametrisierung des Systems
Die in letzen Kapitel beschriebene Initialisierung ist nur einmal nach einem Reset er-
forderlich. Weiterhin muss das System bei einem Auflosungswechsel neu parametrisiert
werden. Dieses heisst vor allem, dass die Register des PLL und DVI-Chips neu gesetzt,
und die Register des VGA-Cores geandert werden mussen. Zunachst wird der Ablauf
eines I2C-Schreibzugriffs kurz allgemein dargestellt:
Schritt Aktion Adresse
1 Schreibe I2C-Adresse-Gerateadresse (write) 0xC000000C
2 Setze Write-Bit und Start-Bit 0xC0000010
3 Warte auf TIP-Bit 0xC0000010
4 Lese ACK-Bit 0xC0000010
5 Schreibe I2C-Registeradresse 0xC000000C
6 Setze Write-Bit 0xC0000010
7 Warte auf TIP-Bit 0xC0000010
8 Lese ACK-Bit 0xC0000010
9 Schreibe Datum 0xC000000C
10 Setze Write-Bit und Stop-Bit 0xC0000010
11 Warte auf TIP-Bit 0xC0000010
12 Lese ACK-Bit 0xC0000010
Der Zugriff erfolgt also sequenziell, wobei das TIP-Bit wahrend eines Transfers standig
gelesen werden muss, um das Ende zu erkennen (Polling). Fur weitergehende Informa-
tionen sei auf die entsprechende Dokumention des I2C-Cores oder der betroffenen ICs
4.2. Anwendungsbeispiele 17
verwiesen. Zur Vollstandigkeit wird nun noch ein I2C-Lesezugriff vorgestellt. Der Ablauf
unterscheidet sich vor allem dadurch vom Schreibzugriff, dass eine Restart-Condition
erforderlich wird:
Schritt Aktion Adresse
1 Schreibe I2C-Adresse-Gerateadresse (write) 0xC000000C
2 Setze Write-Bit und Start-Bit 0xC0000010
3 Warte auf TIP-Bit 0xC0000010
4 Lese ACK-Bit 0xC0000010
5 Schreibe I2C-Registeradresse 0xC000000C
6 Setze Write-Bit 0xC0000010
7 Warte auf TIP-Bit 0xC0000010
8 Lese ACK-Bit 0xC0000010
9 Schreibe I2C-Adresse-Gerateadresse (read) 0xC000000C
10 Setze Write-Bit und Start-Bit 0xC0000010
11 Warte auf TIP-Bit 0xC0000010
12 Lese ACK-Bit 0xC0000010
13 Setze Read-Bit und Stop-Bit und Ack-Bit 0xC0000010
14 Warte auf TIP-Bit 0xC0000010
15 Lese Datum 0xC0000010
Den zur Programmierung des PLL-Chips erforderlichen Bitstream kann man am einfachs-
ten mit der CyClocksRT-Software erzeugen, wobei der Pixeltakt CLK DB vom zweiten
PLL erzeugt wird. Da die einzelnen Werte zur Konfiguration in verschiedenen Registern
liegen und somit nur sequentiell aktualisiert werden konnen, ist es erforderlich, zunachst
alle Register zu schreiben und dann das entsprechende Enable-Bit des PLLs zu setzen
(siehe Datenblatt des CY22395). Vor einer Rekonfiguration ist ebenfalls das Deaktiviern
des zweiten PLLs erforderlich. In der folgenden Tabelle sind alle Bytes dargestellt, die
zur Rekonfiguration erforderlich sind; Die I2C-Adresse ist dabei 0xD2:
Sub-Adresse Wert Kommentar
0x13 0x24 PLL2 deaktivieren
0x0A 0x0A Divider setzen
0x0B 0x00 Divider setzen
0x0E 0x06 Phase einstellen
0x0F 0x50 Treiberstarke einstellen
0x10 0x57 Treiberstarke einstellen
0x11 0x02 PLL2 Q setzen
0x12 0x23 PLL2 P setzen
0x13 0x64 PLL2 aktivieren
Weiterhin ist es erforderlich, den DVI-Transceiver zu aktivieren. Hier reicht das Schreiben
eines einzelnen Bytes (siehe Datenblatt TFP410); Die I2C-Adresse ist hierbei 0x70:
4.2. Anwendungsbeispiele 18
Sub-Adresse Wert Kommentar
0x13 0x24 PLL2 deaktivieren
Nachdem die Bildinformation in den SDRAM geschrieben worden ist (bei 640x480x24
ergibt sich eine Datensatzgroße von 900 KB, ein Wechsel der Page ist somit nicht erfor-
derlich), kann der VGA-Core parameterisiert und aktiviert werden. Die dazu notwendigen
Parameter konnen direkt aus Tabellen A.1 und A.2 entnommen werden. Damit ergeben
sich die folgenden Werte:
Adresse Lokalbusadr. Wert Kommentar
0x80000000 0x100000 0x00000580 Kontrollregister setzen
0x80000008 0x100008 0x5F2F027F horizontales Timing
0x8000000C 0x10000C 0x011E01DF vertikales Timing
0x80000010 0x100010 0x031F020B gesamte Langen
0x80000000 0x100000 0x00000581 VGA-Core aktivieren
Nach dem Setzen des letzten Wertes fangt das System an, die Bildinformationen, begin-
nend mit Adresse 0x00000000 einzulesen und auszugeben. Fur weitere Fahigkeiten des
System sei auf die entsprechende Dokumentation verwiesen, da dieses Beispiel, wie oben
bereits angemerkt, nur zur Erlauterung der Zusammenhange dienen kann.
5. Hardware und Software
5.1 DVI Adapter Modul
Das in diesem Projekt entwickelte DVI Adapter Modul besteht im Wesentlichen aus den
Komponenten
TFP410 DVI Transceiver
CYP22395 PLL Programmable Clock Generator
256Kbit I2C EEPROM (FM24C256)
Eine Darstellung der ersten Version der Platine ist in Abbildung 5.1 gegeben.
Abbildung 5.1: Platine DB-VGA
19
5.2. Software VGA Control v1.0 20
Zur Ausgabe des vom FPGA erzeugten Datenstroms wird ein DVI-Transceiver eingesetzt.
Diser erzeugt ein DVI-konformes, serielles, differentielles Signal, welches von gangigen
TFT-Monitoren angezeigt werden kann.
Die DVI-Buchse ist nur als digitaler Kanal zu nutzen, der analoge Kanal entfallt. Fur
die Erzeugung einer variablen Pixel-Clock, die vom VGA-Core benotigt wird, wird ein
Programmable Clock Generator des Herstellers Cypress (CY22395) benutzt. Der Clock-
Generator erzeugt mit Hilfe von PLLs aus einer Referenzfrequenz eine beliebige andere
Frequenz. Zusatzlich wurde ein 256 kBit-EEPROM vorgesehen, um verschiedene Konfi-
gurationen der Kpmponenten des VGA-Systems abspeichern zu konnen.
Alle Einheiten konnen uber einen I2C-Bus konfiguriert werden. Auf dem Layout wurde
fur jedes Device ein separater I2C-Bus vorgesehen.
Die erste Version der Platine wird links neben dem FPGA Modul aufgesetzt. Sie selbst
kann nicht uber Broadcast oder Lokalbus angesprochen werden.
Uber den Jumper JP1 wird die Referenzspannung fur den Eingangspegel der Daten- und
Clock-Eingange des TFP410 festgelegt. Diese kann wahlweise fest auf 3.3V (Stellung A)
oder auf den Ausgangspegel des FPGAs (Stellung B) gelegt werden.
5.2 Software VGA Control v1.0
Die zum Betrieb des VGA-Systems benotigte Software ist an einem Beispiel in Abbildung
5.2 gezeigt. Dargestellt ist eine Registerkarte zur Auswahl und Definition verschiedener
Hardware-Cursor, welche vom VGA-Core unterstutzt werden.
Die Software bietet auf den einzelnen Registerkarten folgende Funktionen:
Tools
BIT File Download, RESET.
Register View
Im Register-Tab werden alle relevanten und definierbare 32 Bit-Register angezeigt und
konnen manuell aktualisiert werden.
Video Settings
Hier konnen die Details fur den VGA-Core eingestellt werden. Es ist moglich, Presets zu
laden und zu speichern. Zusatzlich konnen hier die Zeiger auf die Color-Lookup-Tables
und die Videobuffer verandert werden, um beispielsweise Doublebuffering zu realisieren.
Picture Load
Auf dem Picture Load-Tab kann man BMP-Dateien an wahlbare Positionen im FPGA-
Modul RAM schreiben.
Hardware Cursor
Hier konnen die beiden vom VGA-Core unterstutzten Hardware-Cursor geladen, konfi-
guriert und getestet werden.
5.2. Software VGA Control v1.0 21
Abbildung 5.2: Screenshot der Steuersoftware fur das VGA-System
Demo
Auf dem Demo-Tab stehen einige fertige Prasentations-Modi zur Verfugung.
Slideshow
Hier konnen Slideshows zusammengestellt werden. Die Bilder werden auf die gewahlte
Auflosung skaliert und anschliessend anzeigt.
Leider konnte die Funktionalitat der Software aufgrund der fehlenden Hardware noch
nicht endgultig getestet werden. Aus diesem Grund sind die Funktionen Picture Load
und Slideshow noch nicht fertiggestellt. In der beigefugten Version der Software sind die
Funktionen zur Ansteuerung des RAPTOR2000 Boards entfernt.
6. Zusammenfassung
Ziel der Projektarbeit war die Entwicklung eines Daughterboards fur Grafikausgabe auf
dem RAPTOR2000 System. Zur Entwicklung konnte auf bereits bestehende Module von
OpenCores zuruckgegriffen werden. Im Rahmen dieser Arbeit wurde zunachst spezifiziert,
welche Grafikmodi das Gesamtsystem, bestehend aus DB-VS und einer Zusatzplatine
(DB-VGA), unterstutzen soll. Diese Spezifikation hat wesentlichen Einfluss auf die Ge-
schwindigkeit, die interne Bussysteme erreichen mussen sowie die Auswahl der verwende-
ten Chips. Anschliessend wurde das Projekt in die Arbeitsbereiche VHDL-Entwicklung,
Softwareentwicklung und PCB Design aufgeteilt. Im Rahmen der VHDL-Entwicklung
wurden eine Localbus-Wishbone Bridge, Bus- und Arbitrierungsstrukturen sowie ein auf
lineare Speicherzugriffe optimierter SDRAM-Controller entwickelt. Zusatzlich mussten
an den OpenCores-Modulen einige Veranderungen vorgenommen werden, da sie nicht
direkt auf die Architektur des eingesetzten FPGA abgebildet werden konnten. Als Er-
gebnis des PCB Design ist eine zusatzliche Platine enstanden, die auf einen freien Steck-
platz neben einer FPGA Platine des RAPTOR2000-Boards aufgesteckt werden muss. Die
zusatzliche Platine enthalt neben der Hardware zur Ansteuerung eines Bildschirms mit
DVI-Anschluss auch den fur unterschiedliche Bildschirmauflosungen notwendigen pro-
grammierbaren Clock-Chip sowie ein EEPROM, in dem verschiedene Konfigurationen
des Daughterboards abgelegt werden konnen. Alle programmierbaren Chips des Daugh-
terboards sind uber einen I2C-Bus an die FPGA-Platine, die den eigentlichen VGA-Core
enthalt, angebunden. Die parallel entstandene Software wurde bereits in dieser ersten
Version mit grafischer Benutzeroberflache ausgelegt. Sie erlaubt die Konfiguration und
den Betrieb des VGA-Systems uber die Lokalbusschnittstelle des RAPTOR2000-Boards.
In dieser Version wird auch das Konfigurations-Management allein uber die Software
realisiert. In der nachsten Stufe der Projektarbeit soll zunaechst das vorhandene Design
in Betrieb genommen werden, was aufgrund eines Fertigungsfehlers im Modul DB-VGA
bis jetzt noch nicht moglich war. Weiterhin soll ein Xilinx MicroBlaze-Prozessor auf das
FPGA implementiert werden, mit welchem, neben der Funktion als Konfigurationsmana-
ger, dann auch die Funktion der I2C-Bridge vollstandig realisiert wird und auch andere
Aufgaben, wie z.B. der Verwaltung eines bisher vom VGA-Core nicht unterstutzten Text-
modus implementiert werden konnen. Weiteres Ziel der nachsten Projektgruppe ist ein
komplettes Redesign des eingesetzen VGA-Core zur Steigerung der Performanz, wobei in
diesem Schritt das gesamte Design VHDL erfolgen soll und auch der oben schon erwahn-
te Textmodus in das Design integiert wird. Die vorhandenen Bussysteme werden dabei
durch leistungsfahigere, an die jeweilige Aufgabe angepasste Bussysteme ersetzt.
22
A. Anhang
A.1 Tabellen
Sync/ Back Active Front
Name TypRefresh
Pol Porch Time PorchGesamt
[Hz] [lines] [lines] [lines] [lines] [lines]
EGA 640x350x70 70 2/neg 60 350 37 449
VGA 640x400x70 70 2/pos 35 400 12 449
VGA 640x480x60 60 2/neg 31 480 11 524
VGA 640x480x72 72 3/neg 28 480 9 520
VESA 640x480x75 75 2/neg 32 480 11 525
VESA 640x480x85 85 3/neg 25 480 1 509
VGA 720x350x70 70 2/neg 59 350 38 449
VGA 720x400x70 70 2/neg 34 400 13 449
SVGA 800x600x56 56 4/neg 14 600 1 619
VESA 800x600x60 60 4/pos 23 600 1 628
VESA 800x600x72 72 6/pos 23 600 37 666
VESA 800x600x75 75 2/pos 21 600 1 624
VESA 800x600x85 85 3/pos 27 600 1 631
VESA 1024x768x60 60 6/neg 29 768 3 806
VESA 1024x768x70 70 6/neg 29 768 3 806
VESA 1024x768x75 75 3/pos 28 768 1 800
VESA 1024x768x85 85 3/pos 36 768 1 808
VESA 1152x864x75 75 3/pos 32 864 1 900
VESA 1152x864x85 85 3/pos 43 864 1 911
VESA 1152x882x70 70 3/pos 44 882 1 930
VESA 1152x882x85 85 3/pos 39 882 1 925
VESA 1280x1024x60 60 3/pos 38 1024 1 1066
VESA 1280x1024x75 75 3/pos 38 1024 1 1066
VESA 1280x1024x85 85 3/pos 44 1024 1 1072
VESA 1600x1200x60 60 3/pos 46 1200 1 1250
VESA 1600x1200x70 70 3/pos 46 1200 1 1250
VESA 1600x1200x75 75 3/pos 46 1200 1 1250
VESA 1600x1200x80 80 3/pos 46 1200 1 1250
VESA 1600x1200x85 85 3/pos 46 1200 1 1250
Tabelle A.1: Zusammenstellung ausgewahlter Timinginformationen des verti-
kalen Bildaufbaus
23
A.1. Tabellen 24
Sync/ Back Active Front
Name TypP-Clock
Pol Porch Time PorchGesamt
[MHz] [pixel] [pixel] [pixel] [pixel] [pixel]
EGA 640x350x70 25.175 96/neg 48 640 16 800
VGA 640x400x70 25.175 96/neg 48 640 16 800
VGA 640x480x60 25.175 96/neg 48 640 16 800
VGA 640x480x72 31.5 40/neg 128 640 24 832
VESA 640x480x75 31.5 96/neg 48 640 16 800
VESA 640x480x85 36 48/neg 112 640 32 832
VGA 720x350x70 28.322 108/neg 54 720 18 900
VGA 720x400x70 28.322 108/neg 54 720 18 900
SVGA 800x600x56 38.1 128/neg 128 800 32 1088
VESA 800x600x60 40 128/pos 88 800 40 1056
VESA 800x600x72 50 120/pos 64 800 56 1040
VESA 800x600x75 49.5 80/pos 160 800 16 1056
VESA 800x600x85 56.25 64/pos 152 800 32 1048
VESA 1024x768x60 65 136/neg 160 1024 24 1344
VESA 1024x768x70 75 136/neg 144 1024 24 1328
VESA 1024x768x75 78.75 96/pos 176 1024 16 1312
VESA 1024x768x85 94.5 96/pos 208 1024 48 1376
VESA 1152x864x75 108 128/pos 256 1152 64 1600
VESA 1152x864x85 128.94 224/pos 224 1152 64 1664
VESA 1152x882x70 94.5 96/pos 200 1152 32 1480
VESA 1152x882x85 121.5 128/pos 232 1152 64 1576
VESA 1280x1024x60 108 112/pos 248 1280 48 1688
VESA 1280x1024x75 135 144/pos 248 1280 16 1688
VESA 1280x1024x85 157.5 160/pos 240 1280 48 1728
VESA 1600x1200x60 162 192/pos 304 1600 64 2160
VESA 1600x1200x70 189 192/pos 304 1600 64 2160
VESA 1600x1200x75 202.5 192/pos 304 1600 64 2160
VESA 1600x1200x80 216 192/pos 304 1600 64 2160
VESA 1600x1200x85 229.5 192/pos 304 1600 64 2160
Tabelle A.2: Zusammenstellung ausgewahlter Timinginformationen des hori-
zontalen Bildaufbaus
A.1. Tabellen 25
Name Bauteil Bauform Lieferant
U1 TFP410
U2 IC Sockel DIP-8
U3 CY22935
C1 47 µF Elko MILF.B
C2 47 µF Elko MILF.B
C3 47 µF Elko MILF.B
C4 47 µF Elko MILF.B
C5 100 nF 0603
C6 100 nF 0603
C7 100 nF 0603
C8 100 nF 0603
C9 100 nF 0603
C10 100 nF 0603
C11 100 nF 0603
C12 100 nF 0603
C13 100 nF 0603
C14 100 nF 0603
CON1 SMA Connector 112-3794 RS-Components
CON2 SMA Connector 112-3794 RS-Components
DVI CON Molex 9014J
JP1 3 polige Stiftleiste
L1 Ferrit 300 Ω bei 100 MHz 0805 RK 300 V
L2 Ferrit 300 Ω bei 100 MHz 0805 RK 300 V
L3 Ferrit 300 Ω bei 100 MHz 0805 RK 300 V
L4 Ferrit 300 Ω bei 100 MHz 0805 RK 300 V
L5 Ferrit 300 Ω bei 100 MHz 0805 RK 300 V
P1 Mictor 228 Steckerleiste
P2 Mictor 228 Steckerleiste
Q1 QuarzSockel DIP-8
R1 Pullup 10 kΩ 0603
R2 Pullup 10 kΩ 0603
R3 Pullup 10 kΩ 0603
R4 Pullup 10 kΩ 0603
R5 Pullup 10 kΩ 0603
R6 Pullup 10 kΩ 0603
Tabelle A.3: Bestuckungsliste
A.1. Tabellen 26
Name Bauteil Bauform Lieferant
R7 47 Ω 0603
R8 47 Ω 0603
R9 47 Ω 0603
R10 Referenz 510 Ω 0603
R11 Pullup 10 kΩ 0603
R12 Pullup 10 kΩ 0603
R13 Pulldown 10 kΩ 0603
R14 Pulldown 10 kΩ 0603
R15 Pulldown 10 kΩ 0603
R16 Pulldown 10 kΩ 0603
R17 wahlweise Bestuckung (< 47 Ω) 0603
R18 wahlweise Bestuckung (< 47 Ω) 0603
R19 wahlweise Bestuckung (< 47 Ω) 0603
R20 wahlweise Bestuckung (< 47 Ω) 0603
R21 wahlweise Bestuckung (< 47 Ω) 0603
R22 wahlweise Bestuckung (< 47 Ω) 0603
R23 wahlweise Bestuckung (< 47 Ω) 0603
R24 wahlweise Bestuckung (< 47 Ω) 0603
S1 SWITCH DIP 4
Tabelle A.4: Bestuckungsliste
A.2. Schematic 27
A.2 Schematic
1
1
2
2
3
3
4
4
L L
K K
J J
I I
H H
G G
F F
E E
D D
C C
B B
A A
D1
D2
D3
D4
D5
D6
D7
D8
D9
D10
D11
D12
D13
D14
D15
D16
D17
D18
D19
D20
D21
D22
D23
D24
D25
D26
D27
D28
D29
D30
D31
D32
D33
D34
D35
D36
D37
D38
D39
D40
D41
D42
D43
D44
D45
D46
D47
D48
D49
D50
D51
D52
D53
D54
D55
D56
D57
D58
D59
D60
D61
D62
D63
D64
D65
D66
D67
D68
D69
D70
D71
D72
D73
D74
D75
D76
D77
D78
D79
D80
D81
D82
D83
D84
D85
D86
D87
D88
D89
D90
D91
D92
D93
D94
D95
D96
D97
D98
D99
D100
D101
D102
D103
D104
D105
D106
D107
D108
D109
D110
D111
D112
D113
D114 D 115D 116D 117D 118D 119D 120D 121D 122D 123D 124D 125D 126D 127D 128D 129D 130D 131D 132D 133
D 134D 135D 136D 137D 138D 139D 140D 141D 142D 143D 144D 145D 146D 147D 148D 149D 150D 151D 152
D 153D 154D 155D 156D 157D 158D 159D 160D 161D 162D 163D 164D 165D 166D 167D 168D 169D 170D 171
MIC
TO
R 2
28A
BD
E
D 172D 173D 174D 175D 176D 177D 178D 179D 180D 181D 182D 183D 184D 185D 186D 187D 188D 189D 190
D 209
D 191D 192D 193D 194D 195D 196D 197D 198D 199D 200D 201D 202D 203D 204D 205D 206D 207D 208
D 227D 228
D 210D 211D 212D 213D 214D 215D 216D 217D 218D 219D 220D 221D 222D 223D 224D 225D 226
FC
P1
D1
D2
D3
D4
D5
D6
D7
D8
D9
D10
D11
D12
D13
D14
D15
D16
D17
D18
D19
D20
D21
D22
D23
D24
D25
D26
D27
D28
D29
D30
D31
D32
D33
D34
D35
D36
D37
D38
D39
D40
D41
D42
D43
D44
D45
D46
D47
D48
D49
D50
D51
D52
D53
D54
D55
D56
D57
D58
D59
D60
D61
D62
D63
D64
D65
D66
D67
D68
D69
D70
D71
D72
D73
D74
D75
D76
D77
D78
D79
D80
D81
D82
D83
D84
D85
D86
D87
D88
D89
D90
D91
D92
D93
D94
D95
D96
D97
D98
D99
D100
D101
D102
D103
D104
D105
D106
D107
D108
D109
D110
D111
D112
D113
D114 D 115D 116D 117D 118D 119D 120D 121D 122D 123D 124D 125D 126D 127D 128D 129D 130D 131D 132D 133
D 134D 135D 136D 137D 138D 139D 140D 141D 142D 143D 144D 145D 146D 147D 148D 149D 150D 151D 152
D 153D 154D 155D 156D 157D 158D 159D 160D 161D 162D 163D 164D 165D 166D 167D 168D 169D 170D 171
MIC
TO
R 2
28A
BD
E
D 172D 173D 174D 175D 176D 177D 178D 179D 180D 181D 182D 183D 184D 185D 186D 187D 188D 189D 190
D 209
D 191D 192D 193D 194D 195D 196D 197D 198D 199D 200D 201D 202D 203D 204D 205D 206D 207D 208
D 227D 228
D 210D 211D 212D 213D 214D 215D 216D 217D 218D 219D 220D 221D 222D 223D 224D 225D 226
FC
P2
MOD1REQ1MOD1GNT1
MOD1CS1#
ADS#W/R#
LCLK13
LRESET#
READY#
LINT#
BLAST#
MOD1EOT#
D0D1D2D3D4D5D6D7D8D9D10D11D12D13D14D15D16D17D18
D19D20D21D22D23D24D25D26D27
A2A3A4A5A6A7A8A9A10A11A12A13A14A15A16A17A18A19A20
A21A22A23A24A25A26A27A28A29A30A31
WAIT#
BUSY#WRITECONF_CS
MOD1DREQ0#DACK0#
BE0#BE1#BE2#BE3#
LCLK23
MOD1CONFLED
BROAD61BROAD62BROAD63BROAD64BROAD65BROAD66BROAD67BROAD68BROAD69
BROAD70BROAD71BROAD72BROAD73BROAD74
D28D29D30D31
CTRL2MOD1_0CTRL2MOD1_1CTRL2MOD1_2CTRL2MOD1_3
BROADSRAMCS#SA0/BROAD0SA1/BROAD1SA2/BROAD2SA3/BROAD3SA4/BROAD4SA5/BROAD5SA6/BROAD6SA7/BROAD7SA8/BROAD8SA9/BROAD9SA10/BROAD10SA11/BROAD11SA12/BROAD12SA13/BROAD13SA14/BROAD14
SA15/BROAD15SA16/BROAD16SD0/BROAD17SD1/BROAD18SD2/BROAD19SD3/BROAD20SD4/BROAD21SD5/BROAD22SD6/BROAD23SD7/BROAD24SD8/BROAD25SD9/BROAD26SD10/BROAD27SD11/BROAD28SD12/BROAD29SD13/BROAD30SD14/BROAD31SD15/BROAD32SD16/BROAD33
SD17/BROAD34SD18/BROAD35SD19/BROAD36SD20/BROAD37SD21/BROAD38
SD22/BROAD39SD23/BROAD40SD24/BROAD41SD25/BROAD42SD26/BROAD43SD27/BROAD44SD28/BROAD45SD29/BROAD46SD30/BROAD47SD31/BROAD48SD32/BROAD49SD33/BROAD50
SD34/BROAD51SD35/BROAD52SBE0#/BROAD53SBE1#/BROAD54SBE2#/BROAD55SBE3#/BROAD56SCLK/BROAD57SADS#/BROAD58SR/W#/BRAOD59CNTEN#/BROAD60
MOD1BREQ#
TDOTDI
TCKTMS
INITCCLKDONE
CONF_D0/DIN
PROGRAM
LEFT_0LEFT_1LEFT_2LEFT_3LEFT_4LEFT_5LEFT_6LEFT_7LEFT_8LEFT_9LEFT_10LEFT_11LEFT_12LEFT_13LEFT_14LEFT_15LEFT_16LEFT_17LEFT_18
LEFT_19LEFT_20LEFT_21LEFT_22LEFT_23LEFT_24LEFT_25LEFT_26LEFT_27LEFT_28LEFT_29LEFT_30LEFT_31LEFT_32LEFT_33LEFT_34LEFT_35LEFT_36LEFT_37
LEFT_38LEFT_39LEFT_40LEFT_41LEFT_42LEFT_43LEFT_44LEFT_45LEFT_46LEFT_47LEFT_48LEFT_49LEFT_50LEFT_51LEFT_52LEFT_53LEFT_54LEFT_55LEFT_56
LEFT_57LEFT_58LEFT_59LEFT_60LEFT_61LEFT_62LEFT_63LEFT_64LEFT_65LEFT_66LEFT_67LEFT_68LEFT_69LEFT_70LEFT_71LEFT_72LEFT_73LEFT_74LEFT_75
LEFT_76LEFT_77LEFT_78LEFT_79LEFT_80LEFT_81LEFT_82LEFT_83LEFT_84LEFT_85LEFT_86LEFT_87LEFT_88LEFT_89LEFT_90LEFT_91LEFT_92LEFT_93LEFT_94
LEFT_95LEFT_96LEFT_97LEFT_98LEFT_99
Right_0Right_1Right_2Right_3Right_4Right_5Right_6Right_7Right_8Right_9Right_10Right_11Right_12Right_13Right_14Right_15Right_16Right_17Right_18
Right_19Right_20Right_21Right_22Right_23Right_24Right_25Right_26
Right_28Right_29Right_30Right_31Right_32Right_33Right_34Right_35Right_36Right_37
Right_38Right_39Right_40Right_41Right_42Right_43Right_44Right_45Right_46Right_47Right_48Right_49Right_50Right_51Right_52Right_53Right_54Right_55Right_56
Right_57Right_58Right_59Right_60Right_61Right_62Right_63Right_64Right_65Right_66Right_67Right_68Right_69Right_70Right_71Right_72Right_73Right_74Right_75
Right_76Right_77Right_78Right_79Right_80Right_81Right_82Right_83Right_84Right_85Right_86Right_87Right_88Right_89Right_90Right_91Right_92Right_93Right_94
Right_95Right_96Right_97Right_98Right_99
Left Plug Right Plug
M0M1M2
CONF_D1CONF_D2CONF_D3CONF_D4CONF_D5CONF_D6CONF_D7
+3,3V
Right_27
Sideconnector Shematics
Abbildung A.1: Schematic: Sideconnectoren
A.2. Schematic 28
D D
C C
B B
A A
211
Pow
er
CY2293x
U3B
3 14
APo
wer
CY2293x
U3C
Po
wer
4 8
FM24C256
U2B
TP
ower
26 29
TFP410
U1B
DP
ower
3348
TFP410
U1C
PP
ower
17 18
TFP410
U1D
+3,3VGND
100n
C7
100n
C12
100n
C5
100n
C11
100n
C10
TV
DD
DV
DD
PVD
DC
YV
DD
100n
C6
100n
C9100n
C8
47uF
C2
47uF
C3
47uF
C1
47uF
C4
L5
L2
L3
L4
100n
C14
CAP
C13
L14 8
QUARZOSZI
Q1B
Powersupply
Abbildung A.2: Schematic: Powersupply
A.2. Schematic 29
Right_27
DATA 2- 1
DATA 2+2
DATA 2/4 shield3
DATA 4- 4
DATA 4+ 5
DDC CLOCK6
DDC DATA7
VSync8
DATA 1-9
DATA 1+ 10
DATA 1/3 shield11
DATA 3-12
DATA 3+13
+5 V14GND
15
HPD 16
DATA 0-17
DATA 0+18
DATA 0/5 shield19
DATA 5-20
DATA 5+21
CLOCK shield22
CLOCK+ 23CLOCK- 24
an. REDC1
an. GREENC2
an. BLUEC3
HSyncC4
an. GNDC5
DVI_CON
CLK_C1
XTALOUT5
XTALIN4
XBUF6
CLK_D 7
CLK_B9
CLK_E 8
CLK_A10
SDAT12
SCLK13
S215
OE 16CY2239x
U3A
A01
A1 2
A2 3
SDA5
SCL6
WP7
FM24C256
U2A
DE2
VREF3
HSYNC4
VSYNC5
CTL3/A3/DK36
CTL2/A2/DK27
CTL1/A1/DK18
EDGE/HTPLG9
PD10
MSEN/PO111
ISEL/!RST13
DSEL/SDA14
BSEL/SCL15
TFADJ19
TXC-21
TXC+22
TX0-24
TX0+25
TX1-27
TX1+28
TX2-30
TX2+31
DKEN35
DATA2336DATA2237DATA2138
DATA20 39DATA19 40DATA18
41DATA1742DATA1643
DATA15 44DATA14 45DATA13
46DATA1247DATA1150
DATA10 51DATA9 52DATA8
53DATA754DATA655
IDCK-56
IDCK+57
DATA5 58DATA4 59DATA3
60DATA261DATA162
DATA0 63
TFP410
U1A
10K
R4
10K
R5
+3,3V
47
R7
47
R847
R9
510
R10
CLKA
CLKB
+3,3V
GND
+5V
321
JUMPER3
JP1
R12
R11+3,3V
10K
R1
10K
R2
5
QUARZOSZI
Q1A
GND
10K
R3
10K
R6
+3,3V
Right_84
Rig
ht_
82R
ight
_83
Right_86R17
R18
R19
R20
R21
R22
R23
R24
Right_87Right_88Right_89Right_90
Rig
ht_
91
Rig
ht_
92
Right_39
Right_40
Right_41
Right_42
Right_39
Right_40
Right_41
Right_42
CYVDD
Right_36
Right_25
Right_29Right_31Right_33Right_35Right_37
Right_44Right_45Right_46Right_48Right_50
Right_52Right_54Right_56Right_57Right_59
Right_61Right_63Right_65Right_67Right_69
Right_71Right_73
Righ
t_75
Rig
ht_
76
Rig
ht_
77
Right_79
Right_0Right_2Right_4Right_6Right_8
Right_10
Right_12Right_14Right_16
Right_18Right_19
Right_21
Right_23
1234
8765
SW DIP-4
S1
+3,3VR13
R14
R15
R16
GND
GND
GND
GND
CTR
L2M
OD
1_0
CTR
L2M
OD
1_1
CTR
L2M
OD
1_2
CTR
L2M
OD
1_3
Components
R17 - R24 Brückenwiderstände
Abbildung A.3: Schematic: Komponenten
Abbildungsverzeichnis
1.1 Schematische Darstellung des Gesamtsystems . . . . . . . . . . . . . . . 1
1.2 Schematische Darstellung des VGA-Cores . . . . . . . . . . . . . . . . . . 2
2.1 Bridge Lokalbus Slave auf Wishbone Master . . . . . . . . . . . . . . . . 4
2.2 Schematische Darstellung der SDRAM-Schnittstelle . . . . . . . . . . . . 5
2.3 Schematische Darstellung des VGA-Cores . . . . . . . . . . . . . . . . . . 8
2.4 Darstellung der Wishbone-Interconnectmatrix . . . . . . . . . . . . . . . 9
5.1 Platine DB-VGA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
5.2 Screenshot der Steuersoftware fur das VGA-System . . . . . . . . . . . . 21
A.1 Schematic: Sideconnectoren . . . . . . . . . . . . . . . . . . . . . . . . . 27
A.2 Schematic: Powersupply . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
A.3 Schematic: Komponenten . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
30
Tabellenverzeichnis
3.1 Vergleich der Synthesetools . . . . . . . . . . . . . . . . . . . . . . . . . . 11
4.1 Taktsignale des Systems . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.2 32 Bit-Adressbereich des Systems . . . . . . . . . . . . . . . . . . . . . . 13
4.3 Adressbereich des Lokalbus . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.4 I2C-Slaveadressen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.5 Parameter fur Initialisierung des SDRAM . . . . . . . . . . . . . . . . . . 15
A.1 Timinginformationen des vertikalen Bildaufbaus . . . . . . . . . . . . . . 23
A.2 Timinginformationen des horizontalen Bildaufbaus . . . . . . . . . . . . . 24
A.3 Bestuckungsliste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
A.4 Bestuckungsliste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
31