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

Quartus



  1. #1
    invite67ee8e47

    Quartus


    ------

    Bonjour !!

    J'ai un amplificateur opérationnel, branché en mode linéaire (bouclage de la sortie sur l'entrée -).
    Sur l'entrée i+, j'ai une impulsion, qui se répéte cycliquement.
    Sur l'entrée i-, je viens faire varier le seuil, par l'intermédiaire d'un convertisseur analogique-numérique (un AD5300, 8 bits DAC).
    Cet AD5300 est piloté par un kit FPGA.
    Le but de ce système est de mesurer l'amplitude max de l'impulsion.
    A chaque nouvelle impulsion, on viendra faire varier le seuil afin que, au fur et à mesure, on puisse déterminer l'amplitude max. J'utilise la méthode par dichotomie.

    Question:

    Je ne comprend pas comment modéliser ce système, car on ne peut manipuler que par du binaire ('0' ou '1') dans Quartus, or là nous avons bien besoin de comparer deux tensions...

    J'ai besoin d'aide !!

    Merci de vos réponses !

    -----

  2. #2
    jiherve

    Re : Quartus

    Bonsoir,
    Le VHDL manipule très bien les entiers ou tout autre forme de données binaires.
    Je conseille un petit tour sur un tutoriel car les bases semblent manquantes.
    Voir avec go²gle!
    JR
    l'électronique c'est pas du vaudou!

  3. #3
    invite67ee8e47

    Re : Quartus

    Bonjour,

    ok, donc pour modéliser mon impulsion, je fais un testbench qui fait :
    0 ns OV
    1 ns 1V
    2 ns 2.5V
    3 ns 4V
    etc....

    Les volts ici étant représenté par des entiers ?

    Mais aussi:

    library ieee;
    use ieee.std_logic_1164.all;
    use ieee.std_logic_arith.all;
    use ieee.std_logic_unsigned.all;
    use ieee.numeric_std.all;
    ------------------------------------------
    entity cna is
    end;
    ------------------------------------------
    architecture comp of cna is
    ------------------------------------------
    signal seuil : std_logic_vector (3 downto 0) := "1000" ;
    signal z : std_logic_vector (3 downto 0);
    component module_mux_emission is
    port(
    z: out std_logic_vector(3 downto 0)
    );
    end component;
    ------------------------------------------
    begin
    comp1 : module_mux_emission
    port map(z=>z);

    process(z)
    begin

    if z<seuil then
    seuil<=seuil-(seuil/2);
    elsif z>seuil then seuil<=seuil+(seuil/2)
    elsif seuil=z then wait;
    end if;

    end process;
    end;


    L'erreur ne viendrait-elle pas de la déclaration des bibliothèques (overloading) ?

    erreur du type :

    ** Error: C:/Documents and Settings/ambroise.delalin/Bureau/modelsim/cna.vhd(28): No feasible entries for infix operator "/".
    ** Error: C:/Documents and Settings/ambroise.delalin/Bureau/modelsim/cna.vhd(28): Bad expression in right operand of infix expression "-".
    ** Error: C:/Documents and Settings/ambroise.delalin/Bureau/modelsim/cna.vhd(28): Type error resolving infix expression "-" as type ieee.std_logic_1164.std_logic_ vector.


    Merci.

  4. #4
    jiherve

    Re : Quartus

    Bonsoir,
    çà cela doit fonctionner:

    Code:
    ibrary ieee;
    use ieee.std_logic_1164.all;
    use ieee.numeric_std.all;
    ------------------------------------------
    entity cna is
    port
    (
       clk      : in std_logic;
       resetn   : in  std_logic;
       z        : in std_logic_vector (3 downto 0);
       seuil    : out std_logic_vector(3 downto 0)
    );
    end;
    ------------------------------------------
    architecture comp of cna is
    signal seuil_i : std_logic_vector(3 downto 0);
    begin
    seuil <= seuil_i;
    process(clk,resetn)
    variable seuil_div2 :unsigned(3 downto 0);
    begin
      if resetn = '0' then
        seuil_i <= "1000";
      elsif rising_edge (clk) then
        seuil_div2 := unsigned('0' & seuil_i(3 downto 1));
        if unsigned(z)< unsigned(seuil_i) then
          seuil_i<= std_logic_vector (unsigned(seuil_i)-seuil_div2);
        elsif unsigned(z)> unsigned(seuil_i) then
          seuil_i<= std_logic_vector (unsigned(seuil_i)+seuil_div2);
        end if;
      end if;
    end process;
    end;
    il y a effectivement overloading et il vaut mieux faire du synchrone cela évite les latch qui ne fonctionnent que par miracle.
    JR
    l'électronique c'est pas du vaudou!

  5. A voir en vidéo sur Futura

Discussions similaires

  1. Diviseur de fréquence Quartus
    Par invite00e5225f dans le forum Électronique
    Réponses: 3
    Dernier message: 04/03/2011, 01h52
  2. fpga Quartus
    Par inviteacf1ca31 dans le forum Électronique
    Réponses: 13
    Dernier message: 19/12/2010, 10h05
  3. Quartus .sdc
    Par indri dans le forum Électronique
    Réponses: 9
    Dernier message: 26/11/2010, 08h15
  4. Quartus, une astuce ? :)
    Par invite110d3f8c dans le forum Électronique
    Réponses: 2
    Dernier message: 25/08/2010, 13h55
  5. simulation sur quartus II
    Par invitef8dc72ae dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 28/05/2009, 11h47
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...