from loam.shields.megawing import MegaWing from bit1 import Bit1 N = 32 NI = 2 NO = 2 def prog(): from bit1.isa import clr, set, O0 clr(O0) set(O0, jump=0) megawing = MegaWing(PapilioPro) megawing.Clock.on() megawing.Joystick.on() megawing.LED.on(NO) main = megawing.main() if NO == 1: main.LED = m.bits([main.LED]) slow = mantle.Counter(16) select = debounce(main.SELECT, slow.COUT) step = falling(select) bit1 = Bit1(prog, N, NI, NO, has_ce=True) m.wire(bit1(m.bits([1, 1]), ce=step), main.LED)
def test_bit1_output(NO): bit1 = Bit1(main, N, NI, NO) assert len(bit1.I) == NI assert len(bit1.O) == NO
def test_bit1_clock(has_ce, has_reset): bit1 = Bit1(main, N, NI, NO, has_ce=has_ce, has_reset=has_reset) assert len(bit1.I) == NI assert len(bit1.O) == NO assert not has_ce or hasattr(bit1, 'CE') assert not has_reset or hasattr(bit1, 'RESET')
import magma as m from loam.boards.papiliopro import PapilioPro from loam.shields.megawing import MegaWing from bit1 import Bit1 N = 32 NI = 2 NO = 1 megawing = MegaWing(PapilioPro) megawing.Clock.on() megawing.Switch.on(NI) megawing.LED.on(NO) main = megawing.main() if NI == 1: main.SWITCH = m.bits([main.SWITCH]) if NO == 1: main.LED = m.bits([main.LED]) def prog(): from bit1.isa import and_, jump, I0, I1, O0 and_( I0, I1, O0 ) jump( 0 ) bit1 = Bit1(prog, N, NI, NO ) m.wire( bit1( main.SWITCH ), main.LED )
from loam.boards.papiliopro import PapilioPro from loam.shields.megawing import MegaWing from bit1 import Bit1 N = 32 NI = 1 NO = 1 megawing = MegaWing(PapilioPro) megawing.Clock.on() megawing.Switch.on(NI) megawing.LED.on(NO) main = megawing.main() if NI == 1: main.SWITCH = m.bits([main.SWITCH]) if NO == 1: main.LED = m.bits([main.LED]) def prog(): from bit1.isa import mov, jump for i in range(NI): mov(i, i) jump(0) bit1 = Bit1(prog, N, NI, NO, debug=True) m.wire(bit1(main.SWITCH), main.LED)
import magma as m import mantle from loam.boards.papiliopro import PapilioPro from loam.shields.megawing import MegaWing from bit1 import Bit1 N = 32 NI = 1 NO = 2 def prog(): from bit1.isa import out out( [0, 0] ) out( [1, 0] ) out( [0, 1] ) out( [1, 1], jump=0 ) megawing = MegaWing(PapilioPro) megawing.Clock.on() megawing.LED.on(NO) main = megawing.main() clock = mantle.Counter(24) bit1 = Bit1(prog, N, NI, NO, mode='parallel', has_ce=True ) m.wire( bit1( m.bits(1,1), ce=clock.COUT ), main.LED )
NI = 1 NO = 8 def prog(): from bit1.isa import set, clr, halt for i in range(NO): j = (i - 1 + NO) % NO set(i) clr(j) clr(NO - 1) halt() megawing = MegaWing(PapilioPro) megawing.Clock.on() megawing.Joystick.on() megawing.LED.on(NO) main = megawing.main() slow = mantle.Counter(16) select = debounce(main.SELECT, slow.COUT) step = falling(select) clock = mantle.Counter(24) bit1 = Bit1(prog, N, NI, NO, has_ce=True, has_reset=True) m.wire(bit1(m.bits(0, 1), ce=clock.COUT, reset=step), main.LED)
#inst([0,0, 0]) #inst([1,1, 0]) #inst([0,0, 0]) #inst([1,1, 0], ZERO, label()-1 ) #out( 1,0, 1, jump=label()) # halt papilio = PapilioPro() papilio.Clock.on() for i in range(3): papilio.A[i].output().on() main = papilio.main() clock = mantle.Counter(6)() reset = clock.COUT counter = mantle.Counter(5, has_ce=True) mosi = mantle.PISO(16, has_ce=True) bit1 = Bit1(main, N, NI, NO, mode='parallel', has_reset=True)) sclk, ss = bit1(counter.O[4], reset=reset) counter(ce=sclk) mosi( 0, m.bits(1,16), reset, ce=reset|sclk ) m.wire( ss, main.A[0] ) m.wire( sclk, main.A[1] ) m.wire( mosi.O, main.A[2] )