Vous êtes sur la page 1sur 23

3.

Conception Fonctionnelle
Cette tape consiste laborer un document complet de la solution retenue en se limitant aux aspects fonctionnels et en restant indpendant de la technologie son objectif est de dfinir une structure interne au circuit dordre fonctionnelle permettent dassurer le fonctionnement voulu. Pour cela on partira dune analyse des spcifications fonctionnelles du circuit. On va se positionner lintrieur du circuit et identifier les blocs qui le constitue, les fonctions du circuit et les algorithmes associs partir de ce que le circuit est capable de raliser. On associera ces algorithmes lensemble des ressources logiques du circuit. Le rsultat sexprime par une structure fonctionnelle compose de fonctions elle-mme raffines (dcrite par une structure fonctionnelle) ou dcrites par un algorithme. Dans une structure fonctionnelle, les fonctions sont relies par des relations qui peuvent tre de 3 types : Evnement, cest une relation de synchronisation ; Variable partage, qui permet de partager des valeurs sans contraintes de temps ; Port de communication, qui sont de type producteur /consommateur.

3.1. Dlimitation des entres/sorties


La dlimitation des entres/sorties du circuit concevoir se base sur la dlimitation du circuit faite lors des spcifications. La figure 1 ci-dessous nous prsente, le circuit et son environnement avec lequel il devra inter-agir.

Figure 1 : Dlimitation des entres/sorties du circuit concevoir.

3.2. Premire Dcomposition Fonctionnelle


La dcomposition se fait partir des spcifications qui caractrisent le rle du circuit pour lapplication. Elle doit se baser sur la recherche des variables internes essentielles. Ceci est tout fait comprhensible pour un circuit car il est clair que ces variables seront transcrites en registre et mmoires internes. Le circuit doit tre capable de ragir simultanment aux entits de son environnement, il doit recevoir les trames LIN provenant du nud maitre et les aiguiller vers le microprocesseur. Lanalyse de la spcification du circuit (couplage entre automates) permet de constater les variables internes suivantes : DataInterne : contient les donnes (trames LIN) reu par le rcepteur LIN qui seront sauvegard avant dtre aiguiller vers le microprocesseur EtatInterne : contient le nombre doctets recevoir par le circuit, lindication des erreurs ventuelles, lindication des erreurs de message.

Filtre : ByteReceiver : Autour de ces relations internes du circuit, il faut : Une fonction Reception LIN : value la valeur de DataLIN et doit sauvegarder les donnes dans DataInterne Une fonction Interface Micro : interprte linformation des signaux de commande du microprocesseur pour les aiguiller, il copie lEtatInterne et DataInterne sur le bus de donnes. Il joue en fait le rle daiguillage Une Horloge : elle assure la cadence du circuit Cela donne la dcomposition suivante :

Figure 2 : Dcomposition fonctionnelle du circuit concevoir.

3.3. Description des algorithmes


Le travail de conception fonctionnel nest termin que lorsque tous les types des relations (variables partages et port de communication) sont spcifis et lorsque le comportement cyclique de chaque fonction a t exprim sous formes algorithmiques. Comportement de la Fonction Horloge, son comportement est dfini comme suit : Action HORLOGE avec (sortie venement) Const Hperiod=......; begin Cycle Attente(Hperiod); Signal(H); EndCycle End Horloge. Comportement de la Fonction Rception LIN, son comportement est le suivant :

Action Horloge avec (sortie Corst Hperiod = __;

vnement H)

begin cycle attendre (Hperiod); Signal (H); end cycle; end Horloge; Action ReceptionLIN sur vnement avec (entre var DataLIN : Def DataLIN; sortie var DataInterne : Def DataInterne; sortie var EtatInterne : Def Etat; entre var Filtre : Def Filtre; sortie v B_Received sortie v M_Received); var EtatReceptionLIN (Attente, ReceptionBreak_0, ReceptionBreak_1, ...) begin cycle H

t:= t+ Hperiod ; case EtatReceptionLIN of: Attente : if (DataLIN =0) then begin EtatReceptionLIN ReceptionBreak_0; end; ReceptionBreak_0 : if (DataLIN =1) then if ( i<=12) then begin EtatInterne.ErrDelayBreak :=1; EtatReceptionLIN := Attente; end; else begin EtatReceptionLIN := ReceptionBreak_1; end; else if (t:= LINperiod) then begin i:=i+1; end; ReceptionBreak_1 :

