Hallo zusammen,
ich habe mal vor einiger Zeit einen VHDL Data Reader erstellt, mit
welchem Daten von einem Markenleser anhand der aktuellen Drehgeber
Position erfasst werden konnten.
Dieser Reader enthält ein WindowDetect Modul, welches bestimmt, ob die
aktuelle Position in der gültigen Lesezone liegt. Die Lesezone kann an
einer Stelle unterbrochen (maskiert) werden.
Die Start- und Endwerte von Fenster und Maske werden in einem separaten
Registerblock eingestellt und als Signale in das WindowDetect Modul
geführt.
Die Encoderpositon wird ebenfalls in einem separaten Modul erfasst und
eingespeist.
Die Auflösung der Werte ist durchgängig 14Bit (hat seinen Grunde, ja)
Aktuell ist die WindowDetection so aufgebaut, dass eine Statemachine
abgearbeitet wird. Jede Grenze von Window- und Mask wird in einem
separaten State bearbeitet. Dies führt dazu, dass für die Window
Detection nun 4 separate 14bit Komparatoren für die Vergleiche
instantiiert werden.
Nun habe ich den Auftrag gefasst, dieses Modell so zu erweitern, dass
neu bis zu 5 Masken anstelle einer einzigen definiert werden können.
Wenn ich nun das bestehende Modell einfach um weitere 4 Masken
erweitere, zusätzliche 8 14Bit Register erstelle und die Statemachine um
die 4 Masken erweitere, dann benötige ich schon 12 Stück 14-bit
Komparatoren.
Da nun der ganze Reader im Gesamtsystem 4fach vorhanden ist, habe ich
nun Bedenken, dass mir die zusätzlichen 32 14bit Register und 32 14bit
Komparatoren das FPGA "sprengen" werden.
Ich verwende einen Xilinx XC3S250E, der ist momentan ausgelastet gemäss
nachfolgendem Bild.
Die zusätzlichen 32x 14Bit Register sollten bei der freien Anzahl Slice
FlipFlops wohl kein Problem sein, problematischer werden wohl die
Komparatoren.
Es sollte vermieden werden, dass ich das nächstgrössere FPGA nehmen
muss, da es sich um eine Anpassung auf einem bestehenden Board handelt.
Kann jemand beurteilen, ob die zusätzlichen Masken nach dem bisherigen
Ansatz Platz finden könnten oder ob ein komplett anderer Ansatz zur
Bearbeitung der Masken gewählt werden sollte.
Eventuell könnten die Window/Mask Werte aus einer Art Queue in eine
Vergleichseinheit geladen werden, so dass nur noch 1 Komparator nötig
wird, die Umschaltlogik dafür grösser wird.
Was meinen die Experten dazu?