Bonjour, cliquez-ici pour vous inscrire et participer au forum.
  • Login:


+ Répondre à la discussion
Affichage des résultats 1 à 10 sur 10

RAM par un tableau en VHDL

  1. compa

    Date d'inscription
    juin 2009
    Messages
    4

    RAM par un tableau en VHDL

    Bonjour a tous

    Je programme depuis peu donc je vais essayer d'être clair.
    Je travail sur l'implémentation, dans un FPGA xilinx spartan 3, d'une fonction néssécitant l'utilisation d'une ram.
    J'ai mis en place une RAM en la codant moi même sous la forme d'un tableau de 1000 case de 32 bit. A la synthese pas de probleme, mais l'implémentation ne passe pas car ce tableau utilise toute la logic dans le FPGA. Je sais que par core generator de ise des blocks ram peuvent étre créer mais cela ne correspond pas tout a fait a ce que je souhaite.

    Ma question est la suivante : peut-on créer une RAM sous forme de tableau qui n'utiliserai pas la logic interne mais un espace interne de memoire dans le FPGA comme les ram créer par le coregene de ise.

    merci
     


    • Publicité




      Poursuivez votre recherche
      Recherche personnalisée

  2. thieu17

    Date d'inscription
    juin 2009
    Messages
    15

    Re : RAM par un tableau en VHDL

    Bonjour compa!

    Donc oui en effet tu peux créer un tableau de telle manière à ce qu'il crée ta mémoire dans le block RAM du composant. Par contre tout dépend de la manière dont tu as codé...Il faut que tu le vérifie lorsque tu fais la synthèse sous ise dans "view RTL Schematic". Normallement tu dois voir un block RAM de ton composant.

    Je te passe en exemple un extrait de code d'une RAM double accès à 2 registres 8 bits qui a marché pour moi. Inspire toi de ce code pour ta mémoire de plus grosse capacité!!

    extrait de code :

    entity RAM_2registres is
    Port ( add_r : in STD_LOGIC;
    add_w : in STD_LOGIC;
    write_enable : in STD_LOGIC;
    H: in STD_LOGIC;
    reset : in STD_LOGIC;
    data_w : in STD_LOGIC_VECTOR (7 downto 0);
    data_r : out STD_LOGIC_VECTOR (7 downto 0));
    end RAM_2registres;

    architecture Behavioral of RAM_2registres is

    signal mem0 : std_logic_vector(7 downto 0);
    signal mem1 : std_logic_vector(7 downto 0);

    begin

    process(H)

    begin

    if (H'event and H='1') then
    if (reset='1') then
    mem0<=x"00";
    mem1<=x"00";
    data_r<=x"00";
    else

    --lecture
    if (add_r='0') then data_r<=mem0;
    else data_r<=mem1;
    end if;

    --ecriture
    if (write_enable='1') then
    if (add_w='0') then mem0<=data_w;
    else mem1<=data_w;
    end if;
    end if;

    end if;
    end if;

    end process;


    end Behavioral;


    voilà j'espère que sa va t'aider !!
     

  3. compa

    Date d'inscription
    juin 2009
    Messages
    4

    Re : RAM par un tableau en VHDL

    Bonjour thieu17!

    Pour la visualisation dans "view RTL Schematic" je ne voit qu'un block de description de mes entrées et sorties de module, rien qui m'informe vraiment... Voici en gros mon code pour te présenter ce que j'ai mis en place pour éssayer de solutionner mon probleme. lorsque je synthétise cela pas de probleme, mais cette façon utilise tous les éléments logic du FPGA pour créer ce tableau.

    entity Ram is
    port (
    clk_wr : in std_logic;
    clk_rd : in std_logic;
    reset : in std_logic;
    data_wr : in std_logic_vector(31 downto 0);
    data_rd : out std_logic_vector(7 downto 0);
    wr_en : in std_logic;
    rd_en : in std_logic
    );
    end Ram;

    architecture struct of Ram is

    Type memory is array (1000 downto 0) of std_logic_vector (31 downto 0);
    signal ram : memory;

    |
    |
    |
    |
    |


    --écriture

    if (reset = '1') then

    ram <= (others => "00000000000000000000000000000 000");
    indice_adresse <= (others => '0');

    elsif(clk_wr'event and clk_wr = '1') then

    if (wr_en) then

    ram(indice_adresse) <= data_wr ;


    En réduisant la taille du tableau cela fonctionne. Avec des fifos de core generator de la taille que je souhaite cela fonctionne. Mais ce que je souhaite faire avec la ram, je doit etre codé. Il me faut donc la placer dans la ram interne du FPGA et je n'y arrive pas
    di moi ce que tu en pense.
     

  4. thieu17

    Date d'inscription
    juin 2009
    Messages
    15

    Re : RAM par un tableau en VHDL

    ton code me parait correcte...
    Ta vérifié les capacités des block RAM disponible dans le FPGA ? peut-etre que si tu dépasse la capacité d'un block le logiciel ISE utilise la logique...
     

  5. compa

    Date d'inscription
    juin 2009
    Messages
    4

    Re : RAM par un tableau en VHDL

    apparament c'est le "reset" qui pose probleme a cause de ce signal ise utilise des bascules et non de la mémoire ram du FPGA.
    En tous cas un grand merci et si tu as d'autre information ou idées...
     

  6. jiherve

    Date d'inscription
    juin 2006
    Localisation
    gironde
    Âge
    60
    Messages
    7 720

    Re : RAM par un tableau en VHDL

    Bonsoir,
    Je ne connais pas bien les FPGA Xilinx mais je doute qu'il comprennent des blocs de RAM resetables car physiquement c'est coton à réaliser.
    Donc retires ton :ram <= (others => "0000000000000000000000000 0000 000");cela s'écrit d'ailleurs plus simplement (others => (others =>'0'));
    et tout devrait rentrer dans l'ordre.
    Chez Altera il est possible d'initialiser un bloc ram avec un .hex, je pense que cela doit aussi exister chez Xilinx.
    JR
    l'électronique c'est pas du vaudou!
     


    • Publicité



  7. compa

    Date d'inscription
    juin 2009
    Messages
    4

    Re : RAM par un tableau en VHDL

    Merci jiherv !
    c'etait bien le "reset" le probleme. Je n'ai pas un réel interet a initialiser mon tableau, c'etait juste pour ne pas etre ennuyé lors de la simulation. Mais je vais regarder quand meme s'il est possible de l'initialiser avec xilinx
     

  8. radiotique

    Date d'inscription
    juin 2009
    Messages
    26

    Re : RAM par un tableau en VHDL

    Bonjour tout le monde

    Bonjour compa
    je vois que vous avez travaillé sur les FPGA de xlinx et précisement sur le Spartan3. Moi aussi j'ai entrain de travailler un projet en utilisant cette carte, mais ce que m'intéresse c'est de faire afficher un signal sinusiodal ou carré sur l'écran ...
    Alors, je vous demande, si vous me permet bien sur, si vous avez une idée ou un astus... j'ai fait quelques essais mais toujours j'ai pas arrivé à faire cet affichage
    Aussi, un autre truc, savez vous comment pourrais-je accéder à la date systéme (la date courante) en utilisant VHDL..

    et merci d'avance
     

  9. DAUDET78

    Date d'inscription
    septembre 2006
    Localisation
    Ile de France
    Âge
    69
    Messages
    32 133

    Re : RAM par un tableau en VHDL

    Notre ami Compa a quitté le forum

    Dernière activité: 17/06/2009 09h48
    L'age n'est pas un handicap .... Encore faut-il arriver jusque là pour le constater !
     

  10. pitbuell94

    Date d'inscription
    juillet 2010
    Messages
    7

    Re : RAM par un tableau en VHDL

    Bonjour,

    J'ai en ma possession un KIT NEXYS2 SPARTAN 3E avec sa carte d'extension à trous.

    Je suis actuellement en train de réaliser un système nécessitant l'accès à une mémoire RAM.

    Ce système doit être capable d'accèder au contenu de la mémoire et d'écrire à des vitesses diffèrentes.

    Pour des raisons pratiques, je pense qu'il me faut au moins 2880 emplacements mémoire de 8 bits.

    Je suis en train de réaliser un scaler vidéo.

    Les lignes ont 720 points de résolution horizontale.

    Je restaure de vieux téléviseurs fonctionnant en 819 lignes.

    Les émissions actuelles ont diffusées en 625 lignes.

    En fait, il n'y a que 576 lignes visibles réelles en 625.

    En 819 lignes, seules 737 lignes sont visibles.

    Les lignes absentes servent à la remontée du spot en haut à gauche de l'écran.

    Il faut en fait que je crée les lignes manquantes par extrapolation en prenant les données luminance du point P1 de la ligne L1 d'entrée moyennée avec les données du point P1 de la ligne d'entrée L2.

    Le contenu de la ligne L1 est intégralement envoyé tel quel mais à un débit différent vers le récepteur 819.

    Les données de la ligne L2 se trouve en position L3 et la moyenne de L1 et L2 d'entrée devient le contenu de la ligne L2 du récepteur 819 lignes.

    Quelqu'un a-t-il une idée?

    Quel type de fonctionnement: FIFO, RAM....

    J'ai déjà réalisé toute la partie synchronisation qui fonctionne parfaitement en simulation et sur les leds de mon KIT NEXYS2 SPARTAN 3E.

    Toutes les idées sont les bienvenues.

    Pitbuell94.
     


    • Publicité




Poursuivez votre recherche :




Sur le même thème :




 

Discussions similaires

  1. [Divers] Par temps d'orage 1 phase diparaît au tableau électrique.
    Par ricousky dans le forum Dépannage
    Réponses: 11
    Dernier message: 07/06/2009, 18h39
  2. Point flottant en VHDL et vhdl-200x
    Par grel08128103 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 02/09/2008, 20h47
  3. Explication du tri d'1 tableau par insersion (joueur de carte)
    Par rmp dans le forum Mathématiques du supérieur
    Réponses: 2
    Dernier message: 17/03/2008, 19h12
  4. changement voyant tableau de bord par led
    Par violaine-è dans le forum Électronique
    Réponses: 25
    Dernier message: 18/09/2007, 13h03
  5. Ram Ram Rameur.....
    Par Rasmus dans le forum Matériel - Hardware
    Réponses: 14
    Dernier message: 13/08/2004, 21h40