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 34

Details | Compare with Previous | View Log

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

powered by: WebSVN 2.1.0

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