学校用のシンプルなものをデザインする必要があります。具体的にはムーア FSM です。状態遷移がどのように発生するかわかりません。次の状態は各クロックですか? レジスタをシフトして値を追加できるかどうか疑問に思っているので、すべて同じ状態で知る必要があります... ウェーブエッジを使用できますか?
編集:
ゲート レベルから回路図としてレジスタを使用してALU部分を設計する必要があるため、ターゲットCPUはありません。
アルゴリズム図を作成し、 Moore FSMのルールに従って状態を関数ブロックに配置しました。操作の各ブロックは 1 つの状態を取得します。
たとえば、状態S1では、次の操作があります。y0 = Reg1 を左にシフトします。y1 = Reg1 = Reg1 + Reg2 . したがって、Moore FSMの制御部分が出力するマイクロコマンドは0000011 (yn...y1,y0) になります。このマイクロコマンドは、設計する必要がある ALU 部分への入力である必要があります。どちらもReg1を使用しているため、y1、y0が互いに競合することに気付きました。
私は実際に制御部分を持っていないため、コアFSMを想像し、レジスタを備えたALUのみを設計する必要があるため、問題があります。これが、複数のクロック サイクルを取得するかどうか疑問に思っていた理由です。つまり、y0、y1をシーケンスすることができますか、それとも 1 クロックで操作全体を完了する必要がありますか?
並列入力、並列出力の非シフト レジスタを作成する予定です。明らかに、マイクロコマンドの 2 つの操作を同時に行うことはできません。それで、なにかお手伝いできますか:
1. make extra states? which i really dont want to do
2.use edges of a single clock? (might cause problems?)
3.Assume i get a preset amount of ticks from the clock to complete the microcommand ?
This would make the most sense, but i dont know if its the case.
The control unit does "know" the algorithm and thus how many operations need to be performed
制御部分は完全に抽象的であり、これが実際にどのように処理されるかわかりません。