// Xilinx APP 052 July 7, 1996, ver. 1.1
function psrg_func;
input integer N;
input [31:0] sr;
case (N)
32 : psrg_func = sr[31] ^ sr[21] ^ sr[ 1] ^ sr[ 0];
31 : psrg_func = sr[30] ^ sr[27];
30 : psrg_func = sr[29] ^ sr[ 5] ^ sr[ 3] ^ sr[ 0];
29 : psrg_func = sr[28] ^ sr[26];
28 : psrg_func = sr[27] ^ sr[24];
27 : psrg_func = sr[26] ^ sr[ 4] ^ sr[ 1] ^ sr[ 0];
26 : psrg_func = sr[25] ^ sr[ 5] ^ sr[ 1] ^ sr[ 0];
25 : psrg_func = sr[24] ^ sr[21];
24 : psrg_func = sr[23] ^ sr[22] ^ sr[21] ^ sr[16];
23 : psrg_func = sr[22] ^ sr[17];
22 : psrg_func = sr[21] ^ sr[20];
21 : psrg_func = sr[20] ^ sr[18];
20 : psrg_func = sr[19] ^ sr[16];
19 : psrg_func = sr[18] ^ sr[ 5] ^ sr[ 1] ^ sr[ 0];
18 : psrg_func = sr[17] ^ sr[10];
17 : psrg_func = sr[16] ^ sr[13];
16 : psrg_func = sr[15] ^ sr[14] ^ sr[12] ^ sr[ 3];
15 : psrg_func = sr[14] ^ sr[13];
14 : psrg_func = sr[13] ^ sr[ 4] ^ sr[ 2] ^ sr[ 0];
13 : psrg_func = sr[12] ^ sr[ 3] ^ sr[ 2] ^ sr[ 0];
12 : psrg_func = sr[11] ^ sr[ 5] ^ sr[ 3] ^ sr[ 0];
11 : psrg_func = sr[10] ^ sr[ 8];
10 : psrg_func = sr[ 9] ^ sr[ 6];
9 : psrg_func = sr[ 8] ^ sr[ 4];
8 : psrg_func = sr[ 7] ^ sr[ 5] ^ sr[ 4] ^ sr[ 3];
7 : psrg_func = sr[ 6] ^ sr[ 5];
6 : psrg_func = sr[ 5] ^ sr[ 4];
5 : psrg_func = sr[ 4] ^ sr[ 2];
4 : psrg_func = sr[ 3] ^ sr[ 2];
default : psrg_func = sr[ 2] ^ sr[ 1];
endcase
endfunction