ホーム

 こんなものに手を出してしまいました。 Actel 社に関する日本語の情報はあまりないようなので、徐々に充実させていくつもりです。

Whats is FPGA or CPLD

CPLD : Complex Programmable Logic Device
FPGA : Field Programmable Gate Array

プログラミング可能なデジタル回路のことです。ゲートの数で比較すると、CPLD で数千ゲート、FPGA で数万〜数百万ゲートのものが入手できます。 Pentium クラスのCPU が数百万ゲートですから、FPGAでは、CPU が作れる規模です。実際、研究用にある目的に特化したシグナルプロセッサを作る際に使われています。

Xilinx 社編

RIMG0131a.jpg (86815 バイト)

 左側は、ザイリンクス社のCPLDデザインキット(型番DO-CPLD-DK-J)です。CoolRunner-II と XC9572XLという2つのCPLDが搭載されており、これらのプログラミングが実験できます。JTAGケーブルも接続しているので、お買い得感がかなりあります。5千円ちょっとの価格で販売されています。
 右側は、 FPGA用の評価キット SPARTAN-3E スタータキットで、2万円弱の価格です。ボードの上には、LCD表示器、RAM,フラッシュROM、プログラマブルゲインアンプ、A/Dコンバーター、エンコーダー、スイッチ、コネクタ類は、USB-JTAGインタフェース、LANから、キーボードマウスコネクタ、VGAと小型コンピュータに匹敵するほどです。こちらのほうは、FPGA に PicoBlaze という CPU が構築されており、この PicoBlaze をコアにして、周辺機器を作っていくような使い方を想定されているのではないかと思います。ROMのソフトウエアでいくつかのデモンストレーションが動作します。これらは、購入して電源を接続すれば確認することが可能です。また、バッチファイルと走らせるだけで、A/Dコンバーターのデモプログラムを実行することも出来ます。そんなわけで、コンピュータに必要なインタフェースコネクタが一通り搭載されているのでしょう。
 結局、大規模ゲート回路開発というより、小型コンピュータ開発キットなんですね。ロジックの入門キットと誤解して購入して、あまりの機能の多さにあきれてしまいました。

 CPLD や規模が小さい FPGA の開発環境は、各社とも、ほぼ無料で入手出来ます。

ise82i.gif (10129 バイト)

 上の図は、ザイリンクス社の統合開発環境 ISE WebPack8.2i で作成した否定回路です。Verilog で書きました。否定回路はもっともシンプルな論理素子の一つですので、ソースリストもきわめて単純です。下記が、そのソースリストです。

module  not1 (in, out);
 input in;
 output out;

 assign out = ~in;

endmodule

 C言語が理解できれば、なんとなく読めますでしょうか。module 〜 endomodule がプログラムの範囲です。not1は、モジュールの名前。input、output文は、入出力を定義しています。C言語なら、int や double など変数の定義に当たるでしょうか。assign 文は、代入の意味です。in を反転(~)して、out に代入します。
Verilogでは、C言語ライクにプログラムできますが、VHDL では、文法が複雑になります。世の中、VHDL のほうがスタンダードに扱われていますけど、本業ではなく、趣味や片手間に開発するなら、Verilog のほうが良いのではないかと思います。キーボードから打ち込む文字数だけ考えても、Verilog のほうが圧倒的に少ないです。

 ISE WebPack 本体のインストールは、ダウンロードして、実行するだけでほぼ完了します。途中でいくつか操作が必要ですが、いずれも直感的に処理が可能です。ちょっとややこしいのは、論理をシミュレートする ModelSim というソフトのインストールです。インストールの途中で、インターネットに接続し、license.dat というファイルを電子メールで受け取る必要があります。
 また、ヘルプを日本語に変更できます。 起動後、Help → Software update... をクリックし、日本語ヘルプその他をクリックします。Virtex5〜、IP Update などは、ダウンロードに失敗します。別にライセンスが必要である可能性があります。
 インストールの仕方は、下記の文献が参考になります。ザイリンクスのロジック回路の開発の流れが一通りわかる文献で、お勧めです。

 中 幸政 著 "VHDLとCPLDによるロジック設計入門" CQ出版社

 ザイリンクスのCPLDは秋葉原でも簡単に入手でき、また上記のような参考文献も多く存在しますので、最初に使ってみるのはお勧めかもしれないですね。

