OpenCores
URL https://opencores.org/ocsvn/an-fpga-implementation-of-low-latency-noc-based-mpsoc/an-fpga-implementation-of-low-latency-noc-based-mpsoc/trunk

Subversion Repositories an-fpga-implementation-of-low-latency-noc-based-mpsoc

[/] [an-fpga-implementation-of-low-latency-noc-based-mpsoc/] [trunk/] [mpsoc/] [src_processor/] [aeMB/] [verilog/] [aemb.v] - Blame information for rev 17

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

Line No. Rev Author Line
1 16 alirezamon
module aeMB_top (
2
 
3
  dwb_adr_o,
4
  dwb_cyc_o,
5
  dwb_dat_o,
6
  dwb_sel_o,
7
  dwb_stb_o,
8
  dwb_tag_o,
9 17 alirezamon
  dwb_wre_o,
10
  dwb_cti_o,
11
  dwb_bte_o,
12 16 alirezamon
  dwb_ack_i,
13 17 alirezamon
  dwb_dat_i,
14 16 alirezamon
  dwb_err_i,
15
  dwb_rty_i,
16
 
17
  iwb_adr_o,
18
  iwb_cyc_o,
19
  iwb_sel_o,
20
  iwb_stb_o,
21
  iwb_tag_o,
22 17 alirezamon
  iwb_wre_o,
23
  iwb_dat_o,
24
  iwb_cti_o,
25
  iwb_bte_o,
26 16 alirezamon
  iwb_ack_i,
27
  iwb_dat_i,
28 17 alirezamon
 
29 16 alirezamon
 
30
  iwb_err_i,
31
  iwb_rty_i,
32
 
33
  clk,
34
  reset,
35
  sys_int_i,
36
  sys_ena_i // input  sys_ena_i
37
 
38
);
39
 
40
   parameter AEMB_IWB = 32; ///< INST bus width
41
   parameter AEMB_DWB = 32; ///< DATA bus width
42
   parameter AEMB_XWB = 7; ///< XCEL bus width
43
 
44
   // CACHE PARAMETERS
45
   parameter AEMB_ICH = 11; ///< instruction cache size
46
   parameter AEMB_IDX = 6; ///< cache index size
47
 
48
   // OPTIONAL HARDWARE
49
   parameter AEMB_BSF = 1; ///< optional barrel shift
50
   parameter AEMB_MUL = 1; ///< optional multiplier
51
 
52
 
53
 
54
   output [31:0] dwb_adr_o;
55
   output        dwb_cyc_o;
56
   output [31:0] dwb_dat_o;
57
   output [3:0]  dwb_sel_o;
58
   output        dwb_stb_o;
59
   output  [2:0] dwb_tag_o;
60 17 alirezamon
   output        dwb_wre_o;
61
   output  [2:0] dwb_cti_o;
62
   output  [1:0] dwb_bte_o;
63
 
64
 
65 16 alirezamon
   input         dwb_ack_i;
66
   input [31:0]  dwb_dat_i;
67
 
68
 
69
 
70
 
71
   output [31:0] iwb_adr_o;
72
   output        iwb_cyc_o;
73
   output [3:0]  iwb_sel_o;
74
   output        iwb_stb_o;
75
   output [2:0]  iwb_tag_o;
76
   output        iwb_wre_o;
77
   input         iwb_ack_i;
78
   input [31:0]  iwb_dat_i;
79 17 alirezamon
   output[31:0]  iwb_dat_o;
80
   output  [2:0] iwb_cti_o;
81
   output  [1:0] iwb_bte_o;
82
 
83 16 alirezamon
   input         clk;
84
   input        sys_ena_i;
85
   input        sys_int_i;
86
   input        reset;
87
 
88 17 alirezamon
   wire         i_tag,d_tag;
89
 
90 16 alirezamon
 // not used but added to prevent warning
91
  input dwb_err_i, dwb_rty_i,  iwb_err_i, iwb_rty_i;
92
 
93
 
94
aeMB2_edk63 #(
95
            .AEMB_IWB (AEMB_IWB), ///< INST bus width
96
            .AEMB_DWB (AEMB_DWB), ///< DATA bus width
