Checksum in VHDL

O

Oana

Guest
Hallo iedereen,

Iedereen kan mij vertellen hoe kan ik een checksum in VHDL.
Bedankt!
Oana

 
Neem een kijkje op deze draad hier:
http://www.edaboard.com/viewtopic.php?t=301508&highlight=ethernet

 
controlesom is enigszins verschillend van CRC ....

procedure voor de controlesom is:
1.plak de gegevens in 16-bits plakjes
2.vat de 16-bit gegevens begin van de 1e, als overloop, voeg 1 in de som
3.indien de resterende gegevens heeft slechts 8-bit, blokstellen x "00" tot het einde om 16-bit

Ik kan niet goed duidelijk, hieronder is een deel van voorbeeld van VHDL-code, dit is niet compilable, net voor snelle begrip van checksum berekening:

in16b = unsigned (15 downto 0)
som = unsigned (16 downto 0), initiële = (OTHERS =>'0 ')
result = std_logic_vector (15 downto 0)
ps: bij de behandeling van controlesom, resultaat = x "FFFF" betekent corrigeren; bij het genereren van controlesom, resultaat = berekende controlesom

IF (cs ='1 ') THEN
som: = som in16b;
IF (som (16) ='1 ') THEN
som: ='0 '& som (15 downto 0) "1";
END IF;
END IF;
IF (finsih ='1 ') THEN
Voor i in het 0 tot 15 LOOP
resultaat (i) <= NOT (std_logic (som (i)));
END LOOP;
END IF;

 
Thanks a lot kinderen!
Dit helpt me.
En als het ware uit te voeren CRC, hoe zou die eruit zien?

<img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Very Happy" border="0" />Ik keek voor het CRC-algoritme, maar ik vind coudn't een duidelijk antwoord ....

Bedankt!

 
link door benradu hebben veel informatie over de code voor CRC ...

btw Ik veronderstel dat u te CRC-32 die wordt gebruikt voor Ethernet.Volgens 802,3 standaard specificatie, punt 3.2.8 - Frame Chksum Sequence (FCS) veld:

"..... De codering is gedefinieerd door de volgende generatoraggregaten polynoom.
G (x) = x32 x26 x23 x22 x16 x12 x11 x10 x8 x7 x5 x4 x2 x 1
Wiskundig, het CRC-waarde die overeenkomt met een bepaald beeld wordt bepaald door de volgende procedure:
a) De eerste 32 bits van het frame worden aangevuld.
b) De n bits van het frame wordt vervolgens beschouwd als de coëfficiënten van een polynoom M (x) van graad n 1.
(Het eerste stukje van het doel adres veld komt overeen met de x (n 1) termijn en het laatste stukje van het veld komt overeen met de x0 termijn.)
c) M (x) wordt vermenigvuldigd met x32 en gedeeld door G (x), een rest R (x) van graad ≤ 31.
d) De coëfficiënten van R (x) worden geacht te zijn een 32-bit-reeks.
e) De bits volgorde wordt aangevuld en het resultaat is van de CRC.
De 32 bits van de CRC waarde worden geplaatst in het frame controleren sequentie gebied, zodat de x31 termijn is de meest linkse bit van de eerste octet, en de x0 termijn is de meest rechtse bits van het laatste octet.(De bits van de CRC zijn dus verzonden in de volgorde x31, 30,, x1, x0.) Zie referentie [B32].

Hoop dat je kunt krijgen duidelijker beeld ....

 

Welcome to EDABoard.com

Sponsor

Back
Top