0

ほんの一握りの命令と操作で非常に単純なマシンを作成することにより、MyHDL を学習しようとしています。私が苦労しているのは、解決するのに複数のクロックサイクルがかかる操作を処理するようにマシンを設計するための最良の方法です。現在、私が書いたすべてのハードウェア コンポーネントは、解決するのにたった 1 つのティックしか必要としないため、問題を抱えているのはコントロール ユニットです。

たとえば、マシンのすべての操作が完了するまでに 1 ~ 3 クロック サイクルかかるとします。これは、すべての命令に 3 サイクルが必要であることを意味します (現在、並列処理を行っていないため)。

これは、マシンに 3 つのステージが必要であることを意味します。つまり、HDL 用語では、3 つのクロック センシティブなロジック ブロックが必要です。マシンの 1 つの完全な反復は次のようになります。

  • コントロールA
    • ティック :: コンポーネント
  • コントロール B
    • ティック :: コンポーネント
  • コントロール C
    • ティック :: コンポーネント
  • Aに戻る

並列処理がなく、各ステージが共有ハードウェアを使用しているため、制御ブロックを順番に順番にトリガーする必要があります。これを行うには、複数のクロックが必要ですか? コンポーネント用の1つのクロックと、各制御フェーズの最後にコンポーネントクロックのティックが行われる制御用の1つのクロック? ただし、コントロール A、B、および C はすべて、各クロック ティックによって一緒に実行されます。次に、コンポーネント用に 1 つ、各制御フェーズの最後にコンポーネント クロックと次のフェーズのクロックが進められる各制御フェーズ用に 1 つずつ、計 4 つのクロックが必要ですか? または、1 つのクロックと、各フェーズがいつ進むべきかを伝えるブール信号が必要ですか (すべての制御フェーズがフラグをチェックし、設定されている場合は実行して次のフェーズのフラグを設定します)。

4

1 に答える 1

1

あなたの説明から、ステートマシンを使用して回路を独立したユニットに分割して問題を解決しようとすることができると思います。

設計に並列処理を追加したくないと言ったので、設計を 1 つの回路内に保持し、1 つのクロックのみを使用して、レジスタを使用して動作を制御することができます。1 クロックで 1 つのアクションが実行されることを考慮して、回路を記述してみてください。

いくつかのサンプル コードとより具体的な情報を追加してみてください。

于 2017-05-28T18:46:43.450 に答える