Bastelstunde


 
PROTO-3 PCI
Timing an Daten-Bus-IC anpassen

Sicheres Timing erfordert eine stabile Datenbereitschaft (data-valid) bei zeitlich verzögertem Übernahmesignal (chip-select delay). LS, TTL, CMOS, HCMOS, BiMOS... arbeiten alle mit verschiedenen Geschwindigkeiten und high-low Schwellpegeln. Daher ist es unerlässlich, Timing-Korrekturen zwischen PCI-Decoder und Folgeschaltung vorzunehmen um eventuellen Datenverlust vorzubeugen. Eine Korrektur bzw. Anpassung kann mit Hardware erfolgen, oder in der GAL-Gleichung. Die zeitliche Übernahme eines Latch-Registers ist im wesendlichen vom IC-Typ abhängig. Da wir Ihren Aufbau nicht kennen, haben wir hier eine 8-bit Beispielschaltung aufgebaut, die sehr sicher und über einen weiten Temperaturbereich funktioniert.

Für den modernen Entwickler ist es jedoch unerlässlich, sich mit dem Signalverhalten schneller Logikschaltkeise und dessen Konsequenzen individuell auseinanderzusetzen. Dies gilt umso mehr für breite Bussysteme mit hohen Datenraten (bsp. PCI-Bus). Ein wichtige Komponente stellt daher die Leitungsimpedanz dar, da sie maßgeblich für Signallaufzeiten mitverantwortlich ist. Unbelastete Leiterbahnen haben einen Wellenwiderstand von ca. 90-120 ohm bei einer Laufzeitverzögerung von 6-7ns/m. Wird die Leiterbahn am Ende künstlich belastet (terminiert), vermindert sich i.d.R. der Wellenwiderstand und erhöht sich die Laufzeitverzögerung des übertragenen Signals. Die Signalcharakteristik kann somit nachträglich verbessert werden, jedoch geht diese Vorgehensweise immer zu Lasten des Pegels, da es sich i.d.R. um eine Widerstandslast handelt. Als nahezu ideal hat sich die Zuhilfenahme der Split-Termination herausgestellt. Sie wird weitläufig als passiver Abschluss bei SCSI-Bussen verwendet und wird am Leitungsende mit je einem Widerstand nach GND und Vcc verschaltet.

Auf unserer CD finden Sie den Quellcode des GAL22V10 im JED-Format, den Sie selber für Ihre Folgeschaltung abändern und mit Synario (jetzt ispLEVER® von Lattice®) neu zum JEDEC-File compilieren können. Unsere vordekodierten CS-Signale CS1...4 dienen nur als Programmierbeispiel und haben keinen weiteren Bezug. Andere Bus-Treiber, A/D-D/A-Wandler, oder PIO-Controller wie µPD8255 benötigen jeweils eine andere Adressdekodierung und/oder ein anderes Zeitverhalten zwischen den CSx, IOWR, IORD, Adress- und ALE-Signalen. Die Adressdekodierung und das Timing muss je nach Schaltungsidee immer optimiert werden, da es eine generelle "Dekoder-Universalschaltung" nicht gibt. Hierzu ist das Studium von technischen IC-Datenblättern und der praktische Einsatz an Hand der Versuchsschaltung unter Zuhilfenahme geeigneter Messmittel (bsp. Oszilloscope und Logikanalyzer) unerlässlich.

An Hand der nachfolgenden Beispielschaltung soll ein 8-bit Bus-Latch (SN74LS374N) auf DATA 0..7 mittels dem ersten chip-select-Signal (CS1 von GAL22V10) beschrieben werden, um insgesamt 8 LEDs beliebig anzusteueren. Natürlich können anstatt der LEDs auch andere Schaltungen (z.B. Schrittmotor-Steuerung) verwendet werden; die LEDs dienen hier nur als optische Kontrollrückmeldung der gesendeten bzw. gelatchen Daten. Normalerweise verwendet man innerhalb von digitalen Schaltungen, nur IC-Gatter einer Logik-Familie. Man vermeidet damit Probleme, die sich eventuell durch unterschiedliche Signalpegel und Schaltzeiten ergeben können. Oftmals macht aber auch genau das Gegenteil einen Sinn, unterschiedliche Logik-Familien einzusetzen, um Signalpegel, Verzögerungen und Schaltzeiten aufeinander besser auszurichten. Gatter unterschiedlicher Schaltkreisfamilien lassen sich untereinander mit Pegel- und Logikwandlern verwenden (bsp. HCT). Von Fall zu Fall muss vor Ort individuell entschieden werden, wie die Schaltungsidee sich am besten umsetzen lässt.

