Forum: Mikrocontroller und Digitale Elektronik Schaltungsdesign: IO kombination


von Patrick B. (p51d)


Lesenswert?

Hallo miteinander

Ich beschäftige mich schon länger mit uC's und der Hardware-Entwicklung. 
Jetzt sind bei mir ein paar Fragen aufgetaucht:
1) Wie kann man schnelle Schaltungen mit uC's entwerfen? (Klar ist, dass 
die Ports möglichst gerade auf die Peripherie gehen, aber was noch?)
2) Kann man für schnelle IO Aktionen irgendwie die Schaltung so 
auslegen, dass die DDR's nicht immer umgeschaltet werden müssen? Denke 
mir, dass hier auch von der Geschwindigkeit her etwas gemacht werden 
kann.
3) Programmiertechnisch könnte man ja irgendwie zuerst mehrere Bytes 
lesen, dann auf schreiben umstellen. Und nicht immer ein Byte lesen, DDR 
wechseln, schreiben, DDR wechseln, lesen...

Was habt ihr so für Erfahrungen gemacht?

MFG
Patrick

von Bastler (Gast)


Lesenswert?

Wieso überhaupt umschalten?
Ich ändere am DDR im Betrieb nichts.

Für die Kommunikation gibt es ja UART  SPI  I2C

von Patrick B. (p51d)


Lesenswert?

Bastler schrieb:
> Wieso überhaupt umschalten?
> Ich ändere am DDR im Betrieb nichts.
>
> Für die Kommunikation gibt es ja UART  SPI  I2C

Daten-Bus? Da gibt es das ganze bidirektional.

I2C ist sehr langsam (100 und 400kHz wirklich unterstütz, wobei zweites 
schon seltener ist), UART das selbe. SPI kann man auch nicht mit jeder 
Frequenz betreiben.
Die einzig vernünftig schnelle Schnittstelle ist CAN.

Aber da ich schon viele Schaltungen gesehen habe die zwingend einen 
parallelen Daten sowie Adressbus hatten, dachte ich mir, dass hier ja 
irgendetwas auch optimiert sein muss, denn das Umschalten brauch ja auch 
wieder Zeit (DDR setzen, Latch löschen, neu setzen, DDR zurück...)

von Lehrmann M. (ubimbo)


Lesenswert?

Ich verstehe dein Problem nicht. Wenn dir die Geschwindigkeit nicht 
reicht, dann greife auf einen FPGA zurück. Ich habe da gerade eine SPI 
bei 80 MHz CLK-Takt auf FPGA laufen. Das viel größere Problem ist woher 
die Daten kommen und wohin damit wenn man sie empfängt.
Ich verstehe auch nicht warum du dir an dieser Stelle Gedanken machst: 
gehen wir mal auf einen Mikrocontroller - das setzen von Registern wie 
z.B. DDR dauert einen Takt lang. Ich empfehle dir mal das Verhältniss 
von einen Takt vs. ISR zum gesamten Empfang sich verhält. Der 
limitierende Faktor ist mit SIcherheit nicht das DDR Register ...

von Bastler (Gast)


Lesenswert?

Es gibt Controller die haben einen "Externen Daten-Adressbus Modus".
Dann werden die IO/s als Bus behandelt.
Wenn man es selber mit normalen IOs nachbilden will bleibt einem nichts 
anderes übrig als ständig das DDR umzuinitialisieren.

Also, nimm einen entsprechenden Controller für entsprechende Aufgaben.

von Lehrmann M. (ubimbo)


Lesenswert?

Patrick B. schrieb:
> Die einzig vernünftig schnelle Schnittstelle ist CAN.

Irkkkkkkkkks - mal ein paar Gegenargument:

+ USB 2.0
+ FireWire
+ eSATA
+ PCIExpress
+ ...

oben genannte Schnittstellen sind keine Standarts im µC Bereich aber auf 
FPGA in einem sehr gut machbaren Bereich.

CAN ist ein Witz von Geschwindigkeitsseiten. Er ist rel zuverlässig in 
Störumgebungen (KFZ, etc.). Diese wundervollen Geschwindigkeiten sind 
aber nur bei kurzen Kabellängen erreichbar ...

siehe: 
http://de.wikipedia.org/wiki/Controller_Area_Network#.C3.9Cbertragungsrate_und_Leitungsl.C3.A4nge

von Patrick B. (p51d)


Lesenswert?

Lehrmann Michael schrieb:
> Ich verstehe dein Problem nicht. Wenn dir die Geschwindigkeit nicht
> reicht, dann greife auf einen FPGA zurück. Ich habe da gerade eine SPI
> bei 80 MHz CLK-Takt auf FPGA laufen.

Ich habe zwar von Standart-Bauelementen geredet, und nicht irgendwelche 
HI-End FPGAs
(hast mir zwar gerade eine neue denkweise gezeigt)

Bastler schrieb:
> Es gibt Controller die haben einen "Externen Daten-Adressbus Modus".
> Dann werden die IO/s als Bus behandelt.
> Wenn man es selber mit normalen IOs nachbilden will bleibt einem nichts
> anderes übrig als ständig das DDR umzuinitialisieren.
>
> Also, nimm einen entsprechenden Controller für entsprechende Aufgaben.

Kannst du hier ein paar Beispiele nennen?

Lehrmann Michael schrieb:
> oben genannte Schnittstellen sind keine Standarts im µC Bereich aber auf
> FPGA in einem sehr gut machbaren Bereich.

Nun, es gibt sehr viele Projekte in meinem Betrieb die nicht auf FPGAs 
aufgebaut sind. USB 2.0 gibts auch bei 32Bit Kontrollern, aber meistens 
werden doch keine 32 Bit Controller eingesetz, nur um eine schnellere 
Übertragung zu erreichen?

Mein Problem bei einem Projekt ist, dass sehr viele Peripherie-Elemente 
über Adress und Datenbus verbunden sind. Adressbus ist klar Ausgang, 
aber der Datenbus...

MFG

von Spess53 (Gast)


Lesenswert?

Hi

>> Also, nimm einen entsprechenden Controller für entsprechende Aufgaben.

>Kannst du hier ein paar Beispiele nennen?

Bei AVRs:

ATMega640/1280/1281/2560/2561, ATMega64/128, ATMega8515...

MfG Spess

von Arc N. (arc)


Lesenswert?

Patrick B. schrieb:
> Nun, es gibt sehr viele Projekte in meinem Betrieb die nicht auf FPGAs
> aufgebaut sind. USB 2.0 gibts auch bei 32Bit Kontrollern, aber meistens
> werden doch keine 32 Bit Controller eingesetz, nur um eine schnellere
> Übertragung zu erreichen?
>
> Mein Problem bei einem Projekt ist, dass sehr viele Peripherie-Elemente
> über Adress und Datenbus verbunden sind. Adressbus ist klar Ausgang,
> aber der Datenbus...

Deshalb gibt's seit Ewigkeiten Controller mit nach außen geführtem 
Adress/Datenbus (entweder Intel-Style 80 (/RD, /WR, ALE (wenn's 
gemultiplext ist) oder Motorola 68 EN, R/W)) wo die Umschalterei ganz 
klassisch in Hardware gemacht wird (teilweise mit konfigurierbarem 
Timing).
Sowas gibt's bei 8-Bit Controllern AVR, div. 8051ern, 16-Bit PIC24, 
dsPIC und 32-Bit Controllern ala PIC32, SHs, ARM7,9,11 und einigen 
Cortex-M3 und vielen die ich hier vergessen habe..
Letztlich ist die Frage, ob der Controller passend für die Aufgabe 
gewählt wurde.

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.