FPGAの設計は、遅延クロックド

50MHZのクロックで、例えば、1秒の遅延、及びイネーブル信号を遅延させて出力します。

まず何回タイミング、MHZ = HZ平方6の10を計算します。T = 20nsの

第2のタイミングは、数7人の関係者5、つまり5000_0000ために必要。

次いでコンピューティングは、いくつかのレジスタ、必要なバイナリ計算を必要とします。26ビットレジスタ。

// ---------方法(私の言葉遣い)-------------------------------- ---------------
 // -------------- -------------- 5000_0000 4999_9999 + 1 = -------------- 
REG [ 250 ]; cnt_1sは// 26ビット4999_9999を配置するレジスタ
    常に(@ posedgeの CLK または negedgeのRST_N) 
     開始
    IF(!RST_N)
        cnt_1s <= 26であります' D0; 
    他の IF(cnt_1s < 26である' d4999_9999)//必要性を保存 
        <+ = cnt_1s cnt_1s 1。B1を、
    そうでありません
        cnt_1s <= cnt_1s;
 エンド
ワイヤ cnt_done1s =(== cnt_1s 26である' d4999_9999); 
// ---------イネーブル信号のメソッドを追加する必要が------------- --------------------- 
REG [ 250 ] cnt_1s; // 4999_9999を配置する26ビットのレジスタ
    は、常に @(posedgeの CLK または negedgeのRST_N) 
     開始
    IF( !RST_N)
        cnt_1s <= 26であるD0、
 のIF(delay_en)      // 有効外部信号入力は、カウントを開始し
             始め
            たIF(cnt_1s < 26 ' d4999_9999) 
              cnt_1s <= cnt_1s + 1 'はB1; 
        
        cnt_1s <= cnt_1s。
             エンド
エンド 
ワイヤ cnt_done1s =(cnt_1s == 26 ' d4999_9999)。

// ---------方法二------------------------------------- ----------- 
ワイヤcnt_done1s。
REG [ 250 ] cnt_1s。
    常に(@ posedgeの CLK または negedgeのRST_N) 
     始める
    場合(! RST_N)
        cnt_1s<= 26である' D0、
    他の IF(cnt_1s < 26である' d4999_9999) 
        cnt_1s <+ = cnt_1s 1。' B1; 
    他の
        cnt_1s <= cnt_1s;
 エンド
ASSIGN cnt_done1s =(== cnt_1s 26である' d4999_9999); 
// -----方法3 ------- -------------------------------------- 
パラメータt_one = 4999_9999;      // 保存する必要が
REG [ 250 ] 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