Prodleva před úkol.

M

munchies

Guest
Jsem ve VHDL a chci představit zpoždění před přiřazením dva signály, že jsou stejné. Mé myšlení je přepínač, který se pohybuje od samé nuly, nebo null na drát chci, aby se signál po x množství clk_cycles. Je to možné? Můj problém je, že můj návrh je výstup dat před nevyžádanou všechny správné údaje šíří plně, chci přiřadit výstup na nulu, nebo null, dokud zpoždění propagace je kompletní. Je to možné? Děkujeme vám za jakoukoli pomoc nebo diskuze.
 
Má vaše obvodu má sekvenční části? protože to je možné použít k určení, kdy přiřadit k výstupu. co říkáte, není užitečné, pokud jsem pochopil. říkáte, například máte drát a chcete mít žádnou hodnotu času (null), a pak přiřadíte hodnotu, když budete chtít. Hodnota null není možné v HDL. protože každý drát, a zaregistrujte se náhodnou hodnotu reset, protože jsou aktuální bistabilní polovodičové zařízení. Co můžete udělat, je, že například, cyklů. a že váš obvod dokončí výpočty, po 150 hodinových cyklů. a můžete mít výstupní registr, který je všechny nuly až 150 výrobních cyklů. a můžete si nastavit, že výstup po 150. cyklu. a můžete si také jeden kousek signálu, řekněte "Hotovo". a nastavit to dělá olnly signál po dokončení úkolu na výsledek registru. Tímto způsobem můžete říct, další modul, který tuto část sytem je vypočtena jeho výstupní hodnotu, a hodnota je připravena k výstupu z registru. To je obyčejný způsob, jak dělat to, co žádáte. doufám, že to pomůže.
 
V Simulace , můžete odložit Přiřazení signálů pomocí [font = Courier New] Po [/FONT], ale to asi není to, co chcete: [url = http://www.gmvhdl.com / delay.htm] VHDL Tutorial - Delay Model [/url] pravděpodobně budete muset vytvořit signál, který ví, kdy má nevyžádané vyprázdněna přes modul a použít přepnout výstup zapnout nebo vypnout. Navrhuji, přidáte něco takového na konci svého modulu:
Code:
 finalOutput 0');
 
Dobře vám za to poděkovat. Vím, co chci založit si to, tak chci použít něco jako
Code:
 IF (Fire'event And Fire = 1), pak ...... ComputationReady = '1 ';
Jak se pak nastaví zpoždění chci? V tomto případě je to 4 cykly. Předpokládám, že pomocí libovolného času je k ničemu, mimo simulace. Takže jsem třeba něco jako:
Code:
 počkejte 8 * clk'event
nebo tak něco?
 
Nepoužívejte první nápad - vytváříte hodiny, které vám způsobí celou řadu problémů s časováním. Nejlepší je nastavit pult a čekat, až dosáhne určité hodnoty.
 
Nespouštějí na náběžné hraně "oheň", tak, že použijete "oheň", jako nové hodiny místo řídícího signálu. Místo toho, podívejte se na staré hodnoty a ve srovnání s novou hodnotu. Pak se začíná počítat 4 hodinové cykly. Počítání 4 hodinové cykly lze provést pomocí posunu hodnot ve posuvný registr, nebo vytvořením státem stroj s protiproudem. Pojďme do posuvného registru zde: Za předpokladu, že prohlášení jako např.:
Code:
 signální oheň, zapálený, aktivní: std_logic; signál počítání: std_logic_vector (4 downto 0);
vám něco podobného v synchronní postup: [code ] Pokud rising_edge (ČLK), pak v případě vystřelil = '0 'a oheň = '1' pak - začněte počítat aktivní
 
V pipeline design, budete často chtějí mít DAV (data k dispozici) potrubí, které zpoždění handshake signálů spolu s daty. To není jen zpoždění dat připravený signál, ale umožňuje více nových hodnot, cestování datové cesty ve stejnou dobu. Pokud data dřez je registrace údajů podle signálu, DAV, nemusíte maskovat neplatných výstupních dat. Je-li datové cesty je v provozu postupně, nikoli pipeline, např. sériové dělící jednotky, by se jednoduše DAV proti stačit.
 

Welcome to EDABoard.com

Sponsor

Back
Top