Das Windows-Programm HWT1.EXE ist per Maus-Klick in der Lage, einzelne Port-Befehle (read/write) zum PCI-Controller zu senden, um byte-weise (8-bit) oder word-weise (16-bit) Daten zu lesen oder zu schreiben. Für den Musteraufbau benötigen Sie eine PROTO-3 PCI-Karte, ein GAL22V10B-25QP mit dem JED-Inhalt PROTO3.JED, einen Latch-Bus-Baustein SN74LS374N, einen Inverter SN74F04, ein ODER-Baustein SN74F32 und eine 8-fach LED-Reihe mit Vorwiderständen (hier 330 Ohm). Die Verkabelung wird direkt auf der Rückseite der Platine vorgenommen, die ICs werden vorsorglich auf IC-Fassungen gesetzt und mit 100nF Kondensatoren zusätzlich abgeblockt. Zur besseren Ansteuerung (bzgl. Timing) des Bus-Latch wird das PCI_ALE-Signal am GAL22V10 (pin.1) mit 1 kOhm gegen GND geschaltet. Damit wird das PCI_ALE-Signal um ca. 5 ns nach hinten verschoben, damit die Daten D0...7 zeitlich stabiler am Bus-Latch anstehen. LS-Bausteine sind recht langsam, und haben bei zu kurzen data-valid-Zeiten schwierigkeiten bei der Datenübernahme, wenn das CS-Signal zu früh kommt. Aus diesem Grund wurde bei diesem Aufbau auch kein 10ns-GAL sondern ein langsameres 25ns-GAL verwendet. Auf den nachfolgenden Bildern sehen Sie dazu den entsprechenden Schaltungsaufbau und dessen Handverdrahtung auf der PROTO-3 Karte.


Schaltplan: PCI-Slot, PCI-Decoder, 8-bit Latch und Decoder-GAL
(zur Vergrößerung auf Bild Klicken)

Bestückungsseite: Position der ICs (rechts), LED-Array (links)


Rückseite: Handverdrahtung, Datenbus D0...7 mit gleicher Kabellänge


PCI_ALE ist mit zusätzlichem 1 kOhm Widerstand gegen GND geschaltet
um das CS-Signal leicht zu verzögern. Der 1 kOhm Widerstand kann auch
durch einen 10..47pF (typ. 33pF) Kondensator ersetzt werden.
Entscheidend ist immer das Timing der Folgeschaltung.


Weitere FAQs zur PROTO-3:
 

Kann man die Interrupt-Funktion auf eine andere Art herstellen?

Nein. Im Layout der PROTO-3 sind die JP3-Leitungen zwar mit dem PCI-Bus direkt auf INTA...D bzw. A6,A7,B7,B8 verbunden, jedoch können hiermit leider keine Interrupts ausgelöst werden. Um Interrupts zu generieren, müssten diese Leitungen erst über den PCI-Dekoder (sehr aufwendig, per serialisierung) quasi neu aufbereitet werden, wozu der Chip nicht die benötigten Ressourcen liefert. Um weitere Rüstkosten bei den Leiterplattendesigns einzusparen, haben wir diese Leitungen einfach belassen wie sie sind, auch wenn man sie nicht weiter nutzen kann. Daher die Aussage im Manunal: (ohne Verwendung). Wir haben darmals bei dem ersten Design gehofft, dass Lattice noch einen PLCC84 pin-gleichen cPLD mit höherer Registerzahl auf den Markt bringt. Bsp. ISPLSI-1064E. Damit hätte dann auch eine Interruptverarbeitung stattfinden können, die in einem weiteren Schaltungsdesign als Ergänzung eingeflossen wäre. Leider wurden jedoch keine neuen cPLDs auf 1000er-Basis von Lattice entwickelt, sodass wir nunmehr diese Schaltung ohne Interruptverarbeitung anbieten. Der cPLD ist für das jetzige PCI-Design bereits auf etwa 98% ausgenutzt. Für eine Interruptverarbeitung müssten ca. weitere 30% der Ressourcen zur Verfügung stehen.

