mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Adress- Datenbus zu schnell


Autor: Tim R. (mugen)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin!

Seit einiger Zeit habe ich das Problem, dass ich ein bestimmtes Projekt 
nicht umsetzen kann. Es liegt daran, dass der DSP einen zu schnellen 
Adress- und Datenbus hat, selbst wenn ich die Teiler alle ausreitze. Der 
angesteuerte Baustein kann man sich wie ein normalen SRAM vorstellen, 
der allerdings etwas zu langsam ist. Wäre es evtl. möglich einen CPLD 
als eine Art Dual Port Ram dazwischen zu schalten, der als 
Aktiver-Puffer fungiert? Alle 100µs greift der DSP auf diese 
Schnittstelle kurz zu und hat ca. 200 Bytes zu transportieren, also 
eigentlich sehr unkritisch. Gibt es zufällig dafür sogar ein fertiges 
IC? Mich nervt dieses Problem schon seit langem...

Für Tipps und Tricks wäre ich sehr dankbar.

Autor: Michael Leusink (hasimaus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Tim R.,

das ist ein sehr interessantes Thema.

Leider mit zu wenig Informationen. Welchen DSP setzt Du ein, welcher 
Baustein soll angesprochen werden ?
Dual Port RAM könnte eine Idee sein, hängt aber davon ab, ob die beiden 
Bausteine dies unterstützen könnten.
Einfacher und naheliegender sind Verlangsamung des Zugriffs selbst, oder 
ganz andere Verfahren, abhängig von den eingesetzten Bausteinen.

Gruß

Autor: Bernhard R. (barnyhh)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Üblicherweise gibt es für die Geschwindigkeitsanpassung von 
Peripherie-Bausteinen ein Protokoll , das die schnelle CPU an das 
langsame RAM anpaßt - implementiert vielfach als WAIT- oder 
READY-Leitung.

Gibt es bei der hier verwendeten CPU kein derarartiges Protokoll?

Bernhard

Autor: Remote One (remote1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit so wenigen Informationen fällt mir da nur ein Frequenzteiler mit FF 
ein:
http://www.elektronik-kompendium.de/sites/dig/0212221.htm

Keine Ahnung ob das zu deiner Problematik passt.

Autor: SchöneWelt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

so wie ich das verstanden habe ist das Timing für den Speicher zu 
schnell. Benutzt du im DSP Memory Map?

Ich würde versuchen deinen "Speicherbaustein" über Port-Dangling 
anzusteuern. Läuft halt dann im DSP nicht "nebenläufig".

Gruß

Autor: Gebhard Raich (geb)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein FIFO würde das Problem elegant lösen (z.B. IDT)

Grüße

Autor: Tim R. (mugen)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich verwende den DSP TMS320F28335 und die Wait-States sind bereits auf 
den maximalen Wert, wie auch die anderen Teiler.

Mit XReady habe ich es schon probiert, allerdings konnte ich das Problem 
nicht damit lösen. Entweder ich habe XReady noch nicht ganz verstanden 
oder evtl. falsch angewandt. Mir ist zwar klar, dass ich sehr schnell 
ans Ziel kommen, wenn ich den Adressbus über Software ansteuern würde. 
Allerdings verliere ich dadurch viel Prozessorzeit. Wie gesagt, ich 
möchte sehr gerne den DMA benutzen.

Da ich bereits erfolgreich eine ständige Datenkommunikation mit einem 
SRAM (10ns) aufgebaut habe, schließe ich grobe Initialisierungsfehler 
aus. Das System läuft bereits seit Monaten.

Ich hätte eine zusätzliche Frage zu einer Leitung, die als Busy benannt 
ist. Mir ist schon klar wie die deutsche Übersetzung ist und wie die 
Funktion gemeint ist, aber mit dieser Leitung habe ich trotzdem meine 
Verständnisprobleme.

Als Baustein setze ich übrigens die EtherCAT Briefmarke von Beckhoff 
ein. Genauer gesagt: FB1111-0140. Dieser Baustein steure ich übrigens 
asynchron an. Die Datenübertragung funktioniert durch zweimaliges lesen 
oder schreiben bedingt, generiert allerdings noch Fehler.

Data Sheet: 
http://download.beckhoff.com/download/Document/Eth...

(Vorsicht 6,3MB)  PDF Seite 271 (16bit) und Seite 272 (8Bit)

Zurzeit kann ich das EtherCAT Modul nur über den 8Bit Bus ansteuern, da 
der Lesevorgang dadurch beschleunigt wird -> Siehe "S. 273". Allgemein 
ist die Dokumentation stellenweise schwer verständlich. Aus diesem Grund 
verstehe ich auch nicht die Leitung "Busy". In diesem Bereich habe ich 
auch keine Erfahrungen.
Ich arbeite übrigens mit der Data Sheet Version 1.6. Ich sehe gerade, 
dass Beckhoff das III. Kapitel in der Version 1.7 überarbeitet hat. 
Dieses Kapitel muss ich mir demnächst wieder genauer ansehen. 
Änderungsdatum ist laut dem 3. Deckblatt "S. 197" der Januar 2010. Hier 
wird auch anscheinend nun die Busy Leitung etwas besser beschrieben. 
Darüber könnte ich mich echt nun ärgern.

@SchöneWelt

Den Speicher kann ich vollständig über den Linker ansprechen. Jede 
einzelne Adresse lese ich zurzeit über ein Array ein. Evtl. werde ich es 
später über einen Pointer machen. Später über DMA muss ich dies anders 
realisieren. Alles weitere macht die XINTF Schnittstelle von selbst und 
soll sie auch machen!

@Gebhard Raich

Diesen Vorschlag von Dir finde ich sehr interessant, gibt es dafür evtl. 
ein gutes Beispiel. Bzw. hat jemand solche Bausteine schon in Betrieb 
genommen?

Autor: Zwölf Mal Acht (hacky)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich denke die beiden Teile, der DSP und die EtherCat passen einfach 
ausserordentlich schlecht aufeinander. Vielleicht etwas weiter schauen, 
und einen anderen Ethernet controller vewenden.

Autor: Gebhard Raich (geb)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Diesen Vorschlag von Dir finde ich sehr interessant, gibt es dafür evtl.
>ein gutes Beispiel. Bzw. hat jemand solche Bausteine schon in Betrieb
>genommen?

Ja, hab ich, ist allerdings schon fast 20 Jahre her.Es ging um Pufferung 
von Daten die zu einem Transputersystem gesendet wurden (ist glaub ich 
mittlerweile obsolet). War absolut problemlos,man hat eigene 
Steuerleitungen für Ein/Ausgang ,2 Datenbusse und Statusleitungen für 
(halb)voll und keinen Adressbus (logisch bei FIFO). Schau mal einfach 
bei IDT in die Datenblätter.

Grüße

Autor: Tim R. (mugen)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gleicher Tag schrieb:
> Ich denke die beiden Teile, der DSP und die EtherCat passen einfach
> ausserordentlich schlecht aufeinander. Vielleicht etwas weiter schauen,
> und einen anderen Ethernet controller vewenden.

Sehr viele Alternativen gibt es nicht mehr. Nur noch det netX 5 von 
Hilscher.


@Gebhard Raich

Verstehe ich das richtig, dass die FIFOs ein festes Timing haben? Sollte 
es so sein, dann helfen mir diese Bausteine leider nicht weiter.

Beckhoff hat seinen EtherCAT Slave auch etwas dämlich entwickelt.

Autor: Michael Leusink (hasimaus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Tim R.

nur mal schnell gedacht:
Wenn ich das Datenblatt vom FB1111-0140 richtig gelesen habe, gibt es 
ein "nBusy" Signal. Entsprechend verknüpft ergibt dies ein WAIT bzw 
READY Signal.
Solche Signale können theoretisch beliebig lang sein und DMA ist auch 
noch möglich.
Ist das ein möglicher Ansatz ?

gruß

Autor: Tim R. (mugen)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Michael Leusink schrieb:
> Hallo Tim R.
>
> nur mal schnell gedacht:
> Wenn ich das Datenblatt vom FB1111-0140 richtig gelesen habe, gibt es
> ein "nBusy" Signal. Entsprechend verknüpft ergibt dies ein WAIT bzw
> READY Signal.
> Solche Signale können theoretisch beliebig lang sein und DMA ist auch
> noch möglich.
> Ist das ein möglicher Ansatz ?
>
> gruß

Das "nBusy" Signal habe ich bereits versucht zu verwenden, allerdings 
war das Platinenlayout nicht wirklich dafür geeignet und es gab 
Einkopplungen. In den neuen Version vom Datenblatt wurde genau dieses 
Signal nun besser erklärt. Aus diesem Grund werde ich einen neuen 
Versuch starten.

Für andere Anregungen bin ich immer offen.

Autor: schablonski (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

nein, fifos haben zwei verschiedene timings, eins für die einggangsseite 
und eines für die ausgangsseite.
die fifos von idt 7202 und 7204 mit 2k und 4k sind wahrscheinlich 
obsolet.
es gibt aber mehrere hersteller von fifos cypress, idt . es gibt sogar 
bififos ,also in beide richtungen :-)

http://de.rs-online.com/web/search/searchBrowseAct...

http://de.rs-online.com/web/search/searchBrowseAct...

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei FIFO gibt es etliche Varianten und Typen von unterschiedlichen 
Herstellern.
Suchen entweder bei  Digikey  oder  Mouser  nach: fifo memory

Das Teil "7204" von IDT ist (noch) lieferbar.

Texas Instruments hat z.T. welche, die mit denen von IDT kompatibel sind
 TI Home > Semiconductors > Logic > Specialty Logic > FIFO > Synchronous 
FIFO >
das sind z.B.   SN74V263  welcher baugleich ist mit IDT 72V263

Für ganz einfache Zwecke kann man auch Schieberegister oder altes Fifo 
des Typs 74hc40105 (Mouser) nehmen.
Oder ein dual-port-Register 74hc670 , ein prima Teil, da muss man selbst 
die Synchronität hinkriegen, irgendwie "Datenregister" und 
"Statusregister"-Adressen definieren.

Klaus

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.