Login
Login-SSL
Register
Forum
Kontakt
Bitmania
2011-05-14 18:22
by 00Blont
Rekonfigurierbare Hardware





So der Rotwein steht bereit, jezz
fang ich mal mit meiner Bitmania-Homepage an..

Hier geht's um
Rekonfigurierbare Hardware. Warum? Weil Alchemy und Bitman
mich dazu gezwungen haben ;-)
Nee - aber Bitman will mehr wissen
und Alchemy die Hardware auf unterster Ebene kontrollieren.

Was
ist Rekonfigurierbare Hardware?
(Wat is ene Dampfmaschien?)
Das
ist ein digitaler Chip (FPGA,
CPLD)
in dem Du Dir selbst Logik und Register zusammen schalten kannst,
d.h. mittels einer Hardwarebeschreibungssprache programmiert werden
kann z.B. Verilog
oder VHDL.

Was
wird das?

FPGAs sind heute die vielfältigsten Bausteine und
haben neben Registern (D-Flipflop)
und Logik (NOT,AND,OR,...)
noch etwas RAM und andere Schaltungen an Board. Diese Schaltungsteile
können über 'Schalter' zu komplexen Schaltungen verbunden werden,
wie Du es gerade brauchst. Z.B. zu einer Servo-Ansteuerung (PWM),
Recheneinheit (CPU),
'Grafikkarte' oder einem ganzen System (SoC),
je nach Chip-'Größe'.

Warum Rekonfigurierbare
Hardware?

Rekonfigurierbare Hardware kann immer wieder anders
verschaltet werden, einige sogar in Betrieb.
Wenn Du also z.B.
Deine 'digital Schaltung' erweitern willst 'einfach'
umprogrammieren.

Wie geht das?
Zuerst Verilog oder
VHDL programmieren, Simulieren und Fehler entfernen, dann wird der
Code per Synthese und Place & Route auf den Chip abgebildet, und
kann anschießend in Hardware getestet werden.
Naja, mit den
Tücken der FPGA-Synthesetools muss man sich erst anfreunden, aber
dann kannst Du Deine selbst erdachte Logik in Hardware testen, z.B.
Deine Robotersteuerung an Servos und Sensoren hängen und
programmieren. Software dafür gibt's sogar gratis (Mein Favorit:
Lattice
und weitere). 


Einen Zähler z.B. kannst Du in Verilog (Favorit) ganz
einfach erstellen:


input Clock;           // unsere Eingangs Clock
output reg [31:0] A; // Ausgang: ein 32-Bit Register (Bestehend aus Bits 0 bis 31)

always @(posegde Clock) // mit dem 0-1 Wechsel des Clocksignals wird
A <= A + 1; // Register A auf den Wert A+1 gesetzt, (Addierer)
 

Das Register A wird hier in jedem Clock-Zyklus um 1 erhöht bis zum
Überlauf, dann geht's bei 0 weiter. Zeitgleich könnten wir
das Register B mit jeder Clock um 2 erhöhen oder etwas anderes
anstellen...

Bei der Hardware Beschreibungssprache Verilog
muss Du aber immer darauf achten das Du nur Synthese-fähige
Anweisungen verwendest, sonst kannst Du Deine Logik später nur
Simulieren und nicht in der Hardware (FPGA,CPLD) laufen
lassen.

Hardware:
Boards mit FPGAs gibt's z.B. hier
(Favorit) oder hier.

Noch
weitere Links zu
Verilog:
-http://www.asic-world.com/verilog/veritut.html
-http://www.mikrocontroller.net/articles/Verilog

So,
nu is der Wein aus. Und ich sach bis bald.
Achja, bitte
Kommentieren! Nur bei Interesse schreib ich weiteres zum
Thema...


4 Comments

bitman 2011-05-14 08:50 ^ 58

Moderator
Posts: 109
Pages: 98
Registered: 2010-07-09
Mit deinem Beispiel hätten wir dann einen kleinen Frequenzgenerator mit 32 Frequenz-Ausgängen oder?
Wie schwierig/teuer wäre es, mit so einem FPGA/CPLD eine Schaltung zu machen, die S-Video-Signale des C64 in ein sauberes VGA-Signal für Standard-Monitore umwandelt?

00Blont 2011-05-14 16:00 ^ 59

Posts: 15
Pages: 2
Registered: 2011-01-04
Zähler Bsp.: Ja, Du kannst einen Zähler als Frequenzteiler ansehen/betreiben. Hier mit 32 Ausgängen Bit 0 von A teil die Clock durch 2, Bit 1 /4, Bit 2 /8, Bit N /2^(N+1).

Ein Videosignal z.B. vom C64 ist erstmal ein analoges Signal(FBAS oder Luminanz+C). Das muss Digitalisiert werden, mittels ADC. Diese Digital-Daten musst Du dann im FPGA-Auswerten, zwischenspeichern und als VGA-Bild wieder ausgeben. Das Auswerten der Eingangsdaten ist dabei das schwere. Bildstart ermitteln und Pixelsynchronisation erfordern genaue Kenntnisse der Eingans-Signale. Der Arbeitsaufwand wäre hierbei das teuerste.

Wesentlich einfacher wäre einen Monitor zu verwenden der FBAS od. Luminanz+Chrominanz Abbilden kann. ;-)

Willst Du die C64-Darstellung durch Zeilen Verdopplung aufpimpen?
Evtl. kannst Du den VideoChip ersetzen und mit VGA-Ausgang versehen..

bitman 2011-05-14 16:13 ^ 60

Moderator
Posts: 109
Pages: 98
Registered: 2010-07-09
Könnte die Gegebenheit das der C64 nur 16 Farben darstellen kann die Sache einfacher machen? Ich meine, man braucht ja dann eingangsseitig nur 16 Varianten erkennen und die dann in ein Abbild des Screens im FPGA ablegen.
Es läge dann normalisiert bereit, um es auf VGA auszugeben.

00Blont 2011-05-14 18:22 ^ 61

Posts: 15
Pages: 2
Registered: 2011-01-04
Du musst praktisch eine Framegrabber-Karte programmieren um an die Videodaten zu gelangen. Das ist nicht wenig Arbeit.
Evtl. ist es einfacher aus anderen FPGA-Projekten die den C64 nach bilden den VIC zu isolieren und zu ersetzen,siehe oben..

Write a new comment:
Name
Email
(treated confidential, will not be published)
B
U
I
S
code
Clear
4096
Additional features if registered and logged in