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.
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ß
Ü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
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.
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ß
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/EtherCAT/Development_products/EtherCAT_ET1100_Datasheet_all_v1i7.pdf (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?
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.
>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
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.
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ß
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.
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/searchBrowseAction.html?method=retrieveTfg&binCount=10&Ne=4294958012&Ntt=idt&Ntk=I18NAll&Nr=AND%28avl%3ade%2csearchDiscon_de%3aN%29&Ntx=mode%2bmatchallpartial&N=4294955684&Nty=1 http://de.rs-online.com/web/search/searchBrowseAction.html?method=retrieveTfg&binCount=24&Ne=4294958012&Ntt=fifo&Ntk=I18NAll&Nr=AND%28avl%3ade%2csearchDiscon_de%3aN%29&Ntx=mode%2bmatchallpartial&N=4294955684&Nty=1
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
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.