| ||||||||
| ||||||||
|
もどる
ここでは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に書いてあるものはすべて書いておくべし)
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
..................
○ LVDSを使う場合にはディファレンシャルバッファを用意してあげる。
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