:=

. . . end; Comportement de la Fonction Dialogue Micro, son comportement est le suivant : process (H,nCLR) begin if (nCLR = '0') then state <= Attente; elsif (H'event and H='1') then case state is when Attente => when EcritureAdresse => when EcritureMasque => when LectureData =>

when LectureEtat => end case; end if; end process; process (state, ) begin case state is when Attente => when EcritureAdresse => if (E= __) then S <= __; -- action sur transition when EcritureMasque => S <= __; -- action sur tat when LectureData => when LectureEtat => end case; end process;

4. Conception Architecturale
Il sagit de dterminer une solution appropri au problme rsoudre sous la forme dune structure de modules. Le travail consiste transformer la vue fonctionnelle dans ltape prcdente.

4.1. Introduction des interfaces


Il sagit de considrer les caractristiques technologiques des entres et sorties du composant. Cette tape consiste gnralement ajouter une couche supplmentaire de fonctions autour de la description fonctionnelle issue de ltape de conception fonctionnelle. Dans le cas de notre rcepteur LIN, lintroduction des interfaces concerne principalement la partie Dialogue avec le microprocesseur. On va rflchir sur des signaux logiques manipul avec le microprocesseur.

4.2. Optimisation des algorithmes


Lobjectif de cette tape est de rduire la complexit de la solution finale. Il faut : Effectuer des tests par rapport 0 plutt qua une valeur quelconque, Rduire le nombre dtats et de branches conditionnelles dans les automates, Manipuler simultanment plusieurs variables.

La fonction rception LIN concevoir doit valuer la valeur de DataLIN et prend plusieurs tats, nous avons 15 tats significatifs ncessaires pour la ralisation de cette fonction. Nous pouvons amliorer cette fonction en rduisant le nombre dtats significatifs cela va nous permettre doptimiser en termes de ressources logiques ncessaires la ralisation de cette fonction. Au lieu de rpter les tats Attente_Start, Reception_Start, Reception_Bit et Reception_Stop chaque fois quun champ est transmis. Nous pouvons utiliser ces 4 tats pour tous les champs transmissent de la trame LIN. La figure suivante nous prsente Lalgorithme sous forme graphique de la fonction Reception LIN que nous avons optimis, nous avons au total 7 tats significatifs de la fonction Reception LIN

Attente

Data_LIN = 0 (H n:=N-1; i=12;

Rception Break_0
Data_LIN = 1; i>0; (H ) EtatInterne.ErrDelayBreak:=1;

n>0, (H n:=n-1;

n=0; Data_LIN = 0 (H n:=N-1; i:=i11;

i=0; Data_LIN = 0 (H n:=N-1;

Data_LIN = 0; n>0; (H

Rception Break_1

n>0, (H ) n:=n-1;

EtatInterne.ErrDelayBreak:=1; n=0; Data_LIN = 1 (H NbByte:=11; )

Attente Start
Data_LIN = 0 (H n:=(N-1)/2; )

Data_LIN = 1; n=0; (H

Rception Start

n>0, (H ) n:=n-1;

EtatInterne.ErrStartStop:=1; n=0; Data_LIN = 0 (H n:=N-1; i:=7; )

Rception Bit
Data_LIN = 1; n=0; (H ) EtatInterne.ErrStartStop:=1;

n>0, (H n:=n-1;

n=0; i>0 (H

n:=N-1; i:=i-1; OctetRecu[7..0] = Data_LIN & OctetRecu[7..1] )

n=0; i=0 (H

OctetRecu[7..0] = Data_LIN & OctetRecu[7..1]; n:=N-1;

Data_LIN = 0; n=0; (H

Rception Stop

n>0, (H n:=n-1;

EtatInterne.ErrStartStop:=1; n=0; Data_LIN = 1; NbByte>0; NbByte!=10 (H ) DataInterne[j]:=Octet_Recu; j:=j+1; EtatInterne.NbByteReceived:=EtatInterne.NbByteReceived+1; (* ) EtatInterne.ByteReceived:=1; NbByte := NbByte -1

n=0; Data_LIN = 1; NbByte>0; NbByte!=10 (H if ((Filtre.Masque AND Filtre.Adresse) = (Filtre.Masque AND Identifier_Field)) then (*); Etat.MessageReceived:=1; else EtatInterne:=0; DataInterne:=0;

n=0; Data_LIN = 1; NbByte=10; (H (*);NbByte:=fct(OctetRecu[5..4]; IdentField:=OctetRecu;

Figure 3: Automate Rception LIN.

La fonction Dialogue Micro est active selon le niveau du signal nCS, le microprocesseur va initier le cycle de lecture ou dcriture en activant le nCS. La

fonction dialogue Micro est asynchrone, laiguillage des informations entre les donnes et les ressources internes aura une influence sur lvolution de nCS. Pour des raisons de fiabilits et de robustesse on privilge des liaisons synchrones lhorloge qui est un choix technologiques. La valeur du nCS sera value sur front montant ou descendant, en faisant ce choix on va prciser la valeur du signal dhorloge H. La priode du signal H doit tre faible de faon dtecter les signaux les signaux du microprocesseur plus prcisment du nCS, donc la priode de nCS va nous permettre de dterminer la priode du signal dhorloge H. La priode du signal dhorloge H sera par la dure de nCS entre 80ns et 120ns, la priode minimale permettra dterminer une valeur de nCS. Donc la priode de H sera fixe 80ns.

Figure 4: Algorithme graphique Dialogue Micro.

4.3. Identifications des ressources


Cette tape consiste interprter les algorithmes que nous avons optimiss et identifier les ressources ncessaires pour chaque tat ou instructions associe. Chaque fonction du circuit concevoir sera constitu dune partie oprative qui va assurer le traitement escompts, dune partie commande qui va assurer la bonne squence des diffrents oprations de la partie oprative et une partie mmorisation qui va dfinir des ressources de mmorisation pour chaque relations internes entre les diffrentes fonctions du circuit concevoir.

4.3.1 Ressources de mmorisation Nous allons tudier le rle de chacune de chacune des relations interne au circuit et pour chaque relation on doit trouver la ressource mettre en uvre pour la sauvegarde des donnes et favoriser lchange des informations entre Rception LIN et Interface Micro.

DataInterne : recevra les donnes provenant du RecepteurLIN, vu quune trame LIN pourra contenir au total 11 octets et que nous utiliserons la mthode FIFO pour la sauvegarde de nos informations on aura besoin de 11 registres 8 bits organis sous forme FIFO ; EtatInterne : va sauvegarder le nombre doctet recevoir et indiquer les erreurs ventuelles et les erreurs de message. Pour la sauvegarde de ces informations nous aurons besoin dun registre 8 bits : 1 bit: Err start stop 1 bit: Err Delay Breack 1 bit: Byte Received 1 bit: Message Received 4 bits: NbByteReceived Filtre : sauvegarde la valeur du masque et de ladresse provenant du microprocesseur, vu que ladresse et le masque seront codes sur 4 bits donc nous auront besoin de 1 registres 8 bits pour cette relation interne ; DataLIN : les informations vhicules par DataLIN sont crites par le nud maitre et lit par le circuit. Le nud maitre et le circuit et le circuit concevoir auront des changes asynchrones. Il va falloir synchroniser linformation pour pouvoir la lire, on va avoir besoin dun registre qui va maintenir la valeur de DataLIN chaque coup dhorloge ;

Figure 5 : Ressources de mmorisation.

Le schma de la figure ci-dessus reprsente les 2 blocs qui constituent notre circuit et les diffrentes relations internes (ressources de mmorisation) entre ces blocs. 4.3.2 Description des Fonctions du circuit Le circuit concevoir est constitu de deux blocs comme reprsent prcdemment, nous avons un bloc qui va raliser la fonction Reception LIN et un bloc qui va favoriser le dialogue du circuit avec le microprocesseur (Dialogue Micro). Chaque bloc sera constitu dune partie oprative et dune partie de commande.

A) Fonction Reception LIN La ralisation de cette fonction se fera par la dfinition dune partie oprative et dune partie oprative et dune partie de commande. La partie de commande va mettre des signaux pour piloter la partie oprative et tester les valeurs de certains signaux de la partie de commande. La figure ci-dessous nous prsente les deux

parties qui constituent la fonction rception LIN et les diffrents signaux changs.

Figure 6 : Fonction Reception LIN.

Dfinition de la Partie Oprative Aprs optimisation de lalgorithme schmatique de la fonction Reception LIN nous allons utiliser : 2 dcompteurs : n : dcompteur de N-1 0, son chargement se fera N-1 et (N-1)/2 on aura un multiplexeur pour slectionner le mode de chargement. i : dcompteur de de 12 0, son chargement se fera 7 et 12 on aura un multiplexeur pour slectionner le mode de chargement.

Un registre dcalage qui va sauvegarder chaque bits (8 bits) provenant de DataLIN puis va effectuer un dcalage droite en sortie de ce registre nous aurons loctet reu Un registre 8 bits pour sauvegarder les bits du champ IdentifierField afin de dterminer le nombre doctets envoyer, Un dcompteur(NbByte) qui va dcompter le nombre de doctets transmettre dans la trame LIN, son chargement se fera 11 ou en fonction (octetReu[5..4]) du champ IdentifierField.

Ainsi partir de ces diffrentes ressources, nous pouvons raliser la partie oprative de la fonction Reception LIN du circuit. La figure suivante nous prsente la partie oprative et ces diffrentes ressources.

Figure 7 : Partie Oprative fonction Reception LIN.

Dfinition de la partie de commande Nous pouvons dcrire les automates qui dfinissent le comportement de notre circuit par une machine de Mealy. Lorganisation des ressources seront ncessaire pour mettre en uvre la partie de commande, nous avons 2 process pour mettre en uvre cette volution : un process synchrone lhorloge ; un process combinatoire. Ainsi nous avons la description suivante qui nous permet de mettre en uvre la partie commande de la fonction Reception LIN :

ARCHITECTURE SaisieUCReceptionLin OF UCReceptionLIN IS

type state_type is (Attente,Reception_Break_0,Reception_Break_1,Attente_Start,Reception _Start,Reception_Bit,Reception_Stop); signal STATE_Recepteur : state_type; BEGIN process (H,nCLR) begin if (nCLR='0') then STATE_Recepteur <= Attente ; elsif (H'event and H='1') then case STATE_Recepteur is when Attente => if (DataLin = '0') then STATE_Recepteur <= Reception_Break_0; end if; when Reception_Break_0 => if ((DataLin = '0') and (Nzero = '0')) then STATE_Recepteur <= Reception_Break_0; elsif ((DataLin = '0') and (Nzero = '1')) then STATE_Recepteur <= Reception_Break_0; elsif ((DataLin = '1') and (izero = '1')) then STATE_Recepteur <= Reception_Break_1; else STATE_Recepteur <= Attente; end if;

when Reception_Break_1 => if (Nzero = '0') then STATE_Recepteur <= Reception_Break_1; elsif ((DataLin = '1') and (Nzero = '1')) then STATE_Recepteur <= Attente_Start; else STATE_Recepteur <= Attente; end if; when Attente_Start => if (DataLin = '0') then STATE_Recepteur <= Reception_Start; end if; when Reception_Start => if (Nzero = '0') then STATE_Recepteur <= Reception_Start; elsif ((DataLin = '0') and (Nzero = '1')) then STATE_Recepteur <= Reception_Bit; else STATE_Recepteur <= Attente; end if; when Reception_Bit =>

if (Nzero = '0') then STATE_Recepteur <= Reception_Bit; elsif ((izero = '0') and (Nzero = '1')) then STATE_Recepteur <= Reception_Bit; elsif ((izero = '1') and (Nzero = '1')) then STATE_Recepteur <= Reception_Stop; else STATE_Recepteur <= Attente; end if; when Reception_Stop => if (Nzero = '0') then STATE_Recepteur <= Reception_Stop; elsif ((DataLin = '1') and ( NbBytezero = '0') and (Nzero = '1') and ( NbByte = "1010")) then STATE_Recepteur <= Attente_Start; elsif ((DataLin = '1') and ( NbBytezero = '0') and (Nzero = '1') and ( NbByte /= "1010")) then STATE_Recepteur <= Reception_Stop; else STATE_Recepteur <= Attente; end if; when others => end case; end if; end process; output1_process : process(STATE_Recepteur) begin ByteReceivedIn<= '0'; ErrDelayBreakIn<= '0'; ErrStartStopIn <= '0'; Inc <= '0'; LoadN <= '0'; LoadNbByte <= '0'; Loadi <= '0'; MessageReceivedIn <= '0'; SelN <= '0'; SelNbByte <= '0'; Seli <= '0'; clkenN <= '0'; clkenNbByte <= '0'; clkeni <= '0'; loadIdentField <= '0'; wren <= '0'; clkshift<= '0'; case STATE_Recepteur is when Attente => if ( DataLin = '0') then SelN <= '1'; LoadN <= '1'; Seli <= '1'; Loadi <= '1';

end if; when Reception_Break_0 => if(Nzero = '0') then clkenN <= '1'; end if; if ((Nzero = '0') and (DataLin = '0')) then SelN <= '1'; LoadN <= '1'; clkeni <= '1'; end if; if ((izero = '0') and (DataLin = '1')) then ErrDelayBreakIn <= '1'; end if; if ((izero = '1') and (DataLin = '1')) then SelN <= '1'; LoadN <= '1'; end if; when Reception_Break_1 => if(Nzero = '0') then clkenN <= '1'; end if; if ((Nzero = '1') and (DataLin = '1')) then SelNbByte <='0'; LoadNbByte <= '1'; end if; if ((Nzero = '0') and (DataLin = '0')) then ErrDelayBreakIn <= '1'; end if; when Attente_Start => if (DataLin = '0') then SelN <= '0'; LoadN <= '1'; end if; when Reception_Start => if(Nzero = '0') then clkenN <= '1'; end if; if ((Nzero = '1') and (DataLin = '0')) then SelN <= '1'; LoadN <= '1'; Seli <= '0'; Loadi <= '1'; end if; if ((Nzero = '1') and (DataLin = '0')) then

ErrStartStopIn <= '1'; end if; when Reception_Bit => if(Nzero = '0') then clkenN <= '1'; end if; if ((Nzero = '1') and (izero ='0'))then SelN <= '1'; LoadN <= '1'; clkeni <= '1'; clkshift <= '1'; end if; if ((Nzero = '1') and (izero ='1'))then SelN <= '1'; LoadN <= '1'; clkshift <= '1'; end if; if ((Nzero = '1') and (DataLin = '1')) then ErrStartStopIn <= '1'; end if; when Reception_Stop => if(Nzero = '0') then clkenN <= '1'; end if; if ((Nzero = '1') and (NbBytezero ='0') and (NbByte /= "1010"))then wren <= '1'; Inc <= '1'; ByteReceivedIn <= '1'; clkenNbByte <= '1'; end if; if ((Nzero = '1') and (NbByte = "1010"))then wren <= '1'; Inc <= '1'; ByteReceivedIn <= '1'; SelNbByte <= '1'; loadIdentField <= '1'; end if; if ((Nzero = '1') and (DataLin ='1') and (NbBytezero ='0') and (NbByte /= "1010"))then if ((AdresseOut AND MasqueOut)= (AdresseOut AND IdentField(3 DOWNTO 0)))then wren <= '1'; Inc <= '1'; (DataLin ='1') and

(DataLin

='1')

and

ByteReceivedIn <= '1'; MessageReceivedIn <= '1'; else ErrStartStopIn <= '0'; ByteReceivedIn <= '0'; ErrDelayBreakIn <= '0'; MessageReceivedIn <= '0'; reset_fifo <= '0'; end if; end if; if ((Nzero = '1') and (DataLin ='0'))then ErrStartStopIn <= '1'; end if; end case; end process;

END ARCHITECTURE SaisieUCReceptionLin;

B) Fonction Dialogue Micro Le bloc dialogue micro va recevoir les donnes DataInterne provenant de la FiFO et EtatInterne provenant des registres, il va les aiguiller sur le bus de donnes du microprocesseur. Il devra aussi fournir les donnes du Filtre (masque et adresse). Pour la ralisation de cette fonction nous allons dfini une partie oprative et une partie de commande.

Figure 8 : Dialogue Micro.

Dfinition de la Partie Oprative Aprs une analyse de lalgorithme schmatique de la fonction Dialogue micro, nous constatons que nous allons utiliss : Un multiplexeur 2 entres qui va vhiculer sur le bus de donnes soit ltat du circuit(EtatInterne), soit les donnes (DataInterne) ; Une porte Tri_state qui va identifier la valeur dun signal haute impdance et permettra de protger la valeur sur le bus de donnes ; Un registre 4bits pour sauvegarder ladresse ; Un registre 4 bits pour sauvegarder la valeur du masque.

Figure 9 : Partie Oprative Dialogue Micro.

Dfinition de la partie de commande


ENTITY UCMicroP IS PORT( CnD H RnW nCLR nCS B_received Dec LoadAdresse LoadMasque M_received ResetByteReceived ResetErrDelayBreak ResetErrStartStop ResetMessageReceived SelEtatData SelLectureEcriture rden );ENTITY UCMicroP IS PORT( CnD H RnW nCLR nCS B_received Dec LoadAdresse LoadMasque M_received ResetByteReceived ResetErrDelayBreak ResetErrStartStop

: : : : : : : : : : : : : : : : :

IN IN IN IN IN OUT OUT OUT OUT OUT OUT OUT OUT OUT OUT OUT OUT

std_logic; std_logic; std_logic; std_logic; std_logic; std_logic; std_logic; std_logic; std_logic; std_logic; std_logic; std_logic; std_logic; std_logic; std_logic; std_logic; std_logic

: : : : : : : : : : : : :

IN IN IN IN IN OUT OUT OUT OUT OUT OUT OUT OUT

std_logic; std_logic; std_logic; std_logic; std_logic; std_logic; std_logic; std_logic; std_logic; std_logic; std_logic; std_logic; std_logic;

ResetMessageReceived SelEtatData SelLectureEcriture rden ); -- Declarations END UCMicroP ;

: : : :

OUT OUT OUT OUT

std_logic; std_logic; std_logic; std_logic

-ARCHITECTURE arch_name OF UCMicroP IS type state_type (ATTENTE,LECTURE_DATA,LECTURE_ETAT,ECRITURE_MASK,ECRITURE_ADR); signal STATE_MICRO : state_type; BEGIN state_process : process(nCLR,H) begin if(nCLR ='0')then STATE_MICRO <= ATTENTE; elsif(H'event and H = '1') then CASE STATE_MICRO IS when ATTENTE => is

if(nCS = '0') then if(RnW = '0' and CnD = '0') then STATE_MICRO <= ECRITURE_ADR; elsif(RnW = '0' and CnD = '1') then STATE_MICRO <= ECRITURE_MASK; elsif(RnW = '1' and CnD = '0') then STATE_MICRO <= LECTURE_DATA; elsif(RnW = '1' and CnD = '1') then STATE_MICRO <= LECTURE_ETAT; end if; end if; when ECRITURE_ADR => if((nCS = '1') OR (RnW = '1')) then STATE_MICRO <= ATTENTE; end if; when ECRITURE_MASK => if((nCS = '1') OR (RnW = '1')) then STATE_MICRO <= ATTENTE; end if;

when LECTURE_DATA => if((nCS = '1') OR (RnW = '0')) then STATE_MICRO <= ATTENTE; end if; when LECTURE_ETAT => if((nCS = '1') OR (RnW = '0'))then STATE_MICRO <= ATTENTE; end if; end CASE; end if; end process; output_process : process(STATE_MICRO) begin LoadAdresse <= '0'; LoadMasque <= '0'; SelEtatData <= '0'; SelLectureEcriture <= '0'; Dec <= '0'; ResetErrDelayBreak <= '1'; ResetErrStartStop <= '1'; ResetByteReceived <= '1'; ResetMessageReceived <= '1'; CASE STATE_MICRO IS when ATTENTE => --ResetErrDelayBreak <= '0'; --ResetErrStartStop <= '0'; --ResetByteReceived <= '0'; --ResetMessageReceived <= '0'; when ECRITURE_ADR=> LoadAdresse <= '1'; SelLectureEcriture <= '0'; if((nCS = '1') OR (RnW = '1')) then LoadAdresse <= '1'; end if; when LECTURE_DATA => rden <= '1'; SelLectureEcriture <= '1'; SelEtatData <= '0'; if((nCS = '1') OR (RnW = '0')) then if (NbByteReceivedOut /= "0000") then Dec <= '1'; end if; end if;

when LECTURE_ETAT => SelLectureEcriture <= '1'; SelEtatData <= '1'; if((nCS = '1') OR (RnW = '0')) then ResetErrDelayBreak <= '0'; ResetErrStartStop <= '0'; ResetByteReceived <= '0'; ResetMessageReceived <= '0'; end if; when ECRITURE_MASK => LoadMasque <= '1'; SelLectureEcriture <= '0'; if((nCS = '1') OR (RnW = '1')) then LoadMasque <= '1'; end if;

end case; end process;

END ARCHITECTURE arch_name;