Forum: FPGA, VHDL & Co. CPLD in Design intergrieren, Brauche kleine Beratung:)


von GS (chromosoma)


Lesenswert?

Hallo.

Ich arbeite (immer noch) an meinem Hobbyprojekt.

Im Projekt geht es (erstmal) darum,  das Bild von der RGB-CCD Kamera 
auslesen und auf dem  Monitor anzeigen. Danach kommt die 
Mustererkennung.

Zur Verfügung steht mir DE1 Altera Board.
Die Kamera ist diese Schönheit hier:

http://www.motionanalysisinc.com/specs/jai/cvm77.pdf

:)



Da die Kamera den analogen Signal liefert, brauche ich erstmal 3x ADC 
mit  min. 80 MHZ Samplerate.
Da diese ADC recht viel Strom (1mA pro 1MHz) verbrauchen habe ich mich 
entschieden eigenen "Acquisition Modul" zu bauen. Wird ja auch langsam 
Zeit das Layouten zu erlernen:)
Die ausgewählte Bauteile sind unten aufgelistet:

3 x ADC's (ADC08200, 20-200 Mhz).

Jeder ADC bekommt eine einstellbare VREF aus eigenen DAC(DAC7311). Damit 
können die ADC's verschiedene VREF besitzen.

Die Versorgungspannung (Vin=12 V, Vout=3,3 V) für die ganze Elektronik 
kommt aus einem REG104_33 (Imax =1A).

So, eigentlich alles schön. Aber mir stören viele Leitungen für die 
Konfiguration: 3 x (*SYNC, SCLK,DIN)@DAC und 3xPD @ADC.
Das sind 12 Pins alleine für die einmalige Konfiguration vor dem 
Betrieb.
Ich finde  das wird die ganze Programmierung noch erschweren.

Meine Idee:
Ich nehme einfach noch einen CPLD ( aus Altera MAX Familie). Dieses CPLD 
wird  diese Konfigurationen ansteuern.
D.h.

Das CPLD bekommt von Außen (also von DE1 Board) nur kurze Befehle über 
eine UART artige Verbindung: z.B. "VREF_2=1,2 V,"  , "ADC_1 Ausschalten" 
etc.Außedem besitzt die oben genannte Kamera eine RS232 Schnittschtelle, 
damit kann ich die Kamersteuerung ebenfalls von CPLD aus ansteuern.

Die ganze CPLD-Idee soll :
- die Steuerung vereinfachen
- GPIO auf dem DE1 Board sparen
- Das Aquisition Modul wird damit  FPGA unabhängig, und kann auch für 
andere Projekte verwendet werden.
- Das CPLD  wird auch kleine Aufgaben übernehmen, wie
 --Auswahl zwischen RGB/SW Modus
 --Taktmodus für ADC wählen: External.Clock, Internal Clk( jeder ADc 
kriegt eigenen CLK)


So, jetzt meinen Fragen:
 1. Wird ein CPLD (Altera MAX, billig (10 Euro)) so was hinkriegen, oder 
nehme ich lieber ein FPGA?
 2. Ist es schlimm, das ich für meine ganze Schlaltung nur einen REG 
Bauteil nehme? Kommt es vllt zu irgendwelchen  hochfrequenten Störungen?
 3. Was für einen CPLD würdet ihr mir raten? Ich habe nur einen SMD 
Lötkolben, somit kann ich nur QFP Bauteile verwenden.Hat vllt. einer so 
ein CPLD zuhause liegen und will es verkaufen?:)
 4. Mir ist nicht ganz klar, ob CPLD ihre Konfiguration nach dem 
Ausschalten verlieren oder nicht?
 5. Muss ich beim Layouten für CPLD irgendwas berücksichtigen? 200 Mhz 
sind doch nicht soo viel, oder doch?
 6. Gibt es sowas wie ein regelbarer Taktgenerator(20-200 MHZ) als IC, 
für den internen CLK Modus?
 7. Brauchen CPLD einen  externen Oszillator, oder haben die auch einen 
internen?


Nabei noch  die Schaltung ohne CPLD, für besseren übersicht:)

Vielen dank für das Lesen

PS
Im Moment funktioniert das Hochladen nicht, sobald das wieder geht, lade 
ich die Schaltung hoch.

von MaWin (Gast)


Lesenswert?

Warum nimmst du nicht einen uC?  Der kann auch noch problemlos per RS232 
die Kamera steuern und die Verwaltungsarbeit macht sich mit ihm 
einfacher.
Sicher, du kannst auch im FPGA einen Softcore uC bauen, aber warum die 
Resourcen dort reduzieren, lediglich die Taster des Boards sollten 
vielleicht für den uC lesbar sein.
Kennst du die Diplomarbeit von Giesemann 2005 ?

von GS (chromosoma)


Lesenswert?

Hi MaWin

Die Frage "wieso nicht einfach µC" habe ich erwartet.