Kann durch Umlegen der IO- und MEM-Leitungen der PCI-Dekoder auch für Memory-Zugriffe verwendet werden?

Nein, auf gar keinen Fall. Bus-Technologie und Protokoll lassen solche wagemutigen Änderungen einfach nicht zu.

Wecher CS (chip-select) Baustein eignet sich am besten zum ausdekodieren von I/O-Adressen am PCI-Dekoder?

Hierzu empfehle ich den ispLSI1016E-80LJ von Lattice®.

Gibt es Probleme mit neuen GALs oder cPLDS... bei der Ausdekodierung von CS-Signalen?

Möglicherweise. Falls schnellere GALs, cPLDs oder FPGAs in Folgeschaltungen verwendet werden, muss eventuell das Timing zwischen PCI- Dekoder und CS-Dekoder neu angepasst werden (bsp. 33pF an PCI-ALE gegen GND und 1k gegen Vcc... o.ä.). Dies hängt im wesendlichen davon ab, wie groß die Eingangskapazitäten der Folgeschaltungen sind. Sind diese sehr klein, muss eine Parallelkapazität angebracht werden, damit die zeitliche Zuweisung zwischen Daten, CSL, CSH, RDWR und ALE wieder synchon verläuft.

Was muss man bei Layout beachten?

Beachten Sie bitte bei Ihrem Design, dass alle Signalpegel zwischen den einzelnen Bauteilen stimmig sind und das Leiterbahnen (insbesonders von Bussen) möglichst kurz und parallel verlaufen (ohne unterschiedliche Laufzeiten). Ein EMV-verträgliches Layout-Design ist selbstredend. Nutzen Sie bitte nur unser Proto-3-Layout als Vorlage.

Für welche Anwendungsfälle sind die JP3-Stecker bei der PROTO-3/PCI-Karte geeignet?

Diese INTR-A...D Anschlüsse haben z.Zt. keine weitere Funktion, dürfen jedoch auch nicht verwendet/angeschlossen werden.

Wo finde ich ein gutes Forum, wo PCI-Probleme behandelt werden?

Hier: http://www.heise.de/newsticker/foren...

Wo finde ich allgemeine Informationen zum PCI-Dekoder?

Allgemeine Informationen Teil 1
Allgemeine Informationen Teil 2

Je nach Mainboard habe ich unterschiedliche Zugriffsgeschwindigkeiten am PCI-Dekoder.
Kann es bei manchen Mainboards auch Timing-Probleme auf dem PCI-Bus geben?

Diese z.T. merkwürdigen Phänomene sind mit großer Wahrscheinlichkeit auf fehlerhafte oder zu kritisch eingestellte Hardware zurückzuführen. Der Grund hierfür ist, daß manche Mainboards bereits Probleme mit dem eigenen (internen) Bus-Timing haben, BIOS-Parameter falsch gewählt wurden, oder die Hardware teilweise bzw. komplett übertaktet ist. Diese Probleme werden beispielsweise durch Fehler bei schnell aufeinanderfolgenden I/O-Zugriffen auffällig - soll heißen - wenn der PCI-Bus mit der hierzu angesprochenen (adressierten) Hardware in einer Schleife permanent frequentiert wird. Auch wenn die Hardware unter DOS oder Windows scheinbar sauber läuft, sagt dies nichts über die tatsächliche Stabilität der verwendeten Rechner-Hardware und/oder deren Konfiguration aus. Um Anfängerfehler zu vermeiden, stellen Sie bitte die allgemeinen BIOS-Setup-Einstellungen auf die konservativen BIOS-Defaults. Bei einem fehlerhaften oder veralteten PCI-BIOS hilft möglicherweise ein aktuelles Update nach. Fragen Sie bitte Ihren Händler oder den Board-Hersteller nach neuen BIOS-Updates für Ihr System und sichern Sie sich zuvor die alte Version samt Datenstamm auf einen anderen, systemunabhängigen Datenträger, bevor Sie ein Update vornehmen. Doch Vorsicht: Auch ein scheinbar funktionstüchtiges Betriebssystem, daß mit fehlerhafter oder potentiell fehlerhafter Hardware scheinbar störungsfrei betrieben wird, stellt auf Dauer ein erhebliches Sicherheitsrisiko dar. Um hier die Zuverlässigkeit nachweisbar zu erhöhen, müssen diese Systeme einem langanhaltenden Stress-Test mit großen Temperaturschwankungen bei verschiedenartigen Konfigurationen mit diversen Betriebssystemen und Prüfprogrammen unterzogen werden. Eine einfache Diagnose-Software reicht i.d.R. nicht aus, um eine qualitative Aussage zu treffen.

