Projektseite
zur
PROTO3 PCI-Prototypenkarte
| Für die hier vorgestellten
Schaltungen wurde der 10 MHz uPD71055C-10 von NEC verwendet. Die Dekodierung
des PCI-Busses erfolgt mit dem KOLTER PCI-Dekoder-Chip und stellt die erforderlichen
Signale wie den 8/16-bit Datenbus, IOWR, IORD und weitere Bussignale zur
Verfügung. Durch ein offen beschriebenes Dekoder-GAL 22V10 sind mehrere
Chip-Select-Signale vordekodiert, die aber nachträglich durch den
Anwender mittels Synario verändert werden können. Bei allen,
unseren PCI-Karten ist keine fortlaufende Adressierung möglich, da
von 32-bit-Datenwörtern immer nur die unteren 16-bit adressiert werden
können (A1-Leitung fehlt). Zur Unterscheidung des unteren und oberen
Datensegments (D0...D7 und D8...D15) dient üblicherweise die Adressleitung
A0, die allerdings beim PCI-Bus-System durch die Signale CSL = chipselect-low
und CSH = chipselect-high abgelöst wurden. Die Datenleitungen D16...D31
werden nicht zum User-Interface des PCI-Dekoders weitergeleitet, da hierfür
keine Pins mehr am 1032E-Baustein zur Verfügung stehen. In der Praxis
liegen somit die Adressen des 8255 (Hardware) "geshiftet" auf folgenden
I/O-Adressen: |
|
| xxx0 = PA |
xxx4 = PB |
xxx8 = PC |
xxxC = Status-Port |
Bei dem aktuellen Spezial-Aufbau
der PROTO-3 PCI haben wir einen weiteren Trick angewendet, um den 16-bit
Bus besser auszunutzen und um quasi zwei 8255 Peripherie-Controller mit
einem 16-bit-Word-Zyklus zu schreiben/lesen. Die Bausteine werden jetzt
zusätzlich vom Datenbus her unterschieden: Der erste 8255 nutzt die
Datenleitungen D0...D7, ein zweiter 8255 ist mit den Datenleitungen D8..D15
verbunden worden. Damit liegen jetzt die Bausteine verschachtelt im Adressaufbau
wie in der folgenden Tabelle dargestellt:
xxx0 PA (1. 8255)
xxx1 PA (2. 8255) |
xxx4 PB (1. 8255)
xxx5 PB (2. 8255) |
xxx8 PC (1. 8255)
xxx9 PC (2. 8255) |
xxxC Status (1. 8255)
xxxD Status (2. 8255) |
Wie man aus der neuen Adressierungsweise
erkennen kann, ist es jetzt möglich, mit einem Word-OutPort(xxx0,FFAA)-Befehl
beispielsweise direkt auf den PA(1) und PA(2) zu schreiben. Dabei wird
der Wert "AA" auf die Datenleitungen D0...D7 geschrieben und in das Register
des 1. 8255 Port PA geladen. Gleichzeitig wird aber auch der 2. 8255 PA
mit dem Wert "FF" beschrieben, da es sich um einen 16-bit Schreibzyklus
handelt. Mit diesem Aufbau haben wir jetzt quasi einen 8255-16Bit-Contoller
geschaffen. Das Geheimnis, wie man diese Bausteine mit einem 16-bit word-Befehl
adressiert liegt in dem speziellen Signalaufbau des 1032E PCI-Dekoders,
der durch den Wegfall der A0 und A1-Leitung aber die beiden CS-Signale
CSL und CSH zur Verfügung stellt, die jeweils den Zugriff auf die
Datenleitungen D0...D7 und D8...D15 koordinieren. Beide CS-Signale können
einzeln (8-bit) oder auch zugleich (16-bit) aktiv sein.
Das CS0-Signal am GAL ist
etwa 100ns lang und sieht am Scope wie folgt aus:

Das original Timing des
PCI-Dekoders mit nachgeschaltetem Dekodier-GAL
sieht folgendermaßen
aus:

