A PN data sequence is an M-sequence that is generated using a linear feedback shift-register circuit, as illustrated below. M is the number of shift registers. D(M) is the m^{th} shift register, and {*c _{1},c_{2},…,c_{M}*} are the coefficients of them. At each clock pulse, the data in the registers will right shift once and one PN datum is output from register D(M).

Mathematically, the procedure can be defined by a generator polynomial. {*c _{1},c_{2},…,c_{M}*} becomes the coefficients of the generator polynomial. For instance, the polynomial for PN9 is

*c _{9}=1, c_{5}=1, c_{i∈{1~9},and i≠9,i≠5}=0*

The PN sequence, {*a _{n}*},

where, the initial state of registers *{D ^{1},D^{2}…D^{M}}* is the seed. D(M) stores the LSB of the seed, and D1 stores the MSB of the seed. For example, if the seed is 10 (binary form 1010), the initial state in register

Afterwards, the registers store previously generated data, *D ^{m}=a_{n-m},m∈(1,M)*.

The generator polynomial for PN15 is *x ^{15}+x^{14}+1*, therefore M=15 and