Kann ein inkompatibler Rechner Schaden durch den PCI-Dekoder nehmen?

Nein, dass ist jedenfalls bisher noch nicht vorgekommen. Da es sich bei einer Inkompatibilität i.d.R. um einen Timing-Fehler und nicht um Überlastungen im klassischen Sinn handelt, ist ein möglicher Schaden durch unseren PCI-Dekoder (dem logischen Verständnis nach) ausgeschlossen. Die Chip-Anschlüsse des ispLSI1032E besitzen eine Eingangskapazität von nur 8pf, sodass eine Bus-Überlastung (im Normalbetrieb bei 33 MHz) ebenfalls ausgeschlossen werden kann. Mögliche Schäden sind wohlmöglich auf andere Ursachen zurückzuführen, so zum Beispiel: ESD-Entladung beim Einsetzen der Karte durch den Kunden, Nichtbeachtung der PCI-Spezifikation bzw. der 5 Volt und 33 MHz Vorgaben durch den Mainboard-Hersteller, Nichtbeachtung des PROTO3 Referenz-Layouts, o.a. Design-Fehler in Schaltung und Layout...

Folgende Fehlerbilder weisen i.d.R. auf Inkompatibilitäten im PCI-Bus-Timing des Rechners hin:
- Rechner bootet nicht mehr oder stürzt beim Booten bzw. später ab
- Vendor und/oder Device-ID werden nicht richtig erkannt, folglich schlägt die Treiberinstallation fehl
- Rechner bootet, aber es ist kein Zugriff auf das Device möglich (gültige I/O-Adresse fehlt) -> Wurde die Treiberinstallation richtig durchgeführt?
- Zugriffe sind nur zeitweise richtig bzw. erfolgen in unregelmäßigen Abständen mit Fehlern.

Mögliche Lösung:
- vor Verwendung Default-Einstellung im BIOS vornehmen und PnP-Flag auf "NO" stellen
- anschließend ESCD-Reset durchführen und Ressourcenvergabe prüfen
- CPU und FSB keinesfalls übertakten (33 MHz PCI-Bus Takt einhalten)
- Netzteil mit ausreichender Stromversorgung verwenden und auf Kurzschlüsse achten
- ggf. benachbarte PCI-Karten entfernen und/oder einen anderen PCI-Slot ausprobieren
- Hyperthreading ausschalten und/oder andere "Bus-Beschleuniger" im BIOS abschalten
- wenn nichts geht: Rechnermodell wechseln, da vermutlich eine generelle Inkompatibilität vorliegt

Achtung:
Bei Übertaktung des Rechners bzw. PCI-Busses kann jedoch der PCI-Dekoder Schaden nehmen. In diesem Fall könnte ein anschließend defekter PCI-Dekoder wiederum Teile im Rechner beschädigen. -> Ursache -> Wirkung -> Folge-Ursache -> Folge-Wirkung...

Wo finde ich das JTAG-Kabel um den JED-File in den ispLSIxxxx zu laden?

Sie können den JED-File mit einer Lattice® Download-Software direkt über die LPT-Schnittstelle zum ispLSI-Chip laden. Das Hersteller-Manual finden Sie dazu hier: isp_dlcable.pdf

Ich möchte einen 8255 Port-Baustein am PCI-Dekoder anschliessen. Muss die Reset-Leitung angeschlossen werden?

