コード例 #1
0
ファイル: harness.py プロジェクト: splhack/loam
def main(ninputs,
         noutputs,
         input_isbits=True,
         output_isbits=True,
         has_clock=False):
    assert 0 <= ninputs <= 8
    assert 0 <= noutputs <= 8

    print(m.mantle_target)

    if m.mantle_target == 'ice40':
        from loam.boards.icestick import IceStick

        icestick = IceStick()

        if has_clock:
            icestick.Clock.on()

        for i in range(ninputs):
            icestick.J1[i].input().on()

        for i in range(noutputs):
            icestick.J3[i].output().on()

        top = icestick.main()

        if ninputs:
            top.I = top.J1
        if noutputs:
            top.O = top.J3

    elif m.mantle_target == 'spartan3' or m.mantle_target == 'spartan6':
        from loam.boards.papilioone import PapilioOne
        from loam.boards.papiliopro import PapilioPro
        from loam.shields.megawing import MegaWing

        Papilio = PapilioOne if m.mantle_target == 'spartan3' else PapilioPro
        megawing = MegaWing(Papilio)

        if has_clock:
            megawing.Clock.on()
        megawing.Switch.on(ninputs)
        megawing.LED.on(noutputs)

        top = megawing.main()

        if ninputs:
            top.I = top.SWITCH
        if noutputs:
            top.O = top.LED

    else:
        raise ValueError(m.mantle_target)

    if ninputs == 1 and input_isbits:
        top.I = m.bits([top.I])
    if noutputs == 1 and output_isbits:
        top.O = m.bits([top.O])

    return top
コード例 #2
0
def main(n):
    import magma as m
    m.set_mantle_target('spartan3')
    from loam.boards.papilioone import PapilioOne
    from loam.shields.megawing import MegaWing
    from mantle import LUTN

    megawing = MegaWing(PapilioOne)
    megawing.Switch.on(n)
    megawing.LED.on(1)

    top = megawing.main()
    pown = 1 << n
    lut = LUTN(pown // 2 * [0, 1], pown)
    I = [top.SWITCH[i] for i in range(n)] if n != 1 else [top.SWITCH]
    m.wire(lut(*I), top.LED)
    m.EndCircuit()

    return top
コード例 #3
0
ファイル: _xor2.py プロジェクト: splhack/loam
import sys
from magma import *
from mantle import *
from loam.shields.megawing import MegaWing

megawing = MegaWing()
megawing.Switch.on(2)
megawing.LED.on(1)

main = megawing.main()
A = main.SWITCH[0]
B = main.SWITCH[1]
O = main.LED[0]

xor2 = Xor2()

xor2(A, B)
wire(xor2.O, O)

compile(sys.argv[1], main)