Forum: FPGA, VHDL & Co. Belohnung: Wer macht mit bei meinem Projekt?


von Rainer Storz (Gast)


Lesenswert?

Ich suche Leute die mir helfen das nachfolgend beschriebene Projekt
kostengünstig umzusetzen:

Man könnte es im wesentlichen einen kleinen, mobilen Datenrecorder
nennen, der Daten eines Sensors unverändert auf eine
(Wechsel-)Festplatte schreibt.
Der Sensor wird mit 40MHz getaktet und liefert kontinuierlich digitale
12Bit Daten. Durch verschieben der Bits/Bytes erhält man also einen
Datenstrom von 60MB/Sekunde. Einige ausgewählte IDE Festplatten sind in
der Lage deutlich mehr kontinuierlich und sicher bis zum letzten Sektor
zu schreiben. Ein RAM Buffer dürfte nicht erforderlich sein, denn neue
Festplatten haben genügend Cache. Außerdem kommen sie ohne defekte
Sektoren. Ein Filesystem ist daher auch nicht zwingend erforderlich.
Das Lesen und Auswerten der Daten ist ebenfalls nicht Teil des
Projektes, es erfolgt später auf einem PC.
Über ein Interface (z.B. RS232) werden wenige Befehle an den Sensor
sowie Record und Stop Befehle gesendet und z.B. „Festplatte ist voll“
zurückgegeben.
Übrigens, speichern auf RAM geht nicht, da es vorkommen kann das selbst
eine 100GB Platte ohne Unterbrechung beschrieben wird.

Es ist noch wesentlich mehr erforderlich aber wer sich zutraut das bis
jetzt beschriebene zu realisieren sollte sich bei mir unter
elvsto@gmx.de melden. Das Ganze soll auch nicht „umsonst“ sein.

Der zweite Teil des Projektes besteht darin, die Sensordaten
gleichzeitig und unabhängig von der HDD Aufzeichnung, durch eine noch
zu definierende Echtzeitverarbeitung leicht verändert über ein
ebenfalls noch zu definierendes Interface auszugeben. Dies kann auf
einer separaten Platine geschehen und erfordert einen Buffer von
mindestens 4MB (besser.16MB).

Der Hardwareaufwand inkl. Platinen (ohne Sensor und HDD) sollte bei
einer späteren Kleinserie maximal 250,- Euro/Stk. betragen.

von KoF (Gast)


Lesenswert?

nur mal so ein paar fragen am rande

1. welches fs macht denn z.b. 100GB -files mit?
2. was ist an hardware da? 60MB/Sekunde sind nicht wirklich wenig!
3. ist denn alles durchgeplant? oder ist es zur zeit nur ein
hirngespinnst?

von Matthias (Gast)


Lesenswert?

Hi

@KoF
Er braucht kein FS. Und für NTFS und Reiser sind 100GB kein Problem.
Bei ext2 kommts auf die Clustergröße an. Ach, was erzähl ich denn
hier:
http://en.wikipedia.org/wiki/Comparison_of_file_systems

@Reiner Stolz
Welche IDE-Platten schaffen denn 60MB/s? Und bitte nicht nur außen
sondern über die komplette Platte? Wenn ich mir das aktuelle c't
Plattenkarusell so anschau schafft keine! IDE-Platte im Mittel!
60MB/s.

Matthias

von Rainer Storz (Gast)


Lesenswert?

@ KoF,
1. wie ich bereits sagte, auf der Platte braucht kein fs zu sein. Die
Daten werden einfach Sektor für Sektor oder Block für Block
geschrieben, fast so simpel wie formatieren. Lesen geht genauso
einfach. Ein Dateisystem z.B. FAT32, ist sicherlich schöner, aber auch
aufwendiger. Dann könnte man z.B. Dateien mit fixer Länge schreiben und
als Namen z.B. vorlaufende Nummern.
2. + 3. Was ist an Hardware da? Nun, zunächst Sensor und Platte (eine,
die locker 75MB/Sek auch auf den inneren Sektoren verkraftet). Okay,
Scherz beiseite. Das ganze ist schon sehr durchdacht, bis hin zu allen
optischen und feinmechanischen Teilen. Und da sind eine Menge drin,
weil es doch heftig mehr ist als nur ein Datenrekorder (mehr will ich
noch nicht verraten). Inkl. Gehäuse wurde es sogar schon als
funktionierendes Muster präsentiert (allerdings mit einem am Kabel
hängenden PC). Es ist also kein Hirngespinst. Ich denke, ich habe
mehrere alternative Lösungen gefunden, welche Hardware hängt aber auch
davon ab, wer mitmacht und welche Hardware derjenige am besten
beherrscht.

von Rainer Storz (Gast)


Lesenswert?

