2

私は、新しい機能とロジックをデータパスに実装した Z-Scale RISCV プロセッサに取り組んでいます。一連の if ループを使用せずに、コードの特定の部分を「電源オフ」する簡単な方法が存在するかどうか疑問に思っています。Zスケールプロセッサの通常実装と拡張実装の切り替えを簡単にしたい。

私が実装した新しいロジックは、データパスの主要コンポーネントを置き換えるものではなく、機能を拡張するものです。

4

2 に答える 2

2

コードは次のようになります。

val a = Wire(UInt())
if (extension)
    a := 1.U
else
    a := 2.U

できることは、2 つの設計の違いを含む特性を実装する Z スケール クラスと Z スケール拡張クラスを作成することです。

trait RISC_V_Processor {
    def do_a : UInt
}

class Z_Scale with RISC_V_Processor {
    def do_a : UInt = 2.U
}

class Z_Scale_extended with RISC_V_Processor {
    def do_a : UInt = 1.U
}

val processor = new Z_Scale_extended()
val a = processor.do_a()

これは基本的に、条件をポリモーフィズムに置き換えています。 https://sourcemaking.com/refactoring/replace-conditional-with-polymorphism

于 2016-11-17T22:19:21.630 に答える