OpenCores
URL https://opencores.org/ocsvn/myblaze/myblaze/trunk

Subversion Repositories myblaze

[/] [myblaze/] [trunk/] [rtl/] [test.py] - Blame information for rev 2

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 rockee
from myhdl import *
2
 
3
ACTIVE_LOW = bool(0)
4
FRAME_SIZE = 8
5
t_State = enum('SEARCH', 'CONFIRM', 'SYNC', encoding="one_hot")
6
 
7
def FramerCtrl(SOF, state, syncFlag, clk, reset_n):
8
 
9
    """ Framing control FSM.
10
 
11
    SOF -- start-of-frame output bit
12
    state -- FramerState output
13
    syncFlag -- sync pattern found indication input
14
    clk -- clock input
15
    reset_n -- active low reset
16
 
17
    """
18
 
19
    index = Signal(intbv(0)[8:]) # position in frame
20
 
21
    @always(clk.posedge, reset_n.negedge)
22
    def FSM():
23
        if reset_n == ACTIVE_LOW:
24
            SOF.next = 0
25
            index.next = 0
26
            state.next = t_State.SEARCH
27
        else:
28
            index.next = (index + 1) % FRAME_SIZE
29
            SOF.next = 0
30
            if state == t_State.SEARCH:
31
                index.next = 1
32
                if syncFlag:
33
                    state.next = t_State.CONFIRM
34
            elif state == t_State.CONFIRM:
35
                if index == 0:
36
                    if syncFlag:
37
                        state.next = t_State.SYNC
38
                    else:
39
                        state.next = t_State.SEARCH
40
            elif state == t_State.SYNC:
41
                if index == 0:
42
                    if not syncFlag:
43
                        state.next = t_State.SEARCH
44
                SOF.next = (index == FRAME_SIZE-1)
45
            else:
46
                raise ValueError("Undefined state")
47
 
48
    return FSM
49
 
50
SOF = Signal(bool(0))
51
syncFlag = Signal(bool(0))
52
clk = Signal(bool(0))
53
reset_n = Signal(bool(1))
54
state = Signal(t_State.SEARCH)
55
toVerilog(FramerCtrl, SOF, state, syncFlag, clk, reset_n)
56
toVHDL(FramerCtrl, SOF, state, syncFlag, clk, reset_n)

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.