| ||||||||
| ||||||||
|
もどる
ここではLUPOのFPGAをプログラムするためのプロジェクト作成手順(ひな型まで)を書いておきます。
○ Xilinx ISEを起動する
○ File -> New Projectでプロジェクトウィザードを開く
○ 名前を適当につける。自動的にそのディレクトリを作成してくれる。Top-level source typeはHDLにしておく。
○ 次にDevice Propertiesが出てくるので、以下のように設定しておく。
○ Create New Sourceが出てくるので、とりあえずメインとなる部分を作っておく。
○ I/Oポートを聞かれるが、ここでは何もしないで次へ。
○ さらに、すでに存在するSourceを追加するかと聞かれるが、スルーして次へ。そしてFinish。
○ DesignのところでAdd Copy of Sourceボタンを押して、CAMACの場合はCLupo_standard.ucf (VMEの場合はVLupo_standard.ucf)をプロジェクトに追加する。
○ 次に使うPortをentity hoge 〜 end hogeまでの間に書いておく。(ucfに書いてあるものはすべて書いておくべし)
○ LVDSを使う場合にはディファレンシャルバッファを用意してあげる。entity CLUPOIORegister is port ( LED : out STD_LOGIC_VECTOR (7 downto 0); LVDS_CLKn : in STD_LOGIC; LVDS_CLKp : in STD_LOGIC; LVDSn : in STD_LOGIC_VECTOR (15 downto 0); LVDSp : in STD_LOGIC_VECTOR (15 downto 0); -- LVDSn : out STD_LOGIC_VECTOR (15 downto 0); -- LVDSp : out STD_LOGIC_VECTOR (15 downto 0); A : in STD_LOGIC_VECTOR (7 downto 0); CLOCK : in STD_LOGIC; INIT : in STD_LOGIC; IP0 : in STD_LOGIC; IP : in STD_LOGIC_VECTOR (3 downto 0); UDI : in STD_LOGIC_VECTOR (3 downto 0); UDO : out STD_LOGIC_VECTOR (3 downto 0); IRQ : out STD_LOGIC; OP : out STD_LOGIC_VECTOR (3 downto 0); RD : out STD_LOGIC_VECTOR (31 downto 0); WR : in STD_LOGIC_VECTOR (31 downto 0); RD_STRB : in STD_LOGIC; WR_STRB : in STD_LOGIC); end CLUPOIORegister; architecture Behavioral of CLUPOIORegister is ..................
ch0は2つに分岐していて、片方をグローバルクロックにつなげられるので、それにはIBUFGDSを使う。
もう片方はch1-15と同様に一般のポートにつながっている。そちらにはIBUFDSまたはOBUFDSを使う。
component IBUFGDS port ( O : in STD_LOGIC; I : out STD_LOGIC; IB : out STD_LOGIC); end component; component IBUFDS port ( O : in STD_LOGIC; I : out STD_LOGIC; IB : out STD_LOGIC); end component; component OBUFDS port ( I : in STD_LOGIC; O : out STD_LOGIC; OB : out STD_LOGIC); end component; signal LVDSclk : std_logic; signal LVDSio : std_logic_vector(15 downto 0); begin -- for LVDS clock in = ch0 LVDSINCLK_MAP : IBUFGDS port map ( O => LVDSclk, I => LVDS_CLKp, IB => LVDS_CLKn); -- for LVDS input LVDSIN_MAPgene : for i in 0 to 15 generate LVDSIN_MAP : IBUFDS port map ( O => LVDSio(i), I => LVDSp(i), IB => LVDSn(i)); end generate; -- for LVDS output --LVDSOUT_MAPgene : for i in 0 to 15 generate --LVDSOUT_MAP : OBUFDS -- port map ( -- I => LVDSio(i), -- O => LVDSp(i), -- OB => LVDSn(i)); --end generate;
上記の基本的な部分を記述したvhdファイルとucfファイルはこちら。
● LUPOSkel.vhd
● CLUPOStandard.ucf
● VLUPOStandard.ucf
Last Update: 2009/9/30
Hidetada Baba
baba @ ribf.riken.jp