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 :

Programmer un compteur sur carte FPGA


Sujet :

VHDL

  1. #1
    Membre régulier
    Inscrit en
    Août 2004
    Messages
    201
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 201
    Points : 83
    Points
    83
    Par défaut Programmer un compteur sur carte FPGA
    Bonjour,

    J'ai déjà programmer un compteur de 00 a 99 sur une carte FPGA, (Basys100 Spartan3e--Tq144), j'utilise Xilinx.
    chaque fois que le switch (Load) est active, le compteur compte 00,01,02,03,04... jusqu'à 99.



    Je voudrais savoir si il y a un moyen de faire une INVERSION. Quand j'active un switch, je voudrais que le code fasse une "decrementation"... si le compteur est par exemple est a 00, quand j'active le switch, il compte doit montrer 99... de la la meme maniere, si le compteur est entrain d'incrementer 55,56,57... et j'active le switch, il faut qu'il reprenne 57 et décrémente 56,55,54... des idees ?

    Merci

    PS: pourquoi il n y a pas de forum VHDL ?

  2. #2
    Expert confirmé Avatar de Barsy
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    1 484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 484
    Points : 5 277
    Points
    5 277
    Par défaut
    Salut,

    Mon expérience en VHDL date un peu... Mais je pense qu'il serait plus simple de t'aider si tu nous mettais un petit bout de ton code ici.

    Et sinon, si tu fais un truc du style

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    entity compteur is
    <div style="margin-left:40px">port (
    <div style="margin-left:40px">load : in std_logic;
    switch : in std_logic;
    sortie : out unsigned(6 downto 0)</div>)</div>end entity
    et pour l'architecture du compteur, tu rajoute un if

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if switch = '0' then
    <div style="margin-left:40px">sortie <= sortie + 1;</div>else
    <div style="margin-left:40px">sortie <= sortie - 1;</div>end if
    "tatatatatatatatataaa !! tata taaa !! tata taaa !! tatatata tataaa !! tata taaa !! tata taaa !!"

  3. #3
    Membre régulier
    Inscrit en
    Août 2004
    Messages
    201
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 201
    Points : 83
    Points
    83
    Par défaut
    c'est bon merci j'ai réussi a le faire

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    process(count, invert)
    	begin
     
    	if invert='1' then	
    		case count is 
    		  	when "0000" => SSG <= "00001001";
    			when "0001" => SSG <= "00000001";
    			when "0010" => SSG <= "00011111";
    			when "0011" => SSG <= "01000001";
    			when "0100" => SSG <= "01001001";
    			when "0101" => SSG <= "10011001";
    			when "0110" => SSG <= "00001101";
    			when "0111" => SSG <= "00100101";
    			when "1000" => SSG <= "10011111";
    			when others => SSG <= "00000011";
    		end case;
     
    		else 
    		 case count is
    			when "0000" => SSG <= "00000011";
    			when "0001" => SSG <= "10011111";
    			when "0010" => SSG <= "00100101";
    			when "0011" => SSG <= "00001101";
    			when "0100" => SSG <= "10011001";
    			when "0101" => SSG <= "01001001";
    			when "0110" => SSG <= "01000001";
    			when "0111" => SSG <= "00011111";
    			when "1000" => SSG <= "00000001";
    			when others => SSG <= "00001001";
    		 end case;
    	end if;
    end process;

    Sinon j'arrive pas a programmer un convertisseur binaire a BCD, c'est a dire, un convertisseur qui accepte 8 entrées binaires (8-bit input) et affiche sur l'afficheur 7 segments le nombre correspondant, penses-tu que tu pourrais m'aider ?


    ce code affiche les même chiffre de 0 a 9 dans les 4 afficheurs, en même temps. je ne sais pas comment isoler, les unités et les dizaines.

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    LIBRARY IEEE;
    USE IEEE.STD_LOGIC_1164.ALL;
     
    ENTITY BCD2LED IS
     
    PORT ( D:IN STD_LOGIC_VECTOR(3 DOWNTO 0);
    		 SSG:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));
     
     
    END BCD2LED;
     
    ARCHITECTURE RTL OF BCD2LED IS
    	BEGIN
    		PROCESS (D)
    BEGIN 
    	CASE D IS           --GFEDCBA--  (1:OFF - 0:ON)
    		WHEN "0000"=>SSG<="1000000"; -- 0  
    		WHEN "0001"=>SSG<="1111001"; -- 1  
    		WHEN "0010"=>SSG<="0100100"; -- 2
    		WHEN "0011"=>SSG<="0110000"; -- 3
    		WHEN "0100"=>SSG<="0011001"; -- 4
    		WHEN "0101"=>SSG<="0010010"; -- 5
    		WHEN "0110"=>SSG<="0000010"; -- 6
    		WHEN "0111"=>SSG<="1111000"; -- 7
    		WHEN "1000"=>SSG<="0000000"; -- 8
    		WHEN "1001"=>SSG<="0010000"; -- 9
     
    		WHEN OTHERS=>SSG<="1000000";
    	END CASE;
     
    	END PROCESS;
     
    	END RTL;

  4. #4
    Expert confirmé Avatar de Barsy
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    1 484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 484
    Points : 5 277
    Points
    5 277
    Par défaut
    Il me semble que cela se gère au moment ou tu définis le mappage des entrées/sorties de ton FPGA avec Xilinx. Ce n'est pas dans le code que ça se passe.


    EDIT :

    ici, j'ai trouvé une explication :

    http://www.derepas.com/fabrice/hard/

    C'est en anglais, mais apparemment, tu as 4 sorties 'D14', 'E14', 'F14' et 'G14' qui définissent sur quel afficheur tu veux mettre ta valeur. Il faut que tu mettes '1' sur l'afficheur voulue et que tu forces les autres à '0'.
    "tatatatatatatatataaa !! tata taaa !! tata taaa !! tatatata tataaa !! tata taaa !! tata taaa !!"

Discussions similaires

  1. Charger une image sur la carte FPGA
    Par okitrinaw dans le forum VHDL
    Réponses: 6
    Dernier message: 19/05/2012, 15h42
  2. Réponses: 0
    Dernier message: 02/04/2011, 06h30
  3. Programmer un compteur sur carte FPGA
    Par virtuadrack dans le forum Périphériques
    Réponses: 3
    Dernier message: 02/12/2008, 09h18
  4. Programmation sur carte a puce: Questions
    Par kedare dans le forum Langages de programmation
    Réponses: 0
    Dernier message: 07/09/2008, 14h37
  5. [c/linux] Programmation sur carte à puce
    Par MonsieurAk dans le forum Autres éditeurs
    Réponses: 4
    Dernier message: 03/10/2006, 10h52

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