Ich versuche, ein paralleles Sortiernetzwerk zu implementieren. Ich bin neugierig, wie man eine for-generate-Anweisung schreiben würde, um 128 Instanzen dieser Sortierschaltung zu generieren.
Es soll 256 8-Bit-Zahlen vom kleinsten zum größten ohne eine Uhr sortieren, die nur kombinatorische Logik verwendet.
Dies ist ein Link zu dem Artikel über das Sortiernetzwerk, das ich zu verwenden versuche:
Links zum Schalt- und Sortiernetzwerkdiagramm finden Sie unten.
Ich mag Herausforderungen und es hat mich ein paar Versuche gekostet, aber ich habe es für W-Bit breite Daten und D-Eingänge zum Laufen gebracht. (D ist eine Zweierpotenz). Ich habe ein bisschen geschummelt, weil ich mit Verilog eher vertraut bin. Dies ist die RTL-Ansicht, die Xilinx mir gegeben hat:
Ich gebe den Code nicht weiter, um zu verhindern, dass diese Website zu einem 'Schaut mal: kostenloser Code!' wird. aber ein paar tipps kann ich geben:
Ich begann mit der Definition von D*(D+1) 8-Bit-Bussen. Dadurch kann ich in meiner Generierung überall denselben Busnamen verwenden.
Verbinden Sie die ersten D-Busse mit Ihren Eingängen, die letzten D-Busse mit Ihren Ausgängen.
In der ungeraden Etappe passieren Sie zwei Busse, was die Busindizes sehr unangenehm macht. Eine einfache Lösung besteht darin, dass ich den Bus oben und unten in jedem ungeraden Zustand umbenenne. Für den oberen Bus ist dies:
assign bus[stage*d+d] = bus[stage*d];
Jetzt haben Sie immer D-Busse pro Stufe und alle Schleifen werden zu regulären For-Schleifen.
user_1818839
Andi aka
Paebbels
Alter Furz
Benutzer124757