mikrocontroller.net

Forum: FPGA, VHDL & Co. Verilog Fehler Meldung


Autor: Walter.K (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 :)

Autor: Günter -.. (guenter)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: g2 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.