Gast
#4319472
Hallo zusammen, in unserer Firma gibt es ein älteres Gerät, auf dem ein ADC über ein CPLD (Altera MaxII EPM570) und einen ISA-Bus an eine PC104-CPU-Karte mit Windows XP angeschlossen ist. Es werden kontinuierlich ~240kByte/s übertragen. Dazu wurde bisher DMA verwendet und im CPLD war nur ein wenig Bus-Logik drinn. Nun wurde die PC104-CPU-Karte abgekündigt und der Nachfolger hat kein DMA mehr. Jetzt darf ich herausfinden, ob man das auch ohne DMA lösen kann, ohne die Hardware zu ändern. Mein Ansatz wäre folgender: Im CPLD einen FIFO einbauen und über einen Interrupt die CPU triggern. Leider kann ich im EPM570 nicht viel Speicher für den FIFO realisiseren, ich gehe mal von 128 bis 256 Bit aus. Das wären gerade mal 8 bis 16 16Bit-Worte. Bei meiner Datenrate könnte ich damit 66µs bis 133µs puffern. Was ich nun gar nicht einschätzen kann ist, ob es unter Windows XP möglich ist, die Daten in diesem Zeitfenster abzuholen. Der CPLD würde ja einen Interrupt erzeugen und ein Treiber o.ä. unter Windows XP müßte dann "zeitnah" die Daten holen. Leider hab ich im Netz gar keine Anhaltspunkte gefunden, über was für Interrupt-Latenzen wir bei Windows sprechen. Man liest zwar immer von mangelnder Echtzeitfähigkeit, aber gilt das auch für Treiber mit einem Hardware-Interrupt? Hat jemand irgendwelche Infos oder Ideen?