97
            .AEMB_XWB (AEMB_XWB), ///< XCEL bus width
98
            .AEMB_ICH (AEMB_ICH), ///< instruction cache size
99
            .AEMB_IDX (AEMB_IDX),///< cache index size
100
            .AEMB_BSF (AEMB_BSF), ///< optional barrel shift
101
            .AEMB_MUL (AEMB_MUL) ///< optional multiplier
102
 
103
        )
104
 
105
         aeMB2_edk63_inst
106
        (
107
            .xwb_wre_o() ,  //    xwb_wre_o
108
            .xwb_tag_o() ,  //    xwb_tag_o
109
            .xwb_stb_o() ,  //    xwb_stb_o
110
            .xwb_sel_o() ,  //   [3:0] xwb_sel_o
111
            .xwb_dat_o() ,  //   [31:0] xwb_dat_o
112
            .xwb_cyc_o() ,  //    xwb_cyc_o
113
            .xwb_adr_o() ,  //   [AEMB_XWB-1:2] xwb_adr_o
114
            .iwb_wre_o(iwb_wre_o) ,  //    iwb_wre_o
115 17 alirezamon
            .iwb_tag_o(i_tag) ,  //    iwb_tag_o
116 16 alirezamon
            .iwb_stb_o(iwb_stb_o) ,  //    iwb_stb_o
117
            .iwb_sel_o(iwb_sel_o) ,  //   [3:0] iwb_sel_o
118
            .iwb_cyc_o(iwb_cyc_o) ,  //    iwb_cyc_o
119
            .iwb_adr_o(iwb_adr_o[29:0]) ,    //   [AEMB_IWB-1:2] iwb_adr_o
120
 
121
            .dwb_wre_o(dwb_wre_o) ,  //    dwb_wre_o
122 17 alirezamon
            .dwb_tag_o(d_tag) ,  //    dwb_tag_o
123 16 alirezamon
            .dwb_stb_o(dwb_stb_o) ,  //    dwb_stb_o
124
            .dwb_sel_o(dwb_sel_o) ,  //   [3:0] dwb_sel_o
125
            .dwb_dat_o(dwb_dat_o) ,  //   [31:0] dwb_dat_o
126
            .dwb_cyc_o(dwb_cyc_o) ,  //    dwb_cyc_o
127
            .dwb_adr_o(dwb_adr_o [29:0]) ,    //   [AEMB_DWB-1:2] dwb_adr_o
128
 
129
            .xwb_dat_i(0) , // input [31:0] xwb_dat_i
130
            .xwb_ack_i(1'b0) ,  // input  xwb_ack_i
131
            .sys_rst_i(reset) ,   // input  sys_rst_i
132
            .sys_int_i(sys_int_i) , // input  sys_int_i
133
            .sys_ena_i(sys_ena_i) , // input  sys_ena_i
134
            .sys_clk_i(clk  ) ,   // input  sys_clk_i
135
 
136
            .iwb_dat_i(iwb_dat_i) ,  // input [31:0] iwb_dat_i
137
            .iwb_ack_i(iwb_ack_i) ,  // input  iwb_ack_i
138
            .dwb_dat_i(dwb_dat_i) ,  // input [31:0] dwb_dat_i
139
            .dwb_ack_i(dwb_ack_i)    // input  dwb_ack_i
140
        );
141
 
142
        assign iwb_dat_o = 0;
143 17 alirezamon
        // I have no idea which tag (a,b or c) is used in aemb. I assume it is address tag (taga) 
144
        assign iwb_tag_o        = {i_tag,2'b00};
145
        assign dwb_tag_o        = {d_tag,2'b00};
146
        assign iwb_adr_o[31:30] = 2'b00;
147
        assign dwb_adr_o[31:30] = 2'b00;
148
        assign dwb_cti_o        = 3'd0;
149
        assign dwb_bte_o        = 2'd0;
150
        assign iwb_cti_o        = 3'd0;
151
        assign iwb_bte_o        = 2'd0;
152
 
153
 
154 16 alirezamon
 
155
endmodule
156
 

powered by: WebSVN 2.1.0

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