Ja, der 8255 (bzw. µPD71C55) benötigt einen Reset, damit die interen Register bei Stromzufuhr entsprechend zurückgestellt werden (siehe 8255 Datenblatt). Da der PCI-Reset (vom Rechner-Bus) aber schon mit dem gesamten FANOUT des PCI-Dekoders belastet ist und kein zusätzliches Eingangsgatter laut PCI-Spezifikation mehr zulässt, muss eine eigene Reset-Schaltung dafür Sorge tragen, bei einem Power-Up einen Reset auf der Karte zu erzeugen. Über ein RC-Glied wurde dazu ein Eingang am GAL22V10 genutzt, um in dem Fall, wo ein 8255 angeschlossen wird, einen Ausgang mit Synario umzuprogrammieren und den Reset-Ausgang anzuschliessen. Beispielsweise kann man dann CS3 in RESET-OUT umtaufen - und/oder andersweitig benutzen. Der RESET-OUT sollte am Besten noch mit VCC vom GAL intern verknüpft werden und dann erst zum 8255 (geBuffert) geleitet werden. Die Kondensatoren C6 und C7 können wahlweise bestückt werden, je nachdem, wechen Reset-Pegel man erzeugen möchte (bei Power-Up von low-nach-high oder high-nach-low). Im Schaltplan mussten dazu zwei Kondensatoren eingezeichnet werden, damit man im Layout eine entsprechende Auswahl zur Bestückung der Kondensatoren treffen kann. Hierzu können die Lade-/Entlade-Widerstände R1 und R2 entsprechend vertauscht werden bzw. mit anderen Werten längere oder kürzere RC-Ladezeiten einstellen.

Die GAL-Gleichung aus Ihrem PROTO3-Beispiel passt nicht zu meiner Hardware. Was muss ich tun?

Selbst ist der Mann. Das GAL ist nur als ein hypothetisches Beispiel zu verstehen. Bei der Entwicklung wurde davon ausgegangen, dass jeder etwas anderes mit der PROTO3 Karte entwickeln (dekodieren) möchte und es daher auch keine universelle Chip-Select-Generalschaltung geben kann. Im Prinzip hätte man das GAL auch leer lassen können. Da es aber schöner ist, wenn eine LED oder bereits fertige Chip-Selects zu Testzwecken zur Verfügung steht, wurde diese "Minimal-Logik" gewählt und einfach so als Beispiel belassen wie sie bei uns funktioniert hat. Es steht jedem Frei, diese Gleichungen für seine Zwecke abzuändern oder völlig neu zu programmieren.

Sollte der Buffer am 22V10-Ausgang der PROTO-3 nicht besser ein Inverter sein, da der 8255 Reset active high ist?

Je nach nachgeschaltetem Peripheriebaustein benötigt man einen LOW->HIGH oder HIGH->LOW Reset mit unterschiedlichen Zeiten. Aus diesem Grund wurde hier nichts von uns vordefniert und einen Inverter kann man schnell noch nachträglich in die GAL-Gleichung des 22V10 einbringen. Der Reset-Ausgang wurde nicht speziell für einen 8255 Chip entwickelt.

Wo finde ich die JEDEC-Files zu den verschiedenen PROTO3-GAL22V10 Beispielen?

Die 22V10 JEDEC-Files können Sie hier herunterladen: PROTO3-GALS.ZIP

Kann man eine allgemeine Aussage treffen, ob LS, HC oder besser AHCT oder F-Typen am User-Bus verwendet werden sollen?

Bei OUTPUT empfehlen wir den Einsatz von SN74HC374N (Ti) und bei INPUT empfehlen wir den Einsatz von SN74F245N (Ti). Zur CS-Erzeugung empfehlen wir den Einsatz eines ispLSI1016E mit 80 MHz. Beispiel: PCI-1616 Karte.

Kann man den Oki 82C55A-2VJS direkt am PCI-Decoder verwenden?

Theoretisch ja. Der Oki 82C55A-2VJS (8 MHz) ist aber wahrscheinlich etwas zu langsam, sodass das dekodierte CS-Signal des GAL22V10 bereits zu kurz ist und es zu Aussetzern oder fehlgeleiteten Daten kommen kann. Bei Verwendung eines ispLSI1016E ist man bei der CS-Erzeugung felxibler und kann ggf. den CS für ältere Bausteine künstlich mit Flip-Flops um ein paar Taktzyklen verlängern.

Wenn ich mit meiner Oszilloskop-Messprobe beipielsweise auf PCI_ALE messe, kann es sein, dass manche read/write Befehle nicht mehr ordnungsgemäß ausgeführt werden, oder mein PC stürzt ab, oder es passiert etwas anderers unvorhersehbares. Ist das normal?

Ja, dass kann passieren, da die Anschlüsse sehr empfindlich auf zusätzliche bzw. kapazitive Last der Messprobe reagiert (insbesonders bei billigen 1:1 / 1:10 Tastköpfen). Das anlegen einer Messprobe bzw. eines unterminierten Kabels, kann das Signal verschleifen, sowie Reflektionen verursachen, die dann als "Überschwinger" oder "Bananen-Rechteck" auf dem Oszilloskop sichtbar werden. Bei der nachfolgenden Dekodierung werden somit Timing-Fehler verursacht, da keine Synchonität der zeitlichen Abläufe der einzelnen Singnale untereinander mehr gegeben ist. Diese Timing-Fehler können dann bei ungünstigen Signal-Konstellationen nicht nur read/write-Befehle "verschlucken" oder auf dem PCI-Bus wirre Daten absetzen, sondern auch einen PC-Absturz verursachen.

Wenn ich mit einem Finger auf die Anschlusspins des PCI-Dekoders während des Betriebs lange, stürzt mein PC ab. Ist das normal?

Gegenfrage: Finden Sie es normal, dass Sie mitten im Betrieb auf der Platine rumfingern? 

Trotzdem: Bei uns konnte dieses Phänomen so nicht provoziert werden; selbst dann nicht, wenn mit mehreren, fettigen oder naßen Fingern zugleich auf verschiedenen bzw. allen Pins des Dekoders herumgelangt wurde. Wenn allerdings mit der Berührung des Fingers eine statische ESD-Entladung stattfindet, kann nicht nur der PC abstürzen, sondern zudem der PCI-Dekoder und/oder das Mainboard zerstört werden. Auf diese Art "Fehlersuche" sollte also im eigenen Interesse besser ganz verzichtet werden.

Benötige ich eine Bus-Terminierung für meine Folgeschaltung?

Wo die Schulweisheit aufhört, beginnt die Praxis. Die passive Bus-Terminierung hat zur Aufgabe, User-Bus-Signale am Leiterbahnenende gegen Masse oder Vcc ähnlich wie bei SCSI-Schnittstellen gegen Reflektionen abzuschließen. Ohne diese Maßnahme bilden sich Signalreflexionen und Überschwinger an den Siganlflanken aus, die jedes hochgetaktete  Bus-System instabil werden lassen. Durch die hohe Busgeschwindigkeit können höhere Datenraten zwischen User-Bus und PCI-Dekoder erzielt werden, wenn die Terminierung entsprechend eingehalten wird. In der Regel wird am Ende jeder Datenleiterbahn ein Widerstand nach GND gelegt (siehe PROTO-3). Je nach Layout muss der Widerstandswert verändert werden, da Leiterbahnkapazitäten- und Induktivitäten das Signalverhalten beeinflussen. Bei Verwendung mehrerer Peripherie-Controller (bsp. µPD8255), sind schnelle Bus-Treiber, oder ggf. eine bipolare Terminierung vorzusehen. Interessanter Link zum Thema: http://www.elektronik-kompendium.de

Ich habe mir die Entwicklung mit dem PCI-Dekoder leichter vorgestellt. Gibt es noch einfachere Bausteine?

Nein. Noch einfachere PCI-Bausteine kenne ich nicht. Es gibt sie nur noch komplexer. Entwicklungsarbeiten an PCI-Schaltungen sind nunmal alles andere als trivial. Ein IT-Studium sowie eine 10-jährige Praxis in der PC- und Digitaltechnik sollte für Entwicklungen am PCI-Bus mindestens vorhanden sein.

Wo finde ich ein Hilfe-Forum, wenn es um PCI-Probleme geht?

Hier: http://powerforen.de/forum/archive/index.php/f-29-p-66.html

Wo finde ich eine ausführliche Beschreibung, was PCI eigentlich ist?

Hier: http://www.weblearn.hs-bremen.de/risse/RST/SS01/PCI_Bus/Presentation.pdf

Weitere Infos zu PCI unter: 
http://www.tu-chemnitz.de/informatik/RA/news/stack/kompendium/vortraege_97/pci/pci2.html
http://www.controllersandpcs.de/lehrarchiv/pdfs/archiv/PCTEC10.PDF
http://www.nickles.de/biosguide/html/pci-bios-optionen-im-uumlberblick-75.htm
http://www.techfest.com/hardware/bus/pci.htm

Ich benötige das Timing der read-Zyklen. Gibt es dazu ein Diagramm?

