PIC講習/PICの仕組み

概要

今回は、PICの動作の仕組みを解説します。
用語も増えるので、意味をきちんと覚えてください。

重要語

クロック

コンピュータを動作させる同期信号

サイクル

命令実行の最小時間単位

命令

コンピュータへの指令の最小単位

プログラムメモリ

命令列を記憶する回路

プログラムカウンタ

次に実行する命令のアドレス

レジスタ

数値を一時記憶する回路

必要語

機械語

コンピュータが読む言語

クロック

多くのコンピュータは、トランジスタを用いた電子回路です。
実は、トランジスタを流れる電流は、瞬間的には増えません。
徐々に電流量が増加し、他のトランジスタを駆動できるようになるまで、遅延が発生します。
これが積み重なると、回路の各部の間で、無視できないずれとなってしまいます。
そこで、多くの場合、クロック信号clock signalと呼ばれる信号で、同期を取っています。
クロック信号が来るまで次の手順に移らないように、回路を組んでおくのです。

クロック周波数

クロック振動の周波数を、クロック周波数といいます。
高いほど速く動きますが、高すぎると同期を取れません。
速く動くと消費電力も少し増えるので、必要な高さに留めておきましょう。

サイクル

よほど複雑な回路でない限り、1クロックで行える動作には限りがあります。
そこで、PICでは、4クロックを1サイクルとしています。

命令

機械語やアセンブリ言語は、いくつもの簡単な指令を並べて記述します。
この指令1つのことを、命令instructionといいます。
1命令の実行には、命令の動作によって1~2サイクルを要します。
詳しくは、各動作の解説ページや、命令集のページを見てください。

メモリ

通常、メモリには様々な情報を保存できますが、PICのメモリは用途によって細かく分かれています。
これ以外にもいくつかのメモリがありますが、使うときに解説します。

プログラムメモリ

プログラムメモリは、命令の列を記憶する回路です。
命令は1語wordずつ、オペコードop-codeとして保存されます。
オペコードとは、命令の内容を表すビット列のことです。
PIC16系列では、1語のオペコードの大きさは14ビットです。
なお、プログラム書き込み以外では、このメモリの値を変更できません。
また、電源を切っても値は保持されます。

アドレス

PICはいくつかのメモリを持ちます。
また、それぞれの内部に多くの値を保存できます。 PIC16F1827のプログラムメモリであれば、4096ワードのオペコードを保存できます。
ここから必要な値を取り出すために、値の位置を指定する必要があります。
この位置の番号を、アドレスaddressといいます。
アドレスは0から始まり、サイズより1つ小さい番号まで連続します。
1827のプログラムメモリなら、0から409516進=FFFまでが有効なアドレスです。
場合によっては、サイズ内でも無効なアドレスが存在します。
無効なアドレスを使ったときの動作は、メモリによって異なります。

プログラムカウンタ

プログラムカウンタは、次に実行する命令のオペコードが保存されているアドレスを示します。
起動時とリセット時に、自動的に0になります。
また、命令を1つ実行すると、1が足されます。

レジスタ

レジスタregisterとは、計算中の値などを保存するメモリです。
PIC16系列では、レジスタ1つの大きさは8ビット、つまり1バイトです。
実行中に値を変更できますが、電源を切ると失われてしまいます。
PIC16F1827は、38416進=180個の汎用レジスタGeneral Purpose Registerを持ちます。
これらのレジスタは、プログラムが自由に使ってよいです。
また、特殊レジスタSpecial Function Registerが100個ほど存在しますが、これらは用途が決められています。
プログラムカウンタもここに含まれます。