1 |
2 |
feddischso |
BEGIN plb2wb_bridge
|
2 |
|
|
|
3 |
|
|
## Peripheral Options
|
4 |
|
|
OPTION IPTYPE = PERIPHERAL
|
5 |
|
|
OPTION IMP_NETLIST = TRUE
|
6 |
|
|
OPTION HDL = VHDL
|
7 |
|
|
OPTION IP_GROUP = Bus and Bridge:MICROBLAZE
|
8 |
|
|
OPTION DESC = Plb-to-wishbone bridge
|
9 |
|
|
|
10 |
|
|
|
11 |
|
|
## Bus Interfaces
|
12 |
|
|
BUS_INTERFACE BUS = SPLB, BUS_STD = PLBV46, BUS_TYPE = SLAVE
|
13 |
|
|
|
14 |
|
|
BUS_INTERFACE BUS = MWB, BUS_STD = WB, BUS_TYPE = MASTER
|
15 |
|
|
|
16 |
|
|
|
17 |
|
|
PARAMETER SYNCHRONY = true, DT = boolean, VALUES = ( true = synchron, false = asynchron )
|
18 |
|
|
|
19 |
|
|
|
20 |
|
|
## Parameters for WB
|
21 |
|
|
PARAMETER WB_DAT_W = 32, DT = INTEGER, ASSIGNMENT = CONSTANT
|
22 |
|
|
PARAMETER WB_ADR_W = 32, DT = INTEGER, ASSIGNMENT = CONSTANT
|
23 |
|
|
PARAMETER WB_ADR_OFFSET = 0x00000000, DT = std_logic_vector
|
24 |
|
|
PARAMETER WB_ADR_OFFSET_NEG = 0, DT = std_logic, VALUES = ( 0 = false, 1 = true )
|
25 |
|
|
PARAMETER WB_PIC_INTS = 1, DT = INTEGER, RANGE = (1 : 32),
|
26 |
|
|
PARAMETER WB_PIC_INT_LEVEL = 1, DT = std_logic, VALUES = ( 0 = active_low, 1 = active_high )
|
27 |
|
|
PARAMETER WB_TIMEOUT_CYCLES = 10, DT = integer, RANGE = (2 : 256 )
|
28 |
|
|
PARAMETER WB_SUPPORT_BLOCK = 1, DT = integer, VALUES = ( 1 = supported, 0 = not supported )
|
29 |
|
|
|
30 |
|
|
|
31 |
|
|
## Parameters for PLB
|
32 |
|
|
PARAMETER C_BASEADDR = 0xffffffff, DT = std_logic_vector, MIN_SIZE = 0x100, PAIR = C_HIGHADDR, ADDRESS = BASE, BUS = SPLB
|
33 |
|
|
PARAMETER C_HIGHADDR = 0x00000000, DT = std_logic_vector, PAIR = C_BASEADDR, ADDRESS = HIGH, BUS = SPLB
|
34 |
|
|
|
35 |
|
|
PARAMETER C_STATUS_BASEADDR = 0xffffffff, DT = std_logic_vector, MIN_SIZE = 0x100, PAIR = C_STATUS_HIGHADDR, ADDRESS = BASE, BUS = SPLB
|
36 |
|
|
PARAMETER C_STATUS_HIGHADDR = 0x00000000, DT = std_logic_vector, PAIR = C_STATUS_BASEADDR, ADDRESS = HIGH, BUS = SPLB
|
37 |
|
|
|
38 |
|
|
|
39 |
|
|
PARAMETER C_SPLB_AWIDTH = 32, DT = INTEGER, BUS = SPLB, ASSIGNMENT = CONSTANT
|
40 |
|
|
PARAMETER C_SPLB_DWIDTH = 128, DT = INTEGER, BUS = SPLB, RANGE = (32, 64, 128)
|
41 |
|
|
PARAMETER C_SPLB_NUM_MASTERS = 8, DT = INTEGER, BUS = SPLB, RANGE = (1:16)
|
42 |
|
|
PARAMETER C_SPLB_MID_WIDTH = 3, DT = INTEGER, BUS = SPLB, RANGE = (1:4)
|
43 |
|
|
PARAMETER C_SPLB_NATIVE_DWIDTH = 32, DT = INTEGER, BUS = SPLB, RANGE = (32, 64, 128), ASSIGNMENT = CONSTANT
|
44 |
|
|
PARAMETER C_SPLB_SUPPORT_BUR_LINE= 1, DT = INTEGER, BUS = SPLB, VALUES = ( 1 = supported, 0 = not supported )
|
45 |
|
|
PARAMETER C_SPLB_SUPPORT_ADR_PIPE= 1, DT = INTEGER, BUS = SPLB, VALUES = ( 1 = supported, 0 = not supported )
|
46 |
|
|
|
47 |
|
|
## Ports PLB
|
48 |
|
|
PORT SPLB_Clk = "", DIR = I, SIGIS = CLK, BUS = SPLB
|
49 |
|
|
PORT SPLB_Rst = SPLB_Rst, DIR = I, SIGIS = RST, BUS = SPLB
|
50 |
|
|
PORT PLB_ABus = PLB_ABus, DIR = I, VEC = [0:31], BUS = SPLB
|
51 |
|
|
PORT PLB_UABus = PLB_UABus, DIR = I, VEC = [0:31], BUS = SPLB
|
52 |
|
|
PORT PLB_PAValid = PLB_PAValid, DIR = I, BUS = SPLB
|
53 |
|
|
PORT PLB_SAValid = PLB_SAValid, DIR = I, BUS = SPLB
|
54 |
|
|
PORT PLB_rdPrim = PLB_rdPrim, DIR = I, BUS = SPLB
|
55 |
|
|
PORT PLB_wrPrim = PLB_wrPrim, DIR = I, BUS = SPLB
|
56 |
|
|
PORT PLB_masterID = PLB_masterID, DIR = I, VEC = [0:(C_SPLB_MID_WIDTH-1)], BUS = SPLB
|
57 |
|
|
PORT PLB_abort = PLB_abort, DIR = I, BUS = SPLB
|
58 |
|
|
PORT PLB_busLock = PLB_busLock, DIR = I, BUS = SPLB
|
59 |
|
|
PORT PLB_RNW = PLB_RNW, DIR = I, BUS = SPLB
|
60 |
|
|
PORT PLB_BE = PLB_BE, DIR = I, VEC = [0:((C_SPLB_DWIDTH/8)-1)], BUS = SPLB
|
61 |
|
|
PORT PLB_MSize = PLB_MSize, DIR = I, VEC = [0:1], BUS = SPLB
|
62 |
|
|
PORT PLB_size = PLB_size, DIR = I, VEC = [0:3], BUS = SPLB
|
63 |
|
|
PORT PLB_type = PLB_type, DIR = I, VEC = [0:2], BUS = SPLB
|
64 |
|
|
PORT PLB_lockErr = PLB_lockErr, DIR = I, BUS = SPLB
|
65 |
|
|
PORT PLB_wrDBus = PLB_wrDBus, DIR = I, VEC = [0:(C_SPLB_DWIDTH-1)], BUS = SPLB
|
66 |
|
|
PORT PLB_wrBurst = PLB_wrBurst, DIR = I, BUS = SPLB
|
67 |
|
|
PORT PLB_rdBurst = PLB_rdBurst, DIR = I, BUS = SPLB
|
68 |
|
|
PORT PLB_wrPendReq = PLB_wrPendReq, DIR = I, BUS = SPLB
|
69 |
|
|
PORT PLB_rdPendReq = PLB_rdPendReq, DIR = I, BUS = SPLB
|
70 |
|
|
PORT PLB_wrPendPri = PLB_wrPendPri, DIR = I, VEC = [0:1], BUS = SPLB
|
71 |
|
|
PORT PLB_rdPendPri = PLB_rdPendPri, DIR = I, VEC = [0:1], BUS = SPLB
|
72 |
|
|
PORT PLB_reqPri = PLB_reqPri, DIR = I, VEC = [0:1], BUS = SPLB
|
73 |
|
|
PORT PLB_TAttribute = PLB_TAttribute, DIR = I, VEC = [0:15], BUS = SPLB
|
74 |
|
|
PORT Sl_addrAck = Sl_addrAck, DIR = O, BUS = SPLB
|
75 |
|
|
PORT Sl_SSize = Sl_SSize, DIR = O, VEC = [0:1], BUS = SPLB
|
76 |
|
|
PORT Sl_wait = Sl_wait, DIR = O, BUS = SPLB
|
77 |
|
|
PORT Sl_rearbitrate = Sl_rearbitrate, DIR = O, BUS = SPLB
|
78 |
|
|
PORT Sl_wrDAck = Sl_wrDAck, DIR = O, BUS = SPLB
|
79 |
|
|
PORT Sl_wrComp = Sl_wrComp, DIR = O, BUS = SPLB
|
80 |
|
|
PORT Sl_wrBTerm = Sl_wrBTerm, DIR = O, BUS = SPLB
|
81 |
|
|
PORT Sl_rdDBus = Sl_rdDBus, DIR = O, VEC = [0:(C_SPLB_DWIDTH-1)], BUS = SPLB
|
82 |
|
|
PORT Sl_rdWdAddr = Sl_rdWdAddr, DIR = O, VEC = [0:3], BUS = SPLB
|
83 |
|
|
PORT Sl_rdDAck = Sl_rdDAck, DIR = O, BUS = SPLB
|
84 |
|
|
PORT Sl_rdComp = Sl_rdComp, DIR = O, BUS = SPLB
|
85 |
|
|
PORT Sl_rdBTerm = Sl_rdBTerm, DIR = O, BUS = SPLB
|
86 |
|
|
PORT Sl_MBusy = Sl_MBusy, DIR = O, VEC = [0:(C_SPLB_NUM_MASTERS-1)], BUS = SPLB
|
87 |
|
|
PORT Sl_MWrErr = Sl_MWrErr, DIR = O, VEC = [0:(C_SPLB_NUM_MASTERS-1)], BUS = SPLB
|
88 |
|
|
PORT Sl_MRdErr = Sl_MRdErr, DIR = O, VEC = [0:(C_SPLB_NUM_MASTERS-1)], BUS = SPLB
|
89 |
|
|
PORT Sl_MIRQ = Sl_MIRQ, DIR = O, VEC = [0:(C_SPLB_NUM_MASTERS-1)], BUS = SPLB
|
90 |
|
|
PORT PLB2WB_IRQ = "", DIR = O, SIGIS = INTERRUPT, SENSITIVITY = LEVEL_HIGH, INTERRUPT_PRIORITY = MEDIUM
|
91 |
|
|
## Ports WB
|
92 |
|
|
|
93 |
|
|
|
94 |
|
|
PORT wb_clk_i = "", DIR = I, SIGIS = CLK
|
95 |
|
|
PORT wb_rst_i = "", DIR = I, SIGIS = RST
|
96 |
|
|
PORT wb_pic_int_i= "", DIR = I, VEC = [ WB_PIC_INTS-1: 0 ], SIGIS = INTERRUPT
|
97 |
|
|
PORT wb_dat_i = wb_m_dat_o, DIR = IN , VEC = [ WB_DAT_W-1 : 0 ], BUS = MWB
|
98 |
|
|
PORT wb_dat_o = wb_m_dat_i, DIR = OUT, VEC = [ WB_DAT_W-1 : 0 ], BUS = MWB
|
99 |
|
|
PORT wb_adr_o = wb_m_adr_i, DIR = OUT, VEC = [ WB_ADR_W-1 : 0 ], BUS = MWB
|
100 |
|
|
PORT wb_sel_o = wb_m_sel_i, DIR = OUT, VEC = [ WB_DAT_W/8-1 : 0 ], BUS = MWB
|
101 |
|
|
PORT wb_we_o = wb_m_we_i , DIR = OUT, BUS = MWB
|
102 |
|
|
PORT wb_cyc_o = wb_m_cyc_i, DIR = OUT, BUS = MWB
|
103 |
|
|
PORT wb_stb_o = wb_m_stb_i, DIR = OUT, BUS = MWB
|
104 |
|
|
PORT wb_ack_i = wb_m_ack_o, DIR = IN , BUS = MWB
|
105 |
|
|
PORT wb_err_i = wb_m_err_o, DIR = IN , BUS = MWB
|
106 |
|
|
PORT wb_rty_i = wb_m_rty_o, DIR = IN , BUS = MWB
|
107 |
|
|
|
108 |
|
|
# note: wb_lock_o is not used, because the arbiter doesn't support it.
|
109 |
|
|
# if u want to use a WB with wb_lock, use the following line --,
|
110 |
|
|
#PORT wb_lock_o = "wb_m_lock_i", DIR = OUT, BUS = MWB <---'
|
111 |
|
|
PORT wb_lock_o = "", DIR = OUT,
|
112 |
|
|
|
113 |
|
|
|
114 |
|
|
END
|