PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bausteingeschwindigkeit



CodeX
03.06.2006, 17:59
Hallo Zusammen,

kennt jemand von euch eine gut erklärte Webseite über Bausteingeschwindigkeiten. Ich habe zwar ein Buch in dem paar Parameter erklärt sind, aber diese weichen völlig von den Angaben aus Datasheets ab...Könnt ihr mir bitte sagen welche Bausteinparameter ich bei einem Prozessor, Speicher und Peripherie beachten muß-Lese- und Schreibzugriff. Vielleicht mit einem Rechenbeispiel?

Danke für eure Hilfe im Voraus.

Viele Grüße

euer CodeX

Schokohoernl
03.06.2006, 18:11
1. welche bausteine meinst du genau?? (die legobausteine werde so ca 60km/h schnell wenn man sie wirft ;-))
2. was für prozessoren?? 8bit, 32bit 64bit?? PC oder µC?
3. was für speicher?? EEPROM, RAM, HDD, Speicherkarten??
4. was vertstehst du unter periphere?? externe beschaltung?? andere IC's??

mfg
schoko

CodeX
03.06.2006, 19:14
Sind wir etwa in einem Legolandforum? Natürlich meine ich Microcomputerbausteine.... ob 8 oder 16.. bit ist doch egal ich rede von allgemeinen Parametern wie Dataholdtime usw. ...
Ich möchte lediglich wissen welche Parameter wichtig, zu beachten sind und wie man diese Parameter verrechnet.


DANKE . . .

CodeX

kalledom
03.06.2006, 21:55
Hallo CodeX,
die Geschwindigkeit eines Mikroprozessors hängt von der Quarz-Frequenz ab. Sie wird bei einigen Prozessoren intern durch 2, 4 oder mehr geteilt.
Deshalb kann die Zugriffszeit auf externe Speicher-Bausteine so nicht erklärt werden; sie hängt ganz einfach vom Prozessor und dessen Takt ab.
Ferner kann der Prozessor einen gemultiplexten Adress-/Daten-Bus haben, bei dem zuerst die Adressen und Anschließend die Daten auf den gleichen Leitungen liegen oder einen nicht-gemultiplexten, bei dem Adressen und Daten gleichzeitig anliegen.
Bei einigen Prozessoren können per Software Wait-States eingefügt werden, um die externe Zugriffszeit zu erhöhen.
20MHz ergeben 50ns. Bei einem internen Teiler von 4 ergibt sich eine Befehls-Ausführungszeit von 200ns; das hat aber nichts mit Zugriffen auf externe Speicher zu tun.
Bei Speicher-Bausteinen ist das Maß aller Dinge die Zeit, die der Speicher vom Anlegen der Adresse / ChipSelect bis zur 'Herausgabe' der Daten benötigt. Umgekehrt natürlich, wie lange man nach dem Anlegen der Adresse warten muß, bis die Daten übernommen wurden.
Bei Mikro-Controllern richtet sich die Zugriffszeit auf externe Speicher nach der Anzahl Befehle, die erforderlich sind, um die Adresse auszugeben, Ports umzuschalten und die Daten einzulesen.
TTL-IC's sind mit Gatterdurchlaufzeiten von 5...25ns eigentlich schnell genug, um auf einen schnellen Prozessor zu reagieren. Bei CMOS-Bausteinen, die 'nur' 20MHz = 50ns schaffen, wird es schon mal kritisch.

