Pull to refresh

Comments 9

Предполагается, что кнопка будет отпущена 

Не понял, при нажатии кнопка подключает вход к питанию или земле?

последовательная цепь управляемых буферов

Вместо этого ставлю RC цепь. Проще схема, меньше потребление и удобнее регулировать задержку сигнала. Ваше мнение?

>>последовательная цепь управляемых буферов

Вроде бы, если на разрешающем входе bufif1 ноль, но выход в состоянии Z. Непонятно, чего добивается автор, когда кнопку подключат на вход к четырем последовательным блокам bufif1.

Полагаю, что четыре последовательных элемента реализуют задержку импульса.

так не получится, т.к. при нуле на входе будет Z на выходе, а не 0.

для gowin задержку можно так реализовать с помощью LUT, чтобы при постсинтезе не выбрасывалась цепочка буферов и не оставался только один буфер:

LUT1 buf1_ (
.I0(button1),
.F(in1)
);
defparam buf1_.INIT=2'b10;

LUT1 buf2_ (
.I0(in1),
.F(in2)
);
defparam buf2_.INIT=2'b10;
LUT1 buf3_ (
.I0(in2),
.F(in3)
);
defparam buf3_.INIT=2'b10;

LUT1 buf4_ (
.I0(in3),
.F(in4)
);
defparam buf4_.INIT=2'b10;

LUT2 and_(
.I0(button1),
.I1(in4),
.F(led0)
);
defparam and_.INIT=4'h8;


постсинтез view:

так не получится, т.к. при нуле на входе будет Z на выходе, а не 0.

Получится, триггеру без разницы на том контакте сигнал Z, это RS триггер в асинхронном режиме. Про связь AND и Z я попутал с другими своими схемами (здесь убрал упоминание о том, что элемент AND позволяет подавать на один вход даже сигнал ошибки, если на втором входе сигнал нуля, в этой схеме это знание не нужно). Больше комментария в сутки - не могу. В симуляторе работает - значит и так будет работать. Мне только понять как оптимизацию отключить (раньше пробовал в версии для обучения - не получалось, сейчас по новой начну, с другой версией, всё никак не решусь после прошлых нудач). Больше комментария в день не могу оставить.

а как вообще можно для модуля отключить оптимизацию в Gowin ?

Cледил за афтаром какое-то время, почитал его комментарии, и так и не понял кто и за что ему в какой-то момент так сильно подгадил.

По моему скромному мнению, железный антидребезг – это кнопка с двумя контактами, тремя выводами и триггер. При нажатии кнопки замыкается один контакт, при отпускании кнопки замыкается другой контакт. Такие кнопки есть(были) в мышах, но там обычно только два вывода из трёх используются. Кому интересно, можно разобрать кнопку из мыши и посмотреть её устройство.

Спасибо за информацию. Мнений столько сколько и людей, и если говорить о антидребезге в ракурсе прохождения отрезка времени до фазы устойчивого сигнала от момента нажатия, то я например всё-же реализовал на элементах трёх состояний, как в схеме. Триггер тоже создаст задержку, безусловно, и тоже может быть даже выполнит функцию антидребезга, но я если честно не проверял - пришёл к выводу что у производителей FPGA с отключением функций оптимизации всё плохо. Понятно - их задача удешевить продукт, но мне это не подходит, вероятно прийдётся покупать или устаревшее оборудование или вообще что-то своё придумывать, чтобы получить FPGA нужного мне класса, позволяющие реализовывать архитектуры как в счётчике (и сумматоров и регистров). В старых версиях Gowin Eda не видела памяти в моих регистрах и не вырезала их, но в последних версиях они сделали оптимизацию особенно агрессивной, и видимо это их напроавление развтия и выбор, жаль - не по пути, можно пожелать только удачи. Я уже давно-бы реализовал счётчик со своими архитектурами на FPGA, но прочтение документации не помогает, а из сообщений в сети понятно, что проблема распространённая, и по сути производители поступают не честно, заявляя что FPGA позволяет создавать свои схемы без пайки и прочего, на самом деле только чужие схемы - свои будут жестоко вырезаться оптимизацией. А так уже я начинаю задумываться о архитектуре самих FPGA и вариантах собственного производства, не ради каких-то выгод (конкурентноспособное я конечно не создам в кустарных условиях), а просто для получения возможности развития новых архитектур, старые стали слишком агрессивными, как минимум если смотреть на изменения в работе компиляторов от версии к версии. С агрессивной политикой (в данном случае направление развития оптимизации в компиляторе) очень небезопасно рядом, даже если речь идёт о получении кем-то прибыли с её проявлений. Всё это время, между делами я читал и искал - ничего, кроме описания подобных проблем и безуспешного поиска их решений другими.

Sign up to leave a comment.

Articles