-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathbus_master_mux.v
85 lines (83 loc) · 1.76 KB
/
bus_master_mux.v
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
/*
-- =====================================================================
FILE : bus_master_mux.v
-- =====================================================================
*/
/*******General Headfile*******/
`include "global_config.h"
`include "nettype.h"
`include "stddef.h"
/******* Bus Headfile*******/
`include "bus.h"
/******* master mux *******/
module bus_master_mux(
//master 0
input wire[`WordAddrBus] m0_addr,
input wire m0_as_,
input wire m0_rw,
input wire[`WordDataBus] m0_wr_data,
input wire m0_grnt_,
//master 1
input wire[`WordAddrBus] m1_addr,
input wire m1_as_,
input wire m1_rw,
input wire[`WordDataBus] m1_wr_data,
input wire m1_grnt_,
//master 2
input wire[`WordAddrBus] m2_addr,
input wire m2_as_,
input wire m2_rw,
input wire[`WordDataBus] m2_wr_data,
input wire m2_grnt_,
//master 3
input wire[`WordAddrBus] m3_addr,
input wire m3_as_,
input wire m3_rw,
input wire[`WordDataBus] m3_wr_data,
input wire m3_grnt_,
//slave common signal
output reg[`WordAddrBus] s_addr,
output reg s_as_,
output reg s_rw,
output reg[`WordDataBus] s_wr_data
);
/*******master mux *******/
always@(*)
begin
if(m0_grnt_ == `ENABLE_)
begin
s_addr = m0_addr;
s_as_ = m0_as_;
s_rw = m0_rw;
s_wr_data = m0_wr_data;
end
else if(m1_grnt_ == `ENABLE_)
begin
s_addr = m1_addr;
s_as_ = m1_as_;
s_rw = m1_rw;
s_wr_data = m1_wr_data;
end
else if(m2_grnt_ == `ENABLE_)
begin
s_addr = m2_addr;
s_as_ = m2_as_;
s_rw = m2_rw;
s_wr_data = m2_wr_data;
end
else if(m3_grnt_ == `ENABLE_)
begin
s_addr = m3_addr;
s_as_ = m3_as_;
s_rw = m3_rw;
s_wr_data = m3_wr_data;
end
else
begin
s_addr = `WORD_ADDR_W'h0;
s_as_ = `DISABLE_;
s_rw = `READ;
s_wr_data = `WORD_DATA_W'h0;
end
end
endmodule