shaun
03.06.2006, 22:47
Kalledom hat das Wichtigste ja nun schon gesagt, aber so wie Du gefragt hast klingt es in etwa wie "AMD is schnellerer als wie Intel und vor allem mit dem XP Programm besser wie Lunix". Dass Du so tief in die Materie eindringen willst, dass Dich die paar ns data hold ernsthaft interessieren, war daraus nun wirklich nicht zu erlesen, und da diese auch nur interessiert, wenn Du externe Speicher oder Peripherie, die im Adressbereich wie Speicher angesprochen werden will, verwendest, wäre es schon ganz nützlich, uns darüber nicht ganz im Unklaren zu lassen. Bei den hier gebräuchlichen AVRs und schlimmstenfalls PICs interessiert die data hold time zu 99% nicht die Bohne, weil interner Speicher verwendet wird und der eine oder andere Kunstgriff mit den Ports getätigt wird. Und wenn dann wirklich mal ein eigentlich für memory I/O konzipierter Chip angesprochen wird, dann über ein in Software nachgebasteltes Protokoll, was bei einem 16MHz-AVR 60ns Zykluszeit nicht unterschreiten kann und damit wie Katze sich wieder in den Zeitschwanz beisst: Parameter interessiert nicht, weil: stört nicht. Zwar biste hier nicht im Legoland-Forum, aber auch nicht in einem, wo hochgezüchteten Prozessoren die letzte Nanosekunde abgerungen wird. Ich nagel Dich jetzt bewusst auf Deine data hold time fest, weil ich entweder hören möchte, dass Du von uns erwartest, Dir alle Permutationen für alle Anwendungsfälle aller ICs, die je gebaut wurden durchzurechnen oder aber Du mit den Zeitangaben so gar nichts anfangen kannst. Dann sei doch bitte so ehrlich und frage anhand eines konkreten Beispiels, dann findet sich sicher jemand, der Dir a) die Begriffe, b) die Relevanz für Deine Anwendung und c) die Berechnung erklärt. Aber Deine Frage ist nicht beantwortbar, da so allgemein, dass Anzahl der Antworten -> unendlich.

CodeX
04.06.2006, 10:13
Hallo Kalledom-Hallo Shaun,

die Begrifflichkeiten sagen mir schon etwas aber ich bin verunsichert da in einem Buch von mir völlig andere Timingparameter anders als in den Datasheets meines Z80 Mikroprozessors erklärt sind. Meine Frage lautet als Beispiel. Ich habe einen Z80 Mikroprozessor bei dem die Buszykluszeit 200 ns beträgt ich denke das der Systemtakt auch noch wichtig ist. Daher beziehe ich diese Angabe auf 2Mhz. Die Frage ist-wie errechne ich die maximal zulässige Zugriffszeit auf einen Speicher oder Peripherie um einen Worstcase zu vermeiden.
Beispiel mein eeprom 150ns bis Daten verfügbar Data Hold Time 0ns.
Ram glaube ich war 100ns. Kann ich diese Speicherbausteine bei 6Mhz problemlos betreiben-muß ich wait-states hinzufügen und wie kann ich die Lösung zu diesem Problem berechnen?

Viele Grüße

euer CodeX

kalledom
04.06.2006, 12:28
Der Systemtakt ist das Wichtigste, denn von ihm alleine hängt die Zugriffszeit für Alles und Jedes ab.
Der Systemtakt wird wiederum aus der Quarz-Frequenz abgeleitet.
Wie die Impulse bei einem externen Speicherzugriff für Schreiben und Lesen genau aussehen, kannst Du den Impulsdiagrammen entnehmen. Dort wirst Du sehen, wie viele Taktzyklen z.B. die Adressen anstehen, bis Daten ausgegeben oder eingelesen werden. Die Anzahl Taktzyklen mal die Taktzeit ergibt dann die Zugriffszeit.
Ich habe hier ein Z80-Buch 'Einführung in die Programmierung', jedoch ohne Impuls-Diagramme. Die findest Du im Datenblatt und nicht unbedingt in einem Programmier-Handbuch. Vielleicht gibt es dort Angaben über Zugriffszeiten, wahrscheinlich aber nur als Taktzyklen, weil ja niemand weis, was für einen Quarz Du verwendest.

shaun
04.06.2006, 12:49
Huhu,

für Dein EEPROM gilt ohne Weiteres zu wissen auf jeden Fall erstmal: Adresse muss gültig sein, Lesen ausgewählt, Chip Select aktiv - 150ns warten - Daten übernehmen. Sobald Chip Select inaktiv wird solltest Du davon ausgehen, dass die Daten nicht mehr gültig sind, sofern Deine Data Hold Time Angabe auch fürs Lesen gilt. Das ist irgendwie auch logisch, denn nach CS=inaktiv soll der Bus ja umgehend frei sein, da hat nix gehalten zu werden. Wichtiger ist die Data Hold beim Schreiben: meistens gibt's da Angaben, wie lange vor dem eigentlichen Schreibimpuls die Adressen und Daten gültig sein müssen, dann geht WR auf aktiv und meistens wird mit dem Inaktiv-Werden von WR erst wirklich geschriebe; eine Data Hold von 0 besagt hier, dass umgehend nach der Inaktiv-Flanke von WR die Daten machen dürfen was sie wollen. Ob die Adressen und/oder Daten beim Aktivwerden von WR schon stehen müssen, oder ob auch mit Chip Select geschrieben werden kann, hängt vom Chip ab. Du solltest nicht unbedingt irgendwas berechnen wollen, Du musst die Zeiten nur Ablesen und ggf Aufaddieren, die Zykluszeit Deines Prozessors richtet sich wie Kalledom schon sagte natürlich nach der Taktfrequenz, im Timingdiagram Deines Z80 wären die hoffentlich eingezeichneten Taktimpulse dann halt 500ns auseinander, davon kannst Du zB die Zeit abziehen, die die CPU braucht um die aktuelle Adresse und die Steuerleitungen stabil zu bekommen, dann noch die Durchlaufzeit Deines Adressdecoders abziehen und schon weisst Du, wie lange Dein EEPROM Zeit hat, seine Daten auszuspucken. Wenn Du das am Beispiel erklärt haben möchtest, müsstest Du schon die Timingdiagramme der betreffenden Bausteine posten, zum Raussuchen fehlt mir dann doch die Zeit.

PICture
04.06.2006, 21:20
Hallo!

Wenn der Z80 mit 6 MHz Taktfrequenz arbeitet, beträgt die Zykluszeit zwischen zwei nacheinander folgenden Befehlen mindestens 166ns, und alle Hardwarebausteine, die schneller sind, werden ohne waitstates richtig arbeiten. Man braucht sich darüber keine Gedanken machen.

MfG

CodeX
05.06.2006, 07:27
Hallo zusammen,

die manuals sind zu groß ich kann also die datasheets nicht posten.

wie kommt ihr darauf das zwischen zwei Befehlen 166ns vergehen.
verstehe ich einen buszyklus richtig als maximale zeitspanne bis ein befehl abgearbeitet ist?

vg
CodeX

PICture
05.06.2006, 07:50
Hallo Codex!

Die 166ns ist eine Periode von 6MHz Taktfrequenz. Das entspricht einer Bearbeitung vom 1 Byte Befehl. Bei 2,3 oder 4 Byte Befehlen wird diese Zeit dann ensprechend länger. Für die Hardware ist dann die 166ns die kürzeste Zeit, in der sie auf den Befehl "reagieren" müssen. Before ich auf PICs umgestiegen bin, habe ich viel Z80 in ASM programmiert und noch nie was mit Hardware berechnen. Wenn ein Baustein z.B. statischer RAM, ein Zugriffszeit 150ns hatte, war gut. Zu langsame fur den Z80 Bauteile sind heutzutage kaum zu finden.

MfG

shaun
05.06.2006, 08:44
Mit der Abarbeitung eines Befehls hat das nicht direkt zu tun, es gibt auch Befehle, die mehrere Taktzyklen brauchen. Bei Speicherzugriffsbefehlen kann sich der Zyklus den das RAM/ROM zu sehen bekommt dadurch auch verlängern, muss aber nicht. Unter der vereinfachenden Annahme, dass die Adressen/Daten mit dem Beginn eines Systemtaktzyklus bereitstehen und neue Daten nicht vor Ende desselben gelesen werden, hast Du also immer so lange Zeit, wie ein Taktzyklus Deines Systemtaktes dauert. Reicht für Dein Z80-2MHz-Beipsiel also auch für die langsamten ICs. Neuere Controller haben möglicherweise andere Anforderungen an externe Bausteine, aber danach hast Du ja nicht gefragt.

CodeX
05.06.2006, 09:31
Hallo PICture-hallo Shaun,

ich möchte demnächst gerne auch mit avr's arbeiten in wie weit sind die mit Z80 komponenten kompatibel und wie schnell müssen Speicher und externe Beschaltung sein-bei sagen wir 20<X<50mhz?

Vielen Dank für eure Hilfe und Anregungen.

Grüße
CodeX

shaun
05.06.2006, 10:53
Der Witz an Microcontrollern ist eigentlich der, dass die I/O und Peripherie soweit integriert ist, dass man gerade KEINE Bus-Bausteine wie in Microprozessorsystemen üblich anschliessen muss. Man wählt den Controller nach I/O- und Peripheriebedarf (ADC, PWM, Timer, Digital-I/O,...) und hat dafür eine Menge Pins, die verschiedene, programmierbare Funktionen bieten, zur Verfügung. Diese dafür zu verschwenden, einen Adress- und Datenbus darauf zu geben, war nicht im Sinne des Erfinders!

