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.
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 ?
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.
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.
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
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
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.