mikrocontroller.net

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


Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jörn (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jörn (Gast)
Datum:

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

Gruß Jörn

Autor: Sebastian (Gast)
Datum:

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

seb

Autor: Jörn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gibt es auch PLCC 44 für 3,40€

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jörn (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Matthias Hertel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Marcus M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Hagen (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Marcus M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Markus (Gast)
Datum:

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

Markus

Autor: Marcus M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: F01Qx (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: ope (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jörn Kaipf (joern)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich mach mich mal auf die Suche.

Gruß Jörn

Autor: Jörn Kaipf (joern)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ope:

Die komplette SPI oder nur den Slaveteil?

Autor: ope (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jörn (Gast)
Datum:
Angehängte Dateien:

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

Gruß Jörn

Autor: ope (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.