CodeX
05.06.2006, 11:03
Ich habe dabei mehr daran gedacht die avrs als schnittstellencontroller einzusetzen...zum Beispiel als Mototensteuerung und Funksignalprozessor, die dann mit der Z80-Cpu kommunizieren...

PICture
05.06.2006, 22:19
Hallo CodeX!

Der Z80 CPU ist nur ein Prozessor, der ohne mindestens RAM und EEPROM überhaupt nichts machen kann. Für eine Komunikation braucht er noch I/O Hardware. Der AVR hat schon alles integriert. Das war ein Grund, dass ich auf PICs umgestiegen bin, weil ich irgendwann keine Lust mehr hatte die Hardware für den Z80 mit einem Fädeldraht zu "nähen". Was besonderes soll den Z80 bei Dir machen, was der AVR nicht kann ?

MfG

CodeX
09.06.2006, 04:32
der z80 soll das gehirn sein und alle daten von den anderen microcontrollern auswerten.-für meinen richtigen roboter den ich am planen bin.- ;)

shaun
09.06.2006, 08:28
Gibt es dafür einen besonderen Grund? Jeder kleine Microcontroller zieht den Z80 in Sachen Geschwindigkeit über den Tisch und bringt ausserdem bequem in der Schaltung flashbares ROM mit, I/Os und Kommunikationsschnittstellen sind auch vorhanden, C-Compiler werden aktiv entwickelt, Libraries mit grundlegenden Funktionen stehen frei zur Verfügung. Was bewegt Dich also dazu, einen Z80 einzusetzen, den Du mit externem ROM und externer Peripherie von Grund auf selbst programmieren musst?

CodeX
11.06.2006, 05:34
Hallo Shaun, der Lerneffekt bewegt mich dazu-außerdem denke ich, das es nicht sinnvoll ist mit einem controller einen externen Speicher anzusteuern, oder?

vg
CodeX

PICture
11.06.2006, 07:33
Hallo CodeX!

Wie der shaun schon geschrieben hat, Z80 ist nicht die beste Wahl für Deine zukunftige Anwendung. Das ist bloss ein CPU mit 16-Bit Adress- und 8-Bit Databus. Damit kann man nur bis zu 64KB externer Speicher (RAM+EEPROM) addresieren. Mit Speicherbanken kann man das erweitern, ist aber durch Bankauswahl langsammer.

Ich finde es besser ein älterer Notebook als "Gehirn" zu nehmen, da von Abmessungen und Preis ist es mit dem Z80 System vergleichbar, aber viel leistungsfähiger und schneller.

Ich habe früher einen Laptop, der per COM oder LPT mit kompliezierteren Steuerungen verbunden war, in Assembler (wegen
Hardwaregeschwindigkeit) und QBasic (wegen Programmierung Aufwand) unter DOS programmiert.

Die Mikrokontroller eignen sich hauptsächlich für einfachere Sachen, weil z.B. live Bildverarbeitung für sie immer noch zu schnell ist.

Aber die Qual der Wahl kann Dir leider keiner nehmen. :)

MfG

shaun
11.06.2006, 09:12
Hi PICture,

für Bildverarbeitung ist ein Z80 aber auch nicht mehr erste Wahl ;)

Was den Lerneffekt und die Entscheidung angeht: nehmen will Dir hier keiner etwas davon. Nur solltest Du Dich mal fragen, was für Speicher Du meinst. Wenn es um Speicherung von Messdaten o.ä. geht würde ich mich mal im Bereich serieller Speicher mit SPI-Bus umsehen, ansonsten natürlich überhaupt erstmal die Frage: was für Speicher und wie viel?

CodeX
16.06.2006, 05:46
Hallo Shaun, hallo Picture

das große Z80-System das ich am planen bin verfügt über ein Bankregister mit 17bit adressbuss, 10 CS-Signale woraus sich ein Rom-Speicher mit 64kb und 512kb Ram ergeben...

vg
CodeX

p.s.: sorry das ich erst jetzt zurück schreibe