ha ok j'avais pas compris sa comme sa dsl
-----
ha ok j'avais pas compris sa comme sa dsl
il manque begin après process
je propose également de remplacer
parCode:compte(7 downto 0) <= std_logic_vector(to_unsigned(1 58,8)); elsif valid = '0' and mono_i = '1' then--pendant la durée du bit et tant que le bit 8 du compteur reste à 1 on décompte , donc cela décompte de 256+158 à 255 donc 160 periodes [/b] compte <= std_logic_vector(unsignedv(com pte) -1);
Code:compte(7 downto 0) <= "10011110"; elsif valid = '0' and mono_i = '1' then--pendant la durée du bit et tant que le bit 8 du compteur reste à 1 on décompte , donc cela décompte de 256+158 à 255 donc 160 periodes [/b] compte <= compte - 1;
Re
En effet cela évite le recours à to_unsigned qui est défini dans numeric_std que manifestement MaxplusII ne connait pas
pour le begin je l'avais déja signalé mais comme par flemme j'ai recopié son code il reste manquant.
JR
Syntaxiquement, en tout cas, ça passe maintenant.
A pol5700 de jouer pour la suite
on peut de plus ramener ces 2 lignes
compte(8) <= '1';
compte(7 downto 0) <= "10011110";
à une seule
compte(8 downto 0) <= "110011110";
[QUOTE=Jack;1038635]on peut de plus ramener ces 2 lignes
compte(8) <= '1';
compte(7 downto 0) <= "10011110";
à une seule
compte(8 downto 0) <= "110011110";[/QUOTE]
ya une erreur avec ta derniere ligne il me dit.
es tu sur qu'il faille mettre des " " et non ' ' ??
ci joint le message d'erreur lors de la compilation
qu'en pensez vous? tjs une erreur de syntaxe?
voila le prog comme j'ai voulu le simuler!Code:entity monostable is port ( clk,valid,clrn: in std_logic; mono: out std_logic ); end monostable; architecture arch_monostable of monostable is signal compte : std_logic_vector(8 downto 0); signal raz_i : std_logic; alias mono_i : std_logic is compte(8); begin Process(Clk, clrn) begin If clrn = '0' then -- reset asynchrone à la mise sous tension au moins on sait d'où l'on part compte <= (others => '0'); raz_i <= '1'; elsif rising_edge(clk) then -- on fait du synchrone et pas de la zoubida raz_i <= valid;-- retard d'un coup d'horloge pour détecter le front descendant, cela suppose que valid est synchrone de l'horloge if valid = '0' and raz_i = '1' then --détection front descendant on charge le compteur a 256 + 158 compte(8 downto 0) <= '110011110'; elsif valid = '0' and mono_i = '1' then--pendant la durée du bit et tant que le bit 8 du compteur reste à 1 on décompte , donc cela décompte de 256+158 à 255 donc 160 periodes [/b] compte <= compte - 1; end if; end if; end begin; end process; mono <= mono_i ; raz <= raz_i ; end arch_monostable;
Je n'ai pas d'erreur de compil
Voilà mon fichier:
PS : indente ton source, c'est illisible
tu compil avec quoi?
max+plus2???
avec le prog que je vien de mettre???
pkoi j'ai des erreur lol
ok deja j'avais mi une ligne de code en trop, un begin end
mais j'ai tjs pas reussi a simuler!
les 2 prog sont pareil, le tien me dit qu'il y a deja une entity du meme nom mais en la changeant, l'erreur est tjs la.
pkoi dans ton prog tu as mis raz en sortie???
t'es sur pour les " " et non ' '??
Re
Jack à recopié le code que je t'ai écris, j'avais mis raz en sortie des fois que tu en ai besoin ailleurs.
et " " au lieu de ' ' c'est parce que c'est la syntaxe correcte.
JR
faut mettre des " " partout ou juste sur les code binaire.
les '0' ou '1' : c'est la bonne syntaxe?
pkoi mon logiciel me parle d'une entity pareil???
re
qu'entends tu par partout ?
les " " ce sont des délimiteurs de chaine de caractères (string) on ne les utilise que dans ce but.
JR
ben ya plein de '0' '1' dans le prog
c'est la bonne syntaxe ou il faut mettre "1" "0"???
pour mon erreur, sais tu d'ou sa vien???
'0' ou '1' c'est pour des bits
"00101" c'est pour des vecteurs.
Je compile avec MAX+PLUSII
Le source est celui que j'ai placé en fichier joint plus tôt. C'est celui de jiherve avec les petites modif de syntaxe.
A+
Re
non la syntaxe est bonne!
JR
lol bizar que chez moi il me dit que l'entity est la meme
voila le mess d'erreur:
"test" must contain an entity of the same name
je ne vois pas comment il peut trouver "test" quelque part vu que ce mot ne figure nulle part dans le source.
non "test" c'est le nom sous laquel je l'ai enregistré.
lol le truc trop con!
je pensai pas que le nom changé quelques chose a la simul!
c'est bon c'est simuler.
merci, je vais voir le resultat.
merci pour tout.
chaud quand meme le vhdl!
Precision dans le cas qui nous interesse c'est bien une chaine de caractères (0 et 1) qui est convertie en valeur logique std_logic_vector on aurait pu aussi ecrire:
compte(8 downto 0) <= "ZZZZZZZZZ";-- haute impedance
ou
compte(8 downto 0) <= "UUUUUUUUU";
etc etc
car il ne faut pas oublier qu'un un signal de type std_logic possède 9 etats possibles.
JR
voila apres test je peu dire sa marche pas lol!
j'explique!
la sortie raz recopie l'entrée valid.
la sortie mono detecte bien le front descendant mais ne revien pas a 1 apres les 160 impulsions d'horloge, elle reste a 1 et sa meme sur une tré grande durée de simulation.
l'entrée clrn ne sert a rien vu qu'elle doit etre active a la fin du comptage.
c'est moi qui est mal simuler ou alors sa bug?
jack sa ta donné quoi toi?
re
question ton signal valid est il plus long ou plus petit que 160 periode d'horloge ?
Le clrn il sert au debut .
Le code tel qu'il est est fait pour un signal valid plus grand que 160 periodes.
si ce n'est pas le cas changes:
elsif valid = '0' and mono_i = '1' then
par
elsif mono_i = '1' then
JR
clk est 160 fois plus rapide que valid.
le clrn est une entrée? il sert just a remettre tout a zéro au debut? c'est pas lui qui remet a zéro le compteur quand il est a 160?
mtn sa marche mieu, mais raz recopis tjs valid.
mono est bien plus long que 160periode
pis cmt faire pour que le clrn ne soi pas une entrée, qu'il se gere tout seul, car la c'est moi qui doit mettre une impulsion.
autre question la sa me fait un monostable redeclenchable, or sa serai cool si c'été un monostable non redeclenchable.
c'est pour cela qu'il est beaucoup trop long!
meric
J'essaierai d'ajouter une condition sur la valeur du compteur pour lancer la tempo
.... and compteur = ...
ce qui permettrait de relancer la tempo que lorsque le compteur est revenu à sa valeur initiale.
A+
ha jpe faire des and.....?
a quel moment tu mettrai cette ligne de code?
Bonsoir
Bien sur que raz recopie valid puisque il y ajuste un retard d'un coup d'horloge entre les deux.
Si tu veux un mono non retriggerable tu écris:
if valid = '0' and raz_i = '1' and mono_i = '0' then
...
elsif mono_i = '1' then
...
end if;
JR