Forum: FPGA, VHDL & Co. Verilog Fehler Meldung


von Walter.K (Gast)


Lesenswert?

Hi!
Ich hab ein Programm geschrieben, das so aussieht:

module X (........);
reg go = 1'b0;

always @(posedge start) begin:
//
//
//
go <= 1'b1;
end

always @(posedge clk) begin
  if(go==1'b1) begin
  //
        //
        //
        //
        go <= 1'b0;
        end

        if(go==1'b0) begin
        //
        //
        end
endmodule

Kann mir bitte jemanden sagen was diese Fehler Meldung bedeutet:
Error (10028): Can't resolve multiple constant drivers for net "go" at 
data_out.v(47)

Danke
Walter

von Matthias (Gast)


Lesenswert?

ich kann zwar kein Verilog, aber so wie ich das interpretiere heißt das, 
dass das Signal go nicht von zwei verschiedenen Prozessen geändert 
werden darf.
In VHDL darf man sowas jedenfalls nicht :)

von Günter -. (guenter)


Lesenswert?

Matthias wrote:
> ich kann zwar kein Verilog, aber so wie ich das interpretiere heißt das,
> dass das Signal go nicht von zwei verschiedenen Prozessen geändert
> werden darf.
> In VHDL darf man sowas jedenfalls nicht :)

Ist in Verilog genauso.

@ Walter

Versuch mal die Zuweisung an go aus dem ersten always block auch in den 
zweiten zu bringen.

von g2 (Gast)


Lesenswert?

Wie meine Vorschreiber schon gesagt haben, das geht nicht.

Erstens gibt es im Normalfallf nur einen process mit posedge, da das nur 
für den Takt verwendet wird (bzw mehrere prozesse mit posedge clk). 
Willst du die steigenden Flanke des start erkennen, tastest du sie mit 
dem Takt ab, speicherst sie also bei jedem Takt und vergleichst die 
Werte. In die sensitivity list kommt trotzdem nur posedge clk und nicht 
start, da nur clk abtastet.

Zwei Prozesse dürfen außerdem niemals das gleiche Signal treiben. 
Prozesse laufen parallel (sind parallele Hardware). Wenn in deinem Bsp. 
z.B. ein prozess go auf 0 setzt und der andere gleichzeitig auf 1, 
welches Signal sollte übernommen werden? Daher, schreiben nur in einem 
Prozess, lesen geht in mehreren.

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.