Description du décodeur dans veriloggen (exemple de description de la déclaration de cas)

J'utilise un outil appelé veriloggen qui peut assembler des descriptions HDL (Hardware Description Language) en utilisant Python, mais j'ai eu du mal à ne pas savoir comment écrire une déclaration de cas comme un décodeur, alors je vais le laisser comme un mémo. Je vais.

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)

"Lorsque (0) out (0b000000001)" signifie "lorsque la valeur est 0, 00000001 est affecté en binaire à la variable (signal) appelée". Enregistrez la combinaison d'une telle valeur et de l'expression d'affectation dans la liste decCond. J'ai commenté cette fois, mais vous pouvez ajouter une instruction par défaut en définissant When () uniquement à la fin de cette liste. Après cela, l'instruction case dans l'instruction always spécifie le nom de la variable à utiliser comme entrée.

Recommended Posts

Description du décodeur dans veriloggen (exemple de description de la déclaration de cas)
Partiel en cas de problème
[Bash / linux] Notes en cas de problème
Ceci est un exemple d'application de fonction dans dataframe.
Exemple d'obtention du nom du module et du nom de la classe en Python