Забавяне преди назначение.

M

munchies

Guest
Аз съм с VHDL и искам да се въведе закъснение, преди да зададете два сигнали са равни. Моето мислене е на един бутон, което се движи от всички нули или нулев проводник, искам да взема сигнал от след х размер на clk_cycles. Възможно ли е? Моят въпрос е, че моя дизайн е извеждането на боклуци данни, преди всичко на коректни данни се разпространява чрез нея напълно, искам да присвоите изход до нула или нула до закъснение на разпространението е пълна. Възможно ли е? Благодаря ви за всяка помощ или дискусия.
 
Има ли вашата верига последователно част? защото тя не можете да го използвате, за да се определи кога да възложи на продукцията. това, което казвате, не е полезно, защото доколкото аз съм разбирал. казват например имате тел и искате да нямат стойност за известно време (нула), и от вас ще присвои стойност към него, когато искате. нулева стойност не е възможно в HDL. защото всеки тел и да се регистрирате случайна стойност в нулиране, тъй като те са действителните bistable полупроводникови устройства. какво можете да направите, е, че например, има брояч на цикъл. и да кажа си схема завърши изчисленията си след 150 такта. и може да има изходен регистър, че е всички нули до 150 цикъл брои. и можете да зададете, че изход след 150. цикъл. и можете да имате също така да има един сигнал малко, да речем "Done". и сте настроили това да стане сигнал olnly след възлагането на резултата регистър е завършен. по този начин можете да кажете на следващия модул, че тази част на sytem изчислява резултатите от дейността си стойност, а стойността е готов да се вземат от резултатите от дейността си регистър. това е общ начин да правиш това, което искат. се надявам, това помага.
 
В симулация , можете да забавите сигнал, като използвате [FONT = Courier New] след [/FONT], но че не е вероятно това, което искаш: [URL = http://www.gmvhdl.com / delay.htm] VHDL инстркцията - Забавяне Модел [/URL] Може би трябва да създадете сигнал, който знае кога боклуци изхвърлят чрез вашия модул, както и да използвате, че за да включите изхода или изключите. Предлагам ви да добавите нещо като това до края на вашия модул:
Code:
 finalOutput '0');
 
Добре, благодаря ви за това. Знам какво искате да го база, така че искам да използвам нещо като [КОД], ако (Fire'event И Огън = "1"), тогава ...... ComputationReady = '1 '[/CODE] Как мога да след това да настроите забавяне, искам? В този случай е 4 цикъла. Предполагам, използване на времето е безполезен извън на симулация. Така че имам нужда от нещо подобно на: [код] чакам 8 * clk'event [/ код] или нещо подобно?
 
Не се използва първата идея - създаването на часовник, който ще предизвика всички видове проблеми със синхронизирането. Най-добър само, за да се създаде брояч и изчакайте, докато тя достигне определена стойност.
 
Да не се предизвика нарастване на фронта на "пожар", този начин, вие ще използвате "огън" като нов часовник, вместо на контролен сигнал. Вместо това, проверете за старата стойност и да се сравни с новата стойност. След това започнете да се брои 4 такта. Преброяване 4 такта, може да стане чрез изместване на стойностите в регистъра промяна, или чрез създаване на държавната машина с брояч. Да се направи смяна се регистрирате тук: Ако приемем, декларации, като тези: [КОД] сигнал огън, въглища, активен: std_logic; сигнал броене: std_logic_vector (4 downto 0); [/CODE] ви нещо за това в синхронен ви процес: [CODE ], ако rising_edge (CLK) след това ако уволнен = "0" и огън = "1" и след това - започва да отброява активни
 
В един поточен дизайн, често ще искат да имат тръбопровод милион DAV (данни), че забавя ръкостискане сигнал, заедно с данните. Това не само забавя данни готови сигнал, но позволява на множество нови ценности, за да пътуват по пътя на данни в същото време. Ако мивката е регистриране на данните, според сигнала DAV, не е нужно да се прикрие невалидни изходни данни. Ако пътя на данните се работи последователно, а не поточен, например сериен единица делител, просто брояч DAV би било достатъчно.
 

Welcome to EDABoard.com

Sponsor

Back
Top