Flo schrieb:
>> Du könntest auch ein Sortiernetz implementieren, das wäre dann auch
> Synthetisierbar.
>
> Wäre eine Sortierung nicht Aufwendiger als nur min/max?
Jein.. Du brauchst ja keins was alle Werte sortiert, sondern nur eins
was dir das größte Element nach oben sortiert. (Ein Pfeli repräsentiert
ein Element was Zwei Werte der größe nach Vertauscht)
Das Sortiernetz würde dann so aussehen für 4 Werte:
1 | a ------------^--- max
|
2 | |
|
3 | b -------^--------
|
4 | |
|
5 | c ---^------------
|
6 | |
|
7 | d ----------------
|
Da gibt es natürlich jezt noch tolle Optimierungen aber die sind hier
m.m nach nicht nötig. Nach einer initialen Latenz von 3 Takten kommt in
jedem Takt ein neuer Maximalwert heraus da du aus jedem Schritt eine
getaktete Stufe machen kannst, und da du eh einen Strom von Daten hast
ist das doch optimal...
> Wie es aussieht, läuft es wohl dann doch auf einen "Binary Tree" und
> paarweise Vergleichen raus.
Geht auch als "Binärer Vergleicher" aber das funktioniert nur gut mit
Zweierpotenzen:
1 | a ----------------
|
2 | |
|
3 | b ---`´---^------- max
|
4 | |
|
5 | c ---^------------
|
6 | |
|
7 | d ----------------
|
Du brauchst trozdem drei Vergleicher, hast also keine Hardware gesparrt,
das einzige ist das die Initiale Latenz der Pipeline einen Takt kürzer
ist, und das ganze funktioniert nur mit 2er Potenzen.