先週から、啓二さんにマイコンに関して教わることになった CPU、I/O、メモリ
哲さん。今日も、愛犬ロボの散歩と啓二さんの仕事部屋へと
やってきた。愛犬ロボは、まだ啓二さんのところのAibo
には慣れない。まあ、ロボにとってAiboは同類ではない
ので、当たり前かも知れないが。
今日は、コンピュータの3機能の話らしい。
哲 :こんちは。やってきたぞ。 啓二:ちょっと待て。片づけるから。 哲 :汚い部屋だな。掃除しているのか。 啓二:徹夜して仕事を仕上げていたから、汚いんだよ。 ハードウエアのバグかソフトのバグかわからずに、調べていたら 夜が明けていた。少し、眠い。ちょっと、外で待っていてくれ。 (部屋の外で、哲さんは手持ちぶさたで待っている) 哲 :家事手伝いロボットが必要なのは、お前の方じゃないのか。 啓二:そうかもなあ。もう少しで片付くから、散歩して来てくれ。 (ロボを歩かせて、5分程度で戻ってきて、部屋の外から声をかける) 哲 :おーい、終わったか。 啓二:終わった、終わった。入ってきてくれ。 哲 :さて、今日の話は、3機能だ。 啓二:うん、それでは、3機能を言ってみてくれ。 哲 :CPU、I/O、メモリだよ。 啓二:まず、CPUから解説しよう。 CPUは、Central Processing Unitの略で、中央処理装置だ。 哲 :中央処理装置のほかに、大型計算機ではチャネルなんてのがあるなあ。 啓二:うん、メインフレーム(大型計算機)なら、通信や入出力を専用 コンピュータのチャネルにやらせるから、CPUだなあ。 でも、マイコンの場合は、通信も入出力も制御は、CPUが担当する。 命令で開始、停止、情報伝送のトリガーをかけるからCPUという 名称が妥当だと言える。 哲 :マイコンのI/Oには、どんなのがあるんだ。 啓二:単純なデジタル入力と出力の他に、タイマー/カウンタやシリアル通信 およびA/Dコンバータ、D/Aコンバータがある。 哲 :結構いろいろあるんだなあ。ところで、USBはないのか。 啓二:USBをI/Oとして内蔵しているマイコンもある。ただし、USB はシリアル通信なので、その中に含めているマイコンもある。 少し外付け回路を加えてみるとUSBを扱えるマイコンが大半 だけれどね。 哲 :A/D、D/Aって何だよ。 啓二:今のコンピュータは、デジタル信号を処理するのが大半なんだ。 ところが、温度や光のような物理量はアナログ信号。アナログ信号を デジタル信号にしないと処理できないので、A/Dコンバータが必要 になる。 また、場合によっては、アナログ信号しか受付けない機器があるので、 D/Aコンバータが必要になるんだ。 哲 :ワンチップマイコンって、情報を扱うよりも、機器を扱うことが 多いんだ。 啓二:そう。Windowsマシンが、どちらかというと情報を扱うのに対して、 マイコンは機器を扱うことが多い。どちらも情報と機器を扱えるけれど、 Windowsマシンで、電気炊飯器を動かしてはいないだろう。ワンチップ マイコンは、単機能の製品向けのコンピュータと考えるとよい。 携帯電話は、最近は情報携帯端末と分類されるけれど、元々は電波を 利用した電話の機能だけだったでしょ。 哲 :そうだなあ。じゃ、タイマー/カウンタは何に使うんだ。 啓二:Windowsマシンは、イベントドリブンでプログラムするだろう。OSが 介在するからイベントドリブンでいけるんだ。 ところがワンチップマイコンの場合には、OSを入れないことがある から、イベント対応処理を実現したいと困る。 そこで、タイマーを利用して周期的にイベントを発生させて処理する。 カウンタは、あるイベントが何度発生したかで、処理開始・停止させたい ようなときに使うのさ。 哲 :わかったような、わからないような。 啓二:実際に何かイベントで動くプログラムを作成するとわかるさ。そうだな、 後で時計を作ってみるか。時計は、タイマー/カウンタ機能そのものだ から、よく理解できると思うよ。そうそう、ロボットの間節を動かすとき にも、カウンタを使ったりする。角度をカウンタの値をみなして、これ 以上大きくすると破壊してしまうとかを監視できる。 哲 :じゃ、メモリについて解説してくれよ。 啓二:ほい来た。最近のワンチップマイコンは、メモリにROMとSRAMを もち、ROMには、フラッシュメモリとEEPROMを使うことが多い。 哲 :フラッシュメモリとEEPROMって、どう使い分けるんだよ。 啓二:フラッシュメモリは、プログラムを入れるんだ。そしてEEPROMは 動作中に発生したデータを保存しておいたりする。SRAMは電源を 与えておかないと情報を保持できないが、EEPROMだとデータを 保存すると電源を与えなくても保持しておける。それで、フラッシュ メモリとEEPROMの両方を持っているマイコンが多い。 哲 :SRAMの容量は、どの程度あるのかな。マイコンによって違うだろう けど。 啓二:30バイト程度から4kバイト程度まで幅が広いよ。ワンチップ マイコンの性能を引き出すには、データシートを入手して調べる 必要がある。 マイコンによっては、英文のデータシートしか用意されないことが あるので英語ができるようでないと駄目だね。 哲 :うちの子供に、何故英語を勉強するんだと聞かれたことがあるんだ。 ロボットを動かすために必要とでも答えるといいだろうか。 啓二:それでいいんじゃないの。日本の教育に欠落しているのは、何に役に立つ のと言われたときに、周囲の大人が自信をもって答えられないことじゃ ないかと思うの。ただ勉強しろじゃ駄目だし、説得力がないんだなあ。 中学生にもなると自我が発達してくるから、自分が納得しないと動か なくなるだろう。 哲 :うん。 啓二:勉強しろというならば、将来こういうことに役に立つんだ と言えないとね。せっかくロボットに興味を持っても、英語 という壁があって、先に進めないのではねえ。数学にしてもそう。 ハードウエアを作るときに、計算は絶対に必要だし、ロボットを 動かすときには、微分や積分も必要になる。 哲 :中学生に、微分積分は早いのではないかな。 啓二:あのねえ、厳密な数学の微分や積分は教えなくてもいいけれど、 概念は知らないとまずいの。微分と積分がまずいならば、差分と 積算でもよいよ。 哲 :差分なんて、実生活でも使わないだろう。 啓二:使っているよ。自動車の運転をしているなら絶対に使っている。 積算も使っている。まあ、この話は、後で実際にロボットを作った ときにでもまた出てくるので、深入りするのはやめよう。 哲 :ワンチップマイコンから、教育の話になったなあ。 啓二:徹夜したから、眠くなってきた。今日はこれまでにしよう。 お疲れさん。