Ich möchte eine Art Ereigniszähler in meinem FPGA-Design (Vendor-A oder Vendor-X) implementieren. Ich habe mehrere Dutzend Signale: Die Hälfte ist 1-Bit und die andere Hälfte 5-Bit. Signale befinden sich in verschiedenen Teilen meines Designs.
Ich möchte die Summe aller Signale gleichzeitig zählen. Das Signal kommt mit hoher Frequenz, die Summe aller Signale sollte in ein 48- oder 64-Bit-Register oder einen Speicher geschrieben werden. In meinem FPGA ist nicht viel freier Speicherplatz, und ich möchte keinen 64-Bit-Breitaddierer verwenden, sondern etwas kompakteres finden (in Bezug auf die Anzahl der erforderlichen LUTs).
Wie soll ich meinen Addierer kompakter gestalten? Soll ich es in einen kleinen, schnell zählenden Zähler (mit 8, 12 oder 16 Bit) und einen langsamen und kompakten seriellen Addierer für die verbleibenden Bits aufteilen, der den Übertrag des kleinen Zählers verwendet? Ein kleiner Zähler sendet nicht zu oft Carry, sodass ich Hunderte von Ticks habe, um an breiteren Teilen im Multicycle-Addierer zu arbeiten. Kann ich einen seriellen Addierer mit mehreren verschiedenen kleinen Zählern verwenden?
Sie haben es nicht gesagt, aber es scheint offensichtlich, dass Sie diesen Ereigniszähler akkumulieren, damit er für einen bestimmten Zweck aus dem FPGA ausgelesen werden kann. Das bedeutet, dass Sie einige Vorkehrungen getroffen haben, um Registerinhalte herauszubringen, vermutlich unter einer gewissen Softwaresteuerung.
Ich würde das einfach erweitern, um das Auslesen kleinerer Zähler zu ermöglichen, anstatt zu versuchen, alles in diesen riesigen Zähler zu quetschen. Platzieren Sie diese kleineren Zähler im Design dort, wo die einzelnen Ereignisse gezählt werden müssen, und lassen Sie sie dann von der Software auslesen. Software kann die Zwischensummen hervorragend addieren. Und wer weiß, vielleicht ist es von Vorteil zu wissen, was die verschiedenen Zwischensummen waren.
Simon Richter
osgx
Paul A. Clayton
Simon Richter