1. Ich kenne micht mit VHDL  und FPGA besser aus, als mit µC und C:)
2.  Für die "kleinen Aufgaben" wie  RGB/BW Modus oder so brauche ich 
recht schnelles Ding, So um 50 Mhz, Natürlich kann ein ARM das locker 
machen, aber ich kenne mich mit ARM gar nicht aus... das wird das 
Projekt noch um viele Monate verzögern:)

Die Diplomarbeit kenne ich nicht, habe aber gerade drübergekuckt. Er hat 
ähnliche Sache gemacht, nur mit Softcores. Ich hoffe ich komme auch ohne 
Softcore aus.

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


Lesenswert?

Anton R. schrieb:
> 1. Wird ein CPLD (Altera MAX, billig (10 Euro)) so was hinkriegen,
Schlecht abzuschätzen, weil die Aufgabenbeschreibung etwas schwammig 
ist...
> oder nehme ich lieber ein FPGA?
Wenn du dich damit besser auskennst, dann ja (siehe 4.)

> 2. Ist es schlimm, das ich für meine ganze Schlaltung nur einen REG
> Bauteil nehme? Kommt es vllt zu irgendwelchen  hochfrequenten Störungen?
Was ist ein REG Bauteil?

>  3. Was für einen CPLD würdet ihr mir raten? Ich habe nur einen SMD
> Lötkolben, somit kann ich nur QFP Bauteile verwenden.Hat vllt. einer so
> ein CPLD zuhause liegen und will es verkaufen?:)

>  4. Mir ist nicht ganz klar, ob CPLD ihre Konfiguration nach dem
> Ausschalten verlieren oder nicht?
Uuuups, du hast das Datenblatt noch nicht mal bis zur ersten Seite 
gelesen und willst so ein Ding in deiner Schaltung einsetzen? Mutig, 
mutig...

Also: heutige CPLDs verlieren ihre Konfiguration nach dem Ausschalten, 
laden sie aber beim Einschalten massiv parallel und sind dadurch schon 
nach ein paar ms einsatzbereit.
Lattice verkauft seine "kleinen" FPGAs daher auch als CPLD:
Beitrag "Re: Umgang mit CPLD's lernen ( Altera od XILINX) via Dev Kit"
(btw: der Rest des Threads ist auch interessant)

>  5. Muss ich beim Layouten für CPLD irgendwas berücksichtigen? 200 Mhz
> sind doch nicht soo viel, oder doch?
Es sind steile Flanken unterwegs. Und in den Flanken stecken die hohen 
Frequenzen. Um ein 200MHz Rechteck halbwegs ansehnlich übertragen zu 
können ist schon mal 1GHz nötig...  :-o

>  6. Gibt es sowas wie ein regelbarer Taktgenerator(20-200 MHZ) als IC,
> für den internen CLK Modus?
Was ist eine interner CLK Modus?

>  7. Brauchen CPLD einen  externen Oszillator,
Ja.
> oder haben die auch einen internen?
Kann sein, aber das ist üblicherweise ein ungenauer RC-Oszillator.

Anton R. schrieb:
> 2.  Für die "kleinen Aufgaben" wie  RGB/BW Modus oder so brauche ich
> recht schnelles Ding, So um 50 Mhz,
Was ist da so schnell? Willst du die Kamerasignale durch das CPLD/FPGA 
routen, oder wie?

Anton R. schrieb:
> Im Moment funktioniert das Hochladen nicht, sobald das wieder geht, lade
> ich die Schaltung hoch.
Ja, das wäre sinnvoll. Als *.png oder *.gif, bitte.

von GS (chromosoma)


Angehängte Dateien:

Lesenswert?

Hallo Lothar. Anbei meine Schaltung, ohne noch ohne CPLD.Die CPLD muss 
praktisch den DACINTERFACE übernehmen und ADC Ausgänge duch sich selbst 
routen.

"Wenn du dich damit besser auskennst, dann ja"
- Hm , ich dachte das "Programmieren" von CPLD geht genauso wie auch 
FPGA, mit VHDL halt.
Ich habe auch mein Code, der ursrunglich für FPGA geschrieben wurde, für 
MAX II compiliert. Das Kompilieren und Synthese funktionierte hier ohne 
probleme.


"Was ist ein REG Bauteil?"
Das hier: http://www.ti.com/product/reg104-33

Dieses Teil liefert für alle Komponenten die Spannung von 3,3 V



"Was ist da so schnell? Willst du die Kamerasignale durch das CPLD/FPGA
routen, oder wie?"

RIchtig. Das CPLD soll die SIgnale on-fly verarbeiten.
ZB RGB geht rein, BW raus. ODer CPLD soll einfach auf einen bestimmten 
Signal warten, bevor sie den ausgang einschaltet etc. Dafür muss ich den 
RGB Signal  schnell verarbeiten.
Hier frage ich mich, ob die synchronisierung durch CPLD verarbeitung 
verloren gehen können.

