[an error occurred while processing this directive]
|
то, что в приведенном коде есть ошибки - это мелочи. Кто не опечатывается? однако, сколько ведь твердили людям: не пользуйте асинхронные схемы без особой нужды. Данная схема глюкавая В ПРИНЦИПЕ.
Так как signalSet и clockCnt взаимно асинхронные, между их фронтами возможна произвольная разница во времени. По фронту signalSet взводится flag. Предположим, что как раз во время переключения сигнала flag в 1 приходит фронт clockCnt. Что произойдет? А это зависит от разности времён прохождения сигнала флаг к различным управляющим входам триггеров, тактируемых от сигнала clockCnt. Таких входов несколько в счетчике и один вход еще в автомате сброса флага. Рассчитывать на то, что flag прийдет на все эти входы одновременно, и все входы восприймут его состояние одинаково - слишком самонадеянно. А если нет - то прогнозируемые неприятности разнообразны, от загрузки в счетчик неправильного значения до игнорирования факта загрузки вообще. Причем, так как вероятность такого события довольно мала - то и тестирование может не помочь, так и будет работать в изделии, изредка сбиваясь.
Посмотрите лучше вариант SAZH - задача в общем-то тривиальная и решение стандартное: ставится синхронизатор и не напрягаются мозги по поводу описанного выше геморроя.
E-mail: info@telesys.ru