[CRC en VHDL] probleme avec des equations
LeBr3toN
-
hg -
hg -
Bonjour,
Voila je dois écrire un programme en VHDL pour vérifier les données qui me sont transmisses faisant appel au CRC. Alors je me suis renseigné sur le net pour savoir comment sa marché... et je pense avoir bien compris le fonctionnement du CRC.
J'ai trouvé plusieurs programmes qui génère des CRC en fonctions de la taille des données et du CRC que l'on veut mais j'ai pas compris les équations qu'ils utilisaient(cf le prog en vhdl).
******************************************************
library IEEE;
use IEEE.std_logic_1164.all;
package body PCK_CRC8_D8 is
-- polynomial: (0 1 2 8)
-- data width: 8
-- convention: the first serial data bit is D(7)
function nextCRC8_D8
( Data: std_logic_vector(7 downto 0);
CRC: std_logic_vector(7 downto 0) )
return std_logic_vector is
variable D: std_logic_vector(7 downto 0);
variable C: std_logic_vector(7 downto 0);
variable NewCRC: std_logic_vector(7 downto 0);
begin
D := Data;
C := CRC;
NewCRC(0) := D(7) xor D(6) xor D(0) xor C(0) xor C(6) xor C(7);
NewCRC(1) := D(6) xor D(1) xor D(0) xor C(0) xor C(1) xor C(6);
NewCRC(2) := D(6) xor D(2) xor D(1) xor D(0) xor C(0) xor C(1) xor
C(2) xor C(6);
NewCRC(3) := D(7) xor D(3) xor D(2) xor D(1) xor C(1) xor C(2) xor
C(3) xor C(7);
NewCRC(4) := D(4) xor D(3) xor D(2) xor C(2) xor C(3) xor C(4);
NewCRC(5) := D(5) xor D(4) xor D(3) xor C(3) xor C(4) xor C(5);
NewCRC(6) := D(6) xor D(5) xor D(4) xor C(4) xor C(5) xor C(6);
NewCRC(7) := D(7) xor D(6) xor D(5) xor C(5) xor C(6) xor C(7);
return NewCRC;
end nextCRC8_D8;
end PCK_CRC8_D8;
******************************************************
Voila c les equations NewCRC(0):= ....
Je comprend pas comment ils ont fait pour trouver ces equations je pense que sa viens de la division dans le CRC mais bon j'y arrive pas merci pour votre aide
Voila je dois écrire un programme en VHDL pour vérifier les données qui me sont transmisses faisant appel au CRC. Alors je me suis renseigné sur le net pour savoir comment sa marché... et je pense avoir bien compris le fonctionnement du CRC.
J'ai trouvé plusieurs programmes qui génère des CRC en fonctions de la taille des données et du CRC que l'on veut mais j'ai pas compris les équations qu'ils utilisaient(cf le prog en vhdl).
******************************************************
library IEEE;
use IEEE.std_logic_1164.all;
package body PCK_CRC8_D8 is
-- polynomial: (0 1 2 8)
-- data width: 8
-- convention: the first serial data bit is D(7)
function nextCRC8_D8
( Data: std_logic_vector(7 downto 0);
CRC: std_logic_vector(7 downto 0) )
return std_logic_vector is
variable D: std_logic_vector(7 downto 0);
variable C: std_logic_vector(7 downto 0);
variable NewCRC: std_logic_vector(7 downto 0);
begin
D := Data;
C := CRC;
NewCRC(0) := D(7) xor D(6) xor D(0) xor C(0) xor C(6) xor C(7);
NewCRC(1) := D(6) xor D(1) xor D(0) xor C(0) xor C(1) xor C(6);
NewCRC(2) := D(6) xor D(2) xor D(1) xor D(0) xor C(0) xor C(1) xor
C(2) xor C(6);
NewCRC(3) := D(7) xor D(3) xor D(2) xor D(1) xor C(1) xor C(2) xor
C(3) xor C(7);
NewCRC(4) := D(4) xor D(3) xor D(2) xor C(2) xor C(3) xor C(4);
NewCRC(5) := D(5) xor D(4) xor D(3) xor C(3) xor C(4) xor C(5);
NewCRC(6) := D(6) xor D(5) xor D(4) xor C(4) xor C(5) xor C(6);
NewCRC(7) := D(7) xor D(6) xor D(5) xor C(5) xor C(6) xor C(7);
return NewCRC;
end nextCRC8_D8;
end PCK_CRC8_D8;
******************************************************
Voila c les equations NewCRC(0):= ....
Je comprend pas comment ils ont fait pour trouver ces equations je pense que sa viens de la division dans le CRC mais bon j'y arrive pas merci pour votre aide
4 réponses
-
salut !
je suis confronté au meme pb ke toi, j'aimerais bien comprendre ce code pour le faire pour le CRC32 !
tu l'as compris depuis le tps ?
merci-
Salut !
Alors pour repondre a ta question oui j'ai resolu le probleme.
En realité je n'ai pas utilisé les equations données ci dessus car je sais pas si celles ci marchees ,donc j'ai code le CRC en vdhl comme un algorithme.
Envois moi ton adresse mail pour que je t'envois l'algo que j'ai utilise (une fois que ta compris l'algo du crc16 que j'ai fait t'aura pas trop de difficulte a faire le tien)
-
-
Salut remy, je suis nouveau dans ce forum et je suis confronté au meme probleme que toi. en lisant les phrases ci dessus, j'ai jugé utile de t'ecrire afin que tu me passe ton algo. Je te serais tres reconnaissant. voici mon email. moussatamou@yahoo.fr
merci de me rendre ce servie -
salut rémy, de même pour moi j'ai trouver le même alogo que toi et évidement impossible de le comprendre. peut tu me transférer ton algo. mon mail:flo.delclaux@hotmail.fr
merci -
En visitant le site, j'ai trouve trace de vos dicussions d'il y a 6mois. Pourriez vous m'envoyer aussi l'algorihtme crc en vhdl, car je recherche une solution de ce type pour des tp . merci d'avance
basque.c@free.fr