Jo sieht ganz so aus als würdest du viel zu viel kombinatorische
Schritte in einem Taktzyklus erledigen wollen. Das führt dann zu einem
riesigen Datenpfad. Das kriegst du niemals in einem FPGA unter, und die
erlaubte Taktrate wäre winzig. Besser, du führst die Operationen nicht
alle parallel aus, sondern nacheinander (Steuerung des ganzen über eine
State-Machine).
Und als ob das noch nicht reicht, hast du eine Menge Anweisungen da
stehen, die das XST erst umständlich vereinfachen muss, um die Logik
dahinter zu erkennen. Beispiel:
1 | ... DC_in < "000010000" ...
|
Kannst du umwandeln in
1 | -- vereinfacht: DC_in < "000010000"
|
2 | ... DC_IN (8 downto 4) = "00000" ...
|
dann hat das XST weniger zu tun und du kriegst einen besseren Überblick
darüber wieviel kombinatorische Logik du da hinschreibst. (Wenn das XST
wirklich Größenvegleicher daraus bauen würde würde es in keinen FPGA
passen).
Ob du z.B. die < Operatoren in einfachere Logik umwandelst oder einen
einzigen Größenvergleicher mehrfach in verschiedenen Takten benutzt
bleibt dir überlassen, da musst du halt rausfinden was besser
funktioniert. Das kommt vor allem drauf an ob es eine einfache
Ersatzlogik gibt (wie oben) oder nicht.