Forum: FPGA, VHDL & Co. Verilog Prog Fehler


von Tobias (Gast)


Lesenswert?

Hallo
In meinem Modul einen Adresse Register, ich kann damit ohne Problem 
arbeiten
aber wenn ich den Befehl erhalte "CHANGE_ADR", läuft gar nichts mehr
Mein porgramm sieht so aus, es ist nicht vollständig ader die 2 
if-Anweisungen verursachen die Fehlermeldung.
kann mir bitte jemanden sagen woran das liegt.

Vielen dank für eure Hilfe
Gruß
Tobi

reg [4:0] new_adr = 5'd0;
always @(posedge clk1) begin

       if(m16_wr_en == CHANGE_ADR) begin
     new_adr <= m16_data_in;
                              end
                       end

always @(posedge clk2) begin
   if(new_adr != 5'd0) begin
  adresse <= new_adr;
  new_adr <= 5'd0;
                  end

Fehlermeldung: Can't resolve multiple constant drivers for net "new_adr[ 
]" at univ_slave.v(110)

von Martin K. (mkohler)


Lesenswert?

Du kannst new_addr nicht von zwei Clocks abhängig machen.
Das wäre in der Hardware sonst so etwas wie ein Doppel-Clock-Register.

Deine Beschreibung ist nicht synthetisierbar.

Gruss, Martin

von Tobias (Gast)


Lesenswert?

@ Martin
In deiner Meinung, was könnte die lösung sein?

von Falk B. (falk)


Lesenswert?

@ Tobias (Gast)

>In deiner Meinung, was könnte die lösung sein?

Von der Grammatik mal abgesehen. Was soll das denn werden?

MFG
Falk

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

vielleicht kombiniert in einem always-modul
always @(posedge clk1 or posedge clk1) und dann mit  "if (clk1==1)" und 
else if (clk2==1) unterscheiden

von Tobias (Gast)


Lesenswert?

@Falk
Zu deiner Info Deutsch ist nicht meine Muttersprache!
Ich hab es nicht gewusst, dass ich ein Spachzeugnis brauche um hier in 
diesem Forum Fragen stellen zu dürfen.
Gibt es noch andere blöde Bemerkungen?

von Falk B. (falk)


Lesenswert?

@ Christoph Kessler (Firma db1uq) (christoph_kessler)

>vielleicht kombiniert in einem always-modul
>always @(posedge clk1 or posedge clk1) und dann mit  "if (clk1==1)" und
>else if (clk2==1) unterscheiden

AUA!!!
Christopn, auch ohne Verilog-Kenntnisse müsste dir doch klar sein, dass 
sowas Unsinn ist!

MFG
Falk

von Martin K. (mkohler)


Lesenswert?

Christoph Kessler wrote:
> always @(posedge clk1 or posedge clk1) und dann mit  "if (clk1==1)" und
> else if (clk2==1) unterscheiden
same procedure as last year?
same procedure as every year!

Auch da wird eine Registerzuweisung von zwei Clocks abhängig gemacht. 
Das ist nicht synthetisierbar.

@Tobias: Was solls denn werden?
Sollte der zweite Clock so etwas wie ein Preload oder Reset werden?

Gruss, Martin

PS: mit Verilog kenne ich mich nicht aus, das mit den beiden Clocks ist 
in VHDL aber genau dasselbe.

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.