PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : VHDL Tutorial



Kampi
22.02.2013, 19:44
Heyho :)

da vor ein paar Tagen mein Elektor FPGA Board angekommen ist (ich habe die aktuelle Artikelreihe über FPGAs genutzt um meinen Einstieg in FPGAs + VHDL zu verwirklichen), hatte ich mir gedacht, dass ich ein wenig zu dem Thema auf meiner HP veröffentlichen werde (quasi als Begleitung zu meiner Einarbeitung.....hoffe das mir das später im Studium / Beruf zu Gute kommen wird :) ).
Ich muss sagen, dass ich diese Sprache unterschätzt habe....ich habe mich die letzten Tage oft mit einem Arbeitskollegen über das Thema FPGA und VHDL unterhalten und das ist echt erstaunlich wie komplex diese Sprache ist und was man alles beachten muss.....und vor allem der Umfang.
Ich habe mir auch bereits vier Bücher geben lassen die ich jetzt mal nach und nach durch arbeiten werde (irgendwie zwischen Studium, Arbeit und dem Rest ;) ) und ich hoffe dann das ich ein paar Fortschritte machen werde.
Naja hier ist der Link zu dem Tut:

http://kampis-elektroecke.de/?page_id=3197

Eventuell hat ja der ein oder andere auch Interesse in das Thema einzusteigen. Ich werde das Tut nach und nach anhand von Schaltungen die ich geschrieben habe ergänzen und den Code erklären (ich denke das ich jetzt am Wochenende einen Einstiegscode schreiben und dann durchnehmen werde).

Wsk8
22.02.2013, 23:23
Also so umfangreich habe ich diese Sprache jetzt nicht gefunden, aber die komplexität ist schon der Wahnsinn. Und auch die synchronen Designs sind echt furchtbar, da hat man gleich mal nen Latch drin oder die Pins stecken wieder auf Vcc oder GND, echt zum verzweifeln^^

mfg

Kampi
22.02.2013, 23:29
Mit Umfang meinte ich nicht die Sprache....falsch rüber gekommen :), sondern den ganzen Prozess: Synthese, implementieren und Bitstream generieren und dann die Fehlersuche und alles :)
Bin halt "nur" Programmieren gewohnt. Da ist sowas was vollkommen anderes. :)

tucow
24.02.2013, 01:00
Hey Daniel,

ich bringe bei uns an der Uni den Studenten VHDL anhand vom Spartan-3AN bei, wenn Du Fragen hast meld Dich ;)

Die komplexesten Sachen die ich bisher realisiert habe sind die Ausgabe von visualisierten Mandelbrotmengen und ein Breakout Spiel über den VGA Port und nicht ganz ohne war ein 256 Bit Carry Look Ahead Addierer.

Aktuell arbeite ich daran einen alten NES Controller auszulesen und ihn in das Breakout Spiel zu integrieren, damit laesst es sich wesentlich besser steuern als mit den vorhandenen Buttons auf dem Spartan3-AN Board.

Kampi
24.02.2013, 09:35
Hey,

klingt gut :)
Behalte ich im Hinterkopf :D
Naja ein "Problem" ist, dass mein FPGA Board halt so gut wie nichts an Peripherie drauf hat, sprich VGA-Port usw. Das muss ich alles extern Nachrüsten.....aber darüber mache ich mir Gedanken wenn ich mal an dem Punkt bin ;)
Im Moment quäle ich mich mit den Grundlagen rum.
Aber da ist schon wieder eine Sache die ich nicht verstehe.....
Ein Arbeitskollege sagte mir, dass nur wenige FPGAs analog Blöcke besitzen und dem entsprechend nur digitale Schaltungen realisieren können.
Wie realisiert man dann VGA? Soweit ich weiß ist das doch analog?
Weil ich habe hier noch einen alten Monitor rumliegen....vielleicht kann ich den im Laufe der Zeit dann mal verwenden ^.^

malthy
24.02.2013, 09:59
Wie realisiert man dann VGA?

Ich habe ein Digilent Nexys2 Board, da haben sie VGA so realisiert, eben nur mit 3 Bit pro Farbe:

