Questions> A propos de VHDL processus

E

EDA_hg81

Guest
Mon programme avec deux processus sont les suivantes:processus (CLK)commencerif (CLK'EVENT et CLK = '1 ') puis= ADR : ADDR "0000000000000000001";elsif (RESET = '1 ') puisADDR: = "0000000000000000000";fin si;CEN_ADDR <= ADR;processus de bout;
processus (CLK)commencerif (CLK'EVENT et CLK = '1 ') puisif (RESET = '0 '), puisRREG1: = DATA1;RREG2: = DATA2;RREG3: = DATA3;REG1: = RREG1;REG2: = RREG2;REG3: = RREG3;OUT1 <= REG1;<OUT2 = REG2;OUT 3 <= REG3;fin si;fin si;processus de bout;O_DATA1 <= OUT1;<= O_DATA2 OUT2;<= O_DATA3 OUT3;Je veux utiliser deux parties en cours d'effectuer les opérations suivantes:

1) CEN_ADDR processus en cours et O_DATA1, O_DATA2 et O_DATA3.
2) Envoyez CEN_ADDR immédiatement, sans délai, et O_DATA1, O_DATA2 et O_DATA3 sont retardé de deux cycles.
Pour O_DATA1, O_DATA2 et O_DATA3 peut atteindre bus de données dans le même temps, je les mets à
du processus.
Pensez-vous que O_DATA1, O_DATA2, O_DATA3 peut être mis à jour correctement avec l'entrée DATA1,
DATA2 et DATA3?
Ou O_DATA1, O_DATA2 et sont O_DATA3 envoyer tout de suite sans mettre à jour?Merci pour votre aide.
Dernière édition par EDA_hg81 le 4 mai 2006 02:47, édité 2 fois au total

 
PAL désolé, mais il ya beaucoup trop d'erreurs dans votre code et ils sont comme suit:

1-tu na pas de définir les variables (ADDR dans le premier processus) (REG1, REG2, REG3 dans le processus de seconde).

2-au premier processus si vous regardez attentivement le code que vous obtiendrez toujours

ADDR <= "0000000000000000000" parce que le processus va commencer à nouveau dans le front descendant de la CLK et il respecte toujours avec le Père Noël le reste de l'instruction if.

processus (CLK)
commencer
if (CLK'EVENT et CLK = '1 ') puis
= ADR : ADDR "0000000000000000001";
d'autre
ADDR: = "0000000000000000000";
fin si;
CEN_ADDR <= ADR;
processus de bout;

3-variables sont la pire chose à utiliser lorsque vous travaillez avec VHDL (alwas pas utiliser des signaux variables)

4-Dans le second processus, je ne trouvez pas de sens pour les trois premières lignes depuis les trois lignes suivantes remplacent les trois premières lignes.désolé de dire ça, mais votre code est complètement incorrect ... u besoin de lire davantage à propos de VHDL et de conseil que je vous invite à lire ("VHDL pour la logique programmable» par Kevin skahil)

bonne chance

 
Je suis désolé.

Je le changer de l'original un.

Si je n'utilise que des signaux dans le processus, ne questions délai?

 
Citation:processus (CLK)

commencer

if (CLK'EVENT et CLK = '1 ') puis

ADDR ADDR: = "0000000000000000001";

elsif (RESET = '1 ') puis

ADDR: = "0000000000000000000";

fin si;

CEN_ADDR <= ADR;

processus de bout;
 
Reset doit être «1» pour tous désolé pour mon erreur.

pour le premier processus.Si je le modifier comme suit, il va faire mieux?

processus (CLK)
commencer
if (CLK'EVENT et CLK = '1 ') puis
= ADR : ADDR "0000000000000000001";
elsif (CLK = '1 'et RESET = '1') puis
ADDR: = "0000000000000000000";
fin si;
processus de bout;
CEN_ADDR <= ADR;

Merci.

 
u premier garçon d'électrons dit que les variables peuvent être définies golbally et c'est ...... variables
incorrectes peuvent être définies que dans le processus pas à l'extérieurmais à EDA_hg81 vous pouvez modifier le code comme suit pour le premier processus

ADDR signal: std_logic_vector (18 downto 0); - définie après cette architecture
- Déclaration et avant de commencer

processus (CLK, RESET)
commencer

if (RESET = '1 ') puis
ADDR <= (autres => '0 ');
elsif (CLK'EVENT et CLK = '1 ') puis
ADDR < ADDR = 1;
End If
processus de bout;
CEN_ADDR <= ADR;

bonne chance
/ Quote] [

 

Welcome to EDABoard.com

Sponsor

Back
Top