2012-08-20 3 views
0

Je crée mon générateur PN avec ce code:Générer du code pseudo avec commsrc.pn

h=commsrc.pn('GenPoly',gfprimdf(3), 'InitialStates',[1 0 0], ... 
      'CurrentStates', [1 0 0], 'Mask',[0 0 1], 'NumBitsOut',1) 

Et c'est le polynôme GF de mon générateur PN:

>> gfpretty(h.GenPoly) 
             3 
           1 + X + X 

Les états actuels de h est :

>> h.CurrentStates 
    ans = 
      1  0  0 

regardant le polynôme GF, je pense que la statue suivante h devrait être [0 1 0]. Mais Matlab transforme les prochains états de h en [1 1 0] et non en valeur attendue [0 1 0].

>> generate(h); 
>> h.CurrentStates 
ans = 
      1  1  0 

Répondre

0

gfprimdf (...) génère le polynôme générateur, dans l'ordre 1+a1*x+a2*x^2+a3*x^3+...+x^N et représente par un vecteur

[1 a_1 a_2 ... a_N-1 1]

(ordre croissant de puissances polynomiales). Cependant, commsrc.pn s'attend à ce que ce vecteur soit dans l'ordre décroissant. Ainsi, dans votre exemple, le polynôme générateur qui est réellement utilisé par commsrc.pn est 1 + x^2 + x^3, et non 1 + x + x^3 comme prévu. Si vous utilisez à la place

h=commsrc.pn('GenPoly',[1 0 1 1],'InitialStates',[1 0 0],'CurrentStates',[1 0 0],'Mask',[0 0 1],'NumBitsOut',1);

l'état après avoir généré un résultat de bit de sortie dans l'état prévu.

+0

merci beaucoup – adream307