1 | module ourspi ( |
---|
2 | OPB_Clk, |
---|
3 | rst, |
---|
4 | opb_abus, |
---|
5 | opb_be, |
---|
6 | opb_dbus, |
---|
7 | opb_rnw, |
---|
8 | opb_select, |
---|
9 | opb_seqaddr, |
---|
10 | sl_dbus, |
---|
11 | sl_errack, |
---|
12 | sl_retry, |
---|
13 | sl_toutsup, |
---|
14 | sl_xferack, |
---|
15 | radio1_sclk, |
---|
16 | radio1_dout, |
---|
17 | radio1_cs, |
---|
18 | radio2_sclk, |
---|
19 | radio2_dout, |
---|
20 | radio2_cs, |
---|
21 | radio3_sclk, |
---|
22 | radio3_dout, |
---|
23 | radio3_cs, |
---|
24 | radio4_sclk, |
---|
25 | radio4_dout, |
---|
26 | radio4_cs, |
---|
27 | dac1_sclk, |
---|
28 | dac1_dout, |
---|
29 | dac1_cs, |
---|
30 | dac2_sclk, |
---|
31 | dac2_dout, |
---|
32 | dac2_cs, |
---|
33 | dac3_sclk, |
---|
34 | dac3_dout, |
---|
35 | dac3_cs, |
---|
36 | dac4_sclk, |
---|
37 | dac4_dout, |
---|
38 | dac4_cs |
---|
39 | ); |
---|
40 | |
---|
41 | parameter C_BASEADDR = 32'h8000_0000, C_HIGHADDR = 32'h8000_00ff; |
---|
42 | |
---|
43 | input OPB_Clk; |
---|
44 | input rst; |
---|
45 | |
---|
46 | input [31:0] opb_abus; |
---|
47 | input [3:0] opb_be; |
---|
48 | input [31:0] opb_dbus; |
---|
49 | input opb_rnw; |
---|
50 | input opb_select; |
---|
51 | input opb_seqaddr; |
---|
52 | |
---|
53 | output [31:0] sl_dbus; |
---|
54 | output sl_errack; |
---|
55 | output sl_retry; |
---|
56 | output sl_toutsup; |
---|
57 | output sl_xferack; |
---|
58 | |
---|
59 | output radio1_sclk; |
---|
60 | output radio1_dout; |
---|
61 | output radio1_cs; |
---|
62 | output radio2_sclk; |
---|
63 | output radio2_dout; |
---|
64 | output radio2_cs; |
---|
65 | output radio3_sclk; |
---|
66 | output radio3_dout; |
---|
67 | output radio3_cs; |
---|
68 | output radio4_sclk; |
---|
69 | output radio4_dout; |
---|
70 | output radio4_cs; |
---|
71 | output dac1_sclk; |
---|
72 | output dac1_dout; |
---|
73 | output dac1_cs; |
---|
74 | output dac2_sclk; |
---|
75 | output dac2_dout; |
---|
76 | output dac2_cs; |
---|
77 | output dac3_sclk; |
---|
78 | output dac3_dout; |
---|
79 | output dac3_cs; |
---|
80 | output dac4_sclk; |
---|
81 | output dac4_dout; |
---|
82 | output dac4_cs; |
---|
83 | |
---|
84 | |
---|
85 | |
---|
86 | wire [4:0] spi_wb_adr_i; |
---|
87 | wire [31:0] spi_wb_dat_i; |
---|
88 | wire [31:0] spi_wb_dat_o; |
---|
89 | wire [3:0] spi_wb_sel_i; |
---|
90 | wire spi_wb_we_i; |
---|
91 | wire spi_wb_stb_i; |
---|
92 | wire spi_wb_cyc_i; |
---|
93 | wire spi_wb_ack_o; |
---|
94 | wire spi_wb_err_o; |
---|
95 | wire spi_wb_int_o; |
---|
96 | |
---|
97 | wire [7:0] spi_cs; |
---|
98 | wire spi_sclk; |
---|
99 | wire spi_dout; |
---|
100 | |
---|
101 | assign radio1_sclk = spi_sclk; |
---|
102 | assign radio2_sclk = spi_sclk; |
---|
103 | assign radio3_sclk = spi_sclk; |
---|
104 | assign radio4_sclk = spi_sclk; |
---|
105 | assign dac1_sclk = spi_sclk; |
---|
106 | assign dac2_sclk = spi_sclk; |
---|
107 | assign dac3_sclk = spi_sclk; |
---|
108 | assign dac4_sclk = spi_sclk; |
---|
109 | |
---|
110 | assign radio1_dout = spi_dout; |
---|
111 | assign radio2_dout = spi_dout; |
---|
112 | assign radio3_dout = spi_dout; |
---|
113 | assign radio4_dout = spi_dout; |
---|
114 | assign dac1_dout = spi_dout; |
---|
115 | assign dac2_dout = spi_dout; |
---|
116 | assign dac3_dout = spi_dout; |
---|
117 | assign dac4_dout = spi_dout; |
---|
118 | |
---|
119 | assign radio1_cs = spi_cs[0]; |
---|
120 | assign radio2_cs = spi_cs[1]; |
---|
121 | assign radio3_cs = spi_cs[2]; |
---|
122 | assign radio4_cs = spi_cs[3]; |
---|
123 | assign dac1_cs = spi_cs[4]; |
---|
124 | assign dac2_cs = spi_cs[5]; |
---|
125 | assign dac3_cs = spi_cs[6]; |
---|
126 | assign dac4_cs = spi_cs[7]; |
---|
127 | |
---|
128 | spi_top wishboneSPIController ( |
---|
129 | .wb_clk_i(OPB_Clk), |
---|
130 | .wb_rst_i(rst), |
---|
131 | .wb_adr_i(spi_wb_adr_i), |
---|
132 | .wb_dat_i(spi_wb_dat_i), |
---|
133 | .wb_dat_o(spi_wb_dat_o), |
---|
134 | .wb_sel_i(spi_wb_sel_i), |
---|
135 | .wb_we_i(spi_wb_we_i), |
---|
136 | .wb_stb_i(spi_wb_stb_i), |
---|
137 | .wb_cyc_i(spi_wb_cyc_i), |
---|
138 | .wb_ack_o(spi_wb_ack_o), |
---|
139 | .wb_err_o(spi_wb_err_o), |
---|
140 | .wb_int_o(spi_wb_int_o), |
---|
141 | |
---|
142 | // SPI signals |
---|
143 | .ss_pad_o(spi_cs), |
---|
144 | .sclk_pad_o(spi_sclk), |
---|
145 | .mosi_pad_o(spi_dout), |
---|
146 | .miso_pad_i(1'b0) |
---|
147 | ); |
---|
148 | |
---|
149 | |
---|
150 | |
---|
151 | opb2wb opb2wb_0 ( |
---|
152 | .OPB_Clk(OPB_Clk), |
---|
153 | .rst(rst), |
---|
154 | .opb_abus(opb_abus), |
---|
155 | .opb_be(opb_be), |
---|
156 | .opb_dbus(opb_dbus), |
---|
157 | .opb_rnw(opb_rnw), |
---|
158 | .opb_select(opb_select), |
---|
159 | .opb_seqaddr(opb_seqaddr), |
---|
160 | .sl_dbus(sl_dbus), |
---|
161 | .sl_errack(sl_errack), |
---|
162 | .sl_retry(sl_retry), |
---|
163 | .sl_toutsup(sl_toutsup), |
---|
164 | .sl_xferack(sl_xferack), |
---|
165 | |
---|
166 | .wb_data_o(spi_wb_dat_i), |
---|
167 | .wb_data_i(spi_wb_dat_o), |
---|
168 | .wb_addr_o(spi_wb_adr_i), |
---|
169 | .wb_cyc_o(spi_wb_cyc_i), |
---|
170 | .wb_stb_o(spi_wb_stb_i), |
---|
171 | .wb_sel_o(spi_wb_sel_i), |
---|
172 | .wb_we_o(spi_wb_we_i), |
---|
173 | .wb_ack_i(spi_wb_ack_o), |
---|
174 | .wb_err_i(spi_wb_err_o), |
---|
175 | .wb_rty_i(1'b0) |
---|
176 | ); |
---|
177 | |
---|
178 | endmodule |
---|