PLD,VHDL,CADとは

似非PLDプロジェクトにおけるキーワード、''PLD'',''VHDL''''CAD''に関して簡単な説明をします。


PLD (Programmable Logic Device)

 MSXの機能の中枢を成すチップとして、CPU(Z80,R800)、PSGやVDPなどがあります。これらのチップは、半導体メーカが回路を設計して、シリコン上に作りこんだものです。もちろんユーザはチップの中身を書きかえることが出来ません。

 これに対し、半導体メーカが回路の要素を作り込んでおき、ユーザがそれを組み合わせて回路を作れるチップがあります。これがProgrammable Logic Device(PLD)と言う物です。(回路の要素としては、積和回路、ルックアップテーブル、フリップフロップ、メモリ、配線ライン、配線間のスイッチなどがあります。)

 PLDと一言に言っても沢山のメーカから無数のチップが発売されています。古くはPALやGALなど単純な機能しか実現出来なかったものから、最近のCPLDやFPGAの様に大規模な回路まで構成可能なものまであります。
 速度面に関しても、どんどん高速化しています。もうMSX程度の機能と速度を実現するには十分なレベルになっていると言えるでしょう。

 FPGAには、アンチフューズタイプ、EEPROMタイプ、FlashROMタイプ、SRAMタイプなどがあります。アンチフューズタイプは、中の回路の接続点がフューズで出来ていて、不要な部分を焼き切って回路を構成します。他は半導体スイッチのOn/Offデータをメモリのデータによって決めるタイプです。

 本プロジェクトでは、MSXのCPUなど、複雑な物を実現する事を目的としています。そこで、大規模な回路にも対応可能なFPGAを用いて行きます。現在だと、Altera社のFLEXシリーズやACEX/APEXシリーズ、Xilinx社のSpartanシリーズ、Virtexシリーズが良いのではないかと思ってます。これらはいずれもSRAMタイプです。

 SRAMタイプの場合、電源を入れる度にFPGAチップへ回路データをダウンロード(コンフィグレーション)する必要があります。コンフィグレーションの方法は2つあり、1つはパソコンから、もう1つはシリアルROMからダウンロードする方法です。
 ケーブル接続のメリットは、ROMが必要ない点です。デバック時に毎回ROMを作るのは少々面倒です。特に、ワンタイムタイプのROMの場合、毎回書き捨てなので、デバック中は大量のROMを無駄にしてしまいます。
 シリアルROMのメリットは、パソコンが必要無い点です。電源投入後、即座(数10ms程度後)にコンフィグが終了するので、通常のLSIと比べてもほぼ同じ使い勝手を実現出来ます。FlashROMやEEPROMタイプならば何度も書き換えが出来るので、ROM接続でデバックするのも良いでしょう。

 肝心なコンフィグデータ(回路の設計データ)は、専用のCADでコンパイル、フィッティングして作成します。CADデータの入力形式には、回路図や言語入力などがあります。似非PLDプロジェクトではVHDLという言語で開発して行くつもりです。


VHDL (VHSIC Hardware Discription Language)

 ハードウェアの設計と聞いて思い浮かぶものは何でしょう。方眼用紙に定規で線を引いて回路図を描く様子を思い浮かべる方が多いと思います。近年では、設計の大規模化に伴い、抽象度の高い設計が求められています。
 ソフトウェアの開発が機械語からC++言語と、抽象度が上がって来た様に、LSIの開発でもVHDLやVerilogHDLの様なプログラミング言語による開発が主流となりつつあります。
(現在では更に抽象度の高い、C++言語での開発も始まろうとしています。→SystemC

 ハードウェアを記述する言語、Hardware Discription Language(HDL)には様々なものがあります。中でもVHSIC HDL(VHDL)やVerilog HDLが最近注目されています。私たちはVHDLでの開発をしています。
 どうしてVerilogではなく、VHDLなのかというと・・・特に理由はありません。たまたま私が最初に触る機会があったのがVHDLだったからです。
 VHDLの記述は、PASCALの様な感じで、begin〜endでプロセスを記述して行きます。それぞれのprocess毎に個別のハードウェアが生成されますので、各プロセスは時間的に完全に並列に動作します。細かな文法の話は専門書に譲るとして、ここでは簡単な記述例を出しておきます。細かいことは気にせず、雰囲気だけ味わってみてください。

 例として、MSXの基本的な音源チップ「PSG」で使用するノイズ生成回路を示します。
 この回路は、数学で言うところの「M系列乱数」を発生させる回路です。
 回路設計屋さんには、Linear Feedback Shift Register (LFSR)という呼び方が馴染み深いでしょう。

process (Clock, Reset)
 variable ShiftReg : std_logic_vector(17 downto 0);
begin
 if (Reset = '1') then
  ShiftReg := (others => '1');
 elsif (Clock'event and Clock = '1') then
  for i in 17 downto 1 loop
   ShiftReg(i) := ShiftReg(i-1);
  end loop;
  ShiftReg(0) := ShiftReg(17) xor ShiftReg(14);
 end if;
end process;

 ハードウェアの設計経験の無い方でも、全体的な雰囲気は分かって頂けることかと思います。クロックが0→1に変化する度に、17ビットのシフトレジスタを左シフトします。bit0にはbit17とbit14の排他論理和をフィードバックしています。また、リセットされたときシフトレジスタの値をすべて1に初期化します。

 言語設計によって、回路設計への敷居の高さが減り、より多くの人がハードウェア設計を楽しめる様になれば良いと思います。今までソフトしか作った事の無い方も、ハードウェア設計にチャレンジしてみてはいかがでしょうか?

 VHDLの文法に関しての書籍として、私が読んだものを紹介しておきます。

VHDLの歴史的経緯から、シミュレーション記述、合成記述まで系統的に書かれています。
ちょっと古めの本ですが、MSXユーザならばアスキー出版の物を買うべし!?

VHDLとVerilogに関しての入門記事があります。
文法を理解するのに役立つでしょう。

同期式論理回路設計について書かれた定本と呼ぶにふさわしい本です。
ASICのみならず、FPGAの設計においても十分参考となります。
ハードウェアによるオートマトン(シーケンサ)の構成方法や、バブルソートの実現について書いてあります。


CAD (Computer Aided Design)

 一般的に、コンピュータを用いて設計を行うこと、またはそれに使用するツールの総称です。ソフトウェアの開発で言うところの、アセンブラやコンパイラがこれに該当します。

 似非PLDプロジェクトでは、VHDLで記述したソースを、PLDのデータに変換するソフトウェア類がこれに該当します。
 VHDLのソースコードをネットリスト(EDIFファイル)に変換するものを''コンパイラ''、ネットリストを各PLDメーカ固有のコンフィグデータに変換するものを''フィッタ''と呼んでいます。(これらはメーカにより表記が異なる場合があり、厳密な定義ではありません)

 PLDの開発で使用するソフトウェアは、C言語用コンパイラ等に比べて販売数が少ないため、一般的に高価です。このため、アマチュアにはなかなか手が出ませんでした。
 近年では回路規模や使用期限などの制限はあるものの、無料で使えるCADの選択肢が増えて来ました。また制限も緩くなってきており、アマチュアでもある程度実用的なPLDを開発する事が容易に出来る様になって来ています。

 無料CADには、Altera社のPLD向けの''Max+plus2 Baseline''や、Xilinx社のPLD向けの''WebPack ISE''があります。

 Alteraの場合、コンパイラとして、Leonard SpectrumかFPGA ExpressのAltera限定版が選択出来ます。フィッティングには、Max+plus2を利用します。
 コンパイラによって、得意不得意があります。RAM記述をVHDLの標準的な記述で書いた場合、FPGA Expressではうまくインプリメントされませんので、Leonardを使用します。FPGA ExpressでSCCのウェーブメモリや、VDPのカラーパレットメモリなど、RAMを含むコードをコンパイルする際は、アルテラ独自ライブラリ(LPM)を使用したRAMコンポーネントを利用する必要がありますので、多少の注意が必要です。
 FPGA Expressのインストール先に、空白を含んだフォルダを指定すると不具合が発生します。「C:\Program files\」の下などは利用できないので注意が必要です。

 Xilinxの場合、コンパイラもフィッタも統合環境として1つになっています。また選択肢も1つしかないのであまり説明はしません。RAM記述は、VHDLの標準的な記述でちゃんと合成されます。


Copyright 2000-2001 ESE Artists' Factory all rights reserved.

tujikawa@hat.hi-ho.ne.jp

Return