Forum: FPGA, VHDL & Co. Verilog / Altera De2 Parameter an Task übergeben


von Christian Becker (Gast)


Lesenswert?

Hiho, ich muss Euch mal wieder um etwas Hilfe bitten.

Die letzten zwei Tage habe ich leider vergeblich versucht an meinen Task 
Parameter weiter zu geben. Ich hoffe ihr könnt mir sagen, warum das 
nicht funktioniert.

Hier mal ein Beispiel wie ich mir das gedacht habe:

reg [30:0] Wert1;
reg [30:0] Wert2;


Innerhalb einer if-else Anweisung wird nun ein Wert zugewiesen, bsp.:

Wert1 = 5;          // Wertzuweisung
Wert2 = 6;
task1(Wert1, Wert2); // Task Aufrug


task1;              // Der Task, an den Parameter übergeben werden 
sollen

input Wert1;
input Wert2;
reg [30:0] Wert1;
reg [30:0] Wert2;

Leider kommen diese Werte nie in meinem Task an, was mache ich falsch?

Vielen Dank für Eure Hilfe!

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Ich kann kein Verilog, aber ich meine, du solltest zu Beginn deiner 
Verilog-Karriere keine Tasks oder Functions verwenden. Denn eine Task 
macht garantiert etwas anderes, als du von C oder BASIC her kennst...

> Leider kommen diese Werte nie in meinem Task an
Wie stellst du das fest?

von Christian Becker (Gast)


Lesenswert?

Mir bleibt leider nichts anderes übrig. Ich benötige die Tasks dringend.

Ich hab innerhalb der Task led lampen am FPGA angesteuert, die bei 
bestimmten Werten Leuchten oder eben nicht.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Christian Becker schrieb:
> Ich benötige die Tasks dringend.
Glaube ich dir nicht.

> Ich hab innerhalb der Task led lampen am FPGA angesteuert, die bei
> bestimmten Werten Leuchten oder eben nicht.
Das geht mit Sicherheit auch ohne Tasks.

Ich hatte schon gefragt: wie hast du es festgestellt, dass die Werte 
nicht "übergeben" werden? Hast du eine Simulation/Testbench? Du könntest 
natürlich auch einfach erst mal deinen geheimen Code, der Probleme 
macht, hier anhängen.

Zur Erinnerung: ein Task macht etwas ganz anderes als du denkst und dir 
wünschst. Das ist einfach so...

von Christian Becker (Gast)


Lesenswert?

Das war die Antwort auf deine Frage!

Ich stelle es fest, indem ich innerhalb der Task LEDs zum leuchten 
bringe. So weiß ich ob die Werte in der Task angekommen sind.

Und ich benötige tasks, da dieser Code Abschnitt sehr häufig aufgerufen 
wird und es meines Wissens her nach keine sinnvolle Alternative zu Tasks 
gibt.

Der Code kann ich schlecht hier veröffentlichen, da es große Teile 
meiner BA sind...

Habe das Problem aber inzwischen selbst gelöst, der obenstehende Aufbau 
ist korrekt und es gab bei mir nur eine doppelt Belegung des LEDs, die 
ich als Testindikator verwendet habe.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.