@ Matthias,
ich habe lange gesucht und Plattenhersteller direkt angesprochen, mein
Ziel beschrieben und daraufhin ein "Vorab-Testmuster" der noch nicht
erhältlichen Hitachi Travelstar 7K100 bekommen. Das ist eine 2,5"
Notebookplatte und sie ist schneller als die meisten Serverplatten. Ich
konnte im Low Level Dauerbetrieb fast 75MB/schreiben
( http://biz.yahoo.com/bw/050511/115182.html?.v=1 )

von Stift (Gast)


Lesenswert?

Papperlapap... WENN DU IM lOW-LEVEL BEREITS SCHREIBEN KANNST, WO IST DEN
DAS PROBLEM ? ICH GLAUBE DU REDEST BLÖDSINN.

von Rainer Storz (Gast)


Lesenswert?

@ Stift: Danke, sehr hilfreicher Kommentar...
Fakt ist, es gibt schon länger schnelle 3,5" Platten aber erst
demnächst richtig schnelle 2,5"er. Letztere konnte ich vorab testen
und mit meinem PC (und ollem DOS Tool) ist sie so schnell wie ich´s
geschrieben hab. Mein Problem ist also nicht die schnelle Platte,
sonder die Tatsache, das ich KEINEN PC benutzen will. Warum sonst würde
ich hier Hilfe suchen? Die Projektbeschreibung ist da ziemlich
eindeutig.

von Rainer Storz (Gast)


Lesenswert?

Also nochmal: Bitte keine Angst davor, das die Festplatte zu langsam
sein könnte. Ich garantiere, das ich Platten habe, die schnell genug
sind.

von dose (Gast)


Lesenswert?

Wie sieht der das Interface zum Sensor aus?
Die Daten kommen doch nicht über RS232 rein?

von Jens (Gast)


Lesenswert?

Hi Stift,

Du weisst aber schon das Du da einen leistungsfaehigen IDE-Host-
Controller implementieren must, weil mit PIO-Modes kommst Du da
nicht sehr weit? Und wenn man da etwas bestehendes recyceln will
kommt das mit hoher Warscheinlichkeit aus der Rechnerwelt und
verwendet bestimmt Busmaster-DMA, d.h. das Businterface muesste
einschneidend umgeschnitzt werden um die Daten direct und
selbststaendig zur Platte zu schreiben. Falls jemand als Hobby
sowas fertigbringt hat er meinen tiefsten Respekt. 75MB/s bedeuten
immerhin 27ns pro 16-Bit Wert ohne Protokoll.

Mal eine Frage, wie hast Du unter DOS 75MB/s Transferrate zur
Platte gemessen?

Gruss,

Jens

von Jens (Gast)


Lesenswert?

Sorry,

Meinte nicht Stift sondern Rainer.

Jens

von Martin (Gast)


Lesenswert?

Hallo,

das geht sicherlich mit einem FPGA - aber das ist schon ein etwas
grösseres Projekt. Und die 250€ sind mit Platte oder wie genau
kalkuliert. Ich denke auch das es ein etwas grösseres Projekt wird:
also 3-4 Monate Entw Zeit. Und wer trägt die ganzen Entw Kosten? Wie
gross ist der Topf dafür?


Martin

von Michael (Gast)


Lesenswert?

Hallo

Würde mich mal einfach so interessieren, was denn da geloggt werden
soll ;-)

Gruss

Michael

von Jens (Gast)


Lesenswert?

Hallo Martin,

Das geht nur mit einem schnellen FPGA, aber schon ein normaler
UDMA-faehiger IDE-Kontroller ist eine harte Nuss. Dieser hier
soll aber zusaetzlich das Protokoll beherschen, also z.B.
selbsstaendig Sektoren addressieren. Sonst macht sowas ja die
CPU. Und wenn ich mit meiner Vermutung bzgl. des Einsatzzweckes
richtig liege reicht einfach von vorne bis hinten vollspielen
irgendwann auch nicht mehr aus, da sollte auch schon schreiben
oder lesen ab bestimmten Stellen moeglich sein.
Ich will den Plan ja nicht schlechtreden, aber ich glaube nicht
das das etwas fuer den Amatuerbereich ist. Um sowas zu debuggen
braucht man einen etwas besseren Logikanalysator und bei
elekrischen Problemen auch ein gutes Scope.

Wie viel sollte die Sache gleich kosten?

Jens

von Tom (Gast)


Lesenswert?

Oder man greift gleich zu einem entsprechendend ausgewählten Controller
oder SoC (32 Bit mit GCC-Unterstützung,ATAPI-Controler, DMA on Chip und
idealerweise noch etwas frei programmierbare Glue Logic zum Bits
schieben).

Hat jemand zufällig einen Link wo das ATAPI-Protokoll auf Hardwareebene
genauer beschrieben ist?

von Rainer Storz (Gast)


Lesenswert?