Folgende Zeitzusammenhänge
konnten bei einem 8-bit write-port
mit einem 200 Ms/s. Logic-Analyzer
real ermittelt werden:
t1 = 20 ns ALE
t2 = 30 ns ready for data
t3 = 175 ... 200 ns (data-valid
siehe t10)
t4 = 140 ns RW
t5 = 45 ns ready for CS
t6 = 105 ns chip-select
low (low byte D0..D7)
t7 = 45 ... 50 ns ready
for write
t8 = 100 ... 110 ns chip-select
8255
t9 = 10 ns CSL to chip-select
Hier finden Sie die Projektdateien
zu den Dekodier-GALs:
PROTO3GAL.ZIP
22V10 Synario-Projekt für die normale PROTO-3
PROT8255.ZIP
GAL22V10 JED-File für PROTO-3, für einen uPD71055
Neu:
Für 2x uPD71055 als 16-bit Controller
GAL28255.ZIP
GAL22V10 Synario-Projekt und JED-File
>>
Synario-Projekt Bild <<
Neu: Jetzt mit Adress-Leitung
A5
Hier gibt es jetzt auch
ein weiteres GAL22V10-Projekt mit ausdekodiertem
A5-Adreßsignal auf Pin 14. Die LED-Ansteuerung über das Latch-Register
auf Adresse BASE+08h entfällt dafür. Falls Sie das Projekt selber
editieren oder erweitern möchten, können Sie sich beim Hersteller
Lattice registrieren und den aktuellen Synario PLD-Compiler (jetzt
ispLEVER) kostenlos herunterladen.
Wichtige
Anmerkung zum GAL22V10-Timing
(Betrifft nur die PROTO-3
Kartendesigns) Da das PCIALE-Signal bei nur ca. 20..25ns liegt, kann es
vorkommen, dass die CS-Dekodierung mit einem 25ns-GAL fehlschlägt,
wenn sich die Chiptemperatur verändert. Sicherheitshalber sollte man
hier einen 10- oder 15ns Typ einsetzen, damit die volle Temperaturbandbreite
des PCI-Dekoders genutzt werden kann. Insbesonders bei den PCI-Dekodern,
die im Fertigungsprozess A...D hergestellt wurden, können ALE-Zeiten
von nur ca. 17...22ns erzeugt werden, die das 25ns-GAL dann nicht mehr
korrekt verarbeiten kann. Beim E-Prozess liegt PCIALE bei 25 ns und ist
als relativ unkritisch anzusehen. Andere PCI-Karten, die nicht über
das 22V10-GAL dekodieren (Beispiel ispLSI1016) sind hiervon nicht betroffen,
da diese 80-MHz-Typen ohnehin mit 12,5ns arbeiten.
Programmierung der uPD71055
PIO
Mit dem Befehl : OUT(Statusport,
128 + xxx) wird das Status-Register des 8255-Portbausteins programmiert.
Dieses Register gibt vor, welche der drei E/A-Ports (PA, PB und PC) auf
Eingabe oder Ausgabe gestellt werden. Alle Ports können sowohl als
Ausgabe- oder Eingabe-Port fungieren. Der Port "PC" kann in zwei Hälften
unterteilt werden, sodass 4 bit als Ein- und 4 bit als Ausgabe dienen können.
Das Komandowort, dass zum Status-Port des 8255 gesendet wird, muss vor
der jeweiligen Nutzung der E/As erfolgen. Das geschriebene Komandowort
ist so lange gültig, bis es mit einem anderen Wert überschrieben
wird. Es muss aber mindestens ein mal nach dem Einschalten des PCs erfolgen,
um den 8255 zu initialisieren. Die Initialisierung des Komandoregisters
ist jedoch nach Wegnahme der Spannungsversorgung (PC wird abgeschaltet)
wieder gelöscht. Die Zusammenstellung des Komandowortes finden Sie
im Anhang der Kartenbeschreibung oder auf unserer Web-Seite unter: http://www.pci-card.com/8255.pdf
Pressetext
zur PROTO-3
Informationen
zum PCI-Contoller
All files with copyright
by ® KOLTER ELECTRONIC and
others.
Please read EULA
before use this software.
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 ]
|