So dass zB.der R- und G -Singal mit 10 ns  Verzögerung am CPLD Ausgang 
erscheinen, und  B-Signal erst nach 60 ns. Mit der Abtastrate von 20 Mhz 
hätte ich nur noch 50 ns, um den wert abzulesen.

Ist sowas möglich, oder ehe unwahrscheinlich?


"Was ist eine interner CLK Modus?"

 Im internem CLK Modus soll das CPLD die ADC'S mit auf der Platine 
vorhandenen CLK-Generator versorgen.
Dieser gesteuerter CLK Generator soll im perfektem Fall 3 Ausgänge 
besitzen, und Frequenzbereich von 20-200Mhz abdecken.

 Im externem CLK Modus bekommt die ganze Schaltung einen CLK Signal  aus 
dem Altera DE1 Board.


PS.
Mir passen nur Altera produkte, da ich gerade  nur Altera USB Blaster 
besitze


Anton

von Strubi (Gast)


Lesenswert?

Hi Anton,

ich werfe mal eben ein paar Sachen ein:

- Analog- und Digitalversorgung unbedingt trennen, die Digital-Section 
haut dir sonst Glitches ins Signal rein. Da gibts verschiedene Tricks 
und eine Menge Appnotes zu. Stichworte: Drosseln (Tiefpässe), cleveres 
Plazieren guter (low ESR) Kondensatoren.
- Dementsprechend sollte auch das Layout ausfallen. Da gibts von TI ne 
Appnote ("PCB Design Guidelines for reduced EMI").
- Was Du mit dem CPLD vorhast habe ich in etwa mal mit Ach und Krach mit 
einem grossen Coolrunner hingebogen, würde es aber nicht mehr so machen. 
Am besten kriegt man den Kram auf dem FPGA zum laufen, gerade wenn es um 
Delays geht, die klassischen CPLDs haben kein Blockram. Aber deine 
genannten Delays sollten problemlos gehen.

Mit den Altera-Klötzen habe ich leider keine Erfahrung, aber Clocks ab 
30 MHz würde ich eher nicht mit einem CPLD routen/buffern, nur wenn das 
durch dedizierte Clocknetze geht und man die volle Kontrolle über den 
'Skew' hat.
Sonst gibt es uU. die Effekte, dass nach jedem place&route die Schaltung 
anders funktioniert.

Grüsse & viel Erfolg,

- Strubi

von GS (chromosoma)


Lesenswert?

Hi Strubi.
Die Caps (TANTAL SMD) und  Drosseln (Epcos 100 µH)  habe ich laut der 
Schaltung auf der seite 15 in ADC datasheet platziert.
http://www.ti.com/lit/ds/symlink/adc08200.pdf

Hoffe das trennt die digitale und analoge Spannungsversorgung.
Die TI Appnote gucke ich mir gleich an.

von Schlumpf (Gast)


Lesenswert?

Wenn du wissen willst, ob du deine ganzen Anforderungen mit einem CPLD 
erschlagen kannst und du dich mit VHDL leicht tust, dann kannst ja 
"einfach" mal dein Design in VHDL beschreiben und für das entpsrechende 
CPLD synthetisieren. Dann siehst ja recht schnell, ob es zumindest 
reinpasst.
Für Informationen, ob es dann vom Timing her passt, kannst ja ne 
Backannotation-Simulation machen.
Wenn die dann auch tut, dann hast zumindest schonmal ne gute Chance, 
dass es nicht an der Performance des CPLD scheitern wird.

von Strubi (Gast)


Lesenswert?

Moin Anton,

ahja, geht ja auch aus deinem Schaltplan hervor. Dann musst Du ansich 
nur noch das Layout optimieren. Gibt da ne Menge Voodoo und 'Experten' 
bis Experten zu, aber ansich kommt man sehr gut mit etwas 'Maxwellscher 
Intuition' voran, also: Daran denken, dass jedes Signal auch einen 
(multiplen) Rückwärts-Pfad hat und damit ev. eine HF-Antenne ist.
Viel helfen da die sauberen Ground-Planes, aber darauf geht die 
TI-Appnote ja ein, wenn ich mich recht entsinne.
Dem Ansatz von Herrn Schlumpf kann ich nur zustimmen. Möglichst viel 
simulieren bringt am meisten Zeitgewinn bei Phase 3 (Debugging). Musst 
halt ein Modell deines Video-Device machen.
Ansonsten ist manchmal ein 1. Schuss ohne zuviel Nachdenken gar nicht so 
schlecht, sofern die Platine nicht unpatchbar vermurkst ist. Wenn Du 
Platz hast, kannst Du auch einige Bestückungsoptionen offen lassen und 
nachträglich viel an EMV-Aspekten herumoptimieren.

Salute,

- Strubi

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.