3
LogiSimの非常にシンプルなCPU設計
現在は高校3年生で、コンピューター/電気工学、特にマイクロプロセッサーの設計に興味があります。私が読んだチャールズ・ペゾルドによってコードを、そして読み始めているマイクロプロセッサの設計Wikibook(不完全のようです。)読み取ってコードを、私はCPUの背後にある基本的なロジックを理解し、LogiSimに1を構築し始めています。コードの第17章では、構築したいCPUについて詳しく説明していますが、回路には主要なコンポーネント(クロック信号、命令のデコード)がありません。一部のクロック信号はかなり明白なようです(PCは安定したクロック信号を必要とするようです)が、他のクロック信号(RAM値をラッチする方法など)は、よく考えて動作するようにしなければなりませんでした。 単一の入力で加算と減算を切り替える動作アキュムレータを構築できます(ALUとは正確に呼ばれません。L部分がないためだと思います)。これは、計算部分に必要なすべてです。 -ジャンプオペコードが機能するようになったら、コードに乗算と除算を実装できます。私が苦労しているのは、命令のデコードです。いくつかのグーグル検索で、各オペコードを複数のマイクロ命令として解釈する必要があることがわかりましたが、これがどのように機能するのかについて迷っています。現在、私の命令デコーダは、各オペコードごとに単一のバイナリ出力を備えた組み合わせ分析回路です-全部で13です。 コードが機能する方法は、1つの8ビットコード値(私はローエンドバイトのみを使用)と、2つの別々の8ビットアドレス値を組み合わせて、RAMへの16ビットアドレス入力になるように結合することです。値をラッチするために、10bまでカウントしてから00bにリセットする別のカウンターがあります。これは、各ラッチのクロック入力です(3つのラッチには、a、b、cがあります。2番目のクロックは、aが1で、b&cが0で、bが1で、1&cが0です。 cは1で、1とbは0で、リセットされます)。しかし、ADD 000Ahなどの命令では、PCは000AHにジャンプします...これはアキュムレータに追加されることになっていますが、実際にはコードラッチにラッチされ、次のオペコードとして解釈され、全体が実行されます。クレイジー。 命令のデコードとクロック信号の実行方法に関するいくつかの大きな情報が不足しているように感じます... LogiSimの.circファイルは次のとおりです。https ://dl.dropboxusercontent.com/u/61676438/PetzoldMk5/8BitAdder.circ https://dl.dropboxusercontent.com/u/61676438/PetzoldMk5/8BitAdderSubtractor.circ https:// dl.dropboxusercontent.com/u/61676438/PetzoldMk5/8BitInverter.circ https://dl.dropboxusercontent.com/u/61676438/PetzoldMk5/8BitLatch.circ https://dl.dropboxusercontent.com/u/61676438/PetzoldMk5/ ID.circ https://dl.dropboxusercontent.com/u/61676438/PetzoldMk5/PetzoldMk5.circ PetzoldMk5はメインのCPUであり、ライブラリとしてインポートされる他のファイルに依存しています。 オペコード(すべてバイナリ)のリストを次に示します。 Load 0001 Add 0010 Add w/ Carry 0011 Sub 0100 Sub w/ Borrow 0101 Jump 0110 Jump w/ Carry 0111 Jump W/ 0 1000 Jump w/o C 1001 Jump W/o 0 1010 …