Comments
Description
Transcript
はじめに
1 第1章 はじめに コンピュータの主要機能がワンチップになって供給されはじめたときには早い段階からアマチュアも注目して いました。コンピュータはマイクロプロセッサが普及する前から知名度が高かったので非常に関心が集まったの だと思います。プログラマブルロジックデバイスが供給されはじめた頃のデバイスは初期のマイクロプロセッサ とは違ってそれだけで機能を果たすほどの能力はなくてある程度の柔軟性のある補助的な部品として使われはじ めたのでアマチュアにとってはマイクロプロセッサほどの魅力は感じられず地味に出発しました。 1.1 プログラマブルロジックデバイスとは何か マイクロプロセッサはアマチュアにも広く浸透したので「マイコン」などの言葉も使われて一般化していきま した。マイコンは初期にはパーソナルコンピュータを示す言葉としても使われていましたが今はマイクロプロ セッサやマイクロプロセッサを内臓したチップやそれらを総合した全体を示すのに便利な言葉となっています。 プログラマブルロジックデバイスには「マイコン」のように一般に認知されて気軽に使える便利な言葉使いはま だないように思います。 図 1.1 PAL のデータブック 1.1.1 CPLD と FPGA プログラマブルロジックデバイスを略すと PLD*1 になりま す、今は CPLD とか FPGA とかの言葉が普及していますが メーカが商品を区別するための言葉です。CPLD と FPGA は 使用形態が違うので区別されています CPLD は単体で使える のですが FPGA には ROM が必要です。CPLD と FPGA は 違うチップ製造の技術によって作られているので FPGA には ROM は必要としますが大容量のものが作りやすいなど CPLD の及ばない性能を持っています。CPLD の製造技術が進歩し て FPGA と同じ容量のものが作られれば ROM の外付けが必 要な FPGA は淘汰されるかも知れません FPGA の製造技術 が進歩して ROM を同一のパッケージに収めても安く製造でき れば小容量で高価な CPLD は淘汰されるかも知れません。使 これは 1987 年に AMD の傘下に入った旧 MMI 社の PAL の Data/Hand Book です。この中に PLD と言 う言葉が使われています。 *1 図 1.1 を参照 用者の立場から見た CPLD と FPGA の根本的な違いは外付 けの ROM がいるのかいらないのかと言う事に尽きると思い 2 第1章 はじめに ます。これはメーカ側の技術の進歩によって遠いか近いか分かりませんが単体で使える方向に統合されると思わ れます。そのときにはまた新しい商品名で展開されるかも知れません。PLD は PAL に続けて GAL が登場した ときにそれらを総称する名前として出てきたのですがさらに GAL の延長上にある容量の大きいデバイスが登 場したときに CPLD と名付けられました。FPGA にしろ CPLD にしろ両者の根本的な相違を示した名称と言 う訳ではなく単に区別のための便宜的な呼び名に思えます。そのような事ですので本稿では PLD と言う言葉で CPLD や FPGA や他のプログラマブルロジックデバイスを総称したいと思います。 図 1.2 GAL のデータブック • PLD Programmable Logic Device • CPLD Complex Programmable Logic Device • FPGA Field Programmable Gate Array 1.1.2 CPLD 以前 アマチュアの間で PLD に関心が持たれ始めたのは MMI 社 の PAL からだろうと思います図 1.1 はそのデータブックです。 PAL は一度だけしか書き込みができなかったのですが PLD の 論理的な構造をつかむのには参考になる点があると思います図 1.3 は代表的な品種の内部ブロックです。これを見ると一番左 のデバイスは出力を記憶することがでません左から 2 番目のデ これは 1992 年の Lattice の GAL の Data Book で す。この中にも PLD と言う言葉が使われています。 バイスは記憶しない出力が使えません。図 1.1 の PAL のデー タブックの表紙と図 1.2 の Lattice 社の GAL のデータブック の表紙を見ると記憶しない出力も選択できそうな構造になって います PAL の次に出てきた GAL では図 1.4 で MACRO CELL と言う言葉が使われていてこれが CPLD など で言うマクロセルの源流と思います。PAL も GAL も同じなのですが記憶素子は CLK の立ち上がりで記憶する ようになっており全ての記憶素子は共通の CLK を使用していますがこれも現在の CPLD の CLK 専用端子の 機能と同じと思います。FPGA は CPLD とは別の系統で発展して来たと思いますが上の 2 点に関しては同様の ものと考えて支障はないと考えます。 図 1.3 PAL 1.1 プログラマブルロジックデバイスとは何か 3 1.1.3 コンピュータとの違い マイコンは厚い支援がないと使えませんが PLD は薄い支援でも使えます。 マイコンの事情 マイコンの場合は設計の当初からデバイスを特定してプログラミングに取り掛かっていると思います。なぜな らマイコンは多機能になっているので求める機能があるかないかでデバイスを選択することが多く C 言語でプ ログラミングしたとしてもデバイスを意識しないプログラミングは不可能だからです。マイコンが多機能になっ ている原因はプログラムで解決することに限界があるからですが、そのことでまたプログラムの汎用性を失わせ てしまっています。マイコンに内蔵された便利な機能を使うにはメーカの情報が必要なので厚い支援もあり派手 なのですが窮屈な感じは拭えません。 PLD の事情 図 1.4 GAL のマクロセル PLD の場合もチップデータを作るときやデバイスへの書き 込みを行うときにはメーカの支援がなければどうにもなりま せん部品だけ持っていてもメーカの支援がなくなってしまうよ うなことがあってはどうにもなりません。この点ではマイコン でも PLD でも大差のない部品でメーカの支援がなければ困る 訳ですがマイコンは情報が取ってあってコンパイラや書き込み 器があれば手持ちの部品は使えます。設計ツールにおいてもア マチュアが支援してくれる場合もあると思います。PLD では メーカの支援がなくなれば部品があってもチップデータを作る こともデバイスへ書き込むこともできなくなります。アマチュ これは 1992 年の Lattice の GAL の Data Book の中 の図です。 アの場合はメーカの無償の開発ツールでチップの作業を行うの で半年か 1 年で新規の設計も設計の変更もできなくなりますの で現実に作ってしまっている場合はマイコンよりも深刻です。 私の経験でも大容量の高価な CPLD を購入して何かに使おうと置いてあったのですが 5 年くらいで無償の開発 ツールのサポートの対象外になってどうにもならなくなったことがあります。 PLD は容器 私は今でも Z80 を数個持っていて昔は買えなかったコンパイラをインターネットで入手してプログラミング して自作の基板で Z80 を動かしています、初期の PLD である GAL や初期の CPLD も持っていますが利用す る手立ては最早ありません。部品としての PLD にはマイコンのようにこだわりを持って決まった種類を使い続 けると言う事はできないと思います。マイコンのプログラムと言うものは別の種類のマイコンで動かすのは不可 能ではないが予測できないトラブルに見舞われることを覚悟します、なぜならプログラムを解釈するマイコンの 細かな動きはプログラムからは読めないからです。論理設計では CLK 単位で動きを設計していますがどの種類 の PLD でも同じソースファイルからチップデータを作り CLK 単位で同じ動きのはずです論理的には PLD の 種類は関係がありません PLD は最終的に実現するときに最適のものから選択したらよいので論理設計と切り離 して考えられます、これがマイコンのプログラミングと PLD の論理設計とが大きく異なるところだと思います。 4 第1章 はじめに 1.2 デバイス アマチュアのよく利用する電子工作の通販店で入手できるデバイスは CPLD で表 1.3 のものと FPGA で表 1.1 のものと表 1.2 のものがあります。PLD の代表的なメーカはアルテラやザイリンクスなどですが表中に掲 載したメーカは CPLD でも FPGA でもザイリンクスがほとんどです。書き込み器はメーカごとですがメーカ が同じなら CPLD にも FPGA にもコンフィギュレーション ROM にも同じ書き込み器で書き込めます。表中 にあげたデバイスはメーカが WEB で提供している無償の開発ツールでチップデータを作ることができます。 デバイスの選択項目としては次のようなものがあります。 図 1.5 ブレッドボード • 利用できるパッケージか • 利用できる電源電圧と入力電圧に合うか • 端子数は足りているか • 設計した論理が収まる容量か 他に低消費電力かどうか速度が速いかどうかなどがあると思い ます。単体で入手できるデバイスのマクロセルは 5000 程度で すがそれ以上の容量を求めるときには図 1.5 のような PLD の ヒューマンデータ社の Spartan3 ブレッドボード です。 MODEL XCM-008-400 2008.7.19 現在 ブレッドボードのメーカの製品があります。図 1.6 のような フラットパッケージを変換基板に装着する手間が省けてメー 容量 価格 カのサポートも受けられますし書き込み器なども取り扱い製品 8064 = Y17,850 に入っていますから PLD の導入を安心して行いたい人にはお 勧めします。さらに高容量のデバイスを求める場合には BGA パッケージなどになって個人的な工作で対処できる範囲を超えるのでブレッドボードがほぼ唯一の選択肢になり ます。 図 1.6 1.3 開発ツール 自作 FPGA 基板 PLD を利用するときにチップデータを作るのが開発ツールです。 デバイスへの書き込みは JTAG 方式などを使えば必ずしもメーカの 開発ツールでなくても行えるようですがチップデータの作成はメー カの開発ツールでしか行えません。マイコンならば命令コードが公 開されているのでそれを基に実行コードを作ることができます PLD も PAL や GAL の時代には構造が簡単だったのと情報が知られてい たので論理式からチップデータを手作りもしていたようですしマイ 1.1 の XC2S100-5TQ144C XCF01SV020C を使った基板です。 表 と コンで言うところのアセンブラのようなものを自作する人もあった のですが現在の PLD ではそのようなことは行われておらずメーカ の開発ツールのみが頼みです。そのメーカの開発ツールは WEB か ら無償のものを登録することでライセンスと共に入手できます、ライセンスには期限が付いている場合もありま すがほかの試用版のソフトウェアのように 1 回だけ試用を許されるような形態のもではなく何回でもダウンロー ドしてインストールができます。これで VHDL または Verilog 言語のソースをコンパイルして端子の割付を行 いチップデータを作ってデバイスに書き込むまでが行えます。 1.4 設計方法 5 表 1.1 FPGA メーカ 型名 パッケージ 容量 価格 ザイリンクス XC2S50-5TQ144C QFP144 1536 = Y2690 〃 XC2S100-5TQ144C 2400 = Y3680 〃 XC2S150-5PQ208C 3456 = Y4510 〃 XC2S200-5PQ208C 4704 = Y5480 〃 XCV300E-6PQ240C 7296 = Y24160 〃 QFP208 〃 QFP240 容量 : マクロセル数 2008.7.19 現在 : 千石電商の商品リストから抜粋しました。 表 1.2 コンフィギュレーション ROM メーカ 型名 パッケージ 容量 価格 ザイリンクス XCF01SVOG20C TSSOP20P 0.65mm 1M = Y670 〃 XCF02SVOG20C 〃 2M = Y1120 2008.7.19 現在 : 千石電商の商品リストから抜粋しました。 書き込み器は PLD メーカの純正品やブレッドボードメーカの製品があります自分で作れば安価に得られま す、現在は回路図がメーカの公開情報から外されているかもしれません私は下に示した資料から自作したもので 書き込んでいますが開発ツールから書き込み器を経由したデバイスが認識されて書き込みも正常に行われていま す。しかしパラレルポートを装備するパソコンも減ってきているそうですのでその全廃を待たずに開発ツールの サポートからも外されるかもしれません。 • ALTERA : ByteBlasterMV Parallel Port Download Cable, July 2002, Version 3.3 Data Sheet • XILINX : JTAG/Parallel Download Cable, July 10, 1996 回路図 ALTERA でも XILINX でも無償の開発ツールでシミュレーションが行えます、XILINX の方はテストベン チをコンパイルすると ModelSim で結果を見ることができます。ALTERA の方は現在の私の手元ではテストベ ンチが使えないように思われます、それでもシミュレータの画面で入力信号の値を書き込む (描く) とそれに応 じた結果を見ることができます。 1.4 設計方法 設計の方法は言語かロジックシンボルの接続図で行います。言語で行う場合にはエディタで作業を行えばよく シミュレーションも実デバイスの遅延を含まない機能の確認なら開発ツールのシミュレータでなくてもかまいま せん。ロジックシンボルを使った場合は論理設計を開発ツールから独立させることが難しくなります。マイコ ンの場合は C 言語やアセンブリ言語などを使ってプログラムを作ります C 言語の中にインライン文を使ってア センブリ言語を埋め込む場合もあります。論理設計でも PLD が普及しはじめたときにメーカの提供した言語は ブール代数が書ける程度の言語でした PAL のチップデータを作った PALASM と呼ばれたツールの名称はマイ コンのアセンブラを意識したものだと思います。その後はマイコンのプログラム言語の if 文や switch 文などの 条件文に似た文が論理設計の言語に導入されていきました。VHDL や Verilog でもそれを踏襲していて C 言語 の文に似た書き方からブール代数の書き方まで混在して書けるようになっています。 6 第1章 表 1.3 はじめに CPLD メーカ 型名 パッケージ 容量 価格 通販店 ザイリンクス XC2C256-7TQ144C QFP144 256 = Y2510 千石電商 〃 XC95144XL-10TQ144C TQFP144 144 = Y1300 秋月電子通商 〃 XCR3128XL-10TQ144C QFP144 128 = Y1710 千石電商 〃 XC95108-15PC84C PLCC84 108 = Y1760 千石電商 〃 XC95108-15PCG84C PLCC84 108 = Y1816 マルツパーツ館 〃 XC95108-15PQG100C PQFP100 108 = Y2268 マルツパーツ館 〃 XC9572-15PC44C PLCC44 72 = Y800 千石電商 〃 XC9572-15PCG44C PLCC44 72 = Y840 マルツパーツ館 〃 XC9572-15PCG84C PLCC84 72 = Y945 マルツパーツ館 〃 XC9572-15TQ100C TQFP100 72 = Y1000 秋月電子通商 〃 XC9572-15PQG100C PQFP100 72 = Y2625 マルツパーツ館 〃 XC9572XL-10VQG44C VQFP44 72 = Y420 マルツパーツ館 〃 XC9572XL-10VQG64C VQFP64 72 = Y525 マルツパーツ館 〃 XC9572XL-10PC44C PLCC44 72 = Y600 千石電商 〃 XC9572XL-7PCG44C PLCC44 72 = Y735 マルツパーツ館 〃 XCR3064XL-10PC44 PLCC44 64 = Y810 千石電商 〃 XC9536-15PCG44C PLCC44 36 = Y577 マルツパーツ館 〃 XC9536-15VQG44C VQFP44 36 = Y577 マルツパーツ館 〃 XC9536-10PC44C PLCC44 36 = Y790 千石電商 〃 XC9536XL-10PC44C PLCC44 36 = Y320 千石電商 〃 XC9536XL-10PCG44C PLCC44 36 = Y367 マルツパーツ館 〃 XC9536XL-10VQG44C VQFP44 36 = Y378 マルツパーツ館 〃 XC9536XL-10VQG64C VQFP64 36 = Y420 マルツパーツ館 〃 XCR3032XL-7PC44C PLCC44 32 = Y590 千石電商 2008.7.19 現在 : 通販店の商品リストから抜粋しました。 マイコンのプログラマで C 言語では書けてもアセンブリ言語では書けない人もいるかも知れませんが論理設 計者で言語で設計していてもブール代数では書けない人もいるかも知れませんこれはシンボルを使った設計でも 同じことで加算器のシンボルを使っていても AND と OR や NOT のシンボルを使って加算器を作れないかも知 れません。どのような形態で設計を行うにしても基本を理解しないで進めると壁にぶつかってしまいますそこを 工夫で克服しようとしてそこから動けなくなっている人がいるように思います。真理値表などは簡単すぎて役に 立たないと思っている人もあるかもしれません、もちろん真理値表は簡単なものですが論理設計の立脚する基本 なので理解しておかないと問題を解決する方法を何も見つけられないと言うこともありますのでブールの理論な どの基本的なものを理解しておいて下さい。 1.5 先人達の努力 1.5 先人達の努力 1.5.1 論理設計のはじまり 自分に成り代わって行動する装置の製作を行う場合に昔は全部分を機械的なもので作っていました。例えば茶 運び人形*2 は、人形の動作の手順を歯車の回転による時系列に組み込んで動かしています。世界最初のバベッ ジ*3 の計算機械も歯車を組み合わせたカラクリによって実現されていました、計算手順は歯車の組み合わせに 内包されていたのでしょう。今日では、上記の機械が持っていた動作を決めていく手順は電気的なもので実現さ れています。特に複雑な制御を必要とするものにおいてはコンピュータを多用しています。計算機械は歯車の回 転から生まれる規則正しい時系列に人の望む仕事を割り付けて計算を行わせました。コンピュータも歯車のよう に規則正しい時系列を持って動いています、プログラムは時系列に乗せられて、電子的に作られた装置の動作を 決定しています。現在の計算機は電卓やコンピュータなどの電子的な装置が主流で機械的な部分は主要な機能に は使われていません。しかし、時系列に手順をのせて機械の動きを、人の考えたように動かそうと言う方法の原 点は変わっていないようです。将来において電子的な装置の大半が他の物理現象を用いた装置に置き換えられる ことがあっても、この原点は、その装置に引き継がれていくと思います。 さて、その様に装置の素材とは無関係な動作の手順の組み立てをどのようにして、設計していくのかと言う問 題を解決することを論理設計と言います。今日、使われている装置は「動作の手順の組み立て」のほとんどを半 導体の上に実現しています。半導体は極度に集積度の高い部品として複雑な「動作の手順の組み立て」を持つ装 置には欠かせないものです。それらには、概ねクロックと言う高い周波数の電気信号をつないでおり、機械装置 の歯車の様な働きをしています。パスカルは歯車を組み合わせて計算機を作ったそうです。ブール代数が発案さ れた頃は真空管もリレーもトランジスタもない時代です。「動作の手順の組み立て」を、これから「論理」と言 うことにします。 人が大きな論理を作るときに、何を原理として積み重ねたらよいのかを明らかにしてくれたのがブール*4 と言 う人で、その方法はブール代数として知られています、また、その端緒を作ったのはライプニッツと言う人なの ですが、ともに 17∼18 世紀の人です。これらの原理はコンピュータを発明した人たちに大きな手がかりと設計 方法を与えましたが、コンピュータが広く普及して計算用途以外にも盛んに使われることで、コンピュータを実 現した原理が計算以外にも複雑な「動作の手順の組み立て」が必要な装置にとって有用なものであることが結果 を持って証明される時代を迎えました。 *2 からくり人形の中でも特に有名で、人形の茶托に茶碗をのせると動きだし客の所まで運んで行き、茶碗を取ると人形が止まります。 そして再び茶碗を載せるともと居た場所にくるりと振り返って戻ってきます。茶運び人形の説明より引用 *3 チャールズ・バベッジは永いあいだ忘れられていた。何しろ彼がコンピュータを創ろうとしたのは江戸時代のことなのだ。1991 年ロ ンドン科学博物館は、残されていたバベッジの設計図をもとに、バベッジの幻のコンピュータを復元した。いくつかの設計図上の間違 いは見つかったものの、バベッジのコンピュータは正しく計算をしたのである。現在ではコンピュータの発想を得て設計した最初の 人という評価が固まっている。チャールズ・バベッジはコンピュータの父と呼ばれるようになった。ちえの和WEBページより引用 *4 イギリスの小都市リンカーンに生まれた。職人の子として生まれたが、ブー ルは貧乏人の行く「ナショナルスクール」を出て、独学 で数学を勉強する。 彼は語学の才能にも恵まれていたようで、小学校の助教諭をし、数学の変分 法についての論文を初めての仕事と して書く。更に不変式論、微分方程式の 演算子法にも貢献し、アイルランドのコーク大学の教授になる。何よりもブー ルの名を今日 まで不滅にしたのは、ブール代数としてコンピュータ理論に適 用されている記号論理学の創造である。彼は有名な書「思考の法則」 を書い た。残念にも若くして 50 才でなくなった。「F・ガレス・アシャースト. 10 人の大数学者 -現代数学を築いた人々-. 講談社 ブルーバックス, 1992.」 より引用 イギリスの貧しい階層で、ほとんど独学で数学を学び、産業革命の要求から そのころに生まれた初等公教育で、小学校の臨時講師 をしていたのがブール である。その業績がアカデミズムに知られるようになってからも、彼の関心 は初等教育とともにあり、ときに 大学アカデミズムと対立した。彼の仲間に は、バベッジやド・モルガンなどがいて、差分解析や計算機のような、あま りアカデミッ クでないことに関心があったが、それはコンピュータ科学のさきがけだったし、初等数学の代数的考察は現代数学の契機のひとつで もあっ た。イギリスの草の根アマチュアリズムの根強さを感ずる。日本評論社の「現代応用数学の基礎」[2] より引用 7 8 第1章 はじめに 1.5.2 コンピュータの登場 私たちの周りには、複雑な手順を内包した小さな装置が溢れています。それらの装置は、ほとんどが使用者の 用途に応じて、使用者自身が手順を変更可能に作ってあります。装置は変更のできない論理と変更の可能な論理 からなっていますが、通常は変更の可能な論理が、機能に対応したものになっていないと見るべき働きをしませ ん。世界最初のコンピュータ、エニアック*5 は「変更の可能な論理」を主にスイッチで実現していたようです。 コンピュータは最初から論理を固定部分と可変部分に分ける考え方を持って登場しました。そうした理由は高価 な装置を、ひとつの計算だけでなく、他の様々な計算に使いたいという要請があったからでしょう。さらに、途 中から開発に加わったノイマンが「変更の可能な論理」を記憶装置*6 の容量を増やしてそこに納めるべきと主張 しました。「変更の可能な論理」は、どんどん拡大してスイッチからコアメモリ、半導体メモリに置かれるよう になりました。これはプログラム内蔵方式コンピュータと呼ばれる、今日使われているコンピュータの基本と なっているものでノイマン型とも呼ばれています。 さて、当初は大掛かりだったコンピュータに、いろいろの仕事をさせるために発案されたことが、今日のコン ピュータの姿を形作りました。今日、コンピュータの方法や言葉使いが普及していますが、コンピュータの存立 する環境もまた変わりつつあります。例えば、ハードウェアとソフトウェアという言葉ですが、あくまで方便で す、本質的なものを指した言葉ではありません。また、ハードウェアが将来も電気的、あるいは電子的なもので ある必要も、その原理から言ってありません。ハードウェアが電気回路あるいは電子回路である必要は本質的に ありません。機械的であれ、電気的であれ、論理を稼動させるために必要な媒体という理解が正しいと思いま す。今日、以前には変更しない論理として半導体に配線されていたものをメモリに置くような半導体がありま す、書き換えもできます。コンピュータのハードウェアもプログラムと同じくメモリに置かれる「変更の可能な 論理」になっています。今はまだ、コンピュータ的な手法、つまりプログラムに重きを置いて装置を設計するほ うが容易だと考えられています、しかし現実的には論理がすべて「変更の可能な論理」になったのですから、基 本的に「変更しない論理」を前提に設計する「変更の可能な論理」で問題を解決する方法も唯一の選択肢から、 ひとつの選択肢になったと言えます。ノイマンが 2 分した、論理装置の設計方法も、今は統合に向かっているよ うです、本来、技術的な問題で分けただけなのですから、歯車のときから原理的には何も変わりありません。 *5 1946 年に、ジョン・プレスパー・エッカート・ジュニア、ジョン・ウィリアム・モークリーらによって開発されたコンピューター。 世界最初の実用的なコンピューターといわれている。ENIAC はおよそ 18000 本の真空管を使用しており、1 秒間に 5000 回の演算 を行うことができた。NHK「デジタル進化論」より引用 *6 エニアックの場合は真空管