製品情報>販売終了製品>特電PCI Express評価ボード>準備の準備

準備の準備

1-1.はじめに

 本チュートリアルは、特電PCI Express評価ボードを使ったシステムの開発について説明します。

1-2.ベンダIDとデバイスIDを決める

 特電PCI Express評価ボードを使った開発で最初にやるべきことは、PCIのベンダIDとデバイスIDを決めることです。

 

 ベンダIDとデバイスIDは、それぞれ16bitの値で、PCIの規格団体(PCISIG)が管理しています。ベンダIDを得るにはPCISIGの会員にならなければなりません。なお、会費は1年間で00です。

 

 ベンダIDは、本来はPCISIGから値を割り当ててもらわなければなりませんが、(社内や自宅など)閉じた範囲内で実験するのであれば、既存のIDとかぶらないように自由に設定すればよいでしょう。ただし、絶対に外部に流出しないよう気をつけてください。

 

 また、特殊電子回路はベンダID 0x1BC8を割り当てられていますので、本ボードでサンプルデザインを動かす場合にはVID=1BC8、DID=1234を使用していただいて構いません。

 

1-3.サンプルVHDLコードにVIDとDIDを設定する

特電のホームページから、PCI Expressコアのサンプルデザイン「GPIOサンプル」をダウンロードします。

このファイルを解凍すると、main.vhdというファイルがあります。

 

テキストエディタでmain.vhdを開きます。85行目付近にベンダIDとプロダクトIDの設定箇所があります。

この場所に、先のベンダIDとデバイスIDを4桁の16進数で記入します。

    constant customize_c           : std_logic_vector(159 downto 0) :=

                       x"FF000000"   -- [159:128]  bar2 addr space (16MBytes)

                     & x"FFF00000"   -- [127:96]   bar1 addr space (1MBytes)

                     & x"FFFFC000"   -- [95:64]    bar0 addr space (16kBytes)

                     & x"110000"     -- [63:40]  class code

                     & x"01"         -- [39:32]  revision id

                     & x"1234"       -- device id

                     & x"1BC8" ;     -- vendor id

 

1-4.INFファイルにVID、DIDを設定する

特電のホームページから、PCI Expressの「汎用デバイスドライバ」をダウンロードします。

このファイルを解凍すると、中にtkdnpcie.infというファイルがあります。

 

テキストエディタでtkdnpcie.infを開きます。最終行にベンダIDとプロダクトIDの設定箇所があります。

この場所に、先のベンダIDとデバイスIDを4桁の16進数で記入してください。

 

    [Strings]

    TOKUDEN = "特殊電子回路株式会社"

    NP1025A.DriverDesc  = "NP1025A PCI Express 評価ボード"

    Generic.DriverDesc  = "PCI Express Generic Device Driver"

    TokudenPcie.SvcDesc = "特電 PCI Express デバイスドライバ "

    SERVICE_KERNEL_DRIVER=1

    SERVICE_AUTO_START=2

    SERVICE_DEMAND_START=3

    SERVICE_DISABLED=4

    SERVICE_ERROR_NORMAL=1

    PCI_VEN_DEV_ID=PCI\VEN_1BC8&DEV_1234

 

 

1-5.XILINX WebPACK ISEをセットアップする

XILINX社のWebサイトからFPGAの開発ツールである「WebPACK ISE」をダウンロードします。

WebPACKは無償でダウンロードすることができます。最新バージョンは11です。当社ではISE 11を用いて開発・検証を行っています。WebPACKをダウンロード(数Gバイトあります)したら、インストールし、セットアップしてください。

1-6.サンプルデザインを論理合成する

特電PCI Expressコアのサンプルデザイン「GPIOサンプル」を解凍したら、そのフォルダの中にIPコアのネットリストファイル(pciecore.ngc)をコピーします。ネットリストファイルは、「IPコア」からダウンロードできます。

 

なお、GPIOサンプルの解凍先は、空白文字や日本語文字を含まないフォルダにしてください。そうしないと、WebPACKの動作に影響をきたす恐れがあります。

 

WebPACKを起動したら、その中にGPIOサンプルの中にあるプロジェクトファイル(fpga.ise)を開き、次の図のような画面が開きます。

 

画面左上のツリー表示の、main と書かれたところにカーソルを合わせます。

 

次に、「Generate Programming File」を右クリックし、Rerun Allを実行します。

 

上の操作を行うと、FPGAの論理合成と配置配線が行われます。

論理合成と配置配線には2~3分を要します。

 

もし途中でエラーが出てしまう場合は、

 ・ベンダIDとプロダクトIDは正しく設定されているか

 ・ネットリストファイル(pciecore.ngc)がプロジェクトのフォルダにコピーされているか

 ・プロジェクトのフォルダ名に、空白文字や日本語文字が含まれていないか

などを確認してください。

 

1-7. XILINX ISE11の設定オプションにご注意!

XILINX FPGAの開発を行うにはXILINX ISE (またはWebPack)が必要ですが、ISE11のデフォルトの設定では、I/O内のフリップフロップが使われる設定になっていません。このため、入出力のタイミングをきっちり作った正確に作ったつもりでも、予期しない遅延が入ってしまって、正確なタイミングを出せないことがあります。周辺ICとのインタフェースにおけるセットアップ・ホールドタイムの不足や、論理合成後のタイミングエラーを引き起こします。

 

具体的に言うと、

process(clk) begin

   if(clk'event and clk='1') then

       input_signal_X <= input_signal_X_ip;

       output_signal_X_op <= output_signal_X;

   end if;

end process;

 

のように書くと、input_signal_Xやoutput_signal_XにはIOB内のIFFやOFFが適用されることが期待されます。しかし、ISE11ではそうなりません。CLB内の通常のFFが使われてしまいます。

 

この問題を回避するには、Implement DesignのオプションでProcess Propertyを開き、

 

次にMap Propertiesタブを開いて、Pack I/O Registers/Latches into IOBsをFor Input and Outputsにします。

 

論理合成後のDesign Summaryで、IOB Propertiesを見たときに、IFF1やOFF1が使われいれば成功です。

 

貴方の設計したI/Oは、設計したとおりのタイミングで動くでしょう。

ISE11では、この設定をしないと、正しく動作しないデザインが出来上がってしまいます。

 

1-8.出来上がったファイルの確認

論理合成と配置配線が完了すると、あなたの決めたベンダID、デバイスIDの入ったBitStreamファイルが生成されます。

BitStreamファイルの名前はmain.bitです。

このファイルが出来上がったことを確認しておいてください。

 

 

 


© 2017 TokushuDenshiKairo Inc. All rights reserved