www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LPC2468 External Memory Controller Frage


Autor: Tobias Plüss (hubertus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich sitze gerade vor einer Leiterplatte mit einem LPC2468 drauf.
Ich will die beiden SDRAM ansteuern, welche auf dem Board verbaut sind:

IS42S16160B (http://www.issi.com/pdf/42S83200B-16160B.pdf).

Ich habe nun gemäss LPC2468-Handbuch alle Register des EMC 
initialisiert; doch ich stelle 2 Probleme fest:

1. Es funktioniert nicht;
2. Manche Pins werden nicht richtig auf Masse gezogen. Namentlich 
DQM0..DQM3. Diese haben zwar einen ordentlichen High-Pegel von +3.3V, 
aber sie kommen nie auf Masse runter (Oszi-Bild folgt noch). Im PINMODE 
habe ich die Pullups aber ausgeschaltet (weder Pullup noch Pulldown sind 
aktiv).

Hier noch mein Code:

#include "targets/LPC2468.h"

int main(void)
{
  int i;
  int j;
  int* x = 0xA0000000; /* base addr of the sdram */

  /* setup pll */
  MAMCR = 2;
  MAMTIM = 7;
  IRCTRIM = 0xe0;
  PLLCON &= 0xFFFFFFFD;
  PLLFEED = 0xAA;
  PLLFEED = 0x55;
  PLLCON &= 0xFFFFFFFE;
  PLLFEED = 0xAA;
  PLLFEED = 0x55;
  CCLKCFG = 0;
  PLLCFG = 0x000700FC;
  PLLFEED = 0xAA;
  PLLFEED = 0x55;
  PLLCON |= 0x00000001;
  PLLFEED = 0xAA;
  PLLFEED = 0x55;
  CCLKCFG = 3;
  while(!(PLLSTAT & (1 << 26)));
  PLLCON |= 0x00000002;
  PLLFEED = 0xAA;
  PLLFEED = 0x55; // 40 MHz

  /* for test only */
  PINSEL1 = 0;
  PINSEL1 |= (1 << 21);
  PCLKSEL1 |= 4;
  PINSEL2 = 0;
  PINMODE2 = 0;
  FIO1DIR = 0x10;
  FIO1MASK = 0;
  PCLKSEL0 = 4;

  /* setup emc */
  PCONP |= (1 << 11);
  PINSEL5 = 0x55010115;
  PINMODE5 = 0xAA02022A;
  PINSEL6 = 0x55555555;
  PINMODE6 = 0xAAAAAAAA;
  PINSEL7 = 0x55555555;
  PINMODE7 = 0xAAAAAAAA;
  PINSEL8 = 0x15555555;
  PINMODE8 = 0x2AAAAAAA;
  PINSEL9 = (1 << 18);
  PINMODE9 = 0x80000;
  EMCControl = 1;
  EMCDynamicReadConfig = 1;
  EMCDynamicRasCas0 = 0x203;
  EMCDynamictRP = 0;
  EMCDynamictRAS = 1;
  EMCDynamictSREX = 2;
  EMCDynamictAPR = 1; // ??
  EMCDynamictDAL = 2;
  EMCDynamictWR = 1; // ??
  EMCDynamictRC = 2;
  EMCDynamictRFC = 2;
  EMCDynamictXSR = 2;
  EMCDynamictRRD = 0;
  EMCDynamictMRD = 0;
  EMCDynamicConfig0 = ((1 << 14) | (1 << 12) | (1 << 10) | (1 << 9) | (1 
<< 7));
  for(i = 0; i < 100; i++);
  EMCDynamicControl = 0x181; // nop
  for(i = 0; i < 100; i++);
  EMCDynamicControl = 0x101; // pall
  EMCDynamicRefresh = 1; // ??
  for(i = 0; i < 100; i++);
  EMCDynamicRefresh = 19;
  EMCDynamicControl = 0x081;
  j = (*(volatile int*)0xA0000023); // 8 burst 2 cas
  EMCDynamicControl = 0;

  while(1)
  {
    if(x < 0xFFFFFFF)
    {
      *x = 0;
      x++;
    }
    FIO1SET = 0x10;
    FIO1CLR = 0x10;
  }
  return 0;
}

interessant ist auch, dass der Code nur bis zur Zeile *x = 0; läuft 
(auch im single-step Modus). Ist das Programm bei dieser Zeile 
angekommen, und man will den nächsten Befehl ausführen, dann 'hängt' 
sich die CPU auf und der Debugger meldet "cannot stop target", was man 
jeweils nur durch aus- und wieder einschalten des LPC beheben kann.

Ah ja: als Takt benutze ich vorläufig noch den internen RC-Oszillator, 
da die Quarzoszillatoren, die ich bestellt habe, noch nicht da sind.
Mittels PLL wird aber ein Takt von ca. 40 MHz (genau 39.39 oder sowas) 
erzeugt, was auch funktioniert.

Wer kann helfen?

Autor: Tobias Plüss (hubertus)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
So zum Beispiel sieht der Clock aus....
Verbindungen habe ich aber schon mit dem Ohmmeter geprüft, die sind IO.

Autor: Tobias Plüss (hubertus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hey,
also der Clock ist wirklich hässlich, ja.
Der Tastkopf vom Oszi ist abgeglichen und sollte lt. Hersteller bis 1 
GHz funktionieren. Daran wird es also nicht liegen.
Ich kann mir auch nicht erklären, warum der Clock so scheisse ist! ein 
Kondensator hängt bestimmt nicht dran. Was aber interessant ist:
Unterbreche ich die Verbindung vom Clock zu den RAMs, dann sieht er 
relativ 'normal' aus (in der Verbindung habe ich 2 Pads vorgesehen, um 
ggf. einen Terminierungswiderstand einfügen zu können - der ist momentan 
mit 0 Ohm überbrückt).
Ich poste mal ein Bild...

Autor: Tobias Plüss (hubertus)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
So, also:
Verbindung uC -> RAM ist jetzt unterbrochen; DIREKT am Pin des 
Controllers kommt angehängtes Signal raus.
Die Leiterbahn ist 4 mm lang, dann kommt ein Pad wo sonst der 
Terminierungswiderstand drauf ist -> der ist entlötet.

Autor: Kai F. (k-ozz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Tobias,

also deine Timings sehen mir etwas optimistisch aus, aber das könnte mit 
deinem relativ langsamen Takt passen.
Auf jeden Fall wird das Mode-Register definitiv falsch geschrieben und 
du hast den Puffer auch nicht aktiviert.

Probier mal folgendes aus:
  ...
  j = (*(volatile int*)(0xA0000000 | (0x22 << 13))); // 4 burst 2 cas
  EMCDynamicControl = 0;
  EMCDynamicConfig0 |= 0x80000;
  ...

evtl. mal noch diese Zeile ändern:
  EMCDynamicConfig0 = ((1 << 14) | (1 << 12) | (1 << 10) | (1 << 9) | (1 << 7));
{/c]
in
[c]
  EMCDynamicConfig0 = ((1 << 14) | (1 << 10) | (1 << 9) | (1 << 7));

Gruß,
Kai

Autor: Kai F. (k-ozz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bist du sicher, dass dein Schaltplan, bzw. dein Layout hinhaut? Evtl. 
den SD-Ram um 180° verdreht?

Autor: Tobias Plüss (hubertus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Kai,
ich werde das gleich ausprobieren. Danke!
Kannst du mir vielleicht auch erklären, warum der Clock vom uC so 
hässlich aussieht? Ich mein, es sind doch nur 40 MHz. Der Controller 
geht aber bis 72! und in dem Bild, das ich vorhin angehangen habe, ist 
der Clock _unbelastet_, nur mit ner 4 mm langen Leiterbahn.

Autor: Tobias Plüss (hubertus)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Tobias,
ja richtig, ich habe das Layout für eine Serienterminierung vorgesehen.
Beim ersten Oszibild, das ich postete, war eine Brücke anstatt des 
Widerstands drin, und beim zweiten war gar nichts bestückt.

Ich wollte eigentlich erst testen, ob es ohne Terminierungswiderstand 
geht (deshalb die Brücke) und falls nicht ggf. den richtigen Wert durch 
probieren herausfinden.

Im Anhang mein Schema.

Die SDRAMs sind auch definitiv richtig herum bestückt! Mit den im Schema 
gezeichneten Abblock Cs.

Autor: Kai F. (k-ozz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also das mit der Clock kann ich dir leider nicht so recht beantworten. 
Meine Platine läuft hier ohne Murren mit 72MHz. Selbst bei testweise 
aktivierten 96MHz lief die Kiste noch ohne Probleme.
Leider kann ich mir die Clock-Leitung z.Z. nicht anschauen, da mein 
Scope nur 30MHz macht.

Hast du auf dem Pin 67 (P2.19) eine Funktion drauf? Wenn nicht, dann 
könntest du den probeweise auch mal ClockOut konfigurieren und sehen wie 
das Signal dort aussieht.

Autor: Tobias Plüss (hubertus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was? was soll nicht in Ordnung sein? :o

Autor: Kai F. (k-ozz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also ich habe bei mir einen 33R Serienwiderstand direkt am Controller 
und einen 18pF Kondensator nach Masse am Speicher. Funktioniert prima. 
Aber über die Signalqualität kann ich im Moment keine Aussage treffen.

Autor: Tobias Plüss (hubertus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hey Kai,
hast du das nur an den Clock- und Steuerleitungen (also CS, WE und so 
weiter) oder auch an allen Datenleitungen? nur so aus Neugier.

Gruss

Autor: Tobias Plüss (hubertus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Leiterplatte hat 4 Lagen:

Signale
GND
VCC (3.3V)
Signale

So, und die Clock-Leitung hat eine Länge von ca. 5 cm.
Breite 6 mils.

Gruss


PS: habe mal am Pin 67 ebenfalls CLKOUT eingeschaltet. Signal ist 
ebenfalls hässlich, aber nicht ganz so hässlich wie das erste.

Autor: Tobias Plüss (hubertus)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
So sieht der Clock am CLKOUT1 aus.

Übrigens funktioniert das SDRAM jetzt; aber nur bis ca. 50 MHz. nachher 
ist sense.

Autor: Kai F. (k-ozz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also auf dem aktuellen Layout ist nur in der Clockleitung der 
Serienwiderstand und der Kondensator gegen Masse. Für das Redesign habe 
ich aber zusätzlich einen Serienwiderstand in den Steuerleitungen 
vorgesehen, also RAS, CAS, DYCS0, CKE0, DQM3-1 und WE.

Layout ist auch ein 4-lagiges, allerdings durchgehend 8mil 
Leiterbahnbreite. Länge der Clock-Leitung ca. 3,5cm.

Autor: Kai F. (k-ozz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du mal probiert einen 18pF am Clock-Pin des Speichers zu 
platzieren?

Autor: Tobias Plüss (hubertus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du das SDRAM auch 32 Bit breit angebunden?

Übrigens war wohl vorhin mit meiner Lötbrücke was nicht in Ordnung, dass 
der Clock am CLKOUT0 so schlecht war. Er sieht jetzt einigermassen 
annehmbar aus; aber mit 72 MHz funktioniert das SDRAM dennoch nicht. 
Hast du irgend einen Clock-Treiber noch eingebaut?

Autor: Tobias Plüss (hubertus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was bringt der 18pF denn? ich denke der verlangsamt doch die Flanken, 
weil der immer umgeladen werden muss? :o

Autor: Kai F. (k-ozz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, ich habe auf zwei 16-Bit breite SD-RAMs (Micron) zu 32 Bit 
zusammengeschaltet. Einen Treiber habe ich nicht angeschlossen.

Den 18pF hatte ich ursprünglich nur aufgrund eines Hinweises von 
EmbeddedArtists vorgesehen, da bei einigen Boards mit Samsung SDRAM die 
mögliche Taktfrequenz auf 48MHz beschränkt war. Durch den Einsatz des 
18pF am SDRAM können die betreffenden Boards auch mit 72MHz laufen.

Der 18pF bringt auf jeden Fall eine Verbesserung in Sachen Crosstalk 
durch steile Flanken auf benachbarten Leitungen. Ich weiß nicht, wie 
dein Layout aussieht. Evtl. ist das ja bei dir auch ein Problem.

Autor: Tobias Plüss (hubertus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Crosstalk wäre möglich; die Leitungen sind sehr nahe beieinander.
Ich versuch das dann auch mal; aber die genannten 48 MHz passen ja recht 
gut! Obwohl ich zwar kein Samsung SDRAM habe. Schön wärs, wenn die 
Erklärung so einfach wäre :-)
Ich muss das dann wie gesagt ausprobieren.
Was ist übrigens mit unserem Digikey Kram? erinnerst du dich an die 
Mail?

Gruss

Autor: Kai F. (k-ozz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich melde mich diesbezüglich nochmal bei dir per Mail!

Autor: Tobias Plüss (hubertus)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
@Kai
also es eilt bei mir nicht! ich habe nur gefragt, weil ich dachte du 
hast es vielleicht vergessen ;-)

@Tobias
So hab jetzt ein bisschen gespielt mit Widerständen etc. So sieht jetzt 
der Clock am SDRAM aus! ist das akzeptabel?

Autor: Tobias Plüss (hubertus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also ich hab jetzt den Terminierungswiderstand rein gepfriemelt. Den 
braucht es offensichtlich wirklich hier.
Jaa, und der Grund, warum ganz am Anfang der Takt so mies war, war eine 
nicht so dolle Lötstelle. Nach dem nachlöten jedenfalls war das Zeug 
besser.
Die Frage ist jetzt eigentlich nur noch, wie ich es auch auf 72 MHz 
schaffe, wie Kai ;-)

@Kai
du sagtest weiter oben, dass mein Timing etwas "optimistisch" sei. Warum 
meinst du denn?
Ich habe nämlich jetzt mal ein kleines RAM-Test Programm geschrieben, 
und festgestellt, dass das SDRAM nicht so ganz zuverlässig funktioniert. 
Gelegentlich kippt mal ein Bit. Ich schiebe die Schuld jetzt einfach mal 
auf das optimistische Timing ;-) denn der Rest passt ja jetzt, denke 
ich?

Autor: Kai F. (k-ozz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Verändere mal deine Timings auf folgende Werte:
  EMCDynamictRP = 3;
  EMCDynamictRAS = 5;
  EMCDynamictSREX = 2;
  EMCDynamictAPR = 2;
  EMCDynamictDAL = 5;
  EMCDynamictWR = 3;
  EMCDynamictRC = 6;
  EMCDynamictRFC = 6;
  EMCDynamictXSR = 2;
  EMCDynamictRRD = 3;
  EMCDynamictMRD = 3;

Und fast am Ende wird EMCDynamicRefresh bei dir auf 19 gesetzt. Mach 
dort mal eine 0x23, also 35 dezimal.

Das sind zumindest die Werte, die ich bei meinen Microns bei 72MHz 
nutze. Man müsste nochmal ins Datenblatt der ISSI-Chips schauen und 
deren Werte umrechnen. (Im Datenblatt stehen immer ns-Werte. Der 
Controller will aber Taktwerte haben.)

Jetzt sollte es eigentlich besser aussehen.

Autor: Tobias Plüss (hubertus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also, es sieht jetzt schon etwas besser aus; aber ich hab immer noch ein 
Bit, das kippt.
Schreibe ich irgendwo

0xA0000000

rein, dann lese ich einige Zeit später

0xA0000800

wieder raus. Und es ist IMMER dasselbe Bit, welches sich ändert!

Autor: Kai F. (k-ozz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sind deine Leitungslängen stark unterschiedlich? Ist D11 wesentlich 
länger als CLK0?

Evtl. sollte man doch nochmal die Timings des ISSI durchrechnen.

Autor: Tobias Plüss (hubertus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Leitungslängen sind zwar unterschiedlich, aber CLK ist definitiv am 
längsten von allen.

Timing werde ich mir nochmal genau überlegen...

Autor: Tobias Plüss (hubertus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach ja, @Kai

könntest du bei Gelegenheit einmal noch ein Bild machen vom Clock? Am 
Controller-Pin und am SDRAM-Pin.
Das wär super!

Gruss & schönen Abend

Autor: Kai F. (k-ozz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann ich generell machen, nur leider im Moment mangels passendem Scope 
nicht.

Versuch du einfach mal die Timings noch etwas zu erhöhen (evtl. auch mit 
Maximalwerten) und so die Fehlerursache einzugrenzen.

Viel Erfolg & schönen Abend!

Autor: Robert Teufel (robertteufel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Noch eine ganz dumme Frage. Der Baustein ist nicht zufaellig ein recht 
alter mit rev "-" ?
Die sind naemlich unter Umstaenden nur bis 48 MHz gelaufen.
Rev "B" laeuft allerdings meines Wissens nach LOCKER bei 72 MHz

Gruss, Robert

Autor: Tobias Plüss (hubertus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Robert,
nee es ist eine Rev "B" die ich hier habe.
Andere Frage:
ich bin ein bisschen skeptisch, was den Treiber im Chip angeht. Der muss 
ja bei 72 MHz ganz ordentlich Dampf haben, wenn er die Clock-Leitung, 
die ja schon einiges an Länge haben kann, so schnell umschalten muss! 
und die Flanken müssen dabei immer noch ordentlich sein. Kannst du mir 
vielleicht sagen, warum die bei mir so schlecht sind? Sie sind ja sogar 
am CLKOUT1-Pin, der ja gar keine angeschlossene Last hat, schlecht!
Wäre es vielleicht eine gute Idee, bei einem Redesign dort einen 
externen Buffer vorzusehen? respektive zwei, einen pro SDRAM-Chip.

@Kai
also, ich werde die Timings mal erhöhen, aber ich muss ehrlich sagen: 
ich bin enttäuscht, wie schlecht das funktioniert. Eigentlich habe ich 
das Datenblatt vom ISSI durchgelesen, und die Timings so berechnet, dass 
es klappen sollte. Angenommen, ich fahre 40 MHz ergibt das eine 
Periodendauer von 25 ns. Dann habe ich einfach alle Zeiten, die im DB 
aufgeführt sind durch diese 25 ns geteilt und aufgerundet. Das ergibt 
dann die Werte, die ich in die Register rein schreiben muss. Richtig?
Dann MUSS es doch einfach funktionieren.
Langsam bin ich mit meinem Latein am Ende :-(

Autor: Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie sieht bei dir die Versorgung des Controllers aus.
Ist das Layout dieser schlecht, kann durchaus auch hier
der Grund für die unsauberen Pegel bzw. Flanken liegen.

Die Sache mit den Buffern würde ich nicht in Betracht ziehen.
Die verlängern deine Signallaufzeit des Takts zu den restlichen
Signalen. Da musst du erst kucken wieviel Spiel du hast.

Autor: Tobias Plüss (hubertus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Tobias,
Also die Versorgung habe ich mit Planes gemacht.
Einen Layer mit 3.3V und einen mit GND. Durchgehend, nirgends 
unterbrochen.
Und dann halt bei jedem Pin mit einem kurzen Stück Leiterbahn (so ca. 3 
mm) rausgefahren und dort ein Via platziert, welches den Pin 
entsprechend mit GND oder VCC verbindet. Das ist doch schon richtig so 
oder?
Jaa, und dann die Abblock-Cs. Die habe ich vorgesehen, aber noch nicht 
alle bestückt, weil ich nicht mehr genug da hatte :-(
Die SDRAMs sind aber beide vollständig abgeblockt, der Controller leider 
nur teilweise. Meinst du das macht so viel aus?

Autor: Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Rauf damit !!!
Lass dich auf sowas gar nicht erst ein.

Autor: Kai F. (k-ozz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Tobias,

ich habe mir gerade nochmal deinen Schaltplan angeschaut. Du hast deine 
Abblockkondensatoren alle nur mit 10nF ausgelegt. Ich habe hier überall 
100nF. Am Controller habe ich 13x 100nF in 0402. Du hast hier nur 11x 
10nF.
An den SD-RAMs habe ich jeweils 7x 100nF in 0603. Du hast hier nur 3. 
Vermutlich nur an den VDD-Pins, nicht an den VDDQ. Könnte natürlich eine 
Erklärung sein.

Vielleicht kannst du in diese Richtung noch etwas probieren.

Zu den Timings: Prinzipiell ist dein Vorgehen richtig. Wenn du den 
Controller aber mit 72MHz betreibst, dann hast du nurnoch eine 
Periodendauer von 13,88ns.

Autor: Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich bin jetzt mal so frei und wage es mich festzulegen.
Deine Probleme kommen zu 99% von den fehlenden C´s

Autor: Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und etwas größer sollten die auch sein wie Kai schon schrieb ..

Autor: Tobias Plüss (hubertus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Kai,
also das mit den 10 nF liegt an folgendem:
ich habe mit meinem Chef vor einiger Zeit eine lange Diskussion darüber 
geführt, ob man 100 nF Kondensatoren oder irgend etwas anderes braucht. 
Er ist aber DER EMV-Guru; er meinte bei einer Leiterplatte >= 4 Lagen 
sind 10 nF besser als 100, deshalb habe ich 10 verbaut. Ob es wirklich 
so ist, kann ich nicht beurteilen, aber ich besorge mir heute Nachmittag 
ein paar 10 nF unfd versuche es damit mal. Vielleicht hat er ja Recht 
;-)

> Wenn du den Controller aber mit 72MHz betreibst, dann hast du nurnoch eine
> Periodendauer von 13,88ns.

Jaaa, schon, aber bei dir läuft er ja auch noch mit 96 MHz ?!
ich frage mich aber vor allem, wieso die Pegel nicht sauber auf 0 runter 
kommen....

Autor: Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kommt auch drauf an ob du von einem zentralen Massepunkt aus die
Messung durchführst oder zwischen deinem Takteingang und dem lokalen GND
des SRAM bzw. deinem Taktausgang und dem GND des uC ...

Autor: Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und das haben Chefs leider so an sich. Meiner denkt auch er wäre
der EMV Guru höchst persönlich. Allerdings durfte das Redesign des
letzten 8 Layers ich machen, nachdem die ersten Protos floppten ...

Autor: Tobias Plüss (hubertus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Tobias
Hehe, jaaa.... meinst du 10 nF sind Quatsch?
Ein bekannter von mir arbeitet in einer Firma, welche irgendwelche 
Sachen mit High-Speed digital Zeugs machen, so mit Frequenzen im 
GHz-Bereich. Der sagt sogar, an jedem VCC-Pin muss 1 x 10pF, 1 x 1 nF 
und 1 x 10 nF sein, und dann verteilt auf der Platine 100 nF und Elkos 
mit 1 u. Was sagst du denn dazu?

Autor: Kai F. (k-ozz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich will deinem Chef jetzt echt nix unterstellen, aber diese Aussage 
kommt mir etwas überholt vor.
Ich kann es mir nur so vorstellen: Früher, als die 
Kondensatortechnologie, d.h. die Keramiken, noch nicht so gut waren, 
hatte man das Problem, dass die größeren Kondensatoren schlechtere 
Keramiken und somit ein schlechteres Ansprechverhalten hatten. Heutige 
Kondensatoren bis hin zu 10uF und sogar noch höher bestehen selbst in 
0805 aus X5R oder X7R. Damit sollte sich das marginal schlechtere 
Ansprechverhalten eines 100nF gegenüber 10nF durch die höhere Kapazität 
locker ausgleichen.
Mein "Lehrmeister" setzt auch überall 100nF als Abblockkondensator ein. 
Wenn es etwas kritischer ist, dann kommt noch ein 1nF dahinter. Und wenn 
es ganz ordentlich sein muß, dann kommt davor noch eine Ferritperle und 
ein Kondensator.

Autor: Tobias Plüss (hubertus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Kai
okay, deine Erklärung hat auch was für sich.
Nun gut, notfalls könnte ich ja immernoch 100 nF einlöten statt der 10 
nF.
Btw.: ist dein Board eigentlich auch ein selbst gemachtes? hast du das 
professionell bestücken lassen oder wie? du sagst du hast 0402 drauf. Da 
braucht man ja ein Mikroskop ;-)

Autor: Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In der Beziehung scheiden sich die Geister.

Auf der einen Seite möchte man über ein möglichst breites
Spektrum einen niedrigen Impedanzverlauf erzielen.
Deswegen setzt man gerne unterschiedlich große Cs ein.
Das ist jedoch ein Fehler der sich seit Jahren in der
Schaltungstechnik fortpflanzt.
Das Problem liegt darin, dass unterschiedliche C-Werte genommen
werden die Baugröße jedoch gleich bleibt. Allerdings wird die
parasitäre Induktivität der Cs durch die Geometrie und damit der
Bauform bestimmt, nicht durch den Wert des Kondensators.

Auf der anderen Seite kann eine "unglückliche" Wahl deiner
C-Werte zu einem sauberen Parallelschwingkreis führen.

Ich blocke deswegen grundsätzlich nur mit einem C-Wert ab.

Wenn du Zeit hast, lies dir mal diesen Artikel durch.
http://www.eue24.net/pi/index.php?forward=download...

Autor: Kai F. (k-ozz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also das Board wurde von mir entwickelt. Bisher gibt es zwei Prototypen, 
die ich beide per Hand bestückt habe. Insgesamt sind da jeweils gut 300 
Bauteile drauf. Die passiven Bauteile sind fast ausschließlich in 0603. 
Die Abblockkondensatoren am LPC sind in 0402 und ein paar größere Cs 
(1µF-10µF) sind in 0805. Ansonsten noch ein paar größere Elkos.
Die Serie wird noch einmal ein wenig überarbeitet und dann professionell 
bestückt.

Also ich muß sagen, dass sich 0402 noch ganz bequem bestücken lässt. Da 
sehe ich keinen großen Unterschied mehr zu 0603 (das richtige Werkzeug 
vorausgesetzt). Ab 0201 macht es dann aber auch keinen rechten Spaß 
mehr. Aber das setzte ich nur in der größten Not und bisher auch nur 
privat ein.

Autor: Tobias Plüss (hubertus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Tobias
danke für den Link. Der Artikel sieht recht interessant aus.
Ich habe mir jetzt auch auf die schnelle ein paar 10 nF besorgt (mein 
PDA musste dran glauben.... da waren tatsächlich noch ein paar 0603 
drin).
Und ich kann es kaum glauben, aber!!! die SDRAM scheinen jetzt 
tatsächlich zu funktionieren. Es kippt kein Bit mehr, die Flanken sind 
nochmal etwas besser geworden. Ich habe nochmal ein RAM-Test Programm 
geschrieben. Erst wird alles mit 0 überschrieben, danach mit 0xAAAAAAAA 
und dann mit 0x55555555. Nach jedem Überschreiben wird alles überprüft. 
Nach 10 Durchläufen kein Fehler. Dann wird in jede Speicherzelle die 
Adresse der jeweiligen rein geschrieben. Hier bis jetzt nach 5 
Durchläufen kein Fehler. Scheint also tatsächlich an den blöden 
Kondensatoren gelegen zu haben!

Autor: Tobias Plüss (hubertus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Kai
darf man fragen, was denn sonst noch so auf dem Board ist ausser dem LPC 
und SDRAM?

Autor: Kai F. (k-ozz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du jetzt nur die Kondensatoren am LPC vervollständigt, oder auch an 
den SDRAMs?

Autor: Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Job getan, Wochenende gerettet.
Denkst du schon es läuft nichtmehr, kommt
irgendwo ein Tobias her :-)

Autor: Tobias Plüss (hubertus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
An den SDRAMs waren schon alle Kondensatoren dran (wie du richtig 
vermutet hast an VDD, VDDQ habe ich als nicht so heikel erachtet.... so 
kann man sich täuschen). Am LPC sind jetzt auch alle dran.

Autor: Tobias Plüss (hubertus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Tobias
jaaa, genau :-) aber das Wochenende ist dadurch nicht gerettet, da SDRAM 
ja jetzt funktioniert kann ich mich den übrigen Teilen der Schaltung 
widmen :P

Autor: Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zonk :-)
Meinen Proto hab ich heute morgen fertig getestet.
Da war "nur" Gate und Source eines Mosfets vertauscht ... scheis library

Autor: Tobias Plüss (hubertus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was wars denn für ein Proto?
hehe, ich hab auch an einer Stelle einen falschen Footprint. Tja, ich 
hätte die Reihenfolge bei der Pinnummerierung kontrollieren sollen.... 
Auf jeden Fall sind da jetzt 2 Pads über Kreuz verdreht. Mit ein 
bisschen Wrap-Draht lässt sich das allerdings recht gut retten ;-)

Autor: Kai F. (k-ozz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also auf dem Board werkelt ein LPC2478 im LQFP208 mit zwei Micron SDRAMs 
(MT48LC16M16A2P), ein MicroSD-Kartenhalter, ein Touchscreen-Controller 
(TSC2046), ein Atmel Dataflash (AT45DB161D) und ein 4,3"-TFT mit 
Touchscreen von Sharp (LQ043T1DG02) sowie ein DAC8551 + LM386 für 
Sound-Ausgabe. Der Rest der Schaltung (Analogteil) ist 
Applikationsspezifisch und dazu will ich hier nicht mehr ausführen, da 
es sich dabei um ein kommerzielles Produkt handelt.

Privat bin ich aber im Moment noch über einem recht universell 
gehaltenen Board mit LPC2478, 64MB SD-RAM, USB-Host/Device, Ethernet, 
SD-Karte, NAND-Flash, VS1053 und ein paar anderen Kleinigkeiten. Der EMC 
wird 16-Bit breit und gepuffert über einen Steckverbinder verfügbar 
sein, sodass man noch Memory-Mapped-Devices anbinden kann. Außerdem gibt 
es einen Steckverbinder für die ganzen LCD-Signale und einen weiteren 
Steckverbinden für sonstige IO-Pins, die noch nicht genutzt sind, bzw. 
die man mehrfach nutzen kann.
Das Board ist 110x100mm² groß und die Stecker (USB-Device, USB-Host, 
Power, Ethernet, Audio, ...) sind auf einer Seite (100mm lang) 
herausgeführt, sodass das Board recht einfach in einem Gehäuse verbaut 
werden kann.

Autor: Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Gute blau WireWrap Draht, ohne den würde mal gar nichts gehen :)
Ist eine Messkarte mit ca. 700 Bauteilen und 2478 Pads.
Die Evaluierung hat auch ca 2 Wochen gedauert.

Autor: Tobias Plüss (hubertus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Kai
wow, coole Sache! Das mit dem LCD klint auch interessant.
Ich möchte dann, wenn ich alles getestet hab, und es funktioniert, auch 
was ähnliches machen. Halbe Europakarte, also 100 x 80, und da drauf 
sollen SD-Karten, irgend ein Flash mit paar 100 MB sowie natürlich SDRAM 
und Etherne. Ein kleiner FPGA soll dann als Memory-Mapped IO-Controller 
fungieren; er könnte dann vielfältige I/O Aufgaben übernehmen....
Jaa, irgend sowas bin ich am planen. Deshalb habe ich erstmal diesen 
Prototypen hier gebastelt, um alles testen zu können (jetzt sehe ich 
z.B. wie heikel SDRAM ist!).

Autor: Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kai, ich glaube wir sollten uns mal austauschen.
Plane gerade ein Projekt mit dem LPC2478, Sharp 4,3" TFT,
einem Cyclone 2 der am EBI hängt und 2 x 1 Giga Sample ADC´s.

Autor: Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Irgendwie gehen wir drei alle in die selbe Richtung :-)

Autor: Tobias Plüss (hubertus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Tobias
jaaa, zumindest was den FPGA angeht ;-)
Als Display habe ich aber eher sowas vorgesehen: 
http://www.marelcom.ch/news.php?id=60 "5.7 Zoll TFT mit 
UART-Schnittstelle"

denn, ich habe keine LPC2478 hier und wüsste auch nicht wo man ein 
geeignetes TFT beziehen könnte. Dieses UART-Teil hier bekomme ich 
günstig von meiner Firma.

Autor: Kai F. (k-ozz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, klingt fast so. Vielleicht kann man das ja irgendwie verbinden.
Evtl. kann man mein Board als Basis nutzen und den Cyclone 2 und die 
ADCs als Applikationsboard draufstecken.

Autor: Tobias Plüss (hubertus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was soll das mit den ADCs denn werden?

Kai, wie "erzeugst" du denn den Sound, den du ausgeben willst? 
MP3-decodierung in Software? Oder was?

Autor: Kai F. (k-ozz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also eine Grafikausgabe über UART ist aber bestimmt recht langsam.
Wenn du kein Touchscreen brauchst, dann bekommst du solche 4,3" Displays 
in der eBucht bereits für 20-30€.

Autor: Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, in der Richtung bin ich mir immer noch unschlüssig.
Wollte anfangs alles auf ein Board schmeisen. Allerdings
bin ich in den letzten Tagen immer mehr zum modularen Aufbau
abgedriftet und wollte sowohl auf dem uC Board einen FPGA und
dann auf den Modulen wieder jeweils einen FPGA verwenden um
eine möglichst hohe Datenrate zu gewährleisten.

Autor: Tobias Plüss (hubertus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kai,
Jaa mag sein dass das nicht ultraschnell ist, aber ich will ja auch 
nicht zocken damit ;-)

Autor: Kai F. (k-ozz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Auf dem aktuellen Board ist es wirklich nur als Sound-Ausgabe gedacht, 
d.h. die kurzen Wave-Samples werde von der SD-Karte in den SD-RAM 
geladen und bei Bedarf an den DAC8551 gesendet.

Autor: Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Überleg mal wo man Gigasample ADCs braucht :)
Oszi ...

Autor: Tobias Plüss (hubertus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Tobias
ah ja du baust ein Oszi? wow. Okay. Nicht schlecht! woher hast du dennn 
die Gigasample ADCs? Ist das ein kommerzielles Projekt oder ne private 
Bastelei?

Autor: Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das wird rein privat laufen.
Die ADCs bekomme ich von National gesponsort.
Falls ihr welche braucht würde sich da sicher
auch was machen lassen.

Autor: Tobias Plüss (hubertus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Tobias
welches Modell ist es denn? und wieso bekommst du die "gesponsert" ? 
Sind es etwa Muster oder wie? Ich will auch was gesponsert bekommen! 
;-)))))

Also, wenn du einen oder zwei über hast .... :-D Was zum Basteln ist 
imme gut.

Autor: Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
There we go:
1GS
http://www.national.com/pf/AD/ADC081000.html
bzw.
0,5GS
http://www.national.com/pf/AD/ADC08500.html

Bin mir noch nicht 100%ig sicher welchen ich jetzt nehmen werde.
Eigentlich würden 500MSPS auch reichen.

Autor: Kai F. (k-ozz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja, zocken will ich damit auch nicht, aber wenn du ein Display mit 
VGA-Auflösung (640x480) über den UART mit 500kBaud mit Pixeldaten füllen 
willst, dann braucht das immerhin gut 12s. Ich denke mal, dass das 
Display irgendwelche Zeichenoperationen (Punkt, Linie, Rechteck, Kreis, 
...) unterstützt, aber für alles was darüber hinausgeht, ist es doch 
sehr langsam. Da kann man nur hoffen, dass es Double-Buffering 
unterstützt.
Nee, aber mal ehrlich: Für einfache Visualisierungen mag es gut sein, 
aber wenn du eh schon den LPC2468 einsetzt, dann kannst du eigentlich 
auch gleich den LPC2478 nehmen und ein LCD dranhängen. Ich muß aber 
ehrlich zugeben, dass sich das Layout doch um einiger verkompliziert, 
aber es ist auf 4 Lagen durchaus möglich. (Das Display ist bei mir 
übrigens 24 Bit-breit angeschlossen.)

Wenn ich den erwische, der das Pinout des LPC24xx verzapft hat, dann ... 
;-)

Autor: Kai F. (k-ozz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oh ja! Dazu würde ich auch nicht NEIN sagen!

Autor: Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eigentlich wären mir die ASICs von Agilent lieber,
allerdings wollen die mir nix geben :)

Autor: Tobias Plüss (hubertus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wow, cooles Teil! Aber sag mal, wie kommst du denn dazu, dass die dir 
was sponsern?

Hehe, jaa Agilent hat natürlich auch gute Teile im Angebot ;-) das wird 
aber wirklich schwieriger.... ausser ich schlachte mein Oszi und 
verhökere die Teile hier. Wird sich aber kaum lohnen :p

Autor: Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tobias, über Vitamin-B redet man nicht sondern nutzt es gnadenlos aus.
Hat dir das noch niemand verraten :-) ?

Autor: Kai F. (k-ozz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, Vitamin-B kann man nie zuviel haben.

Autor: Tobias Plüss (hubertus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also, der ADC ist wirklich toll.
Was aber ein bisschen schade ist: dass die Ausgänge als LVDS ausgeführt 
sind. Damit habe ich keinerlei Erfahrung. Da braucht man spezielle 
Treiber für, nicht?

Autor: Kai F. (k-ozz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
AFAIK besitzt der Cyclone 2 doch LVDS-fähige IOs.

Edit: Hab' grad nochmal geschaut, er hat!
http://www.altera.com/products/devices/cyclone2/fe...

Der Punkt ist einfach, dass du über TTL diese hohen Datenraten nicht 
mehr wirklich drüber bekommst.

Autor: Tobias Plüss (hubertus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aaah, ja dann ist das ja kein Problem ;-)
Sag mal Kai, noch ne Frage wegen des Datenbusses der SDRAM.
Sollte man den auch terminieren? Und wie sollte die Terminierung beim 
Clock aussehen? Tobias meinte ja, dass man eine Serieterminierung 
eigentlich nur bei Punkt-zu-Punkt Verbindungen machen sollte. Wie siehst 
du das?
Ich habe mir nur grade überlege - wenn dann noch der FPGA am Datenbus 
hängen soll, dann wird es ja immer schwieriger eine gescheite 
Terminierung zu machen.....

Autor: Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist doch gerade das schöne an den Ausgängen.
Mit den LVDS Ausgängen kann man beim Routing nichtmehr
so viel falsch machen :-)

Autor: Tobias Plüss (hubertus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Warum nicht? weils differentiell ist oder wie?

Autor: Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zum Routing:
Deswegen wollte ich auf einen FPGA auf dem uC Board und jeweils
einen FPGA auf den erweiterungs Modulen gehen.
Da wird einfach ein LVDS Crosspoint genommen und die ganze
Terminierungskacke ist Geschichte.

Autor: Tobias Plüss (hubertus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aaaaha. Jaa...
Hmm diese LVDS-Geschichte muss ich mir später noch genauer ansehen.

Aber wie der FPGA mit dem uC verbunden wird, das Problem bleibt! Wo soll 
denn da die Terminierung sitzen? Zumindest beim FPGA braucht es ganz 
sicher eine, schon bei einem Cyclone II sind die IOs sauschnell (500 ps 
rise time, wenn ich mich recht erinnere? stand irgendwo so was im 
Datenblatt....).

Autor: Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das stimmt.
Der FPGA wird einfach wie jeder andere MMD am uC angebunden.

Autor: Kai F. (k-ozz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also von einer Terminierung des Datenbusses würde ich bei so kurzen 
Verbindungen absehen. Das absolut wichtigste ist, dass die Clock-Leitung 
recht sauber ist. Ich versuche bei sowas auch irgendwelche 
Sternverbindungen bzw. Abzweigungen zu vermeiden.
Wenn man den FPGA an den Datenbus hängt, dann ist es schon eine Frage 
der Platzierung, relativ zum Speicher und zum Controller. Kann man den 
SDRAM sauber zwischen den Controller und den FPGA routen und sind die 
beiden (µC und FPGA) nicht zu weit voneinander entfernt, so würde ich 
darauf versichten. Lediglich den Steuerleitungen würde ich eine 
Serienterminierung gönnen. Ist der FPGA noch weiter entfernt, oder 
hängen noch mehr Teilnehmer am Bus, so würde ich hinter den SDRAMs auch 
einen Bustreiber vorsehen, so wie ich es jetzt auch bei dem oben 
genannten Board mache.

Autor: Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Welche Bustreiber hast du in deinem Design verwendet ?

Autor: Kai F. (k-ozz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
SN74LVCH16245 von TI. Insgesamt 3 Stück.

Autor: Tobias Plüss (hubertus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Könnte man den Bustreiber auch direkt an den LPC schalten? Ich bin mir 
nur nicht ganz sicher, mit welchem Signal man dem Bustreiber die 
Richtung vorgeben kann. Verwendet man SRAM, dann ist das klar: das 
Signal \OE legt fest, ob der Bustreiber in die eine oder in die andere 
Richtung treiben soll. Bei SDRAM gibts aber kein \OE.....

Autor: Tobias Plüss (hubertus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jungs, ich bin erstaut - mein LPC läuft jetzt auch mit 80 MHz, ohne dass 
die SDRAMs fehler produzieren. RAM-Test läuft jetzt schon ne Ewigkeit, 
und kein Bit ist gekippt. Faszinierend ;-)

Autor: Kai F. (k-ozz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Bustreiber werden direkt an den LPC geschalten. Der /OE der LPC 
schaltet dann die Richtung.

Autor: Kai F. (k-ozz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, es ist schon ein sehr erhebendes Gefühl, wenn die Kiste das Fliegen 
lernt! ;-)

Autor: Tobias Plüss (hubertus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Der /OE der LPC schaltet dann die Richtung.

??

sicher? Beim SDRAM ist das OE ja aber gar nicht beschalten.

Autor: Kai F. (k-ozz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der SDRAM hängt ja vor dem Bustreiber und der ist beim Zugriff auf den 
FPGA (als statisches Device) sowieso deaktiviert (DYCSx inaktiv).

Autor: Tobias Plüss (hubertus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Könnte man das SDRAM aber auch NACH den Bustreiber schaten? Das war ja 
eigentlich meine Frage ;-) Dass es funktioniert, wenn die SDRAMs vor dem 
Treiber sind, ist klar.
Der FPGA wird dann so programmiert, dass er sich wie ein SRAM verhält, 
oder? Also dass du per Adressbus ein Register auswählen kannst und per 
\WE wird was reingeschrieben und mit \OE raus gelesen. Richtig?

Autor: Kai F. (k-ozz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aber wieso sollte man den SDRAM hinter die Bustreiber hängen?

Evtl. könnte man per Logik aus dem WE und den DQMx-Leitungen die 
Richtung ableiten, aber das finde ich unnötig kompliziert.

Autor: Tobias Plüss (hubertus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na, ich dachte nur - wenn man schon Bustreiber hat könnte man die SDRAMs 
ja auch direkt mit denen Treiben.
Meinst du man braucht schon einen Treiber, wenn man nur noch den FPGA 
mit drauf hat?

Autor: Kai F. (k-ozz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zum FPGA: Richtig, er wird als Memory-Mapped-Device implementiert. Man 
kann das mit direktem oder indirektem Bus-Interace machen. Direkt ist 
halt schneller, braucht aber auch die ganzen Adressleitungen.

Autor: Kai F. (k-ozz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn der FPGA direkt mit auf der Platine sitzt und nicht weit entfernt, 
dann nicht.

Autor: Tobias Plüss (hubertus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Direkt ist halt schneller, braucht aber auch die ganzen Adressleitungen.

Wie viele Adressen man braucht hängt ja auch davon ab, wie viele 
Register im FPGA adressiert werden sollen oder. Was schwebt dir da vor? 
Routest du den ganzen Adressbus des LPC zum FPGA? Das wird ja ein riesen 
Aufwand!
Ich persönlich würde wahrscheinlich nicht mehr als 10 Adressleitungen 
zum FPGA führen. Den Datenbus dafür 32 Bit breit, so kann man doch 
immerhin 1024 Register zu 32 Bits ansprechen. Was wohl reichen sollte, 
oder nicht?

Autor: Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tobias, denke immer an das KISS-Prinzip. Du scheinst noch
im Studium zu sein, sehe ich das richtig ?
Du wirst noch einige schmerzliche Erfahrungen machen müssen.
Keep it simple, stupid kann dir aber bei 99% aller Probleme
den Hals retten :)

Autor: Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zum FPGA, alle Adressleitungen wird man nicht brauchen.
kommt drauf an in welchem Bereich der Map man die Daten sehen möchte.

Wir sollten uns wirklich mal genauer austauschen.
Über dieses vertrollte Forum hier gehen leicht Sachen unter.
So hat ein offensichtlich überforderter Mod meine ersten
Posts gelöscht ....

Autor: Kai F. (k-ozz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja, man muß die ganzen Samples des ADC ja auch irgendwo puffern, d.h. 
er hat selbst auch noch einen Speicher. Nun gäbe es halt die Möglichkeit 
diesen Samplepuffer direkt auf den Bus zu mappen, d.h. der LPC könnte 
sich dann jedes beliebige Sample aus dem Speicher des FPGA holen, ohne 
vorher in einem Register sagen zu müssen, welchen er denn gerne haben 
würde. Das heist natürlich nicht, dass der Speicher des FPGAs direkt am 
LPC hängt, sondern nur, dass der FPGA direkt auf die Anfordung am 
Adressbus reagiert und den Wert am Datenbus anlegt.

Autor: Tobias Plüss (hubertus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Tobias
nee, Studium habe ich noch nicht angefangen. Das kommt aber im Herbst!
Was meinst du, was ich nicht "simple" zu halten versuche?

Autor: Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das war auf die Sache mit dem SRAM und dem Bustreibern bezogen.
Was noch nicht im Studium ?
Scheinst aber dafür schon recht weit zu sein was die Elektronik
angeht ...

Autor: Kai F. (k-ozz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielleicht sollte man eine kleine Mailing-Liste einrichten. Im 
einfachsten Fall eine geschlossene Yahoo-Group.

Autor: Tobias Plüss (hubertus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Kai
also, ich habe mir eigentlich überlegt, dass es doch eine 
'Verschwendung' von Platz wäre, wenn man alle Adressleitungen verbinden 
würde.
Stattdessen sieht man im FPGA ein "Datenregister" vor. Liest man aus 
diesem, dann holt sich der FPGA immer das letzte Sample vom ADC. So muss 
man nur von einer Adresse lesen, kann aber trotzdem alle Samples des 
ADCs holen.
Mit dem DMA des LPC kann man das sogar auch einstellen, dass er Daten 
immer von der selben Adresse holt. Ich weiss im Moment aber nicht 
auswendig, ob der DMA auch auf den EMC zugreifen kann....

Autor: Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Idee mit der Yahoo user Group klingt nicht schlecht.
Ich werde mich morgen mal darum kümmern.

Autor: Tobias Plüss (hubertus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Tobias
naja, ich habe erst eine abgeschlossene Berufslehre. Aber ich befasse 
mich, wie du merkst, privat sehr viel mit Elektronik ;-) Aber sonst eher 
Leistungs-Sachen, also Motorsteuerungen, Schaltnetzteile... meine 
praktische Abschlussarbeit war ein 1 kW Frequenzumformer.

@Kai
wir können ja Email Adressen austauschen. Deine hab ich ja ;-)

Autor: Kai F. (k-ozz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der DMA des LPC kann auf den EMC und den USB-RAM zugreifen, d.h. er 
könnte immer Daten vom FPGA holen und im 16kByte USB-RAM ablegen. Dann 
wieder von dort in den SD-RAM.

Also alle 24 Adressleitungen würde ich NIE verbinden. Das ist absoluter 
Overkill. Ich hätte an max. 16 gedacht. Evtl. reicht es ja auch den 
Datenbus 16 Bit breit anzubinden. Der ADC hat ja eh "bloß" 8 Bit. So 
könnte man bei zwei Kanälen auch ein Sample von beiden Kanälen einlesen, 
aber darüber kann man sich ja noch Gedanken machen.
Ich würde es nur vermeiden, das Ding komplett indirekt anzubinden.

Autor: Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich denke du hast da schon ne recht konkrete Vorstellung Kai,
gefällt mir bisher sehr gut.

Autor: Kai F. (k-ozz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich werde, mit eurem Einverständnis, jetzt mal eine Yahoo-Group 
einrichten: Was haltet ihr von 'TTKprojects'?

Autor: Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Warum nicht, würde gut passen.
Es wurmt mich nur, dass ich mir schon eine Stunde lang (wohlgemerkt auf
der Arbeit) einen Namen für mein Projekt habe einfallen lassen.

e-TOval

Naja, eigentlich egal, der Inhalt muss stimmen :)

Autor: Kai F. (k-ozz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Soll Tobias (hubertus) entscheiden! ;-)

Autor: Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach schnick schnack, ich stimme dem TTKprojects zu.
Tobias (hubertus) ist damit quasi schon überstimmt :)
So muss eine Demokratie laufen ... ich klinke mich
jetzt mal für die nächsten Stunden aus und melde mich
dann heute abend in der bis dahin hoffentlich schon
vorhandenen yahoo group.
Meine E-Mail: Sepu2k@gmx.net

Autor: Tobias Plüss (hubertus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hey Leute,
sorry dass ich mich erst jetzt wieder melde.
War kurz weg, mit paar Freunden ein Bier trinken ;-)

@Tobias
TTKprojects ist schon in Ordnung; aber ich kann mir grade keinen Reim 
drauf machen, was es bedeutet. Wenn du mich vielleicht aufklären 
möchtest ;-)

Autor: Kai F. (k-ozz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wieso fehlen hier eigentlich die ganzen alten Beiträge von Tobias (nicht 
hubertus) ???

Autor: Tobias Plüss (hubertus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
??

welche Beiträge?

Autor: Kai F. (k-ozz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schau dir mal deinen Post von 09.07.2009 18:53 an. Dort antwortest du an 
Tobias, aber von ihm ist vorher kein Post vorhanden. Genauso hatte 
irgendwer nach HildeK geschrien. Dieser Post ist auch weg!?

Autor: Tobias Plüss (hubertus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tatsächlich! :o
komisch.... da hat wohl wer an der Löschfunktion rumgebastelt? ;-)

Autor: Kai F. (k-ozz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das kann nur ein Mod gewesen sein, aber wieso? Das würde ich doch gerne 
genauer wissen!

Autor: Tobias Plüss (hubertus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jaa, das würde mich auch interessieren...
BTW, ist dir aufgefallen dass solche "Lücken" in vielen Threads 
auftauchen??

Autor: Kai F. (k-ozz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, teilweise werden die ganzen Trollposts entfernt, was ja auch der 
Lesbarkeit der Threads dient, aber hier waren keine Trolle am Werk!?

Autor: Tobias Plüss (hubertus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja Tobias scheint wirklich kein Troll zu sein ;-)


vielleicht weiss Andreas etwas?

Autor: Arm9 Bastler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Troll ist wieder da :)
War wohl weil ich gestern in einem der vielen Troll Threats
einen etwas fieseren Seitenhieb ausgeteilt habe ...
Ich denke dass alle Posts die an diesem Tag unter meiner IP gemacht
wurden einfach deleted wurden.
Nun zur User Group.
Wie siehts aus Kai ?

Autor: Arm9 Bastler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Den benutzten namen seht ihr ja ...

Autor: Tobias Plüss (hubertus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Arm9
Bist du unser Tobias ?

Autor: Kai F. (k-ozz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wohl kaum ...

Autor: Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jetzt wieder.
Die Mail hab ich bekommen, jetzt muss ich nur wieder meine Yahoo ID
finden. Grübel

Autor: Kai F. (k-ozz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Okay, jetzt bin ich etwas ... sprachlos ...

Autor: Tobias Plüss (hubertus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Kai
was ist denn nicht in Ordnung? am Kopf kratz

Autor: Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oh mach dir keine Sorgen, ich war wohl nur einer von vielen die da 
gestern
ihren Beitrag geleistet haben wenn man das so sagen kann.
Eigentlich hatte ich gehofft dadurch etwas silence zu erwirken ...
war ehr das gegenteil :)

Autor: Kai F. (k-ozz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tobias = Troll?

Autor: Tobias Plüss (hubertus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmm.... ich blick ehrlich gesagt grade nicht mehr ganz durch.
Hast du Mail bekommen von mir oder so?

Autor: Kai F. (k-ozz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Okay, dann verbuche ich das mal unter Ulk ...

Autor: Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nein, zefix ...

Autor: Kai F. (k-ozz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eine Mail? Nee, nur deine Annahme der Einladung, die ich dann zugelassen 
habe. Dann habe ich noch eine Nachricht über die Group gepostet.

Autor: Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also
1) Nein ich bin kein Troll ...
2) Bitte etwas gedult, ich suche nach meiner Yahoo ID -.-

Autor: Tobias Plüss (hubertus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Kai
okee, dann ist alles i.O. :-)

@Tobias
guck ma: http://keepass.info/
das Programm ist sehr empfehlenswert. Bis ich das hatte, habe ich auch 
ständig Logins, IDs und Passwörter vergessen....

Autor: Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
so, es ist geschehen ...
alles weitere in der group

Autor: Kai F. (k-ozz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich bin begeistert! :-)

Autor: Tobias Plüss (hubertus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kai,

> Ich bin begeistert! :-)

wovon? von unserer Group oder von dem Link den ich gepostet hab? ;-)

Autor: Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oh man, ich hab schon ganz vergessen wie lahm die User Groups sind :)

Autor: Kai F. (k-ozz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tobias Plüss schrieb:
> Kai,
>
>> Ich bin begeistert! :-)
>
> wovon? von unserer Group oder von dem Link den ich gepostet hab? ;-)

Eigentlich davon, dass wir es nun alle in die Group geschafft haben.

@Tobias:
Ja, so sehr schnell sind die Yahoo Groups leider nicht. Aber ich denke, 
dass wir damit leben können?!

Autor: Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja, auf jeden fall

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.