Actel社編

actel_not.gif (13294 バイト)

  上の画面は、Actel 社の統合環境、Libero ver7.2 で作成した否定回路です。言語は、Verilog です。当然のことですが、上記のザイリンクス社と全く同じソースコードで否定回路が生成できます。操作方法は、下図のようなグラフィカルな画面で流れ線に沿って、各コンポーネントをクリックしていきます。ISE と比較し、操作が直感的です。デバイスの選択や初期設定のためのポップアップウインドウに意味が少しわかりにくいところがあります。

libero_layout.gif (17016 バイト)

Libero のインストール方法

(2007年1月時点での操作方法です。)
 OSは、Windows 2000 SP4 か XP Professional SP2 のみがサポートされています。XP Home editionでは、動作しなかったという報告があります。
 下記から、Libero IDE v7.2 Windows、Libero IDE v7.2 SP2 Windows をダウンロードします。ダウンロードするためには、住所、氏名や電子メールアドレスなどを登録する必要があります。登録しても、電子メールや営業の電話がたくさんかかってくるとことはなかったです。電子メールは、月に一回ほど送られてくるぐらいです。勤務先で登録した場合、日本代理店の営業社員の来訪を受けました。でも、月に数個ほどでは相手にされないようで拍子抜けするほど素っ気なかったです。個人や学校での登録では、現在のところ連絡なしです。

http://www.actel.com/downloads/libero/

vol_check.gif (3895 バイト)インストールには、約1時間かかります。実際に動作させるためには、ライセンスを受ける必要があります。ライセンスを得るために、インストールするパソコンのハードディスクのシリアル番号が必要です。スタート → すべてのプログラム → アクセサリ → コマンドプロンプト を起動し、 「 vol 」と入力します。(右図)
 上記のActel社ホームページから、Technical Support → License & Registration へと進み、上記で登録した ID、パスワードを入力します。Request Free License → Libero Gold Node Locked for Windows へと進み、DiskID の四角にボリュームシリアル番号を入力します。
 ライセンスファイル license.dat は、Actel社ホームページ上の License & Registration のページにアップされますので、それをダウンロードするか、電子メールで送られてくるのでそれを受け取ります。
license.dat のセッティングは、送られてくる電子メールに説明されていますが、下記のようになります。

  1. C:ドライブに flexlm というフォルダを作り、その中に license.dat をコピーする。

  2. スタート → コントロールパネル → システム → 詳細設定 → 環境変数とクリックし、システム環境変数の新規ボタンを押して、下記の2つのシステム変数を設定します。一人で使うのであれば、ユーザー関数でも動作します。

    変数名

      変数値

    LM_LICENSE_FILE

      c:\flexlm\license.dat

    SYNPLICITY_LICENSE_FILE

      c:\flexlm\license.dat

ライセンスは1年間有効です。終了時期になると、メールで更新された license.dat が送られてきました。

Actel社のデバイスの魅力と入手性

 FPGAは、他のメーカーと異なりフラッシュメモリが搭載されていますので、ROMの外部接続が不要です。また、Fusion というミックスドシグナルな FPGA があり、これには、A/Dコンバーターなどが搭載されていますので、インターフェース回路の大幅な低減が可能です。PSoCと異なり、ダイナミックリコンフィグレーションは出来ないそうです。

 入手性については、趣味で使うにはいろいろ不便な点が多いです。来社された営業社員および展示会で伺った話を総合すると、納期がいずれも1ヶ月以上かかるそうです。秋葉原でちょいと買ってくるとわけにはいきません。Fusion については、チップ単体の納期は不明だそうで、少量の使用なら、評価ボードをそのまま搭載した方がよいと言われました。評価ボードは流れているそうです。購入先については、代理店より秋葉原にある商社を照会されました。価格は、いずれの評価ボードも約 5 万円

Libero の WaveFormer Lite が使えなくなっている件

WaveFormer Liteは、グラフィカルユーザーインタフェースで、入力波形を描き、これから、テストベンチあるいは、トップ(レベル)モジュールと呼ばれるファイルを生成するツールです。動作のシミュレーションを行うために使われます。

http://www.actel.com/documents/PDN0911_waveformerlite.pdf

なかなかややこしい英文ですが、要約すると下記のようになります。

1. WaveFormer Lite の開発中止により 12.30a からのバージョンアップは無い。
2. 新しいライセンスには、WaveFormer Lite のライセンスは含まれない。
3. 但し、現在、期限切れも含めてライセンスをお持ちであれば、それをLicense & Registration のページで、期限延長が可能である。この場合のライセンスは、無期限となる。

 期限切れのライセンスのページを開いてみると、 Renew License というボタンがありますので、それで期限延長できるようです。このボタンを押してから、実際にライセンス発行されるまでは、人手による認証作業が入るのか、少し時間がかかるようです。
この件、まだ未確認です。現在、確認作業中です。(2010年4月27日現在)

 WaveFormer が無くても、素子に焼き込むことは可能ですが、動作のシミュレーションが出来ないので、ちょっと困ります。フリーや安価なシェアウエアの Verilog シミュレータというのがあり、これである程度まで代用可能です。しかし、この場合、テストベンチあるいは、トップ(レベル)モジュールをエディターなどで書いてやる必要があります。

ISEとLiberoを同じ環境にインストールできるか?

MicroSimの環境変数で、licennse.datのフォルダを指定する必要がありますが、この設定がザイリンクスのISEと同じになります。もし、license.datをc:\xilinx\に置いたとすれば、下記のようになります。

変数名

  変数値

LM_LICENSE_FILE

  c:\xilinx\license.dat

同じ変数名で、2つの変数値がある場合、うまく区別が出来るか疑問です。現在のところ、ISE と Libero は、別々のパソコンにインストールしており、共有については試しておりません。

追記

http://www.actel.com/documents/license_troubleshooting_FAQ.pdf

おそらく、上記の6/30ページにあるように変数値に下記のように書いてやれば、共存できるようです。

c:\flexlm\License.dat;c:\flexlm\License2.dat

Verilog アラカルト

 C 言語のコンパイラと比べると、冗長性が低いところがあります。うまく動作しない場合、スペースなどを見直してみるだけで動作することがあります。また、開発環境によって動作が変わることがあります。たとえば、下記の参考文献 P136 に記載されているジョンソンカウンターは動作せず、結果的に動作するように書き換えると下記のようになりました。この文献は、Verilog の参考書としてはよく書けていて、様々な手法を見せてくれるので大変勉強になりますが、この例のように裏目に出ることもあります。絶版の理由も動作しないプログラムが多々あることにあったんじゃないかと思います。

Jayaran Bhasker 著 佐々木 尚 訳 Verilog HDL 論理合成入門 CQ出版  (絶版)

module JohnsnCounter (ClockJ, PreClear, Q) ;
parameter NBITS = 3 ;
input ClockJ, PreClear ;
output [1:NBITS] Q;
reg [1:NBITS] Q;

always @ (negedge PreClear or negedge ClockJ)
if (! PreClear)
Q <= 0 ;
else
begin
if (! Q[NBITS])
Q <= {1'b1, Q[1:NBITS-1] } ;
else
Q <= {1'b0, Q[1:NBITS-1] } ;
end
endmodule

配列の解釈に差があるようです。

  1. 右をLSBと決める。

  2. 数字の小さい方をLSBとする。

  3. ソースリスト以外の別の設定でMSB、LSBを決める  ← ISE は、これか?

Libero は、おそらく 2 と思います。

HDL といえども、うまく動作しない場合のデバックは、回路図で検証するのが手っ取り早い場合が多々あります。この場合は、まさにそうでした。

Verilog の文法書

下記が、入手性がよくわかりやすいと思います。

桜井 至 著  Velilog-HDL 言語入門 テクノプレス 2600円

Copyright (C) 2013 ssato. All Rights Reserved 2013/01/06