Leider nein. Das Timing der I/O-read-Zyklen wird letztendlich durch das jeweilige Mainboard, bzw. dessen PCI-South-Bridge vorbestimmt. Da es hier große Unterschiede gibt, wann und wie lange ein data-valid nach dem CS-Signal herrscht, ist ein Diagramm nicht mehr sinnvoll. Falls Sie das generelle Timing vom PCI-Bus benötigen, müssen wir Ihnen diese Informationen leider aus lizenztechnischen Gründen vorenthalten. Die PCI-Dokumentation (inkl. PCI-Timing) können Sie nur bei der www.pcisig.com erwerben und herunterladen. Abzüge (auch nur auszugsweise) verletzen den Urheberschutz und sind daher strafbar. Kopien werden daher von uns abgelehnt.

Wie schnell ist die Repitiergeschwindigkeit von I/O-Zugriffen?

Dies hängt maßgeblich vom Mainboard selbst ab, dessen Chipsatz den PCI-Bus physikalisch zur Verfügung stellt. Neben dem Mainboard spielen aber auch noch PCI-BIOS, Betriebssystem und die Programmiersprache bzw. dessen Compilat und HW-Treiber eine wesendlichen Rolle.

Gibt es Grenzen bezüglich der Repitiergeschwindigkeit von I/O-Zugriffen?

Ja. Die Repitiergeschwindigkeit sollte keinesfalls unter 400ns liegen, da ansonsten Überschneidungen von Datenfragmenten möglich werden.

Kann es mit Hyper-Threading-Technologie und PCI-Bussen Probleme in der Datenübertragung geben?

Da die Mainboard-Hersteller keine Schaltpläne und/oder interne Chip-Programmierungen freigeben bzw. deren Schaltung veröffentlichen, ist eine fundierte Problemanalyse hierzu leider nicht möglich.

Wie lange ist ein I/O-read-Zyklus?

Ein 33MHz PCI-Takt entspricht etwa 30ns. Bei 12 Takten ist der I/O-read-Zyklus bei unserem Dekoder abgeschlossen. 12 x 30ns = 360ns.

Besitzt der PCI-Dekoder eine Wait-State-Schaltung?

Nein. Der PCI-Dekoder ist permanent im "Free-Run"-Modus und besitzt keine eigene Wait-State-Schaltung, die den Prozess von schnellen, repitierenden Datenpaketen automatisch synchronisiert. Der Anwender wird hier aufgefordert, selbst Vorsorge zu treffen. Es gilt beispielsweise darauf zu achten, dass kein Burst-Modus für den access-cycle aktiviert wurde. Die Folge wäre ein lawinenartiges Überladen von Daten, die der Dekoder zeitlich nicht mehr zuordnen kann.

Kann man eine Wait-State-Schaltung nachträglich implementieren?

Nein. Dafür sind leider keine ausreichenden Ressourcen und Flip-Flops mehr vorhanden. Unser PCI-Dekoder wurde aus Kostengründen beim Design lediglich auf die notwendigste Minimal-Schaltung reduziert.

Wir haben jetzt einen PC, der offensichtlich keinen weiteren Adressraum für neue Karten mehr zulässt. Ist es möglich, den Adressraum des PCI-Dekoders zu verkleinern?

Nein, dieser ist bereits schon sehr klein gewählt, sodass sich viele Einheiten diesen Bereich aufteilen können. Eine Reduktion bzw. Veränderung der Ressourcenbereiche ist zudem aus Kostengründen (sehr hoher Zeitaufwand) nicht sinnvoll. Die Blockgröße beträgt fest 255 Bytes (0FFh) und ist aus technischen Gründen leider nicht veränderbar bzw. würde einer Neuentwicklung gleichkommen. Wenn Ihr PC die Karte beipielsweise bei Cxxx anlegt, so gilt zu vermuten, dass weitere Ressourcen oberhalb dieser Adresse (bsp. Dxxx) noch frei verfügbar sind, da das PCI-BIOS alle Devices hintereinander automatisch anordnet (enum). Das PCI-BIOS ist grundsätzlich für die Zuteilung von Ressourcen, zu denen auch die I/O-Adressräume gehören, zuständig. Dazu muss in den PCI-BIOS-Einstellungen des PCs das PnP-Flag auf NO gestellt sein (default), damit die Vergabe von Ressourcen durch den PCI-Bus mittels Scan-Vorgang stattfinden kann und entsprechende Bereiche auf die jeweiligen Devices (config-space der PCI-Karten) zurückgeschrieben werden können. Erst nach diesem Scan-Vorgang sind gültige Adressräume auf den Karten verfügbar. Sollte das PCI-BIOS beim Stand von Cxxx hier keine I/O-Adressbereiche mehr freigeben wollen, gilt ehr ein Fehler im PCI-BIOS zu vermuten, oder das alle verfügbaren Ressourcen bereits vergeben sind. Letzteres habe ich in der Praxis noch nie erlebt. Bitte beachten Sie, dass sich Speicherbereiche von PCs in MEM-Space und I/O-Space aufteilen, so das quasi zwei Adressbereiche parallel in einem System zur Verfügung stehen. Unterschieden werden diese lediglich durch das chip-select-Signal. Unser PCI-Dekoder hingegen unterstützt ausschließlich nur den I/O-Adressraum (0000-FF00h) und somit kein MEM-Space o.a. Bereiche.

