Upload
mkraokiran
View
218
Download
0
Embed Size (px)
Citation preview
7/27/2019 scrm.odt
1/2
Instruction: SCRM
SCRM VInitSeeD, Vsrc2, Vdest, #offset1(5 bit)
Here,
VInitSeeD => VInitSeeD[31-0] contains x-shift register bits, VInitSeeD[63-32] contains y-shift
register bits
Vsrc2 => Vsrc2[127-96] contains 32 bit Mask for feedforward path of x-shift register
Vsrc2[95-64] contains 32 bit Mask for feedforward path of y-shift register
Vsrc2[63-32] contains 32 bit Mask for feedback path of x-shift register
Vsrc2[31-0] contains 32 bit Mask for feedback path of y-shift register
Vdest =>
Vdest[real0[127:112],imag0[111:96],real1[95:80],imag1[79:60],real2[59:48],imag2[47:32],real3[31:16],imag3[15:0]] contains the result of I and Q path
offset1 => This 32 bit immidiate data indicates the position to store the corresponding register's
feedback bit. For example, in the above pattern generator the feedback bit position is 17.This gives
the 4 output of complex data of each 16bit for real and complex number.
VinitSeeD gets updated after the excexution of cycle.
Required Functionality:Let q1 & q2 be intermediate bits requires for Q-path chip generation, fb1 & fb2 be the feedback
bits of shift registers x & y respectively
#Note: gated XOR(N1, N2) performs XOR on some of the bits of register N1 as specified by mask
register N2. The operation is similar to the scalar instruction XORGq1 =gated XOR(VInitSeeD[31-0],Vsrc2[127-96]);
q2 = gated XOR(VInitSeeD[63-32],Vsrc2[95-64]);
/* Calculating the chips for Ipath & Q path */
BitRealX = q1 XOR q2;
BitImagY = VInitSeeD[0] XOR VInitSeeD[32];
/* Calculating the feedback bit */
fb1 = gated XOR(VInitSeeD[31-0] ,Vsrc2[63-32]);
fb2 = gated XOR(VInitSeeD[63-32] , Vsrc2[31-0]);
/* Shifting the register to the right by one bit & store the bit at the position indicated by offset1 */
VInitSeeD[31-0] = VInitSeeD[31-0] >> 1;
VInitSeeD[63-32] = VInitSeeD[63-32] >> 1;
7/27/2019 scrm.odt
2/2
VInitSeeD[offset1] = fb1;
VInitSeeD[offset1+32] = fb2;
Vdest(Itr3)[127-112]: Vdest(Itr2)[95-80]: Vdest(Itr1)[63-48]: Vdest(Itr0)[31-16] = BitRealX*0x7fff
Vdest(Itr3)[111-96]: Vdest(Itr2)[79-64]: Vdest(Itr1)[47-32]: Vdest(Itr0)[15-0] = BitRealY*0x7fff
For the given diagram,
Vsrc2 =>Vsrc2[127-96] = 0x00001050 --> 32 bit Mask for feedforward path of x-shift register
Vsrc2[95-64] = 0x0000ff60 --> 32 bit Mask for feedforward path of y-shift register
Vsrc2[63-32] = 0x00020081 --> 32 bit Mask for feedback path of x-shift register
Vsrc2[31-0] = 0x000204a1 --> 32 bit Mask for feedback path of y-shift register
VInitSeeD : VInitSeed is loaded with Initial Seed and is updated at the end of each operation
Vdest is updated after each iteration with 16bits complex data