コード例 #1
0
def muxed_block_gens(mux_out, reset, clock):

    mux_sel, bg0_en, bg1_en = [Signal(bool(0)) for i in range(3)]
    bg0_out, bg1_out = [Signal(intbv(0)[2:]) for i in range(2)]

    bg0 = block_gen(bg0_out, bg0_en, clock, reset, n=4)
    bg1 = block_gen(bg1_out, bg1_en, clock, reset, n=4)
    my_mux = mux(mux_out, bg0_out, bg1_out, mux_sel)

    return bg0, bg1, my_mux
コード例 #2
0
def tb_block_gen():
    count, enable, clock = [Signal(intbv(0)) for i in range(3)]
    reset = ResetSignal(0, active=ACTIVE_LOW, async=True)

    bg = block_gen(count, enable, clock, reset, n=4)

    HALF_PERIOD = delay(10)

    @always(HALF_PERIOD)
    def clockGen():
        clock.next = not clock

    @instance
    def stimulus():
        reset.next = ACTIVE_LOW
        yield clock.negedge
        reset.next = INACTIVE_HIGH
        for i in range(12):
            enable.next = min(1, randrange(3))
            yield clock.negedge
        raise StopSimulation

    @instance
    def monitor():
        print "enable  count"
        yield reset.posedge
        while 1:
            yield clock.posedge
            yield delay(1)
            print "   %s      %s" % (enable, count)

    return clockGen, stimulus, bg, monitor