Forum: FPGA, VHDL & Co. Verilog Zuweisung


von Peter Z. (Gast)


Lesenswert?

Hi,
ich habe in einem Verilog Programm folgendes gefunden:
1
error <= 15'h0 ;
und
1
kp_reg <= {29-PSR{1'b0}};
Wo ist da der Unterschied in der Zuweisung, ist doch beidesmal alles auf 
Null oder?!

von peter (Gast)


Lesenswert?

error=0  wenn error 16 bit gross und  kp_reg=0 wenn kp_reg 30 bit gross 
ist.
ansonsten bleiben die übrigen so wie sie sind.

von Andi (Gast)


Lesenswert?

> Wo ist da der Unterschied in der Zuweisung, ist doch beidesmal alles auf
Null oder?!

Ja, man könnte auch:
1
error <= 0;
schreiben. Die Zeilen, die du gefunden hast haben halt den Vorteil, dass 
du sofort weist wieviele Bits breit "error" ist, und dass man sehr 
schnell andere Hexzahlen ausprobieren kann, oder beim zweiten Beispiel 
mal schnell die unteren 29-PSR Bits auf 1 setzen kann zum testen.

Was der kleine peter da geschrieben hat stimmt übrigens nicht.
> ansonsten bleiben die übrigen so wie sie sind.
Wenn mit "die übrigen" allfällige höhere Bits gemeint sind, so werden 
diese auf 0 gesetzt. Um sie unverändert zu lassen müsste man einen 
Bitbereich im Zielregister der Zuweisung angeben. z.B:
1
error[7:0] <= 8'b0;

Andi

von peter (Gast)


Lesenswert?

kp_reg <= {29-PSR{1'b0}};

Wenn du hier kp_reg mit 32Bit hast, werden nur die Bits 29-0 auf 0 
gesetzt, so einfach ist das.

Gruss

von berndl (Gast)


Lesenswert?

Peter Zz schrieb:
> kp_reg <= {29-PSR{1'b0}};
... ich habe mal vor ueber 10 Jahren Verilog gemacht.
Ernsthafte Frage: Was macht dieses Statement? Ich hab' null Plan...

von Lattice User (Gast)


Lesenswert?

peter schrieb:
> kp_reg <= {29-PSR{1'b0}};
>
> Wenn du hier kp_reg mit 32Bit hast, werden nur die Bits 29-0 auf 0
> gesetzt, so einfach ist das.

falsch.
wenn die linke Seite der Zuweisung länger ist als die rechte, wird mit 0 
aufgefüllt.


berndl schrieb:
> Peter Zz schrieb:
>> kp_reg <= {29-PSR{1'b0}};
> ... ich habe mal vor ueber 10 Jahren Verilog gemacht.
> Ernsthafte Frage: Was macht dieses Statement? Ich hab' null Plan...

localparam PSR = 5;
kp_reg <= {29-PSR{1'b0}};
-->
kp_reg <= {24{1'b0}};
-->
kp_reg <= 24'b0;

von berndl (Gast)


Lesenswert?

Lattice User schrieb:
....
> localparam PSR = 5;
> kp_reg <= {29-PSR{1'b0}};
> -->
> kp_reg <= {24{1'b0}};
> -->
> kp_reg <= 24'b0;

Ah ja, danke!

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.