Ich war verreist, daher erst jetzt meine Antworten:
1. zum Sensor: Ich arbeite mit unterschiedlichen Sensoren, manche
liefern analoge Signale, andere digitale. Ist aber egal, da ich immer
ein Sensorinterface mit (oder ohne AD Wandler) aufbaue das in jedem
Fall am Ausgang 12 digitale Ausgangsleitungen und einen Clock Eingang
welcher mit 40MHZ getataktet sein muss, hat. Der Sensor, bzw. die
Sensorplatine liefert also mit jedem Tackt ein digitales 12Bit Signal.
Der Tackt muß immer kontinuierlich sein.

2. welche Anwendung: Nun ja, wenn ich das verrate werdert ihr sicher
antworten das dies sowieso UNMÖGLICH sei, oder? Aber wie gesagt, auf PC
basis funktioniert es schon. Auch hier hatten viele gesagt, es sei
unmöglich, aber wir kamen damit auf die Titelseite mehrerer
Fachzeitschriften. Wer mehr wisse will, bitte nachfragen.

3. HDD Interface: Mir ist klar, PIA ist viel zu langsam. Ein paar
(P)ATA bzw. IDE Lösungen sind auf
 http://www.opencores.org/projects.cgi/web/ata/overview
zu finden.
Es muss ja nicht bei einem einfachen FPGA bleiben. Sicher ist mehr
"Intelligenz" hilfreich, zumal später tatsächlich noch viel mehr
funktionen hinzukommen sollen.

von Alexander Hünten (Gast)


Lesenswert?

Ich denke, daß gerade im Hinblick auf Erweiterbarkeit eine FPGA-Lösung
ideal ist. Der IDE-Core benötigt beispielsweise bei einem Xilinx FPGA
etwa 1000 Slices, was bei den aktuellen FPGA-Familien fast schon die
kleinste Größe ist.
Wählt man also einen deutlich größeren Typ hat man große Reservern, um
einfache Steuerungs- oder im großen Umfang DSP-Aufgaben zu erledigen.
Wenn die Steuerungsaufgaben überwiegen bietet es sich sogar an eine
Soft-CPU im FPGA zu integrieren oder man wählt einen Typ z.B. aus der
Virtex 2Pro Reihe, der schon einen IBM PowerPC™ enthält.

Da man sich so im wesentlichen auf einen Baustein beschränken kann,
sollte auch das Budget ausreichen.

von Tom (Gast)


Lesenswert?

Ja, Opencores ist (mir) bekannt. Nur kommt man da über 16 MB/s nicht
hinaus. Dafür brauchts UDMA4/5/6 was 66/100/133 MB/sec entspricht. Nur
da wird aus Gründen der Datensicherheit paketorientiert gearbeitet und
die Pakete haben crc-Prüfsummen. Das macht beim PC der Controller. Und
beim FPGA müßte man halt wissen wie (incl.das drumherum).

Und wenn PC-Basis geht, was spricht (ausser dem vermutlich höheren
Preis) gegen einen extrakleinen Industrie-PC.

von Rainer Storz (Gast)


Lesenswert?

