Shaos wrote:они были все укуренные это точно...



Ну, такая концепция. Но пользоваться можно вполне.
Moderator: Shaos
Shaos wrote:они были все укуренные это точно...
Вобще-то они там двигаются вручную, если надо. Я тоже разок был в шоке, когда то, что уже работало,IgorR76 wrote:Так эта зараза Квартус каждый раз при перекомпиляции расставляет элементы по разному, случайно. Приходится по 5-10 раз компилировать, чтоб заработало так, как надо.
угу - примерно вот так работаютLavr wrote:Но, как показывает практика - вполне работают асинхронные схемы в FPGA...Shaos wrote:асинхронные схемы для FPGA противопоказаны - мне это рассказали на одном симпозиуме индустриальных железячников...
Приходится по 5-10 раз компилировать, чтоб заработало...
Это он совсем не про то, а про то, что Квартус расставляет расставляет элементы по разному,Shaos wrote:угу - примерно вот так работаютLavr wrote:Но, как показывает практика - вполне работают асинхронные схемы в FPGA...Shaos wrote:асинхронные схемы для FPGA противопоказаны - мне это рассказали на одном симпозиуме индустриальных железячников...
Приходится по 5-10 раз компилировать, чтоб заработало...
Учусь по статьям на марсоходе(надеюсь не входит в реестр запрещенных или бранных выражений) и до просветления мне далеко.Shaos wrote: Самая укурка имеет место быть с case/casez/casex
см.https://www.verilogpro.com/verilog-case-casez-casex/
Да нет. Там нужно просто сразу понять, что это не программа в привычном смысле, а "это происходит одновременно".Icer wrote:Сам процесс перехода с программирования процев и мк на программирование плисс - вот точно укурка.
Так что же с ними не так?Shaos wrote: Самая укурка имеет место быть с case/casez/casex
см.https://www.verilogpro.com/verilog-case-casez-casex/
Вроде бы понял, но формулировка заставила долго гуглить. {} позволяет объединить сигналы в массив и работать как с единым целым.Sorgelig wrote:{} было отдано на bit concatenation
Почти во всех статьях встречаю, что ":=" зло, но если оно работает и присутствует в языке -> необходимое зло. Особого понимания как оно применяется пока нет и даже спросить не знаю о чем.Sorgelig wrote:Только блокирующие := разрешены приучающие к плохому стилю HDL программирования.
Ну то, что они как бы есть, но использовать их нежелательно...Icer wrote:Больше подробностей и кода товарищи!Так что же с ними не так?Shaos wrote: Самая укурка имеет место быть с case/casez/casex
см.https://www.verilogpro.com/verilog-case-casez-casex/
While wildcard case comparison can be useful, it also has its dangers. Imagine a potentially dangerous casez statement where the case expression is a vector and one bit resolves to a “Z”, perhaps due to a mistakenly unconnected input. That expression will match a case item with any value for the “Z” bit! To put in more concrete terms, if the LSB of irq in the above code snippet is unconnected such that the case expression evaluates to 3’b00Z, the third case item will still match and int0 will be set to 1, potentially masking a bug!
Even wilder: casex
Now that we understand the usage and dangers of casez, it is straight-forward to extend the discussion to casex. casex allows “Z”, “?”, and “X” to be treated as don’t care values in either the case expression and/or the case item when doing case comparison. That means, everything we discussed for casez also applies for casex, plus “X” is now also a wildcard. In my previous article on Verilog X Optimism I discussed how X’s can propagate around a design and mask design issues. These propagated X’s can easily cause problems when combined with casex statements. To avoid these problems, the recommendation from RTL Coding Styles That Yield Simulation and Synthesis Mismatches is not to use casex at all for synthesizable code.
Ну тот, кто это писал явно сам укуренный был ибо смешал разные понятия.Shaos wrote: Now that we understand the usage and dangers of casez, it is straight-forward to extend the discussion to casex. casex allows “Z”, “?”, and “X” to be treated as don’t care values in either the case expression and/or the case item when doing case comparison. That means, everything we discussed for casez also applies for casex, plus “X” is now also a wildcard. In my previous article on Verilog X Optimism I discussed how X’s can propagate around a design and mask design issues. These propagated X’s can easily cause problems when combined with casex statements. To avoid these problems, the recommendation from RTL Coding Styles That Yield Simulation and Synthesis Mismatches is not to use casex at all for synthesizable code.
переписал свой быдлокод правда без casexSorgelig wrote:if else if else if else добавляющего нехилую задержку при длинной if цепочке
3 if - не так много чтобы переписыватьIcer wrote:переписал свой быдлокод правда без casexSorgelig wrote:if else if else if else добавляющего нехилую задержку при длинной if цепочке
Так лучше?
Code: Select all
if(h_cnt == HSYNC_BEG) hs <= 1;
if(h_cnt == HSYNC_END) hs <= 0;
if(h_cnt == HBLANK_BEG) hblank <= 1;
if(h_cnt == HBLANK_END) hblank <= 0;