Warum gibt es keinen Interrupt-Eingang am PCI-Dekoder?

Für die PCI I/O-Dekodierung sind bereits 98,6% der ispLSI1032E-Resourcen verbraucht worden, sodass die Serialisierung der Interruptverarbeitung nicht mehr in den Chip passt. Eine Interruptverarbeitung würde ca. weitere 30% benötigen.

Kann ich mit dem PCI-Dekoder neben I/O auch MEM und DMA verwalten?

Nein. Der PCI-Dekoder ist nur für reines Port-I/O-handling ausgelegt.

Gibt es eine kurze Beschreibung der Anschlüsse bzw. Signale?

Ja, hier: pcintern.html

Wo finde ich weitere Informationen in Bezug auf PCI, PCIe (PCI Express) und PCI-X?

Hier: http://www.elektronik-kompendium.de/sites/com/0310091.htm

Wo finde ich weitere Infos zu PCI-Interna?

http://www.drhardware.de/hilfe/analysen_hardware.htm
http://www.focusrite.com/answerbase/ge/article.php?id=265

Ich habe einen Bluescreen mit der Meldung: NMI: Parity check / Memory Parity Error. Was muss ich tun?

Da unser PCI-Decoder kein Parity check für Memory unterstützt, muss in diesem Fall das Prüf-Flag im Rechner-BIOS auf "OFF" gestellt werden. Manche moderne Rechner bieten hierzu leider keine Einstellmöglichkeit mehr, sodass hier nur zu einem Rechnerwechsel geraten werden kann. Einige Board-Hersteller haben dieses Problem wiederum erkannt und bieten ein BIOS-Update an, dass die Abschalt-Funktion wieder zulässt. Die Firma DELL zählt zum Leidwesen seiner Kunden oft nicht dazu. Warum ein RAM-Parity-Check (Memory !!!) überhaupt bei Zugriffen auf den I/O-Bereich meckert, müssen Sie den Hersteller fragen.

Wie hoch sollte der PCI-Latency-Timer eingestellt werden (default = 32/64)?

Stellen Sie diesen wichtigen BIOS-Wert bitte auf 128. Bei einem AMI-BIOS finden Sie diese Einstellmöglichkeit unter: Advanced - PCIPnP - PCI Latency Timer. Weitere Infos unter: http://www.wcm.at/contentteller.php/news_story/tippstricks_pci_latency_timer.html

Ich habe Probleme mit dem PCI-Dekoder, wenn ich PCI-Riser-Karten verwende. Haben Sie einen Tip?

Das muss nicht an unserem PCI-Dekoder liegen. Bitte lesen Sie dazu folgenden Bericht:
http://www.heise.de/ct/hotline/PCI-Riser-Karten-319138.html

Wo finde ich das ELEKTOR-Projekt zur PROTO3 PCI-Karte?

Hier:
http://www.elektor.de/jahrgang/2001/februar/pci-experimentierkarte.59370.lynkx

 

Interessante Hinweise:

Falls Sie ein GAL-Programmiergerät suchen:
http://www.elektronikladen.de/galep4.html
http://www.geist-electronic.de/Programmer/body_programmer.html


KOLTER ELECTRONIC ist nicht für die Inhalte fremder Seiten verantwortlich.
Es gelten ausschließlich die AGB der Firma KOLTER ELECTRONIC.
Für die Richtigkeit der Angaben wird keine Gewähr übernommen.
Alle Preisangaben sind gewerblich. Das Zahlungsmittel ist EURO.
Alle Rechte vorbehalten. (c) copyright H.Kolter

[ Zur KOLTER ELECTRONIC® Hauptseite ]