de quoi est fait un registre a memoire?
ya t'il des circuit qui font cette fonction?
peut on realiser ce type de fonction avec de l'electronique numerique?
merci
-----
de quoi est fait un registre a memoire?
ya t'il des circuit qui font cette fonction?
peut on realiser ce type de fonction avec de l'electronique numerique?
merci
Bjr,
tu veux dire registre à décalage ?
c'est sur on peut tout faire avec des portes logiques et des bascules de base...
j'ai un registre a decalage mais je voudrais faire une memorisation!
on ma parlé de registre a memoire....
j'ai jamais entendu parlé de "registres à mémoire"
les registres forment une mémoire plus rapide, avec
possibilité de lecture et écriture simultanées, mais
beaucoup plus petite que la mémoire traditionnelle.
une bascule D (à commande sur niveau ou sur front) par bit.
un registre a decalage est une sorte de memoire?
apres le reistre a memoire, donc le signal est deserialisé, comment l'avoir en code binaire?
peut on utiliser un decodeur?
un registre à décalage est une mémoire de 1 ou 2 octets
il n'y a rien à décoder..
ok c'est cool, sa repond a ma question pour la memo.
non,mais apres je doit avoir le signal en code binaire, donc je peu faire sa comment? un decodeur ne pourrai pas faire l'affaire?
merci
voilaz un chrono pour illustrer .
j'ai donc le signal "donnée" a memoriser et deserialiser.
ceci est fait grace au registre a memoire.
mtn j'ai 11 signaux //, je souhaiterais separer les signaux donnés donc bit de start et stop,mais comment proceder.
je cherche aussi a avoir le signal en code binaire, comment proceder? un decodeur ferai l'affaire?
petite question pratique, pour ce que je veu faire, il faut que je regarde mon chrono en horizontal ou en vertical?
merci
je ne comprends pas pourquoi tu te tortures l'esprit avec ton décodage.
Ton registre à décalage a stocké les 11 bits de la trame. Sur ces 11 bits, 8 sont les bits de la donnée.
Tu prends ces 8 bits et tu les stockes dans ton registre parallèle (latch).
oui mais je ne comprend pas comment faire pour les separer les données du signal.
en gros il faudrais que j'ai mon signal mais que les 8 bits de données, sa j'ai bien compris.
peu tu me donner quelques tuyau pour faire cela?
si j'arrive a faire sa, apres pour avoir mon signal en binaire, ce sera plus simple??
merci
Je ne comprends vraiment pas ce qui te bloque.
Le registre à décalage possède 11 sorties. Tu prends les 8 qui t'intéressent.
A+
j'avais pensé a cette solution mais moi je voyai pas sa comme sa, je pensai que tu voulais que j'enleve de mon signal les bit de stop et start pour avoir un signal que de donnée, or si je prend les sortie 1 a 8 sur mon chrono j'aurai qd meme tt mon signal de depart.
c'est la que je comprend pas pourquoi ne prendre que les 8.
c'est ce nouveau chrono que je doit avoir?
On parle bien de la réception?j'avais pensé a cette solution mais moi je voyai pas sa comme sa, je pensai que tu voulais que j'enleve de mon signal les bit de stop et start pour avoir un signal que de donnée, or si je prend les sortie 1 a 8 sur mon chrono j'aurai qd meme tt mon signal de depart.
Ce chrono correspond à quoi? Tu as mis des valeurs au hasard pour le signal "données"? Tu as un schéma?c'est ce nouveau chrono que je doit avoir?
oui "donnée" est le signal rs232, oui c'est le signal recu.
je t'envoi mon schema avec les bascule
et je t'es refai un chrono avec cette fois ci un signal comme j'aurai, j'ai mis un etat de repos entre 2 trame, je t'es mis 3 trames.
en fait le chrono d'avan eté le meme mais que les sortie données selectionées, mais je comprend pas a quoi cela sert vu que sur le signal de ses sortie ya tjs les bit start et stop.
dsl sur le dernier chrono j'ai une erreur d'horloge mais le principe de fonctionnement est le meme .
pourquoi tu t'embêtes avec des modèles de 7474. ALTERA recommande d'ailleurs d'éviter de travailler avec.
Prends plutôt des primitives, ou même mieux des lpm. Ce sont des blocs configurables: tu en as pour faire un registre à décalage (shiftreg) ou un latch par exemple. Il sufit de paramétrer le blocs: nombre de bits, reset, etc. C'est simple à configurer.
Ces blocs sont spécifiquement développés pour les structures de ton cpld, contrairement aux 74xx.
Il faudra penser à la manière dont tu vas générer le signal d'horloge car dans la réalité, la trame et l'horloge de réception ne sont pas synchrones.
oué c'est le truc qui bug, tt n'est pas synchrone en vrai.
ok je vais essayer les lpm mais bon j'avais peur de m'aventurer dans du programme, sa marche quand meme comme j'ai fait?
sinon mon signal est bien memo et deserialiser?
comment sortir que les bit de donnée? juste en prenant les sortie 1a 8? mais sur le signal yora tjs le start et le stop alors!
et commen faire pour detecter l'etat bas du start et les 2 etat haut du stop?
merci
Et alors? Il faut que tu comprenne que dans une transmission, il n'y a que les données qui sont utiles.comment sortir que les bit de donnée? juste en prenant les sortie 1a 8? mais sur le signal yora tjs le start et le stop alors!
Le reste, c'est pour de la synchronisation et du contrôle. Un fois qu'on a détecté que la trame était complète et valide, ces bits ne servent plus à rien
En passant, un petit effort sur l'orthographe serait le bienvenu. Il ne faut pas exagérer tout de même.yora
Quand la ligne est au repos, il suffit de détecter un état bas: c'est le start.commen faire pour detecter l'etat bas du start
En fait on s'en moque un peu des stops. Ils ne sont là que pour permettre de détecter le prochain start. Il correspondent donc à une mise au repos forcée de la ligne.et les 2 etat haut du stop?
Dernière modification par Jack ; 20/03/2007 à 22h49.
en fait pour la detection du start sa va, je fait un detection de front descendant.
mais alors comment detecter la fin d'une trame?comment savoir que c'est un etat repos et non un etat 1 d'une donnée?
si je met une bascule monostable qui va detecter mon front descendant,avec une cellure rc qui va faire en sorte de se finir apres le bit de stop, est ce que cela peut etre ma fin de trame? mais sa sera bien apres la vrai fin de trame, mais bon mon prof ma dit qu'il y a tjs un temps de repos entre 2 trame.
sa peut le faire?
j'ai bien compris qu'il me faut que les bit de données mais je ne comprend pas comment les separer! ils sont separé avec la désérialisation ou il me manque un petit montage annexe pour le faire?
dsl pour l'ortographe, je tappe vite.
merci pour ton aide!
Ca j'en ai déjà parler, il suffit de compter les impulsions d'horloge.mais alors comment detecter la fin d'une trame?comment savoir que c'est un etat repos et non un etat 1 d'une donnée?
Si l'horlog de réception, de période T, est 16 fois plus rapide que la vitesse de transmission par exemple, un bit durera 16 période d'horloge.
1 bit = 16*T
2 bits = 32*T
3 bits = 48*T
etc.
10 bits = 160*T
Il suffit donc de compter les périodes d'horloge pour savoir quel bit est en train d'arriver.
Pour une trame de 10 bits, on sait que le registre à décalage sera rempli en 160 périodes d'horloge.
Ton registre à décalage est composé de bascules.
Chaque bascule mémorise un bit
Chaque bascule possède une sortie
Il y a donc 8 sorties qui correspondent aux 8 bits de la donnée utile.
Tu relies ces 8 sorties aux 8 entrées du latch
Tu donnes l'ordre au latch de mémoriser les 8 bits lorsque tous les bits sont entrés dans le registre à décalage.
Je te laisse méditer la dessus. Tes profs n'apprécieraient pas trop que je te donne la solution toute cuite je pense.
pour verifier si j'ai bien le bit de start et stop est ce que je peu proceder comme ca?
j'inverse le signal recu,je detecte le front montant du bit de start, avec une cellule RC je regle pour aller jusqu'au bit de stop, ensuite je met une porte ou non qui va etre a 1 seulement quand la cellule rc est a 0 et qu'il y a un bit de stop ( 0 vu que le signal est inversé).
sa peu le faire?
ok je vais reflechir sur ce que tu mas dit.
mais pense tu que ce que j'ai fait peu marcher?
sa parait simple comme montage, mais je verifie bien que j'ai le start et un niveau haut a la fin donc le stop.
mais avec un montage pareil sa ne me sert a rien d'avoir un registre a decalage avant!
Mais pourquoi des tempo avec un RC. La solution tout numérique est bien meilleure.
Quoi de plus facile que de faire une tempo par comptage?
oui mais je voi une solution, donc jeme dit, meme si j'ai du rc sa ira!
tu pense que je peu faire mieu avec du numerique?
est ce que ma solution fonctionnerai?
essaie, tu verras bien.
Quand on apprend, il est normal de ne pas trouver la meilleure solution du 1er coup. C'est comme ça que l'on acquiert de l'expérience.
lol apres disction avec mon prof, pas d'analogique,que du numerique!
il ma dit qu'en vhdl ce type de programme est simple, mais bon meme avec le cour c'est galere.
de plus mon logiciel altera na pasla licence pour le vhdl, c'est la loose!!!
donc il faut que je fasse un monostable a partir d'un compteur.
donc comme tu ma dit, je vais essayer de faire un compteur qui debute des que j'ai mon 1er front descendant, qui compte jusqu'a 160, et qui revien a 0, puis qui reprend au front descendant suivant!
ya plus qu'a faire sa!
voila j'ai tenté mon 1er programme, or je peu pas encore simulé vu que j'ai pas la bonne licence!
peux tu me dire si ca fait ce que je veu!
-si donnee passe a 0, le compteur compte et mono=1
-si le compteur est a 160, le reset se met a 1 pds 1us
-si le reset se met a 1, le compteur se remet a zéro et mono=0
par contre j'ai pas mis la bonne syntaxe, je voudrais deja bien prendre en main le vhdl!
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_arith.all;
entity monostable is
port
(
clk,donnee,raz: in std_logic;
mono: out std_logic
);
end monostable
architecture arch_monostable of monostable is
begin
process(clk)
signal compte: std_logic_vector(3downto 0);
if (donnee'event and donnee="0") then compte:=compte+1 and mono=1
if (compte=160) then raz=1for 1us
if (raz=1) then compte=0 and mono=0
end if
end if
end if
end process
end monostable
quen pense tu, ya un peu de juste quand meme?
Demande à ton prof d'en commander une chez altera, c'est gratuit. En plus vous devez avoir des clefs hard à mettre sur les PC pour MAXPLUS+II dans ton lycée si mes souvenir sont exacts.de plus mon logiciel altera na pasla licence pour le vhdl, c'est la loose!!!
Bon, je ne suis pas super pointu en VHDL, je n'en ai d'ailleurs plus fait depuis un bon moment. Mais quelques lignes me semblent poser problème:
C'est plus destiné à tester la sensibilité du signal associé au process, donc clk dans ton cas.Code:(donnee'event and donnee="0")
Là, ça ne va pas du tout. Tu ne peux pas ajouter un AND pour effectuer deux actions indépendantes. Ecris-les sur 2 lignes différentes, séparées par des virgules.Code:then compte:=compte+1 and mono=1
J'ai 12 projets à suivre en ce moment, ainsi que des épreuves E5 (tu connais?) à faire passer les jours qui viennent. Je ne pense pas avoir suffisamment de temps pour vérifier ton code VHDL.
Peut-être jihervé (qui est une bête en VHDL, lui) pourra-t-il prendre le relais?
Sinon, as-tu demandé à ton prof si tu pouvais plutôt traiter ce problème sous forme graphique, donc de schéma avec des primitives et des macromodèles comme les lpm? Parce que VHDL est assez contraignant au niveau syntaxe, et la mise au point n'est pas facilitée par un debugger comme en informatique.
ben le prof ma dit en vhdl c'est tout simple!
c'est kler j'ai bien vu la syntaxe, ya tjs des erreurs.
oué les epreuve e5 sa commence lundi!
oui j'ai repris la licence sur le site altera, mtn sa marche.
ok je vais voir avec lui!
merci