shift operation

OP (Company: Myreka) #1460876
Rate this post
useful
not useful
can somebody explain the code below

input wire signed [16:0] D,
output reg signed [16:0] Q );

always @ * begin
    Q = D;
    for(j=0;j<i;j=j+1)
    Q = (Q >> 1) | (D[16] << 16);

Question:
1.  What is the meaning D[`16] << 16? from i understand, it shift left 
16 times of D whereby D only 1 bit due to D[16].  Am i misunderstand?

2. why it use Q and D in the statement  "Q = (Q >> 1) | (D[16] << 16);" 
since D is assigned to Q?

Thanks

Reply

Please log in before posting.

or

Log in with Google account

Registration is free and takes only a minute.

Register now