bonjour je ne comprends pas comment faire une description VHDL à partir de ce schéma:
Pouvez-vous m'aider s'il vous plait ?
-----
bonjour je ne comprends pas comment faire une description VHDL à partir de ce schéma:
Pouvez-vous m'aider s'il vous plait ?
Si tu as du mal en VHDL, il exite cela : http://www.xilinx.com/ise_eval/index.htm
ça te permet de simuler le fonctionnement de ton circuit en plus.
Premièrement, avant de chercher à décrire le schéma, sais-tu quelle est la fonction de ce schéma? as-tu compris son fonctionnement ?
Bonjour,
1 : déclarer un signal de type std_logic_vector(3 downto 0) qui sera le registre q[3..0]
2 : déclarer un process ayant clk et load_n dans la liste de sensibilité
le résultat :
Bine sur le tout fait partie d'une architecture, a toi de compléter!!!Code:P1: process(clk,load_n) begin if load_n = '0' L1:for i in 0 to 3 loop if data_in(i) = '0' then q(i) <= '0'; end if; end loop L1; elsif rising_edge(clk) q <= ('1' & q(3 downto 1)) ; end if; end process P1; bit_out <= q(0);
JR
Dernière modification par jiherve ; 21/04/2012 à 15h16.
l'électronique c'est pas du vaudou!
excusez moi, je ne recevais pas les notifications donc je n'avais pas vu que vous m'aviez répondu.
umfred: non je ne vois pas quelle fonction est réalisée par ce schéma :/
jiherve: je n'ai pas vu l'instruction "loop". Y aurait-il un autre moyen ? avec soit des: case, with select, process, if then else end if. ( c'est tout ce que j'ai vu ... )
merci
Bonsoir,
Dans ce cas, vous bégayez un peu :
q <= "0000";
C'est pénible si c'est sur 64 bits!
Moi ignare et moi pas comprendre langage avec «hasard», «réalité» et «existe».
on pourrait appeler ça un sérialisateur (ouh le vilain mot)
tu rentres une donnée parallèle data_in[0-3] et tu la sort en série au rythme de l'horloge au niveau de bit_out
le fonctionnement se fait en 5 étapes:
- on positionne data_in[0-3] par exemple data_in[3]=1,data_in[2]=0,data_in[1]=1,data_in[0]=1 ou '1010'
- on active load_n
- on fait une implusion sur clk ce qui à pour action "charger" les bascules D et de sortir le 1er bit (correspondant à à data_in[0])
- on désactive load_n (pour éviter de recharger la donnée)
- on génère 3 impulsions pour faire sortir successivement data_in[1], data_in[2],data_in[3]
merci umfred pour la description du montage, qui dans mon exercice est appelé un "système de transmission d'information" mais je ne comprends pas pourquoi c'est l'entrée ~clear qui délivre data_in.
stephjm, quand tu dis on beguaye un peu, je ne vois pas où béguayer.
voici le début de ma description VHDL:
library ieee;
use ieee.std_logic_1164.all;
use ieee numeric_std.all;
entity trans is
port(
clk: in std_logic;
load_n: in std_logic;
data_in: in unsigned(3 downto 0);
bit_out: out std_logic
);
end entity trans;
merci
Moi ignare et moi pas comprendre langage avec «hasard», «réalité» et «existe».
c'est compliqué le VHDL !
le fait d'écrire q<='0000' remplace (en terme de fonctionnalité) la boucle for de jiherve ?
dans ce cas je ne vois pas comment associer à Q(0) une valeur de la chaîne d'informations de data_in.
( et ai-je fait une erreur sur l'ébauche de structure que je vous ai présenté ? )
merci de consacrer votre temps à mon problème
Moi ignare et moi pas comprendre langage avec «hasard», «réalité» et «existe».
pourrait-on réussir à écrire la description sans boucle for ? parce que je commence le VHDL et je n'ai pas vu la syntaxe d'une boucle for.
On peut.....
Moi ignare et moi pas comprendre langage avec «hasard», «réalité» et «existe».
Bonsoir,
La boucle for c'est parce que le seul le reset est actif sur les bascules d'après le schéma autrement on aurait pu écrire:
On peut aussi écrireCode:if loadn = '0' then q <= data_in; ....
cependant comme la valeur initiale de q est inconnue le résultat peut conduire a q = 'XXXX'Code:if loadn = '0' then q <= (q and data_in); ....
ou bien si le chargement était un reset global:
En fait il manque un reset global mais cela peut fonctionner sur un FPGA comportant un dev_clrn, c'est a dire un reset hardware implicite soit à la mise sous tension soit par une entrée dédiée.Code:if loadn = '0' then Q <= (others => '0'); ....
JR
l'électronique c'est pas du vaudou!