[PYTHON] Decoderbeschreibung in veriloggen (Beispielbeschreibung der case-Anweisung)

Ich verwende ein Tool namens veriloggen, das mit Python HDL-Beschreibungen (Hardware Description Language) erstellen kann, aber es fiel mir schwer, nicht zu wissen, wie man eine case-Anweisung wie einen Decoder schreibt, daher lasse ich sie als Memo. Ich werde.

decoder.py


from __future__ import absolute_import
from __future__ import print_function
import sys
import os
from veriloggen import *

def mkDecoder():

    m = Module('decoder')
    indata = m.Input('in', 3)
    out = m.OutputReg('out',8)

    decCond = []
    decCond.append( When(0)(out(0b00000001)) )
    decCond.append( When(1)(out(0b00000010)) )
    decCond.append( When(2)(out(0b00000100)) )
    decCond.append( When(3)(out(0b00001000)) )
    decCond.append( When(4)(out(0b00010000)) )
    decCond.append( When(5)(out(0b00100000)) )
    decCond.append( When(6)(out(0b01000000)) )
    decCond.append( When(7)(out(0b10000000)) )
    #decCond.append( When()(out(0b10000000)) )

    m.Always() (
        Case(indata)(
            *decCond
            )
        )

    return m

if __name__ == '__main__':
    dut = mkDecoder()
    verilog = dut.to_verilog(filename='dut.v')
    print(verilog)

    sim = simulation.Simulator(dut)
    rslt = sim.run()
    print(rslt)

"Wenn (0) aus (0b000000001)" bedeutet "wenn der Wert 0 ist, wird 00000001 der aufgerufenen Variablen (Signal) binär zugewiesen". Registrieren Sie die Kombination eines solchen Werts und des Zuweisungsausdrucks in der Liste decCond. Ich habe diesmal einen Kommentar abgegeben, aber Sie können eine Standardanweisung hinzufügen, indem Sie When () nur am Ende dieser Liste festlegen. Danach gibt die case-Anweisung in der always-Anweisung den Variablennamen an, der als Eingabe verwendet werden soll.

Recommended Posts

Decoderbeschreibung in veriloggen (Beispielbeschreibung der case-Anweisung)
Teilweise bei Problemen
[Bash / Linux] Hinweise bei Problemen
Dies ist ein Beispiel für eine Funktionsanwendung im Datenrahmen.
Beispiel für das Abrufen des Modulnamens und des Klassennamens in Python