Forum: FPGA, VHDL & Co. RS232 an Altera-Cylclone-II


von Markus B. (elektronik-bastler)


Lesenswert?

Hallo Zusammen,

ich möchte mein erstes Layout mit einem FPGA erstellen.
Ich möchte später aber eine serielle Schnittstelle zur Datenübertragung
von PC zum FPGA und umgekehrt benützen können.
Kann mir vielleicht jemand sagen, was ich dabei für externe Bauteile
brauche(wie z.B. einen MAX232). Super toll wäre es wenn man ein
Schematic mit den entsprechenden Bauteilen hätte, welches ich in meine
Schaltung integrieren könnte.

Wisst Ihr aus Erfahrung auf was ich bei der Wahl eines Oszillators
achten muß, wenn dieser mehrere Bauteile(8 Inputs) treiben muß? Ich
galube, dass hierbei die Lastgröße in pF wichtig ist, aber nicht mehr.

Ich möchte keine Fehler machen und hoffe, ihr könnt mir viel Ärger
sparen helfen.

von high_speed (Gast)


Lesenswert?

Hallo Markus

Mit dem MAX 232 wird es wohl nichts. 5V <-> RS232
Da brauchst du einen anderen Konverter. z.B.: SP385
Mit welchen IO-Spannungen wolltest du den arbeiten?
(LVCMOS 3,3V)
Du kannst auch einen USB<-> Seriell-Konverter vorsehe.
z.B.: FT232R

Was wolltest du mit dem EVA-Board machen?
Schreib mal eine Liste, was alles drauf soll.
Oder zeichne ein Blockschaltbild.

Bei dem Oszillator musst du auf die maximale Last achten. Unter
Umständen benötigst du noch einen Buffer.

Du solltest alle Taktleitungen herausführen, so dass du später die
Leitung noch benutzen kannst, aber alle mit dem gleichen Taktquelle
verbinden, sollte man nicht.

MfG
Holger

von Markus B. (elektronik-bastler)


Lesenswert?

Hi Holger,

in den FPGA sollen 16-Datenleitungen reinführen. (16 Inputs)
Über diese kommen kontinuierlich Signale von 16-Bit-Breite aus einer
Signalquelle)
Über die serielle Schnittstelle soll man in den FPGA einen 16-Bit-Wert
reinschreiben können.

Die Daten auf diesen Leitungen sollen ab einem Start-Zeichen (über die
serielle Schnittstelle eingegeben oder über Tastendruck) kontinuierlich
in ein SDRAM reingeschrieben werden(Ringspeicher).(Also nochmals 16 I/O
+ Steuerleitungen für den Speicher)

Wenn nun an den 16-Datenleitungen das selbe Signal anliegt wie der
eingegebene Wert, soll der Schreib-Zyklus aufhören.
Danach sollen die Daten vom Speicher ausgelesen werden und über die
Schnittstelle zum PC gesendet werden.

Aber ich möchte 3 verschiedene Signalquellen parallel abhören, die
empfangenen Informationen spiechern und auslesen. (Auswertung der Daten
soll zeitgesteuert erfolgen)
Daher werden 3 Platinen wie zuvor aufgebaut. Allerdings ist einer
Master, die anderen Slaves. Die Slaves sollen nur Informationen
speichern. Der Master soll steurn, speichern und aus allen Spiechern
zudem auslesen können.
Dazu ist eine Taktquelle für alle 4-Platinen und den Signalquellen
nötig. Sie sollen ja sychnron takten.

Alternativ möchte ich für später noch eine USB Schnittstelle vorsehen.

Ein paar Status-LEDs und ein paar Taster sollen auch drauf.

Gruß
Markus

von high_speed (Gast)


Lesenswert?

Hallo Markus

Hast du schon ein Blockschaltbild gezeichnet?
Wie sollen die drei Platinen miteinander verbunden werden.

Weist du schon, welchen FPGA du verwenden willst?
Es gibt mehr als einen Cyclone II.
Was für einen SRAM willst du verwenden.
SRAM 512kB (16 Datenleitungen + 18 Adressleitungen + 5
Steuerleitungen)

Für Steuerungszwecke könnte es auch interessant sein eine CPU mit zu
integrieren.
Da für bräuchtest du dann auch noch Speicher (RAM und (Flash-)EEPROM).
Die CPU selber kann man noch in den FPGA integrieren.
Die Kommunikation mit dem PC könnte man über die CPU erledigen.

MfG
Holger

von Markus B. (elektronik-bastler)


Lesenswert?

Hi Holger,

