shift - helpneeded med codeexplanation

J

jasonkee111

Guest
kan noen forklare koden nedenfor

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

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

Spørsmål:
1.Hva er meningen D [ `16] <<16?fra jeg forstår, skift det igjen 16 ganger av D der D bare 1 bit grunn D [16].Er jeg misforstår?

2.hvorfor det bruker Q og D i setningen "Q = (Q> 1) | (D [16] <<16);" siden D er tildelt Q?

Takk

 
Jeg er ikke helt sikker på hvorfor dette skjer, men det ser ut som (D [16] <<16) tar sign bit og og tildeler den til Q [16].Siden både variablene er signert, når Q er forskjøvet med en, MSB biten er vedlikeholdt av "ORing 'det med (Q> 1).Jeg vil være interessert å vite detaljer om dette hvis du finne ut mer!

 

Welcome to EDABoard.com

Sponsor

Back
Top