Hallo,
vielleicht ist die Antwort ja ganz simpel, aber ich habe in der Suche
nichts gefunden, bzw. weiß evtl. nicht genau, wonach ich suchen muss.
Es geht um folgendes Szenario:
- Ich habe per generate-for-loop mehrere Module instanziiert, die zu
unterschiedlichen Zeitpunkten Ergebnisse zurückliefern, manchmal auch im
gleichen Clock
- Mein uart-Puffer-Modul kann pro Takt allerdings nur einen Wert
übernehmen
- Da allerdings selten Ergebnisse gleichzeitig eintreffen ist das i.O.
und ich kann z.b. alle außer einem verwerfen
Das Grundprinzip sieht so aus:
1 | genvar i;
|
2 | generate
|
3 | for (i = 0; i < `NUM; i = i + 1)
|
4 | begin
|
5 | // hier das Modul, Ergebnis landet in result[32*i+:32]
|
6 | // und gotnew[i] ist high, wenn was reinkam
|
7 | end
|
8 | endgenerate
|
9 |
|
10 | // dieses reg geht zum uart Puffer
|
11 | reg [31:0] buf;
|
Wie schaffe ich es nun, ein frisch eingetroffenes Ergebnis aus result
nach buf zu schieben?
Ich habe schon an einen Tristate Bus gedacht, allerdings möchte ich gern
darauf verzichten, da u.a. auch gleichzeitig Ergebnisse reinkommen
können und ich dann mehrere Driver habe.
Wie kann ich das anstellen?
Beste Grüße,
Thomas