2009年10月22日 カテゴリー:奮闘日記
10月22日(木)はれ
CEATECも終わってひと段落したので、またまた無線LAN奮闘記を進めさせていただきます。
前回、情報を送るのに電圧を使うというお話をしましたが、今日はもう少し掘り下げてどうやって情報を送っているのかを説明します。(参照:前回の記事)
ちょっと専門的なお話になりますので、覚悟して読んでください
では師匠、よろしくお願いします。
「モールス信号を送る時はトンとツーという
電圧をかける長さの組み合わせで情報を送っているのに対し、
ハイパーターミナルでは電圧をかけるかかけないかで
情報を送っているというお話をしましたよね?」
しましたねー。
でも電圧をかけるかかけないかだけでどうやって情報を送るんですか?
2種類しか送れないんじゃないですか???
「2種類というのはいいところに気がつきましたね。
確かに、"かける"か"かけない"か2通りしかないんです。」
いいところに気がついた? うーん...
「以前、2進数の話をしたことがありましたよね?
情報も全て2進数に変換して送ってるんです。」
ああ!2進数!ありましたねー。
文字や数字を全て0と1で表現するやつですね。
「そうです。よく覚えていましたね。
文字を2進数で表したものを
"ASCII(アスキー)文字コード"といいます。」
アスキー...
「例えば、"a"という文字をASCIIで表すと、『0110 0001』となります。」
おお!
電圧をかけたりかけなかったりして情報を送るってことですね!
「そのとおりです!!では、今からUARTでPCをつないで'a'という信号を
送るので、その波形をオシロスコープで見てみましょう。
ちょっとややこしいのですが、オシロスコープでは
グラフの上の部分が0、下の部分が1を表しています。」
え?普通1が上じゃありませんか?
「データ0は+3v~15v、データ1は-3v~-15vを表しているんですよ。
なのでオシロスコープで見たら+側(上の部分)が0で
-側(下の部分)が1になるんです。」
では、01100001の場合、上下下上上上上下ってことですね!見てみよーっと
...?
あれ?ちょっと違いますよー
「言い忘れてましたが、UARTでデータを送信する時は、
位の小さいものから順番に送るんです。だからこの場合は、
10000110になるんですね。」
オシロスコープでは上下逆だし、データを送る順番も逆って
...わかりにくーい
「確かにそうですね。でも考えてみてください。
人間は複数桁の足し算、引き算、掛け算をするとき、
下の位から計算しますね。これはコンピュータも同じなんですが、
計算するときは下の位からなのに、通信は上の位からというのは
コンピュータにとってはちょっと不自然なんです。
このしくみのことをLSB(Least significant bit)ファーストといいます。
ちなみに位の大きいものから送るしくみの事は
MSB(Most significant bit)ファーストといいます。」
ふーん
さすが!
「UARTのデータ通信にはもう1つポイントがあって、
データを送る前に0という信号を、送り終わった後に
1という信号を付けて送ります。」
始まりと終わりを表す信号を送ることで間違いを少なくしているんですね。
「はい!そうです。はじまりの信号のことをスタートビット、
終わりの信号のことをストップビットという言い方をします。」
...ってことはー、
「はい!そうです。ではそれを踏まえてもう一度波形を見てみましょう!」
おおーー!本当に波形がそうなってるーー。
目で見てわかるっておもしろいですね!
「電圧をかけたりかけなかったりで情報を送るしくみ、
理解できましたか?」
はーい。バッチリです★
【オシロスコープの画面です。aの波形】