Last update $Id$
(c) 2007 BakaOyaji
準備編 その1
で、準備として、PIC16F648A(以下16F648)のデータブックを眺めはじめました。アーキテクチャの細かいところは書いてませんね…
仕方ないので、よく使われるPIC16F84Aのデータブックも眺めます。こちらのほうがいいですね。Special
Functionレジスタの中身は、PICmicro Mid-Range MCU Family Reference
Manual(文書番号DS33023A)のほうがよくわかります。PICの14ビット系アーキテクチャの特徴は、
- 命令メモリ/バスとデータメモリ/バスの分離。いわゆる「ハー
バード・アーキテクチャ」ですね。
- 1命令/1クロック
- 命令は、すべて1ワード(14ビット)で固定
- PipeLine処理で、演算と次の命令のフェッチを同時実行
- また、データメモリとI/Oは区別されていません。
プログラムカウンタ(PC)やステータスレジスタも汎用のレジスタ(メモリ)と同様にアクセスすることができます(実装はちょっとめんどくさくなります
ね)。プログラムカウンタを汎用のレジスタにするのは、たしかDECが特許をとっていたはずです(もう失効してるはずです)が、もとネタは見つけられませ
んでした。
内部
クロックは4相のようですが、できれば単相クロックのほうがありがたいので、できるだけそうしましょう。
データブックのFIGURE 1-1: PIC16F84A BLOCK
DIAGRAMを眺めてみます.FileRegisterや,I/OなどのSpecialFunctionレジスタとALU周りの接続は双方向バス風に描
かれていますが,「んなはずはないだろう」と突っ込みを入
れます.
近代的なLSIの設計では内部に双方向や3ステートバスを入れることはありません.理由は、遅延の計算が非常に複雑になってしまい、バスの衝突回避とかの
タイミングが面倒になるからです。
脱線してしまいました。
PICの命令はファイルレジスタの内容に対して、演算結果を同じアドレスのファイルレジスタに書き戻す、いわゆる「リード・モディファイ・ライト」ができ
ます。したがって、ファイルレジスタは、アドレスポート1ヶで、データ入力ポート(data-in),データ出力ポート(data-out)が分離した形
式になっているほうが、しっくりします。
(クリックで拡大)
そんなことを考えて,ブロックダイアグラムを書き直すとこの絵のようになると思います.これでだいぶわかりやすくなりました.これなら,単相クロックでも
動きそうです.もう少し,考えます.
<<前に戻る Index へ 次へ>>