Question

Cela pourrait ressembler à une répétition à ma question précédente.Mais je pense que ses pas.Je suis à la recherche d'une technique pour convertir le signal dans le format Décimal format binaire.

J'ai l'intention d'utiliser les blocs Simulink dans le Xilinx Bibliothèque pour convertir un nombre décimal en binaire format.

Donc, si l'entrée est de 3, la sortie attendue devrait en 11( 2 Cycles d'Horloge).Je suis à la recherche de la sortie peut être obtenu en série.

Merci de me suggérer comment le faire ou tout pointeurs dans l'internet serait utile.

Merci

Était-ce utile?

La solution

Vous êtes correct, ce dont vous avez besoin est le groupe parallèle au bloc série du générateur de système.
Il est décrit dans ce document:

http://www.xilinx.com/support/documentation/sw_manuals / xilinx13_1 / sysgen_ref.pdf

Ce bloc est un bloc de changement de vitesse.Vérifiez les mentions du bloc parallèle au bloc série dans ces documents pour des descriptions supplémentaires:

http://www.xilinx.com/support/documentation/sw_manuals / xilinx13_1 / sysgen_gs.pdf

http://www.xilinx.com/support/documentation/sw_manuals / xilinx13_1 / sysgen_user.pdf

Autres conseils

Utilisez un bloc constant normal avec une variable MATLAB, cela donne déjà à la sortie en binaire "normal" (en supposant que vous définissez les propriétés sur le point non signé et le point binaire à 0.

Ensuite, vous devez écrire un petit bloc série, qui prend cette entrée, la verrouille dans un registre à décalage, puis décale le registre une fois par cycle d'horloge avec le bit qui "tombe de la fin" devenant votre bit de sortie.En fonction de quelle manière votre quart de travail, vous pouvez le faire venir le premier MSB de LSB en premier.

Vous devrez construire le registre à décalage des registres ordinaires et un MUX avant que chacun puisse choisir si vous effectuez une charge parallèle ou un déplacement.(C'est le genre de chose qui est un couple de lignes de code dans VHDL, mais une FAFF droite en graphisme).

Si vous devez augmenter le taux de série, vous devez l'afficher à partir d'une horloge plus rapide - vous pouvez utiliser un DCM pour générer ceci.

Matlab dispose d'un dec2bin fonction qui va convertir un nombre décimal en une chaîne binaire.Ainsi, par exemple dec2bin(3) serait de retour 11.

Il y a aussi un correspondant bin2dec qui prend une chaîne binaire et le convertit en un nombre décimal, de sorte que bin2dec('11') serait de retour 3.

Si vous êtes désireux de convertir un nombre entier nombre décimal à une chaîne binaire, vous aurez envie de déterminer quel est le plus petit binaire endroit que vous voulez représenter, et puis faire un peu de pré - et de post-traitement, combiné avec dec2bin pour obtenir les résultats que vous recherchez.Donc, si la plus petite binaire endroit que vous voulez, c'est le 1/512e place (ou 2^-9), puis vous pouvez faire ce qui suit (où binPrecision est égal à 1/512):

function result = myDec2Bin(decNum, binPrecision)

  isNegative=(decNum < 0);
  intPart=floor(abs(decNum));
  binaryIntPart=dec2bin(intPart);
  fracPart=abs(decNum)-intPart;
  scaledFracPart=round(fracPart / binPrecision);
  scaledBinRep=dec2bin(scaledFracPart);
  temp=num2str(10^log2(1/binPrecision)+str2num(scaledBinRep),'%d');                                                                                                                                                                        
  result=[binaryIntPart,'.',temp(2:end)];
  if isNegative
    result=['-',result];
  end
end

Le résultat de myDec2Bin(0.256, 1/512) serait alors 0.010000011, et le résultat de myDec2Bin(-0.984, 1/512) serait -0.111111000.(Notez que la sortie est une chaîne de caractères.)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top