spartan3をスタートしよう

by K.I
2005/07/02

Index


概要


1Spartan3でLVDSをサポートしているかどうかは未確認だけどね。

[top]

スタート出来ない


2数年前にもFPGAの書き込みで挫折したので、2回挫折してる。。。

[top]

再スタートしよう

ここを参考に、もう一度やり直してみよう。
[top]

MCSファイルをつくる

直接FPGAに書くのが出来ないので、ROMに書き込んでみよう。
3ここで、FPGA StartupClockをJTAGにしている場合は、CCLKにしろというWarningが出る。

[top]

ROMへ書き込み

書き込み成功!
4本当にそれで良いのかな〜?

[top]

FPGAへの直接書き込み

それで、FPGAへの直接書き込み手順も分かりました。 これで書き込み完了!
[top]

自分でプログラム

って言っても難しいのは嫌なので、入力をそのまま出すという超簡単プログラム。 トラ技2003年5月号の3章「スイッチONでLEDが点灯する回路を動作させてみよう!」というのがピッタリで、新しいWebPackの使い方が良く分かるので、参考にすると良い。

プロジェクトを作る

ソース記述

入出力設定

I/O Name I/O Direction Loc Bank I/O Std.
led_op Output K12 BANK3 BLVDS_25
button_ip Input M13 BANK3 BLVDS_25

書き込み

とりあえず、FPGAに直接書き込みましょう。 一応、動くみたいだ。→7segのLEDが光ったままだけどね。
5LVDSも選べるようだけど、LVDSって差動だから2ピン使うんじゃ無いのかなぁ?どうするんだろ??

[top]

LVDSの設定

LVDS用のVHDL記述

出力をLVDS指定に書き直してみる。
        library IEEE;
        use IEEE.STD_LOGIC_1164.ALL;
        use IEEE.STD_LOGIC_ARITH.ALL;
        use IEEE.STD_LOGIC_UNSIGNED.ALL;

        --  Uncomment the following lines to use the declarations that are
        --  provided for instantiating Xilinx primitive components.
        --library UNISIM;
        --use UNISIM.VComponents.all;

        entity led is
            Port ( button_ip : in std_logic;
                   led_op : out std_logic;
                   led_opn : out std_logic);    →差動用の出力を追加
        end led;

        architecture Behavioral of led is

        component OBUFDS                        →差動バッファの定義を追加
            port(I : in std_logic; 
                 O : out std_logic; 
                 OB : out std_logic); 
        end component; 

        attribute IOSTANDARD : string;          →U0をLVDS_25インターフェースとする
        attribute IOSTANDARD of U0 : label is "LVDS_25"; 

        begin

        U0: OBUFDS                              →定義した差動バッファで記述
                port map (I => button_ip,       
                    O => led_op, 
                    OB => led_opn); 

        end Behavioral;

UCFファイルは?

I/O Name I/O Direction Loc Bank I/O Std. Diff.TypePair Name
led_opn Output K12 BANK3 LVDS_25 N-Type led_op
led_op Output L12 BANK3 LVDS_25 P-Type led_opn
button_ip Input M13 BANK3 BLVDS_25 Unknown
ふぅ。なんとか、LVDS出力になったみたいだなぁ。

コンポーネントの本体は?


6led_opはBLVDS_25のままだったのでLVDS_25に直した。あとled_opnの方は、LVDS_25が最初薄く表示された状態だったが、それだとUCFに反映されないようなので、選び直す必要があるらしい。

[top]

感想


[top] [電子工作関連に戻る]