Можно я попробую парой строк кода проиллюстрировать тезисы AlexG про распределение клоков?
Было годно для симуляции, но катастрофически и непредсказуемо рушится при синтезе, как только дизайн становится сложнее :
Стало хорошо, годно для синтеза и устойчиво к попаданию мюонов потому, что теперь все регистры тактируется одним клоком. При синтезе достаточно только убедиться, что сигналы clock enable стабилизируются к приходу очередного фронта mclk. Это и человеку просто сделать, и Квартусу понятно, что надо оптимизировать.Код:reg [3:0] clock_div; always @(posedge mclk) clock_div <= clock_div + 1; wire evil_derived_clock_div16 = clock_div[3]; wire evil_derived_clock_div8 = clock_div[2]; .. always @(posedge evil_derived_clock_div16) begin // то, что будет тактировано этим клоком разойдется по фазе с mclk и с evil_derived_clock_div8 end always @(posedge evil_derived_clock_div8) begin // то, что будет тактировано этим клоком разойдется по фазе с mclk и с evil_derived_clock_div16 end
Код:reg [3:0] clock_div; always @(posedge mclk) clock_div <= clock_div + 1; wire clock_enable_div16 = ~|clock_div; // держится один такт пока все разряды == 0 wire clock_enable_div8 = ~|clock_div[2:0]; // держится один такт, пока 0000 или 1000 ... always @(posedge mclk) if (clock_enable_div16) begin // все записи во все регистры тактируются одним клоком mclk, но разрешены только раз за 16 тактов end always @(posedge mclk) if (clock_enable_div8) begin // все записи во все регистры татируются одним клоком mclk, но разрешены только раз за 8 тактов end


Ответить с цитированием

Так вот, не ППВМ (ака FPGA), а синтезатору
Размещение рекламы на форуме способствует его дальнейшему развитию 
