Forum: FPGA, VHDL & Co. SPI->IDE oder MMC


von Sebastian (Gast)


Lesenswert?

Hallo,

ich hab mich vor längerer Zeit mal mit VHDL beschäftigt. Nun brauch ich
ne Menge Speicher für ein kleines Projekt. Ich wollte ne IDE Platte
nehmen aber die brauch mir zu viele Pins. MMC und SD haben nich genug
Platz. Jetz dacht ich mir, mit Hilfe von nem CPLD müsste man doch ne
Art SPI nach IDE Umsetzer bauen können. Wie groß müsste der CPLD den
sein oder brauch man da schon nen FPGA a la Spartan? Hab leider nich so
die Erfahrung was die Gatter hergeben.

Seb

von Jörn (Gast)


Lesenswert?

Hallo Seb,

ich bekommt meinen SPI Slave in einen XC9572XL rein. Dieser ist damit
aber schon gut gefüllt (61 von 72 MC). Ist aber noch etwas Overhead
dabei. Ich denke auf 55 MC könnte ich ihn drücken.

Was die Umsetzung auf IDE an Resourcen braucht, kann ich nicht
abschätzen. Ich würde sagen, dass der 9572 dafür zu klein ist. Der
nächste größere ist der 95144. Leider weis ich nicht was er kostet bzw.
wo man den kaufen kann. Den 9572 gibt für günstig Geld beim Reichelt
(4,5 € / TQFP 100).

Gruß Jörn

von Jörn (Gast)


Lesenswert?

So hab meinen SPI Slave auf 37 MC verkleinert bekommen. Ist im Moment
für 8 Bit Übertragungen ausgelegt.

Gruß Jörn

von Sebastian (Gast)


Lesenswert?

Ok, besten Dank. Dann scheint sich das wohl doch nicht zu lohnen. Das
kann ich nicht wirklich löten.

seb

von Jörn (Gast)


Lesenswert?

Gibt es auch PLCC 44 für 3,40€

von Markus (Gast)


Lesenswert?

Warum nimmst Du dafür keinen Mikrocontroller? Dafür finden sich auch
Beispiele im Web. Das ist sicherlich einfacher als das Ganze in einen
CPLD zu pressen.

Markus

von Sebastian (Gast)


Lesenswert?

Jo aber der Kleine hat zu wenig Pins und Zellen. Warum ich nen CPLD
nehmen wollte ist eigentlich einfach. Ich hab nich so viele Pins zur
Verfügung. Wenn das aber fast unmöglich ist, dann muss ich nen 2ten
Controller nehmen.

seb

von Jörn (Gast)


Lesenswert?

Wieviele Pins brauchst Du für das IDE Interface?
Die Schaltungen, die ich bisher gesehen hab, brauchen 24 Pins.
SPI braucht 4 und der CPLD hat 34 I/Os. Größenmäßig könnte es passen.

GRuß Jörn

von Sebastian (Gast)


Lesenswert?

Ich meinte damit auch nich den CPLD. Mein Atmel den ich nehmen wollte
und der noch ne IDE Platte haben soll, der hat nich mehr sehr viele
frei.

von Matthias Hertel (Gast)


Lesenswert?

Wieviel Speicher brauchst du denn so? 1GB ist bei SD-Karten ja ohne
weiteres möglich. Eine HDD selbst auf 2,5" braucht ziemlich viel
Strom.

von Marcus M. (Gast)


Lesenswert?

Hallo,

ich habe mich zwar schon mit CLPD's und VHDL beschäftigt, aber
irgendwie komme ich da nicht so richtig rein. Bevor ich  mich jetzt
ganz vergalopiere, habe ich eine kurze Frage.

Ich habe im Moment das selbe Problem, wie Ihr beide mit der Anbindung
einer Festplatte - SD-Karte.

So ein CPLD ist doch ein etwas größer dimmensioniertes Flip-Flop.
Wäre es möglich, eine Art Daten und Adressbus zu implementieren, so das
die Daten entsprechend der Adressen auf verschiedenen Ausgängen landen?
Beispiel, ähnlich einen µC:
PORT A1-3 001 : PORT D1-7 -> PORT F1-7
PORT A1-3 010 : PORT D1-7 -> PORT G1-7
PORT A1-3 100 : PORT D1-7 -> PORT E1-7
PORT A1-3 011 : PORT D1-7 -> PORT H1-7
PORT A1-3 111 : PORT G1-7 -> PORT D1-7

Somit könnte man eine Festplatte durchaus einfacher ansteuern.

Gruß Marcus

von Hagen (Gast)


Lesenswert?

Ja natürlich geht das.

Port_F <= Port_D when Port_A = "001" else (others => 'Z');
Port_G <= Port_D when Port_A = "010" else (others => 'Z');
Port_E <= Port_D when Port_A = "100" else (others => 'Z');
Port_H <= Port_D when Port_A = "011" else (others => 'Z');
Port_I <= Port_D when Port_A = "111" else (others => 'Z');

Allerdings verstehe ich nicht was das bei der Ansteuerung helfen soll.

Gruß Hagen

von Marcus M. (Gast)


Lesenswert?

Das Problem der Festplattenansteuerung mit einem µC liegt darin, dass
der µC einfach zu wenig Pins hat. Mit einem CLPD und einer Art Adress,
Datenverknüpfung könnte man durchaus das IDE Interface mit weniger Pins
ansteuern. Vielleicht sogar noch zwischen Adress und Daten
unterscheiden. Somit wären IMHO ein CLK, ein Adress/Daten und 8 Daten
PIns ausreichend, wies auch mit dem Display gemacht wird.
Zudem könnte man das CLPD auch als Busmaster einsetzen und mit einem 8
bit Bus sowohl Display, Festplatte u.ä. ansteuern.
Das war bisher mein Ansatz, vielleichts hilft er Euch.
Den Rest des IDE Befehlsoverheads muß dann aber der µC erledigen -
leider.

Gruß Marcus

von Sebastian (Gast)


Lesenswert?

Hallo,

also der Stromverbauch ist mir relativ egal. Ich hab hier noch ne Menge
alte Festplatten bis 2GB rumliegen. Mir sind das aber meist zuviel Pins
die man braucht. Daher dachte ich mir man nimmt so nen kleinen CPLD und
der macht das ansteuern.
Ich geb ihm ne Addresse und er holt mir die Daten von der Platte. Per
SPI wär das sogar recht flott. Leider hab ich wohl die Größe etwas
unterschätzt. Wenn ich dafür nen CPLD mit 100 Pins brauch, da kann ich
auch nen Mega32 nehmen der hat genug Pins und kann auch bisserl mehr
erledigen. Im Endeffekt ist das sogar preiswerter.
Werd die CPLD's wohl als Porterweiterung einsetzen.

Seb

von Markus (Gast)


Lesenswert?

Sind CPLDs als Porterweiterung nicht etwas zu teuer/zu umständlich? So
im Vergleich zu 74x595/165?

Markus

von Marcus M. (Gast)


Lesenswert?

Hallo Markus,

CPLD's mit 44 Pins gibts schon ab 4,-- € bei Reichelt. Die 74X595 sind
natürlich günstiger, allerdings brauchst Du für jeden 8 - bit
Portbaustein min. 1 CS Signal, hinzu kommt noch das CLK und die 8
Datenpins. Macht bei 5 Stück 14 PIns - in beide Richtungen 19 Pins. Bei
einem CLPD könnte man mit 3 auskommen. Einen für die Datenrichtung, eine
für Adresse und eine für die Daten - oder SPI - 4 Ports.

Gruß Marcus

von Sebastian (Gast)


Lesenswert?

Manchmal bekommt man CPLD's auch für 1 bis 2€. Aber selbst wenn nicht,
ist es immer noch ein Unterschied ob man 4 74x595 oder 1 CPDLD auf der
Platine hat. Meist wird die Platine dann mit IC's überfüllt. Meist
mach ich nur einen Prototypen auf Lochraster und da hab ich das lieber
übersichtlich.

Seb

von Peter D. (peda)


Lesenswert?

Sieh Dir mal den 74HC299 an, das ist ein bidirektionales 8-Bit
Schieberegister.

Damit kannst Du also bequem seriell nach parallel wandeln und
umgekehrt.


Peter

von F01Qx (Gast)


Lesenswert?

Warum einfach, wenn's auch kompliziert geht???
Eine MMC hat ein SPI-Interface.
CPLDs gibts bei Reichelt schon ab 1,80€ (XC9536XL, VQ44, VCC=3,3V, I/Os
5V-kompatibel

von ope (Gast)


Lesenswert?

@Jörn:

>So hab meinen SPI Slave auf 37 MC verkleinert bekommen. Ist im Moment
>für 8 Bit Übertragungen ausgelegt.

Könntest Du ihn zur Verfügung stellen, sofern Du ihn noch findest?

Viele Grüße
Olaf

von Jörn K. (joern)


Lesenswert?

Ich mach mich mal auf die Suche.

Gruß Jörn

von Jörn K. (joern)


Lesenswert?

@ope:

Die komplette SPI oder nur den Slaveteil?

von ope (Gast)


Lesenswert?

Ich denke, der Slave Teil sollte reichen. Ich suche noch Snippets für
den LA um die Größe des CPLD besser abschätzen zu können. Aus Interesse
wäre auch das komplette System für mich interessant. Auf Opencores
existiert auch ein SPI - Wishbone compatibel. Dies dürfte mit seinem
32bit wohl kaum in ein kleinen CPLD passen.

Viele Grüße
Olaf

von Jörn (Gast)


Angehängte Dateien:

Lesenswert?

@ ope:
anbei der SPI Slave. Ist für CPOL=0 und CPHA=0 ausgelegt.

Gruß Jörn

von ope (Gast)


Lesenswert?

Vielen Dank!

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.