Précédent   Forum du club des développeurs et IT Pro > Autres langages > Autres langages > VHDL
VHDL Forum d'entraide sur VHDL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 25/04/2012, 18h28   #1
Ksawery
Invité de passage
 
Inscription : juillet 2006
Messages : 12
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 12
Points : 0
Points : 0
Par défaut Question de base : soumission d´inputs a une clock

Bonjour a tous,

Je debute dans l´electronique et commence tout juste a apprendre VHDL.
Je joue pour l´instant avec quelques exemples et reste bloque sur un point: je souhaite ecrire un processus qui multiplie 3 bits, et je souhaite que la valeur de ces bits soient donnee par une horloge (aucune utilite pratique, c´est purement pedagogique)

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
----------------------------------------------------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity top is
	port (
		clock : in std_ulogic;
		e1 : in std_logic;
		e2 : in std_logic;
		e3 : in std_logic;
		s : out std_logic
		);
end top;

architecture Behavioral of top is

 -- signal  clock : std_ulogic := '1';

begin
	
	s <= e1 and e2 and e3;

end Behavioral;
le processus precedent est teste dans cette partie:

Code :
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
  
ENTITY tb IS
END tb;
 
ARCHITECTURE behavior OF tb IS 
 
    -- Component Declaration for the Unit Under Test (UUT)
 
    COMPONENT top
    PORT(
         clock : IN  std_logic;
         e1 : IN  std_logic;
         e2 : IN  std_logic;
         e3 : IN  std_logic;
         s : OUT  std_logic
        );
    END COMPONENT;
    

   --Inputs
   signal clock : std_logic := '0';
   signal e1 : std_logic := '0';
   signal e2 : std_logic := '0';
   signal e3 : std_logic := '0';

 	--Outputs
   signal s : std_logic;

   -- Clock period definitions
   constant clock_period : time := 10 ns;
 
BEGIN
 
	-- Instantiate the Unit Under Test (UUT)
   uut: top PORT MAP (
          clock => clock,
          e1 => e1,
          e2 => e2,
          e3 => e3,
          s => s
        );

   -- 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*10;

      -- insert stimulus here 
		-- if (clock='1' and clock'event) 
		-- then
		e1 <= clock;
		e2 <= clock;
		e3 <= clock;
		-- end if;
		
      wait;
   end process;

END;
Je teste mon code avec une simulation, observe bien la clock, apres 100ns les inputs e1 e2 e3 prennent la valeur 1, et puis restent toujours a 1 alors que la clock continue ses cycles...
Comment faire pour soumettre e1 e2 e3 a la valeur de la clock ?
Merci d´avance,
Ks.
Ksawery est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2012, 13h26   #2
titiri
Membre régulier
 
Inscription : juin 2009
Messages : 37
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 37
Points : 77
Points : 77
Dans le dernier code, lignes 66...68, les signaux sont affectés à T=100 ns puis la commande wait est exécutée. L'affectation n'est donc réalisée qu'une unique fois à T=100ns.
Il faudrait remettre la ligne clk'event and clk='1' et y supprimer le test clk='1' (donc uniquement test sur l'event), comme par exemple :

Code :
1
2
3
4
5
6
loop
    wait until clock'event;
    e1 <= clock;
    e2 <= clock;
    e3 <= clock;
end loop;
titiri est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 06h43.


 
 
 
 
Partenaires

Hébergement Web