Leka, спасибо. Вы очень подробно ответили на мои вопросы. Тем не менее, осталось несколько моментов, которые хотелось бы уточнить.
Leka пишет:
долго пытался понять логическую разницу между "&" и "&&", но так и не понял пока. Можно подробно расписать смысл этой строки?
В данном случае все-равно. Можно поменять && на &, а выяснение разницы оставить на потом.
Повторю вопрос: Пожалуйста, объясните, что делает этот операнд: if((old==0)&&(p==1))en<=1.
Я правильно интерпретирую: если выражения (old=0) и (p=0) истинны, то en присваивается значение 1?
Можно ли этот оператор записать в таком виде (для трех сравниваемых функций): if((a==1)&&(b==0)&&(c==1)) d<=x?
reg[9:0]cnt; // Новый регистр?
А где еще хранить текущее значение счетчика интервала? "t12" хранит только измеренное значение.
Можно поменять алгоритм, и выдавать наружу не измеренное значение интервала, а сам счетчик интервала "cnt", тогда модуль "upd" должен производить сравнение только при установленном сигнале "en2" (в этот момент "cnt" будет содержать значение интервала). В этом случае "en2" надо заводить в "upd". Это, кстати, уменьшит значение ЛЕ (не нужен будет "t12"), что важно.
В данном случае, интерес представляет именно текущее (только что измеренное) значение интервала, т.е. сам счетчик выступает в роли регистра хранения сигнала.
Измерил длительность интервала (посчитал), передал результат счета дальше, и ждет начала очередного интервала, затем обнуляется, и начинает измерять следующий интервал, и т.д. В этом случае не требуется дополнительный промежуточный регистр для хранение результата.
Видимо, нужно добавить еще строку с командой обнуления счетчика в момент начала интервала измерения.
Leka пишет:
3) Как задается ...цикличность выполнения самих модулей?
3)Порядок модулей неважен, "работают" непрерывно и параллельно.
А если требуется запуск модуля только при определенных условиях, типа внешние события, прерывания или флаги? После begin добавлять if(проверка событий/условий/флагов)?
Здесь, видимо, должен быть еще один модуль, аналогичный первому: module det(clk,p,en) ?
Нет, м/б сколько угодно рабочих "копий" модуля, с разными сигналами, и только одно описание. 100шт КТ315 в схеме, и один "даташит" на него.[/quote]
Тогда не понятно, что является основанием в Вашем примере для повторного запуска модуля det с другими сигналами?
В целом очень многое прояснилось, еще раз благодарю. И буду готовить новые вопросы. :)