' << ' operator in verilog
operator-keyword, verilog
Solution
`<<` is a binary shift, shifting 1 to the left 8 places.
4'b0001 << 1 => 4'b0010
`>>` is a binary right shift adding 0's to the MSB. `>>>` is a signed shift which maintains the value of the MSB if the left input is signed.
4'sb1011 >> 1 => 0101
4'sb1011 >>> 1 => 1101
Three ways to indicate left operand is signed:
module shift;
logic [3:0] test1 = 4'b1000;
logic signed [3:0] test2 = 4'b1000;
initial begin
$display("%b", $signed(test1) >>> 1 ); //Explicitly set as signed
$display("%b", test2 >>> 1 ); //Declared as signed type
$display("%b", 4'sb1000 >>> 1 ); //Signed constant
$finish;
end
endmodule
Problem
i have a verilog code in which there is a line as follows: ``` parameter ADDR_WIDTH = 8 ; parameter RAM_DEPTH = 1 << ADDR_WIDTH; ``` here what will be stored in `RAM_DEPTH` and what does the `<<` operator do here.