# Autres langages > Autres langages > VHDL >  Gnrateur parallle de 4 bits vers un bit srie en VHDL

## isamel85

Bonjour,
Je veux faire la description en VHDL gnrateur parallle de 4 bits vers un bit srie.
En effet,  chaque front dhorloge (250 kHz), nous prenons seulement un bit en commenant par le bit le moins significatif (LSB).
Exemple :
Entre = "0101" (sur 4 bits)
Donc au premier front dhorloge, Sortie = '1' (LSB)
Deuxime front dhorloge, Sortie = '0'
Troisime front dhorloge, Sortie = '1'
Quatrime front dhorloge, Sortie = '0'  (MSB)
Y a-t-il quelquun qui peut maider ?
Et merci

----------


## cedd70

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



```

```

----------


## isamel85

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 rsultats dans la premire image


J'ai essay le mme code en enlevant la condition sur Falling Edge et j'ai obtenu les rsultats dans la deuxime image

----------


## cedd70

Normal  :;):  
je viens de voir une petite erreur dans mon code 
Enlve une des deux conditions sois falling ou rising edge, je devais pas tre bien rveill 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 dtat sur quel front, je te conseille plutot de suprimer Falling

----------

