目次CPLD入門


開発ツールの使い方
( Version: WebPACK 3.1WP1.x )



このページではXilinx社のCPLD開発ツール( Xilinx Project Navigator ) の使い方を簡単なモデルを使って紹介します。
ツールにはいろいろな機能が備わっていますが、ここで紹介するのは最低限の機能のみです。
何がなんだか分からないという人は参考にして下さい。
使用言語はVHDLです。VHDLについては「開発言語仕様(VHDL)」を参照して下さい。

このページを作成している時点でのツールのバージョンは以下のようになっています。
Project Navigator: Release Version: WebPACK 3.1WP1.x
Application Version: build+D-20+0
JTAG Programmer:
Release Version: WebPACK 3.1WP1.x
Application Version: D.20





サンプル回路
    練習のために10入力AND回路の設計をしてみます。





Xilinx Project Navigator の起動
    まず、"Xilinx Project Navigator" を起動します。
    以下の画面が表示されます。


Sources in Projectはデバイス名称、ソースモジュール名称などを表示するウインドウです。
Processes for Current Sourceは各種の機能選択メニューを表示するウインドウです。
右側のウィンドウ( HDL Editor workspace window )はソースコードを表示するウインドウです。
一番下のウィンドウ( Transcript window )は処理経過のログを表示するウインドウです。





プロジェクトの生成
    このツールではプロジェクトという概念で作業を管理する構成が採られています。
    プロジェクトを作ることにより、CPLDの一連の設計作業をナビゲータにより進めることができます。

    プロジェクト用フォルダの作成
      事前にファイルを格納するフォルダを作った方が後の管理が楽です。私はC:\MP_xilinx\Project\Test\testとしてテストプロジェクトの関連ファイルを格納するフォルダを作りました。



    プロジェクトの作成
      新しいプロジェクトは以下の手順で作ります。

      File -> New Project を押すと、プロジェクトファイル作成のダイアログが表示されます。

      このダイアログではプロジェクト名称、プロジェクトを保存する場所、デバイスの種類および使用する言語などの設定をします。
      デバイスの種類および使用する言語は各項目のValueをクリックすると表示されるプルダウンメニューから選択します。
      プロジェクトの登録がされるとProject Navigatorの Sources in Project が以下のように変化します。




    プロジェクトタイトルの登録
      次にプロジェクトのタイトルを付けます。

      Source -> Properties を選択するか、または をダブルクリックするとタイトルの登録画面が表示されます。

      Sources in Project のプロジェクトタイトルが設定したタイトルに変わります。




ソースファイルの作成
    Source -> New を選択するか、または ボタンをクリックするとソースタイプを設定する画面が表示されます。

    表示されている中から「VHDL Module」を選択します。VHDL以外の言語を使用する場合には該当する言語を選択します。
    "File Name" を入力し"Location"のファイル格納パスを確認して「次へ」をクリックします。

    "Entity Name" および "Architecture Name"を入力します。この時点でポート指定をすることもできますが、今回の例では後からVHDLの記述で指定するのでここでは入力はせずに「次へ」をクリックします。
    以下のような確認画面が表示されるので、内容に間違えがなければ「完了」をクリックします。

    Project Navigator の HDL Editor workspace window にソースコードのウインドウ(HDL Editor window)が表示されます。

    Project Navigator の各ウインドウの表示/非表示はViewメニューで制御することができます。
    各項目でウインドウがどのように変化するかは試してみて下さい。
    ソースコードのウインドウを広げるのにはViewメニューのProject Workspaceをクリックしてチェックを外します。をクリックして拡大することもできます。また、ソースコードウインドウを HDL Editor workspace window 全体に表示させるのには通常のウインドウ制御と同じように右上のウインドウ最大化ボタンをクリックします。
    元に戻したい場合には Windowメニューを操作します。"Cascade"は「重ねて表示」、"Tile Horizontally"は「上下に並べて表示」、"Tile Vertically"は「左右に並べて表示」です。
    以下はソースウインドウを拡大した状態です。VHDLの書式の基本部分はすでに書かれています。

    細かな説明は省きますが、内容はだいたい以下のようなものです。
    青い文字の部分はVHDLで規定されている書式の文字を示しています。
library IEEE;
IEEEで規定されているVHDLライブラリを使用することを指定しています。
use IEEE.STD_LOGIC_1164.ALL;

IEEE 1164で規定されているstd_logicライブラリの全てを使用することを指定しています。
use IEEE.STD_LOGIC_ARITH.ALL;

IEEEの算術演算ライブラリの全てを使用することを指定しています。
use IEEE.STD_STD_LOGIC_UNSIGNED.ALL;

IEEEの符号ビット無し算術演算ライブラリの全てを使用することを指定しています。
entity test is
    Port ( );

end test;

testファイルで指定するエンティティーを記述する欄です。
ポート文、ジェネリック文などを書きます。
architecture behavioral of test is
begin

end behavioral;

CPLDに持たせる機能の論理指定を記述します。

    今回は10入力AND回路を1つ作るためにentuty部とarchitecture部に以下を追加しました。赤色が追加部分です。
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_STD_LOGIC_UNSIGNED.ALL;

entity test is

  port (
    a,b,c,d,e,f,g,h,i,j : in  std_logic;
    y                   : out std_logic);

end test;

architecture behavioral of test is
begin

  y <= a and b and c and d and e and f and g and h and i and j;

end behavioral;

    上記の変更を行った後、File -> Save または ボタンでファイルのセーブをします。



書式チェック
    作成したソースファイルの書式(文法)に誤りが無いかを確認します。

    Process for Current Sourceウィンドウを表示し、Synthesize配下のCheck Syntaxをダブルクリックします。
    これにより書式(Syntax)のチェックが行われます。
    チェック結果がOKであれば、Check Syntaxに緑色のチェックマークが付きます。
    また、下部の状況表示ウィンドウの最後に"Done: completed successfully."が表示されます。

    ファイルを保存せずに書式チェックを行うとファイルが保存されていないことを示す以下の画面が表示されます。「はい」をクリックすれば保存されます。

    例として故意にエラーを発生させてみます。
    entity定義でのport宣言の最後のセミコロン(;)を削除し、Check Syntaxを実行してみます。

    Check Syntaxに赤い×マークが付きます。
    また、下部の状況表示ウィンドウの最後に"Done: failed with exit code: 0001."が表示され、エラーがあることが表示されます。
    どこにエラーがあるかは状況表示ウィンドウを少し戻した以下の表示で分かります。
    ERROR : (VHP__0162). C:\MP_xilinx\Project\Test\test\test.vhd Line 10. Read symbol END, expecting ';'.
    10番目の行でエラーが検出され、セミコロン(;)が無くENDになったと表示しています。
    をダブルクリックするとソースコードの左側にエラーを表示するマークが付きます。マークの付いている行がエラーとは限りません。エラーを検出した行を示しているので、その前の行などをチェックしてみます。

    ソースコードに付いたエラーマークはエラーを修正してOKになっても消えません。File -> Closeで一度ソースコードウインドウを閉じた後、Sources in Projectでソースファイルをダブルクリックして再表示させると消えています。



フィッティング
    いよいよソースファイルからCPLD用のファイルを作成します。ソフトウェアではこの処理をコンパイルと称していますが、このツールではフィッティングと言っています。ハードウェアにフィットするオブジェクトを作るという意味と思います。

    Process for Current Sourceウィンドウに表示されるFitterをダブルクリックします。
    これによりフィッティング処理が行われます。

    処理の進捗状況はウィンドウ下部のステータスグラフで表示されます。

    フィッティング結果がOKであれば Fitter に緑のチェックマークが付きます。
    また、下部の状況表示ウィンドウの最後に"Done: completed successfully."が表示されます。




    フィッティング結果の確認
      複雑な回路を組んだ場合には、いろいろなデータを確認する必要がありますが、ここではアサインされたピンの状況を確認してみます。
      Process for Current Sourceウィンドウに表示されるFitter配下のFitter Reportをダブルクリックします。
      レポートウィンドウが表示されます。その中に以下のような図があります。
      今回はピンを指定していないので、ツールが自動的にピンを選択しています。ですから、バラバラです。
****************************  Device Pin Out ****************************

Device : XC9536-5-PC44


      T  T  T     T  T  T  T  T  V  T  
      I  I  I     I  I  I  I  I  C  I  
      E  E  E  y  E  E  E  E  E  C  E  
      --------------------------------  
     /6  5  4  3  2  1  44 43 42 41 40 \
TIE | 7                             39 | TIE
  i | 8                             38 | h
  a | 9                             37 | e
GND | 10                            36 | c
  b | 11         XC9536-5-PC44      35 | d
  j | 12                            34 | f
  g | 13                            33 | TIE
TIE | 14                            32 | VCC
TDI | 15                            31 | GND
TMS | 16                            30 | TDO
TCK | 17                            29 | TIE
    \ 18 19 20 21 22 23 24 25 26 27 28 /
      --------------------------------  
      T  T  T  V  T  G  T  T  T  T  T  
      I  I  I  C  I  N  I  I  I  I  I  
      E  E  E  C  E  D  E  E  E  E  E  

      この図を見ると、aポートからjポートまでがそれぞれ9,11,36,35,37,34,13,38,8,12に割り付けられ、yポートが3番ピンに割り付けられていることが分かります。

      以上でCLPDに書くデータの準備が出来ました。




プログラマ起動
    この後の操作はパソコンとCPLDデバイスとをダウンロードケーブルで接続した後に行う作業ですが、練習のためにプログラマを起動してみます。

    Process for Current Sourceウィンドウに表示されるCreate Programming File配下のLaunch JTAG Programmerをダブルクリックします。
    CPLDに書き込みためのJEDECファイル(拡張子:JED)が作成され、JTAG Programmerのウィンドウが表示されます。


以下はJTAG Programmerのウィンドウです。

    PCのパラレルポート(DSUB25)を使用する場合には、Outputメニューの中のCable SetupでCable Communication SetupでParallelを指定し、OKボタンを押せばデータがCPLDに転送されます。
    ケーブルが接続されていない場合にはエラーになります。

    実際の書き込み操作は「CPLD ライターの使い方」を参照して下さい。