SPI->IDE oder MMC

Gast #201588
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
Gast #201589
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
Gast #201594
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
Gast #201598
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
Gast #201599
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
Gast #201600
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
Gast #201601
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
Gast #201603
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
Gast #201604
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
Gast #201607
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
Gast #201610
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren