/* * FPGA: XC3S50 で遊ぶ * by uratan! 2005.1.10 */ このファイルに取り込まれている以下の 3ファイルを切り出して、適当な フォルダに置いてください。 test.npl --- project file top.v --- verilog source top.ucf --- pin assignment file ISE WebPACK (私の場合は 6.3.0.3i) がインストールされている状態で、 test.npl をダブルクリックすると "Project Navigator" が起動しますので、 左下 Process View の中の "Generate Programming File" という行を ダブルクリックします。 ガリガリと処理が始まって、最終的に "top.bit" というファイルができます。 この top.bit を XC3S50 に送り込むためには まあいろいろ方法がある のですが、(最初は)パラレル接続で iMPACT を使うのがわかりやすいと思います。 なお、XC3S50 とパラレルライターとの接続は、パラレルライターに 3.3V を 供給し信号振幅 3.3V + 直列抵抗 100Ωにて行っています。 http://www.nahitech.com/nahitafu/dwm200501/spartan3.html に詳しく説明が ありますので、ご覧になってください。 パラレル接続した状態で iMPACT を起動して、Wizrad に "Configure Devices", "Boundary-Scan Mode", "Automatically connect to cable and identify Boundary-Scan chain" などと答えていくと、自動的にデバイスがスキャンされてアイコンが現れます。 (ROM も貼ってあれば 2つ出てくる) このアイコンの、XC3S50 の方を右クリック して "Assign New Configuration File..." で top.bit を割り当てておき、 同様に右クリックで "Program" を選んで XC3S50 に送り込むことができます。 ("Program" のオプションでは "Verify" を選ばない) FPGA には内部の ROM がありませんので電源を切ると回路はなくなります。 :::::::::::::::::::: ::::: test.npl ::::: :::::::::::::::::::: ------------8<------------- cut here --------------->8------------- JDF G // Created by Project Navigator ver 1.0 PROJECT test DESIGN test DEVFAM spartan3 DEVFAMTIME 0 DEVICE xc3s50 DEVICETIME 1103882209 DEVPKG vq100 DEVPKGTIME 1103882209 DEVSPEED -4 DEVSPEEDTIME 0 DEVTOPLEVELMODULETYPE HDL TOPLEVELMODULETYPETIME 0 DEVSYNTHESISTOOL XST (VHDL/Verilog) SYNTHESISTOOLTIME 0 DEVSIMULATOR Other SIMULATORTIME 0 DEVGENERATEDSIMULATIONMODEL VHDL GENERATEDSIMULATIONMODELTIME 0 SOURCE top.v DEPASSOC top top.ucf [Normal] xilxBitgCfg_GenOpt_MaskFile=xstvhd, spartan3, Implementation.t_bitFile, 1103901626, True xilxBitgCfg_GenOpt_ReadBack_Spartan3=xstvhd, spartan3, Implementation.t_bitFile, 1103901626, True xilxBitgStart_Clk=xstvhd, spartan3, Implementation.t_bitFile, 1103883222, JTAG Clock [STRATEGY-LIST] Normal=True ------------8<------------- cut here --------------->8------------- ::::::::::::::::: ::::: top.v ::::: ::::::::::::::::: ------------8<------------- cut here --------------->8------------- /* * test for FRK-S35 (DesignWave XC3S50 sample board) * by uratan! 2004.12.24 */ /* * 1. select 'JTAG Clock' at 'Startup Options' * in Property of 'Generate Programming File' * * 2. when 'Program'ing at iMPACT, do NOT select 'Verify' checkbox */ module top(xled_grn, xled_red, xsw_pushed); output xled_grn; // #47, IO_L27P/D1 output xled_red; // #49, IO_L01P/VRN input xsw_pushed; // #50, IO_L01N/VRP reg[3:0] counter; /* * this counter counts 'CHATTERING' of switch, it is correct. */ always@(negedge xsw_pushed) counter = counter - 1; assign xled_grn = ~xsw_pushed; assign xled_red = ~counter[3]; endmodule ------------8<------------- cut here --------------->8------------- ::::::::::::::::::: ::::: top.ucf ::::: ::::::::::::::::::: ------------8<------------- cut here --------------->8------------- #PINLOCK_BEGIN #Fri Dec 24 21:44:29 2004 #PINLOCK_END #PACE: Start of Constraints generated by PACE #PACE: Start of PACE I/O Pin Assignments NET "xled_grn" LOC = "P47" | SLEW = SLOW ; NET "xled_red" LOC = "P49" | SLEW = SLOW ; NET "xsw_pushed" LOC = "P50" ; #PACE: Start of PACE Area Constraints #PACE: Start of PACE Prohibit Constraints #PACE: End of Constraints generated by PACE ------------8<------------- cut here --------------->8------------- ---- uratan@miomio.jp