OpenCores
URL https://opencores.org/ocsvn/1g_ethernet_dpi/1g_ethernet_dpi/trunk

Subversion Repositories 1g_ethernet_dpi

[/] [1g_ethernet_dpi/] [tags/] [vmblite_base/] [hw/] [src/] [rtl/] [mblite_soc.sv] - Blame information for rev 7

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 7 kuzmi4
//////////////////////////////////////////////////////////////////////////////////
2
// Company:
3
// Engineer:        IK
4
//
5
// Create Date:     11:35:01 03/21/2013
6
// Design Name:
7
// Module Name:     mblite_soc
8
// Project Name:
9
// Target Devices:
10
// Tool versions:
11
// Description:
12
//
13
//                  SoC mem-map:
14
//                      pu-internal: below 64KB
15
//                      pu-external: above 64KB
16
//
17
//                  pu-external details:
18
//                      0x010000 - PIO / 4KB
19
//                      0x010FFF
20
//
21
//                      0x011000 - UART / 4KB
22
//                      0x011FFF
23
//
24
//
25
// Revision:
26
// Revision 0.01 - File Created,
27
//
28
//////////////////////////////////////////////////////////////////////////////////
29
`timescale 1ns / 1ps
30
 
31
module mblite_soc
32
(
33
    // SYS_CON
34
    input   i_clk_50, // 50MHz
35
    input   i_arst,
36
    // UART     [async]
37
    input           i_uart_rxd,
38
    output          o_uart_txd,
39
    // GPIO     [async]
40
    input   [ 7:0]  iv_gpio,    // BUTTON
41
    output  [ 7:0]  ov_gpio     // LED
42
);
43
//////////////////////////////////////////////////////////////////////////////////
44
// qnty of wbs
45
localparam  lp_NWBS =   2;
46
 
47
//////////////////////////////////////////////////////////////////////////////////
48
    // SYS_CON
49
    wire    s_sys_rst;
50
    // U_MBLITE.WBM
51
    wire    [31:0]  sv_wbm_adr_o;
52
    wire    [31:0]  sv_wbm_dat_o;
53
    wire            s_wbm_we_o;
54
    wire            s_wbm_stb_o;
55
    wire    [ 3:0]  sv_wbm_sel_o;
56
    wire            s_wbm_cyc_o;
57
    wire    [ 3:0]  s_mwb_sel_o;
58
 
59
    wire    [31:0]  sv_wbm_dat_i;
60
    wire            s_wbm_ack_i;
61
    // WB-Slaves
62
    wire    [16:0]          sv_wbs_iadr[lp_NWBS];
63
    wire    [31:0]          sv_wbs_idat[lp_NWBS];
64
    wire    [lp_NWBS-1:0]   sv_wbs_iwe;
65
    wire    [lp_NWBS-1:0]   sv_wbs_istb;
66
    wire    [ 3:0]          sv_wbs_isel[lp_NWBS];
67
    wire    [lp_NWBS-1:0]   sv_wbs_icyc;
68
    wire    [31:0]          sv_wbs_odat[lp_NWBS];
69
    wire    [lp_NWBS-1:0]   sv_wbs_oack;
70
    // WB-Cross
71
    wire    [lp_NWBS-1:0]   sv_wbc_cs;
72
 
73
//////////////////////////////////////////////////////////////////////////////////
74
//
75
// RST_SYNC
76
//
77
rst_sync    U_SRST
78
(
79
// SYS_CON
80
.i_clk      (i_clk_50),
81
// iRST
82
.i_arst     (i_arst),
83
// oRST
84
.o_srst     (s_sys_rst)
85
);
86
//////////////////////////////////////////////////////////////////////////////////
87
//
88
// WBS[0]: PIO
89
//
90
wb_pio_top  #(8) // p_DW
91
            U_PIO
92
(
93
// SYS_CON
94
.i_clk      (i_clk_50),
95
.i_srst     (s_sys_rst),
96
// PIO
97
.iv_pio     (iv_gpio),
98
.ov_pio     (ov_gpio),
99
// WBS
100
.iv_wbs_adr (sv_wbs_iadr[0][3:0]), // byte-addr
101
.iv_wbs_dat (sv_wbs_idat[0]),
102
.i_wbs_we   (sv_wbs_iwe[0]),
103
.i_wbs_stb  (sv_wbs_istb[0]),
104
.iv_wbs_sel (sv_wbs_isel[0]),
105
.i_wbs_cyc  (sv_wbs_icyc[0]),
106
.ov_wbs_dat (sv_wbs_odat[0]),
107
.o_wbs_ack  (sv_wbs_oack[0])
108
);
109
//////////////////////////////////////////////////////////////////////////////////
110
//
111
// WBS[1]: UART
112
//
113
wb_uart_top #(64, 50_000_000, 115_200) // p_FDEPTH, p_FREQ, p_BAUD
114
            U_UART
115
(
116
// SYS_CON
117
.i_clk      (i_clk_50),
118
.i_srst     (s_sys_rst),
119
// WBS      [i_clk]
120
.iv_wbs_adr (sv_wbs_iadr[1][3:0]), // byte-addr
121
.iv_wbs_dat (sv_wbs_idat[1]),
122
.i_wbs_we   (sv_wbs_iwe[1]),
123
.i_wbs_stb  (sv_wbs_istb[1]),
124
.i_wbs_cyc  (sv_wbs_icyc[1]),
125
.iv_wbs_sel (sv_wbs_isel[1]),
126
.ov_wbs_dat (sv_wbs_odat[1]),
127
.o_wbs_ack  (sv_wbs_oack[1]),
128
// UART     [async]
129
.i_uart_rxd (i_uart_rxd),
130
.o_uart_txd (o_uart_txd)
131
);
132
//////////////////////////////////////////////////////////////////////////////////
133
//
134
// WBM: MB-Lite unit
135
//  => pu + imem + dmem
136
//
137
mblite_unit U_MBLITE
138
(
139
// SYS_CON
140
.sys_clk_i  (i_clk_50),
141
.sys_rst_i  (s_sys_rst),
142
// IRQ
143
.sys_int_i  (1'b0),         // interrupt input
144
// WB-master inputs from the wb-slaves
145
.wbm_dat_i  (sv_wbm_dat_i), // databus input
146
.wbm_ack_i  (s_wbm_ack_i),  // buscycle acknowledge input
147
// WB-master outputs to the wb-slaves
148
.wbm_adr_o  (sv_wbm_adr_o), // address bits
149
.wbm_dat_o  (sv_wbm_dat_o), // databus output
150
.wbm_we_o   (s_wbm_we_o),   // write enable output
151
.wbm_stb_o  (s_wbm_stb_o),  // strobe signals
152
.wbm_sel_o  (sv_wbm_sel_o), // select output array
153
.wbm_cyc_o  (s_wbm_cyc_o)   // valid BUS cycle output
154
);
155
//////////////////////////////////////////////////////////////////////////////////
156
//
157
// WB-Cross
158
//  simple: {1 WB-Master} + {N WB-Slave}
159
//
160
assign sv_wbc_cs[0] = sv_wbm_adr_o[16:12] == 5'h10; // 0x010000
161
assign sv_wbc_cs[1] = sv_wbm_adr_o[16:12] == 5'h11; // 0x011000
162
 
163
assign  sv_wbs_iwe[0]   =   s_wbm_we_o;
164
assign  sv_wbs_iadr[0]  =   sv_wbm_adr_o;
165
assign  sv_wbs_idat[0]  =   sv_wbm_dat_o;
166
assign  sv_wbs_istb[0]  =   s_wbm_stb_o;
167
assign  sv_wbs_isel[0]  =   sv_wbm_sel_o;
168
assign  sv_wbs_icyc[0]  =   s_wbm_cyc_o & sv_wbc_cs[0];
169
 
170
assign  sv_wbs_iwe[1]   =   s_wbm_we_o;
171
assign  sv_wbs_iadr[1]  =   sv_wbm_adr_o;
172
assign  sv_wbs_idat[1]  =   sv_wbm_dat_o;
173
assign  sv_wbs_istb[1]  =   s_wbm_stb_o;
174
assign  sv_wbs_isel[1]  =   sv_wbm_sel_o;
175
assign  sv_wbs_icyc[1]  =   s_wbm_cyc_o & sv_wbc_cs[1];
176
 
177
 
178
assign  sv_wbm_dat_i    =   (sv_wbc_cs[0])? sv_wbs_odat[0] :
179
                                            sv_wbs_odat[1] ;
180
assign  s_wbm_ack_i     =   (sv_wbc_cs[0])? sv_wbs_oack[0] :
181
                                            sv_wbs_oack[1] ;
182
//////////////////////////////////////////////////////////////////////////////////
183
endmodule

powered by: WebSVN 2.1.0

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