Se connecter avec
S'enregistrer | Connectez-vous

Programme VHDL

Dernière réponse : dans Programmation

Bonjour, je voudrais faire un programme pour un robot, je vous écris car j'ai un probleme avec mon compteur : j'ai mis une Horloge CLK et un Qintern(signal 8 bits), le Qinterne doit compter à chaque front d'impulsion de CLK, la sortie mg et md sont au niveau logique "1", lorque que Qinterne arrive à l'état "01100110", les sortie mg et md passe à "0", donc le problème est que le compteur ne compte pas et les sorties ne change pas d'état.
si quelqu'un pourrais m'aider, merci d'avance!
voila le programme :

library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
use ieee.std_logic_unsigned.all;

entity robot is port
( cd : in std_logic;
cm : in std_logic;
cg : in std_logic;
CLK : in std_logic;
md : out std_logic;
mg : out std_logic);
end robot;
architecture robot_ARCH of robot is
signal QINTRN : std_logic_vector(7 downto 0);
begin
robot_PRO : process(CLK)
begin
if (CLK' event and CLK='1') then
QINTRN<=QINTRN+1;
if (cd='0' and cm='1' and cg='0') then
if (QINTRN<"01100110") then
mg<='1';
md<='1';
else
mg<='0';
md<='0';
end if;
-- end if;
end if;
end process robot_PRO;
md<=QINTRN(0);
end robot_ARCH;

Autres pages sur : programme vhdl

Lassé par la pub ? Créez un compte

deja tu dois avoir un conflit sur la sortie md (afectée dans ton process synchrone et md<=QINTRN(0); en dehors de tout process)

supprimons cette dernière ligne : md<=QINTRN(0);

ensuite :

l'état initial de ton compteur n'est pas fixé. Ceci peut poser pb si ton simulateur l'initialise à "XXXXXXXX" alors :
XXXXXXXX + 1 = XXXXXXXX

Tu peux ajouter un reset ou faire :
signal QINTRN: std_logic_vector(7 downto 0) := "00000000";

Vérifie que les ports cg, cm et cd ont les bonnes valeurs.

Lassé par la pub ? Créez un compte
Tom's guide dans le monde