WOW !! MUCH LOVE ! SO WORLD PEACE !
Fond bitcoin pour l'amélioration du site: 1memzGeKS7CB3ECNkzSn2qHwxU6NZoJ8o
  Dogecoin (tips/pourboires): DCLoo9Dd4qECqpMLurdgGnaoqbftj16Nvp


Home | Publier un mémoire | Une page au hasard

 > 

La technique de transfert DMA

( Télécharger le fichier original )
par Imen Nasr
Ecole supérieure des communications de Tunis - ingénieur en télécommunication 2011
  

précédent sommaire suivant

Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy

2.3. La logique « Ping Pong »

La technique Ping Pong ou la technique de double buffer s'applique lorsqu'on dispose de données à traiter par bloc. On peut citer par exemple le cas de la DCT ou la FFT appliquée à un ensemble de N échantillons d'un signal donné. La figure suivante illustre bien cette technique :

Ce schéma traite le cas de la FFT appliquée à des blocs d'échantillons d'un signal. Les avantages d'une telle technique sont la réduction des pertes de données, la cadence des données est identique à l'entrée et à la sortie et elle est efficace pour le traitement de données en temps réel.

3. Implémentation de la solution

Dans cette partie on se propose de mettre en place, sur un processeur Blackfin 533, la technique de transfert DMA en se basant sur la logique Ping Pong.

3.1. 0 isereQ r uvIerISurtIDQW-ItrD0 $

Comme l'on a expliqué précédemment, cette technique de transfert est mise en place en utilisant les trois fonctions SetUpDMA, DoDMA et WaitForDMADone.

3.1.1. La fonction SetUpDMA Ci-dessous le code source de cette fonction :

Cette fonction prend comme paramétres adresse de la mémoire source, l'adresse de la mémoire de destination et la taille des données à transférer. Cette fonction permet d'initier le transfert. Pour ce faire elle fait appel á des registres particuliers :

· MDMAD0STARTADDR : un registre de 32 bits qui contient l'adresse de destination.

· MDMAS0STARTADDR : un registre de 32 bits qui contient l'adresse de la

source.

· MDMAD0XCOUNT : contient le nombre de colonne de la mémoire de destination

· MDMAS0XCOUNT : contient le nombre de colonnes à lire de l'espace mémoire source.

Une valeur de 0 dans XCOUNT correspond á 65.536 éléments.

· MDAMD0YCOUNT : contient le nombre de lignes la mémoire de destination.
Dans ce cas, chaque élément est codé sur 4 cases mémoires consécutives (4 octets).

6


· MDMA_S0_Y_COUNT : contient le nombre de lignes de la mémoire source.

· MDMA_D0_X_MODIFY : contient le pas d'augmentation dans l'adresse de destination chaque fois que le chargement d'un élément est effectué. Dans notre, le pas est égale à 4 puisque chaque éléments est codé sur 4 octets. Sa valeur est le décalage entre le dernier mot d'une « ligne » et le premier mot de la prochaine «rangée»

· MDMA_S0_X_MODIFY : contient le pas d'incrémentation dans l'adresse de la source.

3.1.2. La fonction DoDMA

Ci-dessous est le code source de cette fonction :

Cette fonction exécute l'échange de données via le DMAC. Elle utilise deux registres à 16 bits, MDMA_S0_CONFIG et MDMA_D0_CONFIG, pour configurer les paramètres DMA et les modes d'opérations.

· MDMA_S0_CONFIG : Pour lancer la lecture à partir de la source. Ce registre prend la valeur décimale 0x0009. En effet, le premier bit est fixé à 1 pour activer le DMA. Le deuxième bit est fixé à 0 pour charger le mode lecture. Quant aux deux bits qui suivent, ils indiquent la longueur de la donnée à transférer, dans ce cas égaux à 10, qui signifie une longueur de 32 bits. On obtient alors 1001 ? 0x0009 en hexadécimal. Le mode 1D est activé alors le cinquième bit est fixé à 0.

· MDMA_DO_CONFIG : Pour lancer le mode écriture dans la mémoire de destination. D'une manière analogue à ce qui a été expliqué ci-dessus ce registre prend la valeur 1011 pour activer et exécuter l'écriture dans la destination ce qui donne une valeur de 0x000b en hexadécimal.

précédent sommaire suivant






Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy








"Le doute est le commencement de la sagesse"   Aristote