はじめに
Altera® の FPGA では、デバイスのIOブロック(IO Element と言います)内にプログラマブルな遅延素子が用意されています。
通常では、SDC ファイルを使って入力ピン、出力ピンにタイミング設定を行うことで、Quartus がコンパイルを行うときに、必要に応じて自動で遅延素子を使ってタイミング調整を行います。
しかしながら、これらの遅延素子はマニュアルで任意に設定することも可能です。
今回は、これらの遅延素子をマニュアルで設定する方法についてご紹介します。
FPGA の IO ブロック (IOE) の構造
ここでは、Cyclone IV E FPGA のプログラマブル遅延素子を設定する方法についてご紹介します。
下記が Cyclone IV E FPGA のIOE の構造です。
上記の図にある
「Output Pin Delay」
「Input Pin to Input Register Delay or Input Pin to Logic Arrey Delay」
ブロック内がプログラマブルな遅延素子であり、このブロック内の遅延を設定することができます。
Input Pin Delay の設定方法
Input Pin Delay は2種類あります。
① Input Pin to Input Register Delay
- IOE 内のDFF を使用した場合に有効になるプログラマブル遅延素子(分解能 8)
② Input Pin to Logic Arrey Delay
- IOE 内のDFF を使用しない場合に有効になるプログラマブル遅延素子(分解能 7)
※分解能による遅延値は、ピンのロケーションやデバイスの種類に依存しますので、
下記の資料 ”IOE Programmable Delay” の項目をご参考ください。
設定は、Quartus® の Assignment Editor で行います。
(Quartus® の Assignment メニューより、Assignment Editor を選択します)
「To」 欄に入力ピン名、
「Assignment Name」欄には、①の場合「Input Delay from Pin to Input Register」を選択し、
②の場合は「Input Delay from Pin to Internal Cells」を選択し、
「Value」欄には、任意の数字を入れます。
下記は、「Input Delay from Pin to Input Register」を 5 に設定した場合の設定例です。
Quartus® でコンパイルを実行し、設定した値が有効になっていることを確認します。
コンパイルレポートの、Fitter -> Resource Section -> Delay Chain Summary にて確認できます。
Output Pin Delay の設定方法
Output Delay の設定も Quartus® の Assignment Editor で行います。
(Quartus® の Assignment メニューより Assignment Editor を選択します)
Outout Pin Delay 設定の分解能は 2 です。
Output Pin Delay 設定の場合、IOE 内の DFF が使用されている必要があります。
※分解能による遅延値は、ピンのロケーションやデバイスの種類に依存しますので、
下記の資料 ”IOE Programmable Delay” の項目をご参考ください。
「To」 欄に出力ピン名、
「Assignment Name」欄には、「Delay from Output Register to Output Pin」 を選択し、
「Value」欄には、任意の数字を入れます。
下記は、「Delay from Output Register to Putput Pin」 を 1 に設定した場合の設定例です。
コンパイルレポートの、Fitter -> Resource Section -> Delay Chain Summary にて確認できます。