24637
(Quelle (http://www.digilentinc.com/Data/Products/NEXYS2/Nexys2_sch.pdf))

Bin vor einiger Zeit ziemlich motiviert an FPGAs rangegangen, muss aber zugeben, dass ich dann irgendwann steckengeblieben bin ... :-)

Gruß
Malte

Kampi
24.02.2013, 10:20
Ich habe ein Digilent Nexys2 Board, da haben sie VGA so realisiert, eben nur mit 3 Bit pro Farbe:

24637
(Quelle (http://www.digilentinc.com/Data/Products/NEXYS2/Nexys2_sch.pdf))

Bin vor einiger Zeit ziemlich motiviert an FPGAs rangegangen, muss aber zugeben, dass ich dann irgendwann steckengeblieben bin ... :-)

Gruß
Malte

Ah mit Hilfe von Spannungsteilern. Und dann sicher auch mit verschiedenen Logikspannungen oder?
Weil ich habe gestern gesehen, dass ich bei dem FPGA einstellen kann ob es 3,3V 2,5V, 1,8V und 1,2V als Highpegel führt.

malthy
24.02.2013, 11:05
Und dann sicher auch mit verschiedenen Logikspannungen oder?

Ich bin da jetzt nicht so tief eingedrungen, aber ich glaube nicht, dass da noch mit unterschiedlichen Logikspannungen gearbitet wird. Es stehen pro Farbe eben einfach nur 2^3 Abstufungen zur Verfügung, bei drei primaries macht das dann 512 mögl. Farben. Die Spannungsteiler ergeben sich glaube ich mit der Terminierung des VGA Eingangs im Monitor.

robin
24.02.2013, 11:27
Würde auch raten, dass da mit der selben Spannung gearbeitet wird und nur durch entspechend Umschalten mit high/low und vllt. HighZ verschiedene Spannungen erzeugt. Stink normaler Spannungsteiler halt.

Btw. sind nur 8bit farben (256), Blue hat nur 2 bit oder ein Fehler in der Schaltung ;)

Kampi
24.02.2013, 11:34
Würde auch raten, dass da mit der selben Spannung gearbeitet wird und nur durch entspechend Umschalten mit high/low und vllt. HighZ verschiedene Spannungen erzeugt. Stink normaler Spannungsteiler halt.

Btw. sind nur 8bit farben (256), Blue hat nur 2 bit oder ein Fehler in der Schaltung ;)

Naja werde ich denke ich mal raus finden wenn ich soweit bin :)
Im Moment versuche ich mich noch an einfachen Logikschaltungen um ein bisschen vertrauter mit der Sprache zu werden.
Für VGA muss ich mir dann eh noch was basteln, da ein VGA Anschluss nicht auf mein Steckbrett passt :)
Aber das hat zumindest schon mal die Frage beantwortet wie sowas mit einem FPGA gemacht wird. Ich bin bisher immer davon ausgegangen das das alles intern gelöst wurde. Auf den Spannungsteiler bin ich gar nicht gekommen.

malthy
24.02.2013, 11:56
Btw. sind nur 8bit farben (256), Blue hat nur 2 bit oder ein Fehler in der Schaltung

Sorry, hast recht, ich habe mal wieder nicht genau hingeguckt (das alte Problem ...) :-)

tucow
24.02.2013, 12:01
Bei unseren Boards ist es so gelöst:
24642
4096 Farben sind schon nicht schlecht ohne GPU.

Kampi
24.02.2013, 12:08
Was für einen Takt benötigt das FPGA den dann?
Weil das Elektor Board wird von 8MHz aus dem AVR getaktet der den Bitstream ins FPGA schiebt.
Reichen 8MHz für VGA aus?
Ansonsten muss ich evtl. nen Quarzoszi mit einplanen. Ich kann ja dann einfach sagen, dass das FPGA die 8MHz nicht verwenden soll, sprich ich gebe den Pin nicht für den GCLK an.

tucow
24.02.2013, 12:19
Eigentlich 25.175MHz, aber mit 25MHz klappt es auch.
Kannst Du das Elektor Board mal verlinken? Ich überfliege die Elektor Ausgaben immer nur kurz.

Aus nem AVR? Das ist ja echt grausig o_O
Wenn Du einen Oszi einplanst dann nimm aber direkt was schnelleres, mit dem internen DCM Teiler kanst Du die beliebig herunter teilen (z.B. 100MHz).

Kampi
24.02.2013, 12:33
Hier ist es:

http://www.elektor.de/jahrgang/2012/dezember/bauen-sie-ihren-chip!.2318466.lynkx

Aber der Takt ist anscheinend wenigstens Quarzstabil :D
Die leiten den sicher nur den Takt durch den AVR.....weil das Quarz erzeugt auch nur 8MHz...
Aber die haben ja glücklicherweise die GCLK Pins raus geführt....da kann man dann im Notfall noch nen Takt dran basteln.

- - - Aktualisiert - - -

Ok so schön scheint der Takt dann doch nicht zu sein ;)

http://img688.imageshack.us/img688/4929/map001.jpg (http://imageshack.us/photo/my-images/688/map001.jpg/)

Nochmal kurzer Edit:
Kann ich auch direkt einen Quarz an einen GCLK Pin dran hängen oder braucht der die übliche Zusatzbeschaltung (sprich Kondensatoren). Oder braucht der generell noch etwas mehr Beschaltung?

tucow
24.02.2013, 12:53
24644
Die Beschaltung ist recht einfach ;)

Kampi
24.02.2013, 15:27
Sodele,

ich habe mal ein wenig weiter geschrieben.
Bisschen was zu den Grundlagen und ISE installieren + Lizenzen + ein Projekt anlegen.
Außerdem ist eine Anleitung für die erste eigene Schaltung online:

http://kampis-elektroecke.de/?page_id=3259

Sie kann zwar nichts außer zwei Bits zu vergleichen aber was solls :P
Für die Lesefaulen (wie z.B. mich) habe ich da auch möglichst viele Bilder rein gestellt....weil wenn ich was hasse sind es Anleitungen für Programme etc. die super viel Text haben >.<

lorcan
25.02.2013, 11:22
Hat der FPGA keine interne PLL um einen eigenen Takt aus den 8Mhz zu generieren? Heisst laut Datenblatt Digital Clock Manager(DCM) beim Spartan. Das würde ich als erstes prüfen, bevor du da kompliziert was drum herum bastelst.

Kampi
25.02.2013, 11:31
Hey,

ja muss ich mal schauen.
Muss auch noch gucken wie ich die zum laufen bekomme ;)

Catedral
25.02.2013, 12:37
Hi

Habe mich dieses Semester auch mit VHDL beschäftigt und nen paar Credits gesammelt. Finde es vorallem schwierig im Kopf zu behalten das es kein prozeduraler Ablauf ist sondern alles quasi "gleichzeitig" funktioniert.
Finde aber die möglichkeiten die diese programierbare Logic bitted sehr spannend.
Hast du schon konkrete Pläne, was du realisieren möchtest oder in welche richtung das ganze läuft?
Soll es vielleicht in deinen Tank?

Kampi
25.02.2013, 12:51
Hey,

ne in meinen Robi kommt es (erstmal) nicht. Dafür habe ich noch keine konkrete Anwendung.
In später Zukunft vielleicht mal :)
Die Richtung wird erstmal so sein, dass ich mich weiter darin einarbeite (neben meinem Studium....deswegen dauert das etwas) und nach und nach ein paar Basteleien damit anstelle.
Als erstes Ziel habe ich mir die Generierung von VGA Signalen gesteckt, nur wann ich dies verwirklichen kann weiß ich nicht :)
Und wie du schon sagtest, die Schwierigkeit ist das umdenken....wenn man ein paar Jahre nur Software programmiert hat und sich an die sequenzielle Abarbeitung gewöhnt hat ist es nicht so leicht auf einmal immer daran zu denken das ein FPGA alles gleichzeitig macht, weil da kein Prozessor drin ist sondern einfach nur eine Logikschaltung.

Kampi
26.02.2013, 14:08
Heyho,

es wird es wird....
gestern mal ein bisschen mit dem Zusammenführen von zwei Modulen rum gespielt und es hat auch gut geklappt....2 1-Bit Komparatoren haben einen 2-Bit Komparator ergeben und einen Halbaddierer habe ich auch schon implementiert bekommen :)
Ich geh jetzt einfach den kompletten Ordner über Digitaltechnik aus der Ausbildung durch, sprich als nächstes Volladdierer, FlipFlop bis hin zur Alu :D
Ist aber schön bequem....nichts auf Steckbrettern aufbauen...keine zu kurzen Leitungen.....einfach nur ein Chip wo alles drin ist.

Kampi
04.03.2013, 10:29
Whuu hab es endlich geschafft den Simulator richtig zu bedienen ;)
Hab auch schon ein bisschen weiter entwickelt.....hab nun eine 8-Bit ALU entworfen....ist zwar bisschen umfangreicher als die Beispiele im Internet aber gut bin halt noch nicht so eingearbeitet und ein erfahrener Entwickler kann da sicher noch einiges weg optimieren... und der nächste Schritt sind dann FlipFlops und Speicher :)