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

Quartus



  1. #1
    doeul

    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
    doeul

    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!

Sur le même thème :

Discussions similaires

  1. Diviseur de fréquence Quartus
    Par peter pan666 dans le forum Électronique
    Réponses: 3
    Dernier message: 04/03/2011, 00h52
  2. fpga Quartus
    Par caroline1012 dans le forum Électronique
    Réponses: 13
    Dernier message: 19/12/2010, 09h05
  3. Quartus .sdc
    Par indri dans le forum Électronique
    Réponses: 9
    Dernier message: 26/11/2010, 07h15
  4. Quartus, une astuce ? :)
    Par Shadia dans le forum Électronique
    Réponses: 2
    Dernier message: 25/08/2010, 12h55
  5. simulation sur quartus II
    Par mkache5 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 28/05/2009, 10h47