組み込みとは、広義ではマイコンやPLDなどソフトウェア的にハードウェアを制御するシステムまたはその技術のことを指します。 ここではその組み込みに関する知識や大学での取り組みについて紹介していきます。
Embedded //組み込み
Processer? PLD? 〜ICあれこれ
IC と聞くと何を連想するでしょうか。 家電製品、ICカード、USBメモリ・・・。 ICが使われた製品は世の中に大量にあふれています。 電気で動くほぼすべての製品に使われているといっても過言ではないくらい我々の生活を支えています。
ICにはいろいろな種類があります。 LSI、VLSIなどは回路の規模を表したものです。 プロセッサー、メモリ、PLD、ASICなどは機能によって種類分けした呼び名です。
プロセッサーはマイコンとも呼ばれます。 PCでいうCPU、グラフィックボードでいうGPU、信号処理で使われるDSPなどがその一例です。 電子工作の王道的存在、PICマイコンもその一員です。 プロセッサーは、命令セットと呼ばれる命令を持っていて、それらを組み合わせたプログラムを順に処理していくICです。 PCでのプログラミングがもっともわかりやすいと思います。 なので、ICそのものが特定の処理に特化しているわけではなく、任意の処理を実行することが出来ます。 プロセッサーの処理能力はIPS(Instructions Per Second)で表されます。 基本的に動作クロックが早いほど処理性能が高いです。 CPUの何GHz〜というのがクロックです。
PLDはProgramable Logic Deviceの略で、プログラム可能な論理素子のことをいいます。 たぶん聞き慣れないと思いますが、プロトタイプに使われたり、後から変更が必要な制御系に使われたりします。 こちらはプロセッサーとは異なり、命令セットというものを持ちません。 なので、「これをしろ」「あれをしろ」という風にして使うものではなく、内部に回路を作って使うことが出来ます。 NOT・OR・ANDのような論理ICを使って加算器などの論理回路を組んだことがある人ならばその配線の煩雑さが分かると思いますが、そういった物理的な配線をプログラム的に作り上げることが出来るのがこのPLDです。 このPLDの種類の一つとしてFPGAというものがあります。 これらPLDは回路を内部に作り上げるので、プロセッサーのように命令を理解する必要もなく、あるがままに回路が動くので高速処理が可能です。 また、1命令づつ処理を実行するわけではなく回路を並べれば同時並列に処理をすることが可能です。 そのため、複数のデバイスを制御するのに適しているわけです。
ASICは特定用途のために作られたICのことを言います。 特定用途に特化しているため、PLDよりも高速に処理が可能です。 ですが、用途毎に開発し、製造する必要があるためとてもコストと期間がかかります。 また、完成された回路なので後から変更を加えるといった回路のバージョンアップができません。 バージョンアップをしたければ、新たに製品を作り直さなくてはいけません。 逆に、あるていど生産数が見込める場合に一度ASICで作ると単価コストを非常に抑えることが出来ます。
メモリは情報の記憶を目的としたICです。
メモリにはいろいろな種類がありますが、大きく分けてROM、RAM、フラッシュメモリの3種類があります。
ROMは読み出し専用メモリのことで、予め読み出す情報を書き込んでおきます。
情報は新しく書き換えることは出来ません。
RAMはRandom Access Memoryのことで、書き換え可能なメモリです。
しかし、揮発性なので、電源を切ると書き込んだ情報は消えてしまいます。
フラッシュメモリは、書き換え可能で電源を切っても書き込んだ情報は消えません。
速度は基本的にROM>RAM>フラッシュメモリの順で用途によって使い分けます。
PCを例に挙げると、BIOSなどの変更が不要な情報はROMを使います。(最近のPCはBIOSアップデートか可能になるようにフラッシュメモリが使われています)
PC上でOSやアプリケーションといったプログラムを動作させるための実行メモリは随時書き換えを行うためRAMを使います。
実行メモリは電源が入っているときだけ記憶していればいいのでRAMを使うわけです。
そしてUSBメモリなどデータとして保持しておきたい情報はフラッシュメモリを使います。
電池が切れたからデータが消えた!ではいけないのでフラッシュメモリです。