ピンアサイン
入出力をチップに合わせて、指定するには
次の2つの方法があります。
- ファイルに直接ピンアサイン情報を書込む
- GUI画面で操作
どちらにしても、UCF(User Constraint File)を
利用して指定します。
ここでは、ファイルに情報を書込む方法を紹介します。
UCFの内容は、次のような単純なテキストです。
NET "i50MClk" LOC = "P56" ;
NET "oLEDA" LOC = "P106" ;
NET "oLEDB" LOC = "P105" ;
NET "iDIP_SWAn<0>" LOC = "P78" ;
NET "iDIP_SWAn<1>" LOC = "P84" ;
NET "iDIP_SWAn<2>" LOC = "P89" ;
NET "iDIP_SWAn<3>" LOC = "P101" ;
NET "iPBAn" LOC = "P107" ;
NET "iIOClk" LOC = "P58" ;
NET "oLED<0>" LOC = "P132" ;
NET "oLED<1>" LOC = "P124" ;
NET "oLED<2>" LOC = "P113" ;
NET "oLED<3>" LOC = "P112" ;
NET "oLED<4>" LOC = "P117" ;
NET "oLED<5>" LOC = "P116" ;
NET "oLED<6>" LOC = "P123" ;
NET "oLED<7>" LOC = "P122" ;
NET "iSWn<0>" LOC = "P111" ;
NET "iSWn<1>" LOC = "P114" ;
NET "iSWn<2>" LOC = "P136" ;
NET "iSWn<3>" LOC = "P141" ;
NET "iSWn<4>" LOC = "P120" ;
NET "iSWn<5>" LOC = "P119" ;
NET "iSWn<6>" LOC = "P129" ;
NET "iSWn<7>" LOC = "P128" ;
NET "oSEG_SEL<0>" LOC = "P98" ;
NET "oSEG_SEL<1>" LOC = "P83" ;
NET "oSEG_SEL<2>" LOC = "P75" ;
NET "oSEG_SEL<3>" LOC = "P74" ;
NET "oSEG_SEL<4>" LOC = "P77" ;
NET "oSEG_SEL<5>" LOC = "P76" ;
#NET "oSEG_A" LOC = "P82" ;
#NET "oSEG_B" LOC = "P81" ;
#NET "oSEG_C" LOC = "P86" ;
#NET "oSEG_D" LOC = "P85" ;
#NET "oSEG_E" LOC = "P88" ;
#NET "oSEG_F" LOC = "P87" ;
#NET "oSEG_G" LOC = "P92" ;
#NET "oSEG_DP" LOC = "P91" ;
NET "oSEG<0>" LOC = "P82" ;
NET "oSEG<1>" LOC = "P81" ;
NET "oSEG<2>" LOC = "P86" ;
NET "oSEG<3>" LOC = "P85" ;
NET "oSEG<4>" LOC = "P88" ;
NET "oSEG<5>" LOC = "P87" ;
NET "oSEG<6>" LOC = "P92" ;
NET "oSEG<7>" LOC = "P91" ;
NET "iS_RXD" LOC = "P52" ;
NET "oS_TXD" LOC = "P66" ;
NET "oS_RTS" LOC = "P39" ;
NET "iS_CTS" LOC = "P44" ;
NET "oEXT<0>" LOC = "P43" ;
NET "oEXT<1>" LOC = "P51" ;
NET "oEXT<2>" LOC = "P50" ;
NET "oEXT<3>" LOC = "P54" ;
NET "oEXT<4>" LOC = "P53" ;
NET "oEXT<5>" LOC = "P59" ;
NET "oEXT<6>" LOC = "P68" ;
NET "oEXT<7>" LOC = "P67" ;
NET "oEXT<8>" LOC = "P70" ;
NET "iDIP_SW0n<0>" LOC = "P41" ;
NET "iDIP_SW0n<1>" LOC = "P69" ;
NET "iDIP_SW0n<2>" LOC = "P48" ;
NET "iDIP_SW0n<3>" LOC = "P47" ;
NET "oVGA_G" LOC = "P31" ;
NET "oVGA_B" LOC = "P3" ;
NET "oVGA_R" LOC = "P2" ;
NET "oVGA_HSYNC" LOC = "P5" ;
NET "oVGA_VSYNC" LOC = "P4" ;
NET "oDRV<0>" LOC = "P8" ;
NET "oDRV<1>" LOC = "P7" ;
NET "oA_OUT<0>" LOC = "P14" ;
NET "oA_OUT<1>" LOC = "P17" ;
NET "oA_OUT<2>" LOC = "P16" ;
NET "oA_OUT<3>" LOC = "P21" ;
NET "oA_OUT_ZERO" LOC = "P20" ;
NET "oSP" LOC = "P23" ;
NET "iPBn<0>" LOC = "P6" ;
NET "iPBn<1>" LOC = "P10" ;
NET "iPBn<2>" LOC = "P18" ;
NET "iPBn<3>" LOC = "P24" ;
UCFの拡張子は、「ucf」です。
接頭辞の「i」、「o」は、それぞれinput、outputの
頭文字なので、UCFファイルの内容から、接続部品と
入出力方向を読み取れます。
市販のボードを購入すると、I/Oにスイッチ
LEDなどが接続された拡張基板が付属します。
拡張基板とFPGAの各ピンが、どう接続されて
いるかは、UCFファイル内容と回路図を照合
して理解します。
logtest.ucfであれば、UCFファイルの内容は
次のようにします。
NET "AIN" LOC = "P111" ;
NET "BIN" LOC = "P114" ;
NET "XOUT" LOC = "P113" ;
プロジェクトのフォルダに、logtest.ucfを
作成しておきます。
プロジェクトに、logtest.ucfを追加する
操作は、メニューバーのProjectのサブ
メニューで、Add Sourceをクリックします。
ファイル選択ダイアログが開くので
logtest.ucfを選択します。
選択したら、開くボタンをクリックします。
追加して、処理を終わるためにOKボタンを
クリックします。
追加されたことを確認できます。
ピンアサインが変わったので「signal orange」
で、次の操作を待つ状態になります。
Implement Designをダブルクリックして
配置配線を更新します。。
「signal all green」で、正常終了を確認します。
Generate Programming Fileをダブルクリックして
必要なファイルを作成します。
これで、ピンアサインは終了です。
目次
前
次