Verilog Fehler Meldung

Gast #668629
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
Gast #669011
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren