2017-12-17 6 views
0

Hallo Ich bin neu zu Verilog und ich versuche, bestimmte Bits von einer reg-Variable zu einem anderen reg, aber es hat nicht für mich arbeiten. Was mache ich falsch?Quartus 2 verliog mit geschweiften caces, um bestimmte Bits setzen

reg [31:0] a; 
reg [31:0] b; 

initial begin 
a =32'b0; 
b =32'b1; 
$display("current value of a = %32b ",a); 
a ={b[5:0]}; 
$display("value of a %32b ",a); 
#10 $finish; 
end 

Bit eines von a [0] bis a [5] sollte 1 sein, aber nur ein [0] wurde 1

Antwort

1

In Ihrem Code b = 32'b1 Ausbeuten {31{1'b0},1'b1}, so dass nur b[0] gleich eins ist.

In SystemVerilog (Check: IEEE1800-2012, 5.7.1 Integer literal constants) Sie automatische linken padding konstanter literal Nummern verwenden, um eine Ein-Bit-Wert verwendet, das heißt alle Bits b = '1b auf eins zu setzen.

mit Verilog, einfach einen anderen Wert b zuweisen (das heißt b = 32'b11111) oder den Code ändern, um folgende:

a[4:0] = {5{b[0]}} 
+0

vielen Dank –

Verwandte Themen