Tom, Du hast recht, aber gegen die PC Lösung (wir haben schon ein
kleines, schnelles 17x17cm Industrie MiniITX Board mit Pentium M
benutzt) spricht erstens der Stromverbrauch und zweitens daß der PC-Bus
seine Grenzen erreicht hat. Da ich aber beabsichtige demnächst die
nächste (und übernächste) Sensorklasse zu benutzen, wird ein PC nicht
mehr mitkommen. Zur Erklärung: Derzeit benutze ich einen Sensor mit
einem 12Bit Ausgang, mein Ziel sind aber Sensoren mit mehreren 12Bit
Ausgängen (die größten derzeit lieferbarten haben 16(!)gleichzeitig
arbeitende Ausgänge. Das entspricht einer Datenmenge von
960Mbyte/Sekunde. Die geplante FPGA Lösung könnte sowohl für den
jetzigen Sensor als auch für zukünftige eingestzt werden, weil sie je
nach Anzahl der Sensorausgänge einfach multipliziert werden kann;
sozusagen eine Einheit mit je einer Festplatte für je einen
Sensorausgang.

von Markus (Gast)


Lesenswert?

Hallo Rainer,

Welche Sensoren liefern solche Datenmengen?

Ich kann mir das irgendwie nicht vorstellen.

Was misst du denn?

Mfg Markus

von Rainer Storz (Gast)


Lesenswert?

Okay, da ich immer mehr emails und Anfragen bekomme um was für eine
Anwendung es sich handelt, zunächst zwei Dinge vorweg: Es wird nichts
gemessen und das Ganze ist wesentlich spannender aber auch
umfangreicher als nur das Aufzeichnen von irgendwelchen Messdaten.
Ich bin gerade dabei eine Webseite einzurichten mit detailierten Infos
zu dem Projekt. Link folgt in Kürze, dann wisst ihr mehr.

von Alexander Hünten (Gast)


Angehängte Dateien:

Lesenswert?

Neben den Opencores gibt es auch noch kommerzielles (siehe Anhang)
Nachteil: kostest Geld
Vorteil:
getestet,
bewährt,
auf dem neusten Stand->

Implements ANSI ATA/ATAPI-6 standard protocol
• Supports connection up to 2 ATA devices
• Configurable ATA interface operating with the Maximum data transfer
rate of 100 MB/s
• Supports all PIO Modes 0,1,2,3,4
• Supports Multiword DMA modes 0,1,2
• Supports all Ultra DMA modes 0,1,2,3,4,5

Übrigens CRC-Generierung in einem programmierbaren Logikbaustein ist
wirklich kein Problem:

Table 47 - Equations for parallel generation of a CRC polynomial
CRCIN0 = f16, CRCIN8 = f8 XOR f13,
CRCIN1 = f15, CRCIN9 = f7 XOR f12,
CRCIN2 = f14, CRCIN10 = f6 XOR f11,
CRCIN3 = f13, CRCIN11 = f5 XOR f10,
CRCIN4 = f12, CRCIN12 = f4 XOR f9 XOR f16,
CRCIN5 = f11 XOR f16, CRCIN13 = f3 XOR f8 XOR f15,
CRCIN6 = f10 XOR f15, CRCIN14 = f2 XOR f7 XOR f14,
CRCIN7 = f9 XOR f14, CRCIN15 = f1 XOR f6 XOR f13,
f1 = DD0 XOR CRCOUT15
f2 = DD1 XOR CRCOUT14
f3 = DD2 XOR CRCOUT13
f4 = DD3 XOR CRCOUT12
f5 = DD4 XOR CRCOUT11 XOR f1
f6 = DD5 XOR CRCOUT10 XOR f2
f7 = DD6 XOR CRCOUT9 XOR f3
f8 = DD7 XOR CRCOUT8 XOR f4
f9 = DD8 XOR CRCOUT7 XOR f5
f10 = DD9 XOR CRCOUT6 XOR f6
f11 = DD10 XOR CRCOUT5 XOR f7
f12 = DD11 XOR CRCOUT4 XOR f1 XOR f8
f13 = DD12 XOR CRCOUT3 XOR f2 XOR f9
f14 = DD13 XOR CRCOUT2 XOR f3 XOR f10
f15 = DD14 XOR CRCOUT1 XOR f4 XOR f11
f16 = DD15 XOR CRCOUT0 XOR f5 XOR f12
NOTES
1 f = feedback
2 DD = Data to or from the bus
3 CRCOUT = 16-bit edge triggered result (current CRC)
4 CRCOUT(15:0) are sent on matching order bits of DD(15:0)
5 CRCIN = Output of combinatorial logic (next CRC)

von Tom (Gast)


Lesenswert?

Die CRC-Generierung nicht. Nur müßte man wissen welches Polynom zur
Berechnung benutzt wird. Ob der Header mit in der Prüfsumme auftaucht,
wie eventuelle Fehler signalisiert werden etc. Wie schon geschrieben,
ich hab fleissig gegoggelt und nicht wirklich was gefunden.

Image-Sensoren liefern solche Datenmengen :-) passt auch zu den
erwähnten optischen und feinmechanischen Komponenten.
Bei der Kernforschung fallen meines Wissens ebenfalls ähnliche
Datenmengen an, Glaub aber nicht das es hierbei darum geht.

An VirtexII Pro hab ich auch gedacht. Dürfte aber preislich den Rahmen
etwas sprengen.

von Alexander (Gast)


Angehängte Dateien:

Lesenswert?

Die Logik-Gleichungen stammen aus einem "Working Draft zu ATA5" und
beziehen das Polynom schon mit ein.
Ich hab das pdf mal gezippt und hänge es in zwei Teilen an

von Alexander (Gast)


Angehängte Dateien:

Lesenswert?

Hier der 2. Teil

von dose (Gast)


Lesenswert?

Hallo,

das Ding ist für mich eine Nummmer zu groß. Natürlich würden mich
interessieren was der Initiation bauen will.
Ich habe auch im Netz gesucht nach entsprechenden Möglichkeiten. Als
Tipp habe ich diesen Mann.

http://www.gte.us.es/db/doc/web/users.php?lang=uk&id=17

VHDL implementation of an IDE-ATA controller
Student's name: Ramón Martín Álvarez
Electronics Engineer. Date: 2001-11-01
   FPGA implementation of a harddisc controller

Den Artikel hat ein Student von Ihm geschrieben, ansonsten scheint er
fit zu sein. Sicher hat er für dein Geld auch noch studentische
Reserven.

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.