Forum: FPGA, VHDL & Co. Allgemeine Verständnisfragen PFGA/VHDL/RS232


von Felix O. (felixanius)


Lesenswert?

Hallo alle,

ich setze mich seit ca. 3 Wochen intensiv mit den Themen VHDL und FPGA 
auseinander aber habe immer noch einige Baustellen in meinem Kopf.

Ich arbeite an einem Projekt, bei dem ich ein Spartan 3E Starter Kit 
benutze. An dieses Kit möchte ich 8 LEDs ranlöten und diese in 
verschiedener Weise zum Leuchten bringen. Mein FPGA möchte ich mit VHDL 
programmieren, die Regelung der Helligkeit der LEDs mit PWM und noch 
einige extras wie ein Lauflicht etc.

Ich schreibe also einen Code, bei dem ich dem FPGA sage, was er abhängig 
vom Input als Output an die LEDs gibt. Also welche LED angesprochen wird 
und wie hell sie leuchten soll und wann.

Ich wollte das ganze mit der RS 232 Schnittstelle machen, welche auf dem 
Starter Kit vorhanden ist. Mein PC hat leider nicht so eine 
Schnittstelle, aber ich kann wohl einfach ein USB-RS232 Adapter kaufen. 
In mein VHDL-Code muss ich jetzt ein UART implementieren. Erst mit dem 
UART kann ich mein Programm mithilfe der ISE auf das FPGA bringen? Also 
ich synthetisiere meinen Code und kann ihn dann raufspielen? Wo muss ich 
meinen UART reinschreiben? Einfach eine extra entity "Uart" in meinem 
Programm mit der passenden architecture, sozusagen neben meinen anderen 
entitys ("LED, Lauflicht ...) Erkennt das die ISE dann und kann den UART 
benutzen? Da fehlt mir noch ein wenig das Verständnis.



Wenn ich jetzt meinen Code auf das FPGA gespielt habe, kann ich die RS 
232 Verbindung trennen und das Programm bleibt solange auf dem FPGA bis 
ich einen neuen Code raufspielen würde, richtig?

So, fehlt also nur noch der Input für mein FPGA. Ich hatte vor mit JAVA 
eine GUI zu programmieren bei der der USER wählen kann welche LED um 
wieviel heller wird usw. Ich habe gelesen, dass übertragen auf FPGAs mit 
JAVA geht mit der Java Communication API. Wie die genau funktioniert 
muss ich dann wohl im JAVA-Forum nachfragen bzw. gute Seiten im Netz 
finden.
Die Verbindung soll auch hier via RS232 geschehen (auch wenn ich nicht 
alle 9 Pins brauche, will ja nur senden und nichts empfangen).

Könnte ich also mein PC mit dem FPGA via RS232 verbinden, dann mithilfe 
der ISE meinen Code raufspielen und dann einfach die selbe Verbindung 
nutzen und mit meiner GUI die Inputs erzeugen?



Solltet ihr irgendwo eine Unstimmigkeit in meinen Aussagen erkennen, 
bitte darauf hinweisen. Und die Fragen beantworten wär ganz toll :)

Danke euch!

von Falk B. (falk)


Lesenswert?

@ Felix O. (felixanius)

>Ich wollte das ganze mit der RS 232 Schnittstelle machen, welche auf dem
>Starter Kit vorhanden ist. Mein PC hat leider nicht so eine
>Schnittstelle, aber ich kann wohl einfach ein USB-RS232 Adapter kaufen.

Ja.

>In mein VHDL-Code muss ich jetzt ein UART implementieren. Erst mit dem
>UART kann ich mein Programm mithilfe der ISE auf das FPGA bringen?

Nein!

>Also
>ich synthetisiere meinen Code und kann ihn dann raufspielen?

Nein! Die Konfiguration des FPGAs geschieht während der Entwicklung 
mittles Programierkabel, welches über JTAG auf das FPGA zugreift. Bei 
einigen FPGA Boards ist das schon fest eingebaut, man muss nur ein 
USB-Kabel anschließen. Bei anderen Boards hat man einen 
Programmieradapter.