Ja ich möchte einen SRAM 1MB(16Data,16Adress+5Steuerleitungen
verwenden.
Nein das Blockschaltbild habe ich noch nicht gezeichnet.
Ich versuche mich in VHDL. Habe noch keine Erfahrung damit. Wird
interessant, dies zu lernen.
Die Cyclone-II sind günstig, und ich könnte mit den weiteren I/O´s für
spätere Weiterentwicklungen vorsorgen. Man weis ja nie wozu man sie
noch gebrauchen kann.
Die Platinen möchte ich parallel, übereinandergestapelt mit möglichst
kurzen Leitungen(bzw. PINS) verbinden.
Jede Platine soll einen eigenen EPCS4-Conf. Device besitzen.
Über JTAG soll die Konfiguration mit dem ByteblasterMV erfolgen.

Bei so wenig Erfahrung kann ich nichts über einen CPU aussagen.
Wie und woher soll ich so einen CPU einbinden? Wie funktioniert dies?

Ich gehe die Sache langsam aber sicher an. Bei meinem Wissensstand
sollte dies erlaubt sein :)

von high_speed (Gast)


Lesenswert?

Hallo Markus

Was soll das werden? (Studienarbeit oder Hobby)
Hast du schon jemanden, der dir die Platine Layoutet?
Mit 4 Lagen Minimum kannst du schon mal rechnen.
Eine Lage sollte schon als GND-Fläche ausgeführt werden. (EMV)
Was darf es den Kosten?
Hast du dir schon überlegt, wie du den FPGA auflötest.
http://www.altera.com/products/devices/cyclone2/overview/cy2-overview.html
Spätestens beim BGA benötigst du eine Lötpastenmaske und die richtige
Ausrüstung um den Chip richtig zu platzieren, ohne Kurzschlüsse zu
verursachen.

Währe es nicht einfach auf ein fertiges EVA-Board zurückzugreifen?

Bevor du dich komplett verrennst.

Schreib erst einmal die Spezifikation für dein Board.
Überlege dabei, was du in VHDL erstellen kannst.
Falls Steuerungsaufgaben in Software einfacher zu erledigen sind,
überlege, ob du die CPU in den FPGA erstellen willst.
Der NIOS II (32Bit RISC) benötigt ca. 2000 Logikelemente.
Für die CPU benötigst du auch Speicher!
Um den NIOS II – Core in das  Configuration Devices schreiben zu
können benötigst du von Altera eine Lizenz für den NIOS II.
Kannst auch mal auf  http://www.opencores.org/ schauen.
Alternativ kann man auch extern einen µC anbringen.

Wie wolltest du die Platinen miteinander verbinden? (elektrisch)
Hast du schon eine Idee, wie die Platinen miteinander kommunizieren
sollen? (seriell, parallel) Bandbreite? Adressierung? Protokoll?

Um mit VHDL anzufangen sollte man zu einem fertigen Board greifen.

MfG
Holger

von high_speed (Gast)


Lesenswert?

Hallo Markus

Ich habe mal kurz die Anzahl der IO-Pins überschlagen.

ADC 14Bit (14 + ca. 5 )
SRAM 1MB (16 + 19 + 5)

Speicher für NIOS II
Gemeinsamer Bus für SRAM und Flash-EEPROM
(16 + 20 + 6)

Serielle Schnittstelle (TxD, RxD, [CTS, RTS, …])

-> 103 IO-Pins

Dazu kommen noch die Taster und LEDs.
z.B. 8 LEDs + 8 Taster/Schalter + 2* 7-Seg.+ Hex-Schalter
36
Vergesse auch nicht die Verbindung zuwischen den Modulen und die
Takteingänge.


Den EP2C20 bekommst du noch im 240-Pin PQFP – Gehäuse mit 142 IO-Pins.
Alles darüber ist nur noch als BGA verfügbar.

Ich rechne bei dem BGAs mit mindestens 6 Lagen.

MfG
Holger

von high_speed (Gast)


Lesenswert?

Hallo Markus

Habe ich dich jetzt vor deinem Projekt abgeschreckt? :-)

Die Anfertigung einiger Prototypen muss schon gut durchdacht werden.
Ein Großteil der Kosten geht dabei auf die Anfertigung der Platinen.
(Einrichtkosten) Bei einer Multilayer-Platine ist das schon einiges.
Dann ist es auch noch fraglich, ob du überhaupt in der Lage bist, die
Chips selber zu bestücken. (technische Ausrüstung, Erfahrung)
Ansonsten musst du sie Bestücken lassen.

So wird ein Prototyp schnell um einiges teurer als ein EVA-Board.
Schau dir mal das Terasic TREX C1 Development Kit an.
Ist nur ein Cyclone, aber um erstmal Erfahrungen zu sammeln reicht es.

http://www.terasic.com/english/fpga_01.htm

FPGA:   Altera EP1C6Q240C8
RAM:    SDRAM (1M x 4 x 16)
Flash:  1MByte Flash Memory
        CF Card Socket (True IDE mode)

An den beiden Wannenleisten kannst du den SRAM und den ADC anbringen.

Erst, wenn deine Idee auf dem Board läuft, lohnt sich ein Prototyp.
Jetzt gibt es dafür noch viel zu viele offene Fragen wegen dem
Protokoll zwischen PC und Messhardware.

Das Protokoll mittels State-Maschinen zu integrieren hat etwas vom
Masochismus. :-)

MfG
Holger

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.