Problém kódovanie FlipFlop vo VHDL

A

AMCC

Guest
Dear all,
Som pomocou nasledujúci kód pre vytvorenie FF s synchrónnu reset a umožnia:

Run_Condition: PROCESS (aq_clk, en_aq, start, run)
BEGIN
if (aq_clk'event a aq_clk ='1 '), potom
if (en_aq ='0 '), potom
spustiť <='0 ';
elsif (start ='1 '), potom
spustiť <= en_aq;
end if;
end if;
END PROCESS Run_Condition;

Počiatočná hodnota en_aq ='0 '.start je'1 'jedinej aq_clk obdobie pulz.
Nemôžem nájsť žiadne problémy v tomto kódovanie, ale v mojej simuláciu veľmi podivný účinok sa deje:
Mám Undefined beh medzi stúpa (en_aq) a štart impulzu.
Mám niečo chýba?

Ďakujem vám za vašu pomoc.
S pozdravom
AMCC

 
procesu (aq_clk, en_aq, štart)
premennú temp: std_logic_vector (1 downto 0);
začať
temp: = en_aq & start;
if (aq_clk ='1 'a aq_clk'event), potom
prípadu (teplota), je

, Keď "00" | "01" =>
spustiť <='0 ';
, Keď "11" =>
spustiť <= en_aq;
keď ostatné => null;
koniec prípadu;
end if;
konci procesu;

 
Alebo nastaviť pôvodné hodnoty:

signálu spustiť: std_logic: ='0 ';

 
rovnako ako je uvedené vyššie, môžete nastaviť predvolené hodnoty pre "run" pred-Ak vyhlásenie alebo urobí prípade chýbajúcich podmienok, na ktoré sa nevzťahuje kód ... alebo si môžete jednoducho pridať "iný" stav pred "na konci je-li "na pokrytie chýbajúcich podmienok (rovnaká ako pridania prípad)

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Úsmev" border="0" />
 
Ahoj všetkým,
Ale v syntéze tejto počiatočnej hodnoty sa neberú do úvahy.Ako tento problém vyriešiť, keď prístroj inicializácie je potreba.

 
Dear all,

Ďakujem vám za vaše komentáre, ale myslím, že problém nie je pôvodné hodnoty.
'beží' začne'0 'tak či onak (buď zlyhanie inicializácie alebo skutočnosť, že en_aq je'0' pôvodne (a to je správne inicializovaný).
Zaujímalo by ma, či existuje nejaký rozdiel medzi použitím:

ak
elsif
endif

ALEBO

ak
else if
end if

Je možné, že syntezátorový môžu mať rôzne názory kódu?

Thnak vám ďakujem za vašu pozornosť.

S pozdravom

AMCC

 
v prvom rade neexistuje endif
je to len účelom, ak vo VHDL

Ak poviete elsif ... potom je to len pokračovanie, ak sa pred poslednú inde-môžete len v prípade, alebo ak elsif .. a ešte ... závisí na vašom správaní designu ....

ale ak je to inak, keby ... potom
je tu ešte vnoření ak vyhlásenie ... a
to je rozdielne v syntéze kurz

Myslím, že váš problém spočíva v tvrdení, pokiaľ iný ... skúste napísať im riadne podľa správania FF chcete mať ... takže moju radu pridať ešte definitívne s podmienkou, že kvapka z prvých dvoch podmienok run a začať

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Úsmev" border="0" />
 
Vážení Salma,
Vypnúť kurz "end if" ...moje "písanie" omylom

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Úsmev" border="0" />

.

A súvisiace otázka, ako sa chová v mojej hlave:
Aký je rozdiel v priebehu a syntezátoru pri kódovaní jeden Flip-Flop synchrónnym zapnúť a reset dva popisky pod?

Description1:

if (clk'event a CLK ='1 '), potom
if (reset ='1 '), potom
z <='0 ';
elsif (enable ='1 '), potom
z <= vstup;
end if;
end if;

Popis 2:

if (clk'event a CLK ='1 '), potom
if (reset ='1 '), potom
z <='0 ';
iné
if (enable ='1 '), potom
z <= vstup;
end if;
end if;
end if;

Čo je najviac "užitočné" a prečo?(Poznámka: I typicky používať označenie 1, ale v súčasnej dobe témou je jeden z prípadov, keď sa zdá, nie sa správať ako chcem).Ďakujem ešte raz.
AMCC

 
Samozrejme presné vykonávanie kódu závisí na použité nástroje syntéza a cieľovú architektúru prístroj ....

ale všeobecne povedané:
if (bez ďalšieho) formuluje jedna závora (vyhnúť sa tomuto)
v prípade iného znamená MUX
v prípade, ak je inak, alebo ak elsif ... znamenať prioritu kódovaných logiku ... na rôznych úrovniach v závislosti na písomné vyhlásenie ... len si predstav, ako by ste si tu MUX s jednoduchým vstup na jeden pin (kód po if) a veľa ďalších logických ako ostatné vstupy (kód po else if alebo elsif ... atď), čo je
to inej úrovni s muxes ... etc

<img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Veľmi Happy" border="0" />Naposledy upravil Salma ali Bakr dňa
11. októbra 2007 11:59; upravený 1 čas celkom

 
V tomto programe, ak 'beží' režim je out (výstupný port)
potom u neuviedli do procesu () citlivosť zoznam

alebo ak je spustený s premenlivým potom použiť premennú pridelenie výkaz assiging hodnotu.
mať rád
Beh: = en_aq;

 
kluci to funguje len v Verilog

cond-li 1 potom vyhlásenie 1
ak cond 2 potom statement2

vo bude stavať prioritné Enkodér

vo VHDL si myslia, že sú trochu odlišné

Čo by sa stalo, keby cond1 a cond oboch pravda, to sa musí opísať alebo cond1 a cond2 nepravdivé.

Pozdravy,

 

Welcome to EDABoard.com

Sponsor

Back
Top