> Wo muss ich
>meinen UART reinschreiben? Einfach eine extra entity "Uart" in meinem
>Programm mit der passenden architecture, sozusagen neben meinen anderen
>entitys ("LED, Lauflicht ...)

Ja.

>Erkennt das die ISE dann und kann den UART
>benutzen? Da fehlt mir noch ein wenig das Verständnis.

ISE ist das Softwarepaket. Das weiß nix von deiner speziellen Anwendung 
und will das auch nicht wissen. Du schreibst VHDL-Code, ISE macht daraus 
die Konfigurationsdatei für den FPGA. Wie ein Compiler für 
Mikrocontroller.
Sobal das FPGA konfiguriert ist, hat ISE nix mehr zu tun. Die Daten für 
deinen UART muss dann ein Terminalprogramm erzeugen, z.B. Teraterm oder 
HTerm.

>Wenn ich jetzt meinen Code auf das FPGA gespielt habe, kann ich die RS
>232 Verbindung trennen

RS232 hat mir der Konfiguration nichts zu tun.

> und das Programm bleibt solange auf dem FPGA bis
>ich einen neuen Code raufspielen würde, richtig?

Kommt drauf an. Während der Entwicklung, wenn man relativ schnell mal 
eine neue Konfiguration in den FPGA laden will, mancht man das meist 
direkt per JTAG ins FPGA. Dort leigt die Konfiguration in einer Art 
SRAM. Schaltet man aus, sind die Daten weg. Damit das FPGA bei 
Einschalten aber die Konfiguration allein laden kann (ohne 
Programmierkabel und ohne PC), schreibt man die Daten ind den 
Konfigurationsspeicher, das ist ein extra IC neben dem FPGA. Das geht 
auch alles mit ISE.

>So, fehlt also nur noch der Input für mein FPGA. Ich hatte vor mit JAVA
>eine GUI zu programmieren bei der der USER wählen kann welche LED um
>wieviel heller wird usw.

Kann man machen.

> Ich habe gelesen, dass übertragen auf FPGAs mit
>JAVA geht mit der Java Communication API. Wie die genau funktioniert
>muss ich dann wohl im JAVA-Forum nachfragen bzw. gute Seiten im Netz
>finden.

>Die Verbindung soll auch hier via RS232 geschehen (auch wenn ich nicht
>alle 9 Pins brauche, will ja nur senden und nichts empfangen).

>Könnte ich also mein PC mit dem FPGA via RS232 verbinden, dann mithilfe
>der ISE meinen Code raufspielen und dann einfach die selbe Verbindung
>nutzen und mit meiner GUI die Inputs erzeugen?

Nein. Konfiguration geht über den Programieradapter, die funktionieren 
heute per USB, die alten teilweise noch per Parallelport. RS232 hat 
damit rein gar nichts zu tun. Das ist eine andere Schnittstelle, welche 
nur von deiner User-Logik bnutzt wird.

von Felix O. (felixanius)


Lesenswert?

@Falk Brunner

Falk Brunner schrieb:
> @ Felix O. (felixanius)


>>In mein VHDL-Code muss ich jetzt ein UART implementieren. Erst mit dem
>>UART kann ich mein Programm mithilfe der ISE auf das FPGA bringen?
>
> Nein!

Okay, also wäre der UART in meinem Fall nur dazu da, wenn ich via VHDL 
einen Input ins FPGA geben wollte. Da ich das aber mit Java und der 
Com.API machen will, brauche ich überhaupt keinen UART?


>>Also
>>ich synthetisiere meinen Code und kann ihn dann raufspielen?
>
> Nein! Die Konfiguration des FPGAs geschieht während der Entwicklung
> mittles Programierkabel, welches über JTAG auf das FPGA zugreift. Bei
> einigen FPGA Boards ist das schon fest eingebaut, man muss nur ein
> USB-Kabel anschließen. Bei anderen Boards hat man einen
> Programmieradapter.

Okay, also einfach USB-Kabel rein und ISE macht den Rest. Ich muss also 
keinen extra Code schreiben um die Übertragen vom PC auf das FPGA zu 
steuern.

>> Wo muss ich
>>meinen UART reinschreiben? Einfach eine extra entity "Uart" in meinem
>>Programm mit der passenden architecture, sozusagen neben meinen anderen
>>entitys ("LED, Lauflicht ...)
>
> Ja.

Das würde ich machen, wenn ich meinen Input via VHDL geben wollte (siehe 
oben)?

>>Erkennt das die ISE dann und kann den UART
>>benutzen? Da fehlt mir noch ein wenig das Verständnis.
>
> Die Daten für
> deinen UART muss dann ein Terminalprogramm erzeugen, z.B. Teraterm oder
> HTerm.

Diese Terminalprogramme brauche ich aber nicht, wenn ich mit Java die 
Software schreibe?


>>Wenn ich jetzt meinen Code auf das FPGA gespielt habe, kann ich die RS
>>232 Verbindung trennen
>
> RS232 hat mir der Konfiguration nichts zu tun.

Roger.

>> und das Programm bleibt solange auf dem FPGA bis
>>ich einen neuen Code raufspielen würde, richtig?
>
> Kommt drauf an. Während der Entwicklung, wenn man relativ schnell mal
> eine neue Konfiguration in den FPGA laden will, mancht man das meist
> direkt per JTAG ins FPGA. Dort leigt die Konfiguration in einer Art
> SRAM. Schaltet man aus, sind die Daten weg. Damit das FPGA bei
> Einschalten aber die Konfiguration allein laden kann (ohne
> Programmierkabel und ohne PC), schreibt man die Daten ind den
> Konfigurationsspeicher, das ist ein extra IC neben dem FPGA. Das geht
> auch alles mit ISE.
>

Also kann ich in der ISE festlegen, ob meine Konfiguration im SRAM oder 
im Konfigurationsspeicher landet?


Vielen Dank für deine ausführliche Hilfe!

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Felix O. schrieb:
> Wo muss ich meinen UART reinschreiben? Einfach eine extra entity "Uart"
> in meinem Programm mit der passenden architecture, sozusagen neben
> meinen anderen entitys ("LED, Lauflicht ...) Erkennt das die ISE dann
> und kann den UART benutzen? Da fehlt mir noch ein wenig das Verständnis.
Da solltest du zum Anfang zuallererst mal vorn bei der LED und beim 
Lauflicht anfangen...
http://www.lothar-miller.de/s9y/archives/80-Hello-World!.html
http://www.lothar-miller.de/s9y/archives/61-Lauflicht.html

Denn du willst gerade 7 Fliegen auf einen Streich erwischen, wo es doch 
viel einfacher wäre, eine nach der anderen abzuklatschen. Und wenn du 
das mit dem Lauflicht mal kapiert hast, dann kannst du "einfach" die 
PWM-Daten über eine serielle Schnittstelle in dein LED-Modul 
übergeben...

von Felix O. (felixanius)


Lesenswert?

Lothar Miller schrieb:
> Felix O. schrieb:

> Da solltest du zum Anfang zuallererst mal vorn bei der LED und beim
> Lauflicht anfangen...
> http://www.lothar-miller.de/s9y/archives/80-Hello-World!.html
> http://www.lothar-miller.de/s9y/archives/61-Lauflicht.html
>
> Denn du willst gerade 7 Fliegen auf einen Streich erwischen, wo es doch
> viel einfacher wäre, eine nach der anderen abzuklatschen. Und wenn du
> das mit dem Lauflicht mal kapiert hast, dann kannst du "einfach" die
> PWM-Daten über eine serielle Schnittstelle in dein LED-Modul
> übergeben...

Ja, aber muss erstmal meine Gedanken ordnen und einen groben überblick 
über das Projekt bekommen. Danke für die Links!

von Ralf (Gast)


Lesenswert?


von Falk B. (falk)


Lesenswert?

@ Felix O. (felixanius)

>Okay, also wäre der UART in meinem Fall nur dazu da, wenn ich via VHDL
>einen Input ins FPGA geben wollte.

Ja.

> Da ich das aber mit Java und der
>Com.API machen will, brauche ich überhaupt keinen UART?

Denkst du Java kann zaubern? Es muss doch irgendeine physikalische 
Schnittstelle geben, mit der die Daten vom PC ins FPGA kommen. RS232 ist 
eine der einfachsten.

>Okay, also einfach USB-Kabel rein und ISE macht den Rest. Ich muss also
>keinen extra Code schreiben um die Übertragen vom PC auf das FPGA zu
>steuern.

Für die Konfiguration nicht. Für dein LED-Blinken schon.

>Diese Terminalprogramme brauche ich aber nicht, wenn ich mit Java die
>Software schreibe?

Nein.

>Also kann ich in der ISE festlegen, ob meine Konfiguration im SRAM oder
>im Konfigurationsspeicher landet?

Ja.

von Felix O. (felixanius)


Lesenswert?

Danke Falk!

@Ralf, ja die habe ich auch schon gesehen, danke.

von Homo Siemensis (Gast)


Lesenswert?

Ein "PFGA"?

Ist ein Power Factor Gain Amplifier

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.