Salut, voila j'écris un programme en VHDL et j'ai besoin de votre aide car je suis pas sur de moi pour une syntaxe.
Voila mon programme je vous l'ai commenté comme ca tous est expliqué :
library IEEE;
use IEEE.STD_LOGIC_1164.all;
use IEEE.numeric_std.all;
Entity aquisition is
port(
cap : in std_logic; -- signal du capteur optique après être passé dans un trigger
DirA : out std_logic := '0'; -- signal allant de la carte DE0 vert Le L298N pour commander le sens moteur
DirB : out std_logic := '1' -- signal allant de la carte DE0 vert Le L298N pour commander le sens moteur
end entity;
architecture bloque_1 of aquisition is
signal OLD_DIRA : std_logic; -- memoire de l'état de rotation précedement appliqué au moteur
signal OLD_DIRB : std_logic; -- mémoire de l'état de rotation précedement appliqué au moteur
begin
process
OLD_DIRA <= DirA; -- on sauvegarde le sens se rotation
OLD_DIRB <= DirB; -- on sauvegarde le sens de rotation
begin
wait until cap'event and cap='0'; -- on attend un evenement type front descendent sur le signal CAP
DirA <='0'; -- on met un état 00 stop sur le moteur
DirB <='0'; -- on met un état 00 stop sur le moteur
wait for 500ms; -- clycle d'attente de 500ms pour l'arret total du moteur
DirA <= *** -- c'est la que ca va pas en théorie DIRA prend 1
DIRB <= *** -- et DIRB prend 0
--- et on est reparti jusqu'au prochain front descendant ou on refait la boucle
end process;
end bloque_1;
*** jai pensé à DirA <= NOT (OLD_DIRA); mais je pense pas que ca soit bon.
merci pour votre aide
-----