für ein Projekt möchte ich ein LCD-Display sowie eine kleine Tastatur (Nummernblock wie beim Telefon) mit einem Softcore-Mikroprozessor (Xilinx Microblaze) ansteuern.
Nun suche ich eine geeignete Anschlussmöglichkeit. Die Platine hat einen RS-232-Anschluss, der aber belegt ist. Das Design ist relativ spartanisch ausgelegt. Ich dachte deshalb an I2C, da nur 2 Anschlussleitungen. Gäbe es noch andere Bussysteme die hier Sinn machen?
LCDs und Tastaturen gibt es ja bereits mit I2C-Ansteuerung. Hier bräuchte ich keinen weiteren Baustein, richtig? Der MicroBlaze bräuchte natürlich noch einen I2C-Treiber.
Mit welcher Art von Steckern werden I2C-Geräte angeschlossen?
eigentlich macht ein µController nur mit 1 x seriell und 1 x I2C wenig Sinn, da sollten noch weitere serielle und vor allem parallele Ports sein, damit man etwas damit anfangen kann. Bei einer Tastatur etwa schliesst man meistens die Spalten und Zeilen direkt an Pins eines Parallelports an und fragt sie timergesteuert ab. Auch die meisten LCDs haben einen parallelen Anschluss.
Wenn du aber keinen realen Prozessor, sondern IP für ein FPGA hast, kann es sein, dass du dir die benötigten IOs erst noch dazuprogrammieren oder -konfigurieren must.
I2C ist hauptsächlich für „Onboard“ -Kommunikation, daher gibt es keine Steckernorm. Nimm einfach WireWrap-Pfostenstecker.
Gruss Reinhard
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
eigentlich macht ein µController nur mit 1 x seriell und 1 x
I2C wenig Sinn, da sollten noch weitere serielle und vor allem
parallele Ports sein, damit man etwas damit anfangen kann. Bei
einer Tastatur etwa schliesst man meistens die Spalten und
Zeilen direkt an Pins eines Parallelports an und fragt sie
timergesteuert ab. Auch die meisten LCDs haben einen
parallelen Anschluss.
Wenn du aber keinen realen Prozessor, sondern IP für ein FPGA
hast, kann es sein, dass du dir die benötigten IOs erst noch
dazuprogrammieren oder -konfigurieren must.
I2C ist hauptsächlich für „Onboard“ -Kommunikation, daher gibt
es keine Steckernorm. Nimm einfach WireWrap-Pfostenstecker.
Gruss Reinhard
Sicher hat der Mikroprozessor mehr Ports, allerdings muss ich das Boarddesign als gegeben hinnehmen und da ist der aktuelle Stand, dass nur ein RS232-Port nach außen geführt wird und eben einzelne Pins, die wir mit I2C ansteuern wollen.
Tastaturen und Displays mit I2C-Interface sind ja auf dem Markt vorhanden.
Sicher hat der Mikroprozessor mehr Ports, allerdings muss ich
das Boarddesign als gegeben hinnehmen und da ist der aktuelle
Stand, dass nur ein RS232-Port nach außen geführt wird und
eben einzelne Pins, die wir mit I2C ansteuern wollen.
I²C wird ja mit einem Clocksignal und einer bidirektionalen
Datenleitung realisiert. Der Rest ist ist das I²C-typische
Protokoll, welches wohl mal von Philips festgelegt wurde.
Die Umsetzung ist also hauptsächlich eine Frage des I²C-Treibers,
welcher auf den Prozessor muß.
Tastaturen und Displays mit I2C-Interface sind ja auf dem
Markt vorhanden.
Es gibt eine ganze Zahl spezieller I²C-Bausteine mit diversen
Funktionen wie z.B. EEPROM, Realtimecock, Digital-E/A, ADC usw.
Wenn Ihr ein spezieles Display mit i²C habt, dann macht der
I²C-BUS am Prozessor Sinn.
Ich denke aber, daß man sich da ziehmlich einschränkt.
Displays werden eher mit 4bit oder besser 8bit-Paralleport
incl. ein paar Steuerleitungen angesteuert.
Mit I²C muß man also mittels I²C zu Paralell-Umsetzer arbeiten.
Abgesehen von den rel. hohen Kosten der I²C-Bausteine ist die
Sache nicht sehr schnell (auch wegen des Overhead des
I²C-Protokolls und der begrenzten Taktrate der I²C-Chips).
Schneller und einfacher wäre z.B. ein SPI-BUS.
Dieser arbeitet mit einem Clock, MOSI (MasterOut/Seriell In),
MISO (MsterIn/SeriellOut) und bei mehreren BUS-Teilnehmern
je ein CS (Chipselekt).
Du bräuchstet also mind. 3 Digital-Port für das Display.
SPI-Chips gibt es auch eine Menge. seriell-digital-Umsetzungkann man aber z.B. sehr einfach mit Schiebregistern machen (z.B. 74HC164
oder 74HC595). Ein spezielles Protokoll ist natürlich nicht nötig.
SPI-Treiber sind deshalb recht einfach und ziehmlich schnell
-> z.B. Takt 8MHz (und höher möglich, was die TTL-Chips eben
so schaffen).
Du bräuchstet also mind. 3 Digital-Port für das Display.
SPI-Chips gibt es auch eine Menge.
seriell-digital-Umsetzungkann man aber z.B. sehr einfach mit
Schiebregistern machen (z.B. 74HC164
oder 74HC595). Ein spezielles Protokoll ist natürlich nicht
nötig.
für eine Displayansteuerung braucht man ja nicht unbedingt
eine Leseleitung.
Dann ist natürlich auch mit 2 Portsignalen eine seriell-paralell
Umsetzung mittels Schieberegister leicht zu machen.
Evtl. hat der Prozessor sogar Ports, die für SPI vorbereitet sind.
Gruß Uwi
erzähl mal ein wenig mehr zu dem Board, den Anschlüssen und der Aufgabe. In welchem Rahmen willst Du das ganze denn machen? Uni? Schule? Hobby?
Ich geh mal davon aus, dass das Board mehr als eine RS-232 Schnittstelle und 2 Pins hat. Und in Deinem FPGA/CPLD wird auch genug Platz für zusätzliche Logik sein.
I2C wäre eine sehr nette Lösung, aber Du müsstest halt die passenden Komponenten finden und bezahlen. Gibt übrigens auch Displays mit RS-232 Schnittselle. Soll es eigentlich ein grafisches Display sein? Für ausschließlich Text wäre I2C schnell genug, bei Grafik wär ich da eher skeptisch.
Wenn Du uns etwas mehr erzählst können wir Dir vielleicht auch besser helfen.
Die RS-232-Schnittstelle ist wie gesagt schon benutzt.
Leider weiß ich nichts genaueres zum Board-Design, das es noch in der Mache ist. Ich muss es dann als gegeben hinnehmen.
Fest steht allerdings, dass nicht viele Pins nach außen geführt werden, weshalb eben ein minimalistischer Ansatz wie I2C (2 Steuerleitungen) bevorzugt wird.
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
erzähl mal ein wenig mehr zu dem Board, den Anschlüssen und
der Aufgabe. In welchem Rahmen willst Du das ganze denn
machen? Uni? Schule? Hobby?
Es handelt sich um eine Diplomarbeit. Zum dem Board kann ich dir gar nicht viel sagen. Das FPGA-Design ist noch in der Mache und ich muß es dann als gegeben hinnehmen. Fakt ist aber, dass wenige Ports des Prozessors nach außen geführt werden, da der Prozessor ja nachträglich eingebrannt wurde, als das Board-Design schon fest stand. Deshalb ist I2C auch der Favorit bei allen Beteiligten (nur 2 Steuerleitungen).
Ich geh mal davon aus, dass das Board mehr als eine RS-232
Schnittstelle und 2 Pins hat. Und in Deinem FPGA/CPLD wird
auch genug Platz für zusätzliche Logik sein.
Wie gesagt, ich würde nicht davon ausgehen Soweit ich weiß hatte das ursprüngliche Design eine RS-232-Schnittstelle und ein paar Pins um Spannungswerte auszulesen. Diese sollen wohl jetzt mit den Prozessor-Ports verbunden werden. Aber am eigentlichen Design wird wohl nichts mehr verändert.
Ich kann nur abwarten was mir dann später vorgesetzt wird. Aber ich gehe mal vom minimalsten aus.
An den FPGA komme ich übrigens nich ran, dass ist nicht meine Aufgabe. Ich soll nur den Softcore-Prozessor programmieren.
I2C wäre eine sehr nette Lösung, aber Du müsstest
halt die passenden Komponenten finden und bezahlen. Gibt
übrigens auch Displays mit RS-232 Schnittselle. Soll es
eigentlich ein grafisches Display sein? Für ausschließlich
Text wäre I2C schnell genug, bei Grafik wär ich da
eher skeptisch.
Displays mit I2C gibt es laut google einige. Bei der Tastatur (einfacher Ziffernblock) brauche ich wohl einen Port-Expander.