Vous êtes sur la page 1sur 3

ERP(Aigullage ,CRC32 et canal_Rx)

-Aiguillage du commutateur

Error=1 si Sel1 = 00 ; S2=E1 si Sel2 = 00 ; S3=E1 si Sel3 = 00 ; S4=E1 si Sel4 = 00 
S1=E2 si Sel1 = 01 ; Error=1 si Sel2 = 01 ; S3=E2 si Sel3 = 01 ; S4=E2 si Sel4 = 01 
S1=E3 si Sel1 = 10 ; S2=E3 si Sel2 = 10 ; Error=1 si Sel3 = 10 ; S4=E3 si Sel4 = 10 
S1=E4 si Sel1 = 11 ; S2=E4 si Sel2 = 11 ; S3=E4 si Sel3 = 11 ; Error=1 si Sel4 = 11 

Description VHDL :

Library IEEE,
Use IEEE.STD_Logic.1164.ALL ;

Entity Aiguillage is
Port(E1,E2,E3,E4,H,Reset :In std_logic;
Sel1,sel2,sel3,sel4 : in std_logic_vector(1 Downto 0).
S1,S2,S3,S4,Error : out std_logic;)
End Aiguillage;

Architecture AAiguillage of Aiguillage is


Begin
Process(H,Reset)
Begin
If reset=”0” then S1<=’0’; S2<=’0’; S3<=’0’; S4<=’0’;Error<=’0’;
Elsif rising_edge(H) then if sel1=”00” then Error <=’1’ ;
Elsif sel1=”01” then S1<= E2 , Error <=’0’;
Elsif sel1=”10” then S1<= E3 , Error <=’0’;
Else S1<= E4 , Error <=’0’;
End if;
if sel2=”00” then S2 <=E1, Error <=’0’;
Elsif sel2=”01” then Error <=’1’;
Elsif sel2=”10” then S2 <=E3, Error <=’0’
Else S2<= E4 , Error <=’0’;
End if;
if sel3=”00” then S3 <=E1, Error <=’0’;
Elsif sel3=”01” then S3<=E2, Error <=’0’;
Elsif sel3=”10” Then Error <=’1’;
Else S3<= E4 , Error <=’0’;
End if;
if sel4=”00” then S4 <=E1, Error <=’0’;
Elsif sel4=”01” then S4<=E2, Error <=’0’;
Elsif sel2=”10” then S4<=E3, Error <=’0’;
Else Error <=’1’;
End if;End if;End Process ;
End AAguillage;

switch (« aiguillage » en anglais), une instruction qui permet d'effectuer un branchement à partir


de la valeur d'une variable. Elle peut dans certains cas remplacer une série (souvent peu
élégante) de if … else. On l'utilise lorsque les cas à gérer sont nombreux.
Switch évalue l'expression qui lui est donnée et aiguille le programme vers le cas correspondant
à la valeur effective de cette expression.

Canal_Rx(Schema) :

La trame va être reçu a travers l’entrée Rx pour être envoyé vers le registre Reg_in. Ensuite la trame
va être décortiquée par le démultiplexeur DEMUX, la donnée va être séparée du champ préambule.
La donnée va ensuite être traité au niveau du Décodeur Manchester, pour qu’elle pas du codage
Manchester au codage binaire (0 et 1)(de 16bits a 8bits pour 1octet).Ensuite a la sortie du Décodeur
Manchester la donnée va être empilé sur une pile Fifo et les octets 13 et 14 vont eux aller vers RegL
et RegH respectivement pour connaitre la taille du champs donnée. La donnée sera contrôlée (pas
d’erreurs de transmission) si tout est bon la Donnée et reçu et prête pour être lu dans la FIFO
Crc 32 :

un contrôle de redondance cyclique ou CRC (cyclic redundancy check) est un outil logiciel


permettant de détecter les erreurs de transmission ou de transfert par ajout, combinaison et
comparaison de données redondantes, obtenues grâce à une procédure de hachage. Ainsi, une
erreur de redondance cyclique peut survenir lors de la copie d'un support (disque dur, CD-
Rom, DVD-Rom, clé USB, etc.) vers un autre support de sauvegarde.
Les CRC sont évalués (échantillonnés) avant et après la transmission ou le transfert, puis
comparés pour s’assurer que les données sont strictement identiques. Les calculs de CRC les
plus utilisés sont conçus afin de pouvoir toujours détecter les erreurs de certains types, comme
celles dues par exemple, aux interférences lors de la transmission.

Polynome du crc32 : G32(x)=x32+x26+x23+x22+x16+x12+x11+x10+x8+x5+x4+x2+1

Resultats de simulation :

Taibi Zakaria & Aberhouch Faouzi ESE M1