code VHDL sous Quartus - Divers - Programmation
Marsh Posté le 06-02-2008 à 15:42:48
tu ne dois pas initialiser le registre d'état de cette manière mais plutôt dans le premier process :
if (clock'event and clock='1') then
if (reset = '1') then
etat_suiv <= ecriture1;
else
etat_suiv <= etat_pres;
end if;
end if;
Mieux vaut ne pas initialiser un signal lors de sa déclaration, d'ailleurs certains outil s de synthèse n'en tiennent pas compte.
le signal reset ne fait pas partie de la liste de sensibilité du process dont la liste de sensibilité est constituée par clock, tu devrais d'ailleurs le nommer, ce serait plus facile.
Marsh Posté le 08-04-2008 à 19:38:45
Bonjour,
je commence avec le VHDL. Donc la meilleur maniere d'apprendre, c'est de commencer à coder. Apres pas mal de recherche sur le net, je me rabats sur le forum parce j'ai trouvé aucune soluce.
J'essaye de realiser un " Scrambler ".
Ce registre se compose de 15 cases de 1bit. On realise un XOR sur les cases 15 et 14, puis ce resultat passe encore dans un XOR avec un bit d'entrée puis nous donne la sortie. La sortie du premier xor sur 14 et 15 est mise dans la premiere case du registre.
Pour mieux comprendre, c'est le schéma sur wikipedia. http://en.wikipedia.org/wiki/Scram [...] domizer%29
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.std_logic_unsigned.ALL;
USE ieee.numeric_std.all;
entity randomizer_test is
port (
clk : in std_logic;
bit_in : in std_logic;
bit_enab : in std_logic;
bit_reset: in std_logic;
bit_out: out std_logic
);
end randomizer_test;
architecture arc of randomizer_test is
signal reg : std_logic_vector(14 downto 0):="111111111111111";
signal porte_1 : std_logic;
signal porte_2 : std_logic;
begin
process(clk,bit_reset)
begin
if (bit_reset = '1') then
reg<="110110101010101";
elsif (rising_edge(clk) and clk='1' and bit_reset='0') then
if (bit_enab='1') then
porte_1 <= reg(14) xor reg(13);
porte_2 <= porte_1 xor bit_in;
reg(14 downto 1)<=reg(13 downto 0);
reg(0)<=porte_1;
end if;
end if;
end process;
bit_out<=porte_2;
end arc;
Donc le code ce compile bien. Mais quand je fais une simulation, et dans le registre reg, je n'ai aps du tout les bits que j'ai initialisé au depart.
En gros mon probleme c'est que je n'arrive pas à initialiser le registre avec ces bits 110110101010101. Quelqu'un aurait une soluce? Pourrait m'eclaircir sur comment rentrer des valeurs prédéfinir dans les bits b0...B15 des le depart.
Merci d'avance.
Marsh Posté le 04-02-2008 à 10:35:52
Salut,
Je suis actuellement bloqué par une erreur du logiciel Quartus, et j'aurais besoin d'un peu d'aide pour la débuger.
l'erreur est la suivante: " can't resolve multiple constant drivers for net "etat_suiv.ecriture1" at file *** "
et dans mon code VHDL si je retire une ligne je n'est plus d'erreur mais alors le code ne s'execute pas en entier.
Voici l'architecture du code :
merci d'avance pour votre aide !