package synthesijer.hdl.sample; import synthesijer.hdl.HDLModule; import synthesijer.hdl.HDLOp; import synthesijer.hdl.HDLPort; import synthesijer.hdl.HDLPrimitiveType; import synthesijer.hdl.HDLSequencer; import synthesijer.hdl.HDLSignal; import synthesijer.hdl.HDLUtils; import synthesijer.hdl.expr.HDLPreDefinedConstant; import synthesijer.hdl.sequencer.SequencerState; public class StateBranch extends HDLModule{ public StateBranch(){ super("state_branch", "clk", "reset"); HDLPort sel = newPort("sel", HDLPort.DIR.IN, HDLPrimitiveType.genBitType()); HDLPort q = newPort("q", HDLPort.DIR.OUT, HDLPrimitiveType.genBitType()); HDLSequencer s = newSequencer("main"); SequencerState idle = s.getIdleState(); SequencerState s0 = s.addSequencerState("s0"); idle.addStateTransit(s0); SequencerState s1 = s.addSequencerState("s1"); SequencerState s2 = s.addSequencerState("s2"); s0.addStateTransit(newExpr(HDLOp.EQ, sel.getSignal(), HDLPreDefinedConstant.HIGH), s1); s0.addStateTransit(newExpr(HDLOp.EQ, sel.getSignal(), HDLPreDefinedConstant.LOW), s2); q.getSignal().setAssign(idle, HDLPreDefinedConstant.LOW); q.getSignal().setAssign(s1, HDLPreDefinedConstant.HIGH); q.getSignal().setAssign(s2, HDLPreDefinedConstant.LOW); } public static void main(String... args){ StateBranch m = new StateBranch(); BasicSim sim = new BasicSim(m, m.getName() + "_sim"); HDLSignal sig = sim.getModuleInstances()[0].getSignalForPort("sel"); sig.setAssign(null, HDLPreDefinedConstant.HIGH); HDLUtils.generate(m, HDLUtils.VHDL); HDLUtils.generate(sim, HDLUtils.VHDL); HDLUtils.generate(m, HDLUtils.Verilog); HDLUtils.generate(sim, HDLUtils.Verilog); } }