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

comment utiliser des données stocker dans un package en vhdl?



  1. #1
    ryma_int

    comment utiliser des données stocker dans un package en vhdl?


    ------

    salam tout le monde .
    je veux stocker quelques matrice dans un package afin de pouvoir les utiliser dans plusieurs procédure. mais quand je déclare une variable ou un signal dans une procédure et quand je l'affecte la valeur d'une matrice déclaré comme constant dans le package , (x:=c ou x et une variable et c est une constant déclaré dans le package.
    cette variable ou signale ne prend pas cette valeur
    quelqu'un saurait il comment dois je faire ?

    merci d'avance et bonne soirée!

    -----

  2. Publicité
  3. 📣 Nouveau projet éditorial de Futura
    🔥🧠 Le Mag Futura est lancé, découvrez notre 1er magazine papier

    Une belle revue de plus de 200 pages et 4 dossiers scientifiques pour tout comprendre à la science qui fera le futur. Nous avons besoin de vous 🙏 pour nous aider à le lancer...

    👉 Je découvre le projet

    Quatre questions à explorer en 2022 :
    → Quels mystères nous cache encore la Lune 🌙 ?
    → Pourra-t-on bientôt tout guérir grâce aux gènes 👩‍⚕️?
    → Comment nourrir le monde sans le détruire 🌍 ?
    → L’intelligence artificielle peut-elle devenir vraiment intelligente 🤖 ?
  4. #2
    jiherve

    Re : comment utiliser des données stocker dans un package en vhdl?

    bonsoir,
    publie donc ton code, ma BdC est performante mais pas à ce point.
    JR
    l'électronique c'est pas du vaudou!

  5. #3
    ryma_int

    Re : comment utiliser des données stocker dans un package en vhdl?

    salam
    puisque le code est vraiment trop long je vais pas tout publier, alors voici la parti qui contient l'appel de la matrice stocké dans le package
    library ieee;
    use IEEE.STD_LOGIC_1164.ALL;
    use IEEE.STD_LOGIC_ARITH.ALL;
    use IEEE.STD_LOGIC_UNSIGNED.ALL;
    use work.pakk_f6.all;
    use work.pakk_f.all;
    use work.pack_term.all;
    use work.pack_dispo.all;
    use work.pack_conc.all;
    use work.pakk_f4.all;
    use work.pack_verif.all;
    use work.pack_dist.all;
    package pack_ap is
    --constant n:integer:=28;
    --type matrice is array(0 to n-1,0 to n-1)of integer;
    type vec is array(0 to 27)of integer;

    type matrice1 is array(0 to 41)of std_logic_vector(0 to 49);
    procedure ap(signal dp,ar: in integer range 0 to 100;signal c:in matrice;signal park:in matricee ; signal z:in matrice1;signal l :inout matrice ;signal p:inout matricee ; variable chut integer_vector; variable k3: out integer);
    end pack_ap;
    package body pack_ap is
    procedure ap(signal dp,ar: in integer range 0 to 100;signal c:in matrice ;signal park:in matricee; signal z:in matrice1; signal l :inout matrice ;signal p:inout matricee ; variable chut integer_vector ; variable k3: out integer) is

    variable vinit,vter,vk3,vchh,ii:integer ;
    variable vv,kk,k1,k2:integer;
    variable vect:std_logic_vector (0 to 49);
    variable init,ter,chh:integer range 0 to 100 ;
    variable nnn : integer range 0 to 100 ;
    variable x : matrice;
    variable tabb,tab2,vch: integer_vector(0 to 27);
    constant nan:integer:=0;
    constant inf:integer:=integer'high;
    begin
    x:=c;

    if ar/=9 and ar/=6 then
    x(ar,dp):= 0;
    floyd(x,l,p);
    else
    floyd(x,l,p);
    end if;
    vinit:=ar; -----------------------------------------------
    , quand je lance la simulation je trouve le contenu de la matrice (x=(0 0 0 0......0) ) malgrès que normalement elle doit contenir le contenus de la matrice (c)
    déclaré comme constant dans le package suivant :
    ------------------------------------------------------------------------------------------------------------------
    et voici la partie du package contenant la matrice comme constant

    library ieee;
    use IEEE.STD_LOGIC_1164.ALL;
    use IEEE.STD_LOGIC_ARITH.ALL;
    use IEEE.STD_LOGIC_UNSIGNED.ALL;
    --use work.pakk_f3.all;
    package pakk_f6 is
    constant mm:integer:=37;
    constant n:integer:=28;
    type matrice is array(0 to 27,0 to 27)of integer range 0 to integer'high ;
    type matricee is array(0 to 27,0 to 27)of integer range 0 to 100;
    type etat is(et0,et1,et2,et3,et4,et5,et6 );
    type matrice2 is array(natural range <>,natural range <>)of etat;
    type vectt is array(0 to 4)of integer;
    type integer_vector is array(natural range <>)of integer range 0 to 100;
    type std is array (0 to 41)of std_logic_vector(0 to 49);
    constant inf:integer:=integer'high;
    end package pakk_f6;
    package body pakk_f6 is
    constant c: matrice:=
    ((INF,100,INF,INF,INF,INF,INF, INF,.......................... .............................. .............................j usqu'à la fin de la matrice));
    la matrice est vraiment grande

    voilà, et merci d'avance.

  6. #4
    jiherve

    Re : comment utiliser des données stocker dans un package en vhdl?

    Bonsoir,

    Ceci dit la procédure déclarée (il manque le end!!) ne sera effective que si instanciée dans un process c'est à dire en dehors d'un package, il faut tout de même donner des valeurs aux entrées.
    Mais Dieu que c'est compliqué, est ce bien nécessaire!
    Vu la taille des matrices tu vas tout exploser.
    (0..27)(0..27) d'integer cela fait 288 230 376 151 711 744 octets (environ 300 peta octets) c'est pas raisonnable même avec une allocation dynamique de mémoire.
    Il doit y avoir un problème de conception .
    JR
    l'électronique c'est pas du vaudou!

  7. A voir en vidéo sur Futura
  8. #5
    ryma_int

    Re : comment utiliser des données stocker dans un package en vhdl?

    salam
    non il n' y a pas de faute de conception, la matrice de taille (27 * 27) est très nécessaire, car c'est une matrice de description d'une zone géographique elle sert à décrire les distances entre des endroit et même si je voulais couvrir une zone plus grande cette taille de matrice va augmenter , et pour le end de la procédure je n'est pas de faute de compilation ( je vous ai pas coller tout le code , car je sais que c'est complexe ) mon problème c'est que je ne veux pas utiliser une RAM pour stocker mes données pour ne pas trouver les problème de l'appel avec le port map et tout

    en tout cas merci beaucoup!

  9. #6
    jiherve

    Re : comment utiliser des données stocker dans un package en vhdl?

    Bonsoir
    Hier j'avais un doute et donc j'ai vérifié dans ma bible VHDL : on ne peut pas placer le body d'une procédure dans un package.
    Pour ce qui est du stockage c'est moi qui ai fait une betise de calcul en fait il n'y a que 3,2 KO je ne sais pas trop pourquoi je suis parti sur une taille de bus, l'esprit ailleurs sans doute.
    désolé.
    JR
    l'électronique c'est pas du vaudou!

  10. Publicité

Discussions similaires

  1. stocker image dans base de donnees
    Par pourpo dans le forum Programmation et langages, Algorithmique
    Réponses: 7
    Dernier message: 12/05/2012, 02h58
  2. C# ou R pour stocker des données d'internet
    Par luckylucky dans le forum Programmation et langages, Algorithmique
    Réponses: 2
    Dernier message: 16/08/2011, 21h42
  3. Problème avec package du VHDL
    Par Chaos_tik dans le forum Électronique
    Réponses: 2
    Dernier message: 27/11/2010, 21h29
  4. Utiliser mon rameur pour produire et stocker de l'énergie électrique ?
    Par lecaravage dans le forum Environnement, développement durable et écologie
    Réponses: 56
    Dernier message: 09/10/2009, 23h50
  5. Comment utiliser des fonctions dans C++ Builder ?
    Par Hoopsy dans le forum Logiciel - Software - Open Source
    Réponses: 4
    Dernier message: 09/05/2007, 08h43
Découvrez nos comparatifs produits sur l'informatique et les technologies.