The BAQ/Data Acquisition/DAQ Module/LUPO/プロジェクトの作成

Japanese English
Nuclear Physics Data Acquisition Orchestra Gallery Memo Diary Link Home
DAQ System DAQ Module Pulse Shape Analysis RTLinux Linux Device Driver Home

もどる

ここでは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