Dies Aliquanti

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

PICを作ろう ,全体の構成 ~昼休みにまったり進めるプロジェクト~

具体的なコーディングをする前に,全体の構成を少し考えてみる.PICは,プログラムカウンタやステータスレジスタもSpecial Function Registerということで,通常のFile Registerと同じようにアクセスできる.だが,全体の構成を考える上で,やはりCPUとIO(Special Function Register),Memory(File Register)を分離しておいたほうが,PICのいろいろなバリエーションを実装するうえで,便利だろう.では,何をというか,どこまでCPUに含めるべきか?W-Reg,ALU辺りはいいとして,プログラムカウンタやステータスレジスタはどうだろう?無理にCPUに入れなくてもいいのだが,直接インストラクションの内容によって駆動されるかどうかで,区別して,これらはCPUに入れることにしよう.

で,プログラムカウンタ(PC)あたりから考えてみることにする.PCとスタックは一体化していると考えて,PCが行うべき動作は,
- +1 (インクリメント)
- 分岐
- サブルーチンコール
- サブルーチンからの復帰
- ホールド(割り込みサイクル)
の5種類である.したがって,PCの「命令」としては5種類である.一般的な実装では,PICそのもののインストラクションをデコードし,これらの「命令」に再度エンコードしてPCに与える.MicroChip社のPICのブロックダイアグラム(2007/7/12の日記参照)でも,Instruction Decode&Controlというのがあり、これがその機能だろうと想像できる.
もちろん,これでよいのだが,デコーダが集中していると,この部分が出来上がらないと,全体の動作の確認がしづらい.今回のように,ちんたら「開発」をしていると,すこし,「アルツ」の入っている私(笑)には困ったことになる.

そこで,このような集中デコーダではなく,PCなどの個々のモジュールに分散してデコーダを持たせることにする.このような実装にすることで,部分的に出来上がったところだけでも,CPUの動作を確認しやすくなる(はずである).また,CPUの各部の動作と「命令」の関係を直接的に記述することになるので,CPUの働きに対する理解が容易になる(誰のため?笑).論理合成によるゲートレベルへの実装には不利になるだろうが,全体の階層を崩したうえで最適化を図れば影響は軽微だろうと思う.ここまで考えると,CPUに内蔵するつもりのSpecial Function RegisterもCPUだけで完結する実装も可能だが,アドレスデコーダを分散させるのはさすがに問題がありそうなので,それはやめようと思う.
---
本日の御託
土用の丑も近いことだし,のびのびになっていた誕生日祝いで,横浜の高島屋の「野田岩」へうなぎを喰いにいった.激混みなので,順番待ちに名前を書いて,そこらで時間をつぶす.白焼きでビールを飲み,うな重を喰う.旨かったが,1時間半待つ価値があるかどうかはビミョー.


コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://diesaliquanti.blog.fc2.com/tb.php/348-565a1903
この記事にトラックバックする(FC2ブログユーザー)

FC2Ad

まとめ

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。