IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VHDL Discussion :

Utilisation d'une RAM


Sujet :

VHDL

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 87
    Points : 49
    Points
    49
    Par défaut Utilisation d'une RAM
    Bonjour,

    Grâce à d'autres discussion, j'ai trouvé comment insérer une ram à l'aide de megawizard une ram.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    ENTITY ram22 IS
    	PORT
    	(
    		clock		: IN STD_LOGIC  := '1';
    		data		: IN STD_LOGIC_VECTOR (31 DOWNTO 0);
    		rdaddress		: IN STD_LOGIC_VECTOR (14 DOWNTO 0);
    		wraddress		: IN STD_LOGIC_VECTOR (14 DOWNTO 0);
    		wren		: IN STD_LOGIC  := '0';
    		q		: OUT STD_LOGIC_VECTOR (31 DOWNTO 0)
    	);
    END ram22;
    Déjà dites moi si je comprend bien, data est l'information qu'on veut placé à wraddress, q l'information que nous voulons récupérer à rdaddress.
    On ne peut le faire que si wren =1 et se met à jour en fonction de la clock ?

    Mon problème et que je veux utiliser cette ram comme une fifo mais je ne comprend pas comment faire :
    Comment je connais les adresses des "cases de la ram" que je veux lire ? où je veux écrire ?
    Voilà j'aimerais un exemple de :

    "je veux écrire dans la cinquième case data"
    "je veux incrémenter l'ecriture de 1"
    ....
    à t=5
    "je veux ecrire dans la case 6 data"
    "Je veux lire dans la case (6-5) = 1 q"
    "je veux incrémenter les cases où lire / ecrire d'un.

    Pouvez vous m"aider ?

  2. #2
    Membre expérimenté

    Homme Profil pro
    Collégien
    Inscrit en
    Juillet 2010
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Afghanistan

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Juillet 2010
    Messages : 545
    Points : 1 431
    Points
    1 431
    Par défaut
    Bonjour,

    Déjà dites moi si je comprend bien, data est l'information qu'on veut placé à wraddress, q l'information que nous voulons récupérer à rdaddress.
    On ne peut le faire que si wren =1 et se met à jour en fonction de la clock ?
    Je pense que tu as compris.

    Mon problème et que je veux utiliser cette ram comme une fifo mais je ne comprend pas comment faire :
    Comment je connais les adresses des "cases de la ram" que je veux lire ? où je veux écrire ?
    Il faut créer une "couche" de logique complémentaire pour gérer des pointeur/compteur de queue et de tête de la fifo.
    Dans une fifo tu écris à l'adresse du le pointeur de queue et tu lis dans à l'adresse le pointeur tête, ça marche aussi dans l'autre sens

    Une fifo n'est pas simplement et une RAM.
    C'est une RAM + de la logique autour.

  3. #3
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 87
    Points : 49
    Points
    49
    Par défaut
    Bonsoir,
    désolé du temps de réponse, je ne sais pas pourquoi je n'ai pas reçu la notification comme quoi on avait répondu du coup je n'étais pas repassé sur le forum.
    J'ai essayé d'utiliser la ram de cette maniere mais ça ne fonctionne pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    COMPONENT ram22 IS
    	PORT
    	(
    		clock		: IN STD_LOGIC  := '1';
    		data		: IN STD_LOGIC_VECTOR (23 DOWNTO 0);
    		rdaddress		: IN STD_LOGIC_VECTOR (14 DOWNTO 0);
    		wraddress		: IN STD_LOGIC_VECTOR (14 DOWNTO 0);
    		wren		: IN STD_LOGIC  := '0';
    		q		: OUT STD_LOGIC_VECTOR (23 DOWNTO 0)
    	);
    END COMPONENT;
    Puis dans la partie "architecture" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    process(CLOCK_50)
    	begin
     
    		filtred : ram22 port map(CLOCK_50,readdata_left, rdadd,wradd,"0", writedata_left);
    		tmp = rdadd;
    		if(rdadd== 3000 -1) then
    			rdadd <= 0;
    			wradd <= 3000 - nbEch;
    		else if(rdadd < nbEch) then
    			rdadd <= tmp +1;
    			wradd <= 3000 - nbEch + tmp;
    		else
    			rdadd <= tmp +1 ;
    			wradd <= rdadd - nbEch;
    		end if
    	end process;
    Mais ça ne fonctionne pas, ce qui est normal étant donné que les adresses ne correspondent pas a des "INTEGER" contrairement à ce que je voulais :
    Pouvez vous me dire comment on gère ces adresses du coup?
    Je vous ais mis la suite du code aussi pour que vous puissiez me dire si l'idée est correct : je voulais "créer une fifo" en rendant ma RAM "circulaire".

    Merci ! (Je suis censé finir mon code pour demain mais je pense uqe ça sera trop tard... Mais bon savoir comment faire même si ça sera trop tard m'interesse quand même )

Discussions similaires

  1. utilisation d'une variable globale
    Par ZZ dans le forum ASP
    Réponses: 3
    Dernier message: 03/12/2003, 19h11
  2. Utilisation d'une variable sur plusieurs unités
    Par Yamaneko dans le forum Langage
    Réponses: 2
    Dernier message: 05/06/2003, 11h23
  3. Utilisation d'une dll écrite en delphi 5 dans VB6
    Par Jean-Louis dans le forum Langage
    Réponses: 4
    Dernier message: 05/08/2002, 09h19
  4. Réponses: 4
    Dernier message: 05/06/2002, 14h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo