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 :

Générateur parallèle de 4 bits vers un bit série en VHDL


Sujet :

VHDL

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 6
    Points : 8
    Points
    8
    Par défaut Générateur parallèle de 4 bits vers un bit série en VHDL
    Bonjour,
    Je veux faire la description en VHDL générateur parallèle de 4 bits vers un bit série.
    En effet, à chaque front d’horloge (250 kHz), nous prenons seulement un bit en commençant par le bit le moins significatif (LSB).
    Exemple :
    Entrée = "0101" (sur 4 bits)
    Donc au premier front d’horloge, Sortie = '1' (LSB)
    Deuxième front d’horloge, Sortie = '0'
    Troisième front d’horloge, Sortie = '1'
    Quatrième front d’horloge, Sortie = '0' (MSB)
    Y a-t-il quelqu’un qui peut m’aider ?
    Et merci

  2. #2
    Membre actif Avatar de cedd70
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Mars 2012
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2012
    Messages : 154
    Points : 263
    Points
    263
    Par défaut
    Bonjour,

    Tu peux essayer ca ca devrait marcher, il y a peut etre une ou deux erreures de synthaxe( jai ecrit au bloc note sans pouvoir verifier).
    Tu me redis si c'est bon

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    library ieee;
    	use ieee.std_logic_1164.all;
    	use ieee.numeric_std.all;
     
    entity toto is
     
    generic
    	(
    		DATA_WIDTH : natural := 4  --16
    	);
     
    	port 
    	(
    		SDOUT		: out  std_logic;
    		clock		: in std_logic;
    		----DATA----
    		data_in	: in std_logic_vector((DATA_WIDTH-1) downto 0);
    	);
    end entity;
    architecture arch of toto is
     
    signal 	registre : std_logic_vector ((DATA_WIDTH -1 ) downto 0);
    begin
    process(clock)
    variable cpt	; integer range 0 to (DATA_WIDTH -1 ) :=(DATA_WIDTH -1);
    begin
    if falling_edge(clock) then
    	if rising_edge(clock) then
    		if cpt := 0 then
    			registre <= data_in;
    			cpt 	:= (DATA_WIDTH -1);
    		else 
    			registre <= registre((DATA_WIDTH -2)  downto 0) & '0'; --Shift register--
    			cpt := cpt  -1;
    		end if;
    	end if;
    end if;
    end process;
     
    data_out <= registre (DATA_WIDTH -1 );
     
    end arch;

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 6
    Points : 8
    Points
    8
    Par défaut
    Bonjour,
    Je l'ai essayé mais il m'a donné rien au niveau de simulation
    Voilà le test bench:

    LIBRARY ieee;
    USE ieee.std_logic_1164.ALL;


    ENTITY test_generator IS
    END test_generator;

    ARCHITECTURE behavior OF test_generator IS

    -- Component Declaration for the Unit Under Test (UUT)

    COMPONENT generator_bits
    PORT(
    data_out : OUT std_logic;
    clock : IN std_logic;
    data_in : IN std_logic_vector(3 downto 0)
    );
    END COMPONENT;


    --Inputs
    signal clock : std_logic := '0';
    signal data_in : std_logic_vector(3 downto 0) := (others => '0');

    --Outputs
    signal data_out : std_logic;

    -- Clock period definitions
    constant clock_period : time := 4 us;

    BEGIN

    -- Instantiate the Unit Under Test (UUT)
    uut: generator_bits PORT MAP (
    data_out => data_out,
    clock => clock,
    data_in => data_in
    );

    -- Clock process definitions
    clock_process :process
    begin
    clock <= '0';
    wait for clock_period/2;
    clock <= '1';
    wait for clock_period/2;
    end process;


    -- Stimulus process
    stim_proc: process
    begin
    -- hold reset state for 100 ns.
    --wait for 100 ns;

    wait for clock_period*4;
    data_in <= "0110";
    -- insert stimulus here

    wait;
    end process;

    END;


    Voir les résultats dans la première image
    Nom : Image1.png
Affichages : 1505
Taille : 20,8 Ko

    J'ai essayé le même code en enlevant la condition sur Falling Edge et j'ai obtenu les résultats dans la deuxième image
    Nom : Image2.png
Affichages : 1459
Taille : 53,5 Ko

  4. #4
    Membre actif Avatar de cedd70
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Mars 2012
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2012
    Messages : 154
    Points : 263
    Points
    263
    Par défaut
    Normal
    je viens de voir une petite erreur dans mon code
    Enlève une des deux conditions sois falling ou rising edge, je devais pas être bien réveillé pour écrire ça
    Falling = front descendant de la clock
    Rising = front montant de la clock

    C'est toi qui vois si tu veux le changement d’état sur quel front, je te conseille plutot de suprimer Falling

Discussions similaires

  1. [Débutant] MATLAB 32-bit vers 64-bit
    Par InfoNewbie dans le forum MATLAB
    Réponses: 6
    Dernier message: 06/12/2009, 18h12
  2. Migration d'une DLL Delphi 32 bits vers 64 bits
    Par pwaesely dans le forum Langage
    Réponses: 1
    Dernier message: 20/03/2009, 12h50
  3. migration java 32 bits vers 64 bits
    Par patrox333 dans le forum Langage
    Réponses: 2
    Dernier message: 26/03/2008, 21h01
  4. Portage application 32 bits vers 64 bits
    Par joho dans le forum Général Java
    Réponses: 4
    Dernier message: 30/11/2007, 17h02
  5. Migrer Mon application développée en 32 bits vers 64 bits
    Par paradeofphp dans le forum Framework .NET
    Réponses: 4
    Dernier message: 18/11/2007, 18h22

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