ピンアサイン

 入出力をチップに合わせて、指定するには
 次の2つの方法があります。

 どちらにしても、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をダブルクリックして
 必要なファイルを作成します。



 これで、ピンアサインは終了です。


目次

inserted by FC2 system