Дизайн FPGA с тактовой частотой задержки

В 50МГц часы, например, 1 секунда задержки, и выводит разрешающий сигнал с задержкой.

Во-первых вычислить, сколько раз синхронизации, MHZ = HZ 10 из шести квадратных. Т = 20ns

Вторая синхронизация требуется для числа семь сторон 5, а именно 5000_0000.

Затем вычисления требуется несколько регистров, требуемый двоичный калькулятор. 26-битовый регистр.

// --------- метод (моя формулировка) -------------------------------- ---------------
 // -------------- -------------- 5000_0000 4999_9999 + 1 = -------------- 
REG [ 25 : 0 ]; cnt_1s // 26-битовый регистр , чтобы поместить 4999_9999 
    Всегда @ ( posedge CLK или  negedge RST_N) 
     Бегин 
    IF (! RST_N) 
        cnt_1s <= 26 ' Д0; 
    еще  IF (cnt_1s < 26 ' d4999_9999) // Сохранить потребность 
        cnt_1s <+ = cnt_1s 1. ' B1; 
    еще
        cnt_1s <= cnt_1s;
 Конец 
провода cnt_done1s = (== cnt_1s 26 ' d4999_9999); 
// --------- нужно добавить метод разрешающий сигнал ------------- --------------------- 
РЕГ [ 25 : 0 ] cnt_1s; // 26-битовый регистр , чтобы поместить 4999_9999 
    Всегда @ ( posedge CLK или  negedge RST_N) 
     Бегин 
    ЕСЛИ ( ! RST_N) 
        cnt_1s <= 26 ' Д0; 
остальное  ЕСЛИ (delay_en)      // внешний входной сигнал включения, начинает отсчет 
             Бегин 
            ПЧ(cnt_1s < 26 ' d4999_9999) 
              cnt_1s <= cnt_1s + 1 ' b1; 
        остальное 
        cnt_1s <= cnt_1s;
             конец 
конец  
проволоки cnt_done1s = (cnt_1s == 26 ' d4999_9999); 

// ---------方法二------------------------------------- ----------- 
проволока cnt_done1s;
рег [ 25 : 0 ] cnt_1s;
    всегда @ ( posedge CLK или  negedge rst_n) 
     начать 
    если (! rst_n)
        cnt_1s <= 26 ' Д0; 
    остальное  ЕСЛИ (cnt_1s < 26 ' d4999_9999) 
        cnt_1s <+ = cnt_1s 1. ' B1; 
    в остальное 
        cnt_1s <= cnt_1s;
 Конец 
ASSIGN cnt_done1s = (== cnt_1s 26 ' d4999_9999); 
// ---- -------- Способ три -------------------------------------- 
t_one Параметр = 4999_9999;      // необходимо Сохранить 
REG [ 25 : 0 ] delay_cnt;     
 Всегда @ ( posedge CLK или negedgerst_n)
     если ! ( rst_n) 
      delay_cnt <= 26 ' d0; 
      если (delay_cnt == t_one) 
        delay_cnt <= 26 ' d0; 
      еще 
        delay_cnt <= delay_cnt + 1 ' b1; 
Провод delay_done = (delay_cnt == t_one)

 

рекомендация

отwww.cnblogs.com/jevonFPGA/p/11263102.html