Aus Pflichtenheft: Ich muss 2048 Eingänge abfragen und Ereignisse generieren.
Was heisst "Ereignisse generieren"? Ich hatte Dich zunächst so verstanden, dass Du die 2048 Eingänge beobachten und Änderungen protokollieren sollst mit Zeitstempeln, die nicht ungenauer als 1 ms sein sollen.
Müssen die Ergebnisse Deiner "Beobachtung" denn auch in derselben ms noch erstellt und "weitergeleitet" werden? Oder kannst Du Dir für die Aufbereitung der Informationen auch die 15...20 ms ZyklusZeit der ProzessCPUs oder ggfs sogar noch länger Zeit lassen?
Mit wievielen ZustandsÄnderungen musst Du denn rechnen? Musst Du steigende und fallende Flanke protokollieren?
Ich würde es so "anpacken":
1. im 1-ms-Takt:
- die 64 DD (vollgepackt mit den 2048 Bits) doppelwortweise auf Flanken testen (d.h. es müsste irgendwo auch 64 Doppelworte mit den 2048 Flankenmerkern geben).
- Wenn Unterschied zwischen aktuellem DD und "FlankenMerkerDD" festgestellt wird:
. einen Eintrag in einem FiFo vornehmen, der beinhaltet:
. - Zeitstempel,
. - Code, der Rückschluss auf die entsprechenden Eingänge zulässt,
. - aktuellen Zustand der 32 Bit in 1 DD, sowie
. - vorausgegangenen Zustand der 32 Bit in 1 DD ("FlankenMerker").
. im FlankenMerkerArray das aktuelle DD aktualisieren.
2. in "geruhsamem Takt":
Diesen FiFo kannst Du dann "in relativer Ruhe" auswerten. Aus jedem FiFo-Eintrag sind dann 1 … 32 EinzelMeldungen zu generieren.
Gruss, Heinileini