[8] | 1 | `timescale 1ns / 1ps |
---|
| 2 | ////////////////////////////////////////////////////////////////////////////////// |
---|
| 3 | // Company: (C) Athree, 2009 |
---|
| 4 | // Engineer: Dmitry Rozhdestvenskiy |
---|
| 5 | // Email dmitry.rozhdestvenskiy@srisc.com dmitryr@a3.spb.ru divx4log@narod.ru |
---|
| 6 | // |
---|
| 7 | // Design Name: SPARC SoC single-core top level for Altera StratixIV devkit |
---|
| 8 | // Module Name: W1 |
---|
| 9 | // Project Name: SPARC SoC single-core |
---|
| 10 | // |
---|
| 11 | // LICENSE: |
---|
| 12 | // This is a Free Hardware Design; you can redistribute it and/or |
---|
| 13 | // modify it under the terms of the GNU General Public License |
---|
| 14 | // version 2 as published by the Free Software Foundation. |
---|
| 15 | // The above named program is distributed in the hope that it will |
---|
| 16 | // be useful, but WITHOUT ANY WARRANTY; without even the implied |
---|
| 17 | // warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
---|
| 18 | // See the GNU General Public License for more details. |
---|
| 19 | // |
---|
| 20 | ////////////////////////////////////////////////////////////////////////////////// |
---|
| 21 | |
---|
| 22 | module W1( |
---|
| 23 | |
---|
| 24 | input clk_in, |
---|
| 25 | input sysrst, |
---|
| 26 | |
---|
| 27 | // ddr3 memory interface |
---|
| 28 | inout [63:0] ddr3_dq, |
---|
| 29 | inout [ 7:0] ddr3_dqs, |
---|
| 30 | inout [ 7:0] ddr3_dqs_n, |
---|
| 31 | inout ddr3_ck, |
---|
| 32 | inout ddr3_ck_n, |
---|
[10] | 33 | //output ddr3_reset, |
---|
[8] | 34 | output [12:0] ddr3_a, |
---|
[17] | 35 | output [ 1:0] ddr3_ba, |
---|
[8] | 36 | output ddr3_ras_n, |
---|
| 37 | output ddr3_cas_n, |
---|
| 38 | output ddr3_we_n, |
---|
| 39 | output ddr3_cs_n, |
---|
| 40 | output ddr3_odt, |
---|
| 41 | output ddr3_ce, |
---|
| 42 | output [ 7:0] ddr3_dm, |
---|
| 43 | |
---|
| 44 | //output phy_init_done, // LED |
---|
| 45 | //input rup, |
---|
| 46 | //input rdn, |
---|
| 47 | |
---|
| 48 | // Console interface |
---|
| 49 | input srx, |
---|
| 50 | output stx, |
---|
| 51 | //input [1:0] flash_rev, |
---|
[6] | 52 | |
---|
[8] | 53 | /* MII interface replaced by SGMII |
---|
| 54 | |
---|
| 55 | input mtx_clk_pad_i, |
---|
| 56 | output [3:0] mtxd_pad_o, |
---|
| 57 | output mtxen_pad_o, |
---|
| 58 | output mtxerr_pad_o, |
---|
| 59 | input mrx_clk_pad_i, |
---|
| 60 | input [3:0] mrxd_pad_i, |
---|
| 61 | input mrxdv_pad_i, |
---|
| 62 | input mrxerr_pad_i, |
---|
| 63 | input mcoll_pad_i, |
---|
| 64 | input mcrs_pad_i, */ |
---|
| 65 | |
---|
[6] | 66 | //SGMII |
---|
[8] | 67 | //output mdc, |
---|
| 68 | //inout md, |
---|
| 69 | |
---|
| 70 | //output eth_rst, |
---|
| 71 | //output eth_tx, |
---|
| 72 | //input eth_rx, |
---|
| 73 | |
---|
| 74 | //output led_10, |
---|
| 75 | //output led_100, |
---|
| 76 | //output led_1000, |
---|
| 77 | //output led_link, |
---|
| 78 | //output led_disp_err, |
---|
| 79 | //output led_char_err, |
---|
| 80 | //output led_an, |
---|
| 81 | |
---|
| 82 | output [21:0] flash_addr, |
---|
| 83 | input [15:0] flash_data, |
---|
| 84 | output flash_oen, |
---|
| 85 | output flash_wen, |
---|
| 86 | output flash_cen, |
---|
| 87 | output flash_clk, |
---|
[14] | 88 | output flash_adv, //FIXME it seems useless |
---|
[8] | 89 | output flash_rst |
---|
| 90 | ); |
---|
| 91 | |
---|
| 92 | wire pllclk; |
---|
| 93 | wire sysclk; |
---|
[17] | 94 | wire wb_clk_i; |
---|
[8] | 95 | wire wb_rst_i; |
---|
| 96 | wire [35:0] CONTROL0; |
---|
| 97 | wire [35:0] CONTROL1; |
---|
| 98 | wire [35:0] CONTROL2; |
---|
| 99 | wire [1:0] VIO_SIG; |
---|
| 100 | |
---|
| 101 | reg [31:0] cycle_count; |
---|
| 102 | |
---|
[17] | 103 | assign flash_clk=wb_clk_i; |
---|
[8] | 104 | assign flash_adv=0; |
---|
| 105 | assign flash_rst=!wb_rst_i; |
---|
| 106 | |
---|
| 107 | wire [63:0] m0_dat_i; |
---|
| 108 | wire [63:0] m0_dat_o; |
---|
| 109 | wire [63:0] m0_adr_i; |
---|
| 110 | wire [ 7:0] m0_sel_i; |
---|
| 111 | wire m0_we_i; |
---|
| 112 | wire m0_cyc_i; |
---|
| 113 | wire m0_stb_i; |
---|
| 114 | wire m0_ack_o; |
---|
| 115 | |
---|
| 116 | wire [63:0] m1_dat_i; |
---|
| 117 | wire [63:0] m1_dat_o; |
---|
| 118 | wire [63:0] m1_adr_i; |
---|
| 119 | wire [ 7:0] m1_sel_i; |
---|
| 120 | wire m1_we_i; |
---|
| 121 | wire m1_cyc_i; |
---|
| 122 | wire m1_stb_i; |
---|
| 123 | wire m1_ack_o; |
---|
| 124 | |
---|
| 125 | wire [63:0] s0_dat_i; |
---|
| 126 | wire [63:0] s0_dat_o; |
---|
| 127 | wire [63:0] s0_adr_o; |
---|
| 128 | wire [ 7:0] s0_sel_o; |
---|
| 129 | wire s0_we_o; |
---|
| 130 | wire s0_cyc_o; |
---|
| 131 | wire s0_stb_o; |
---|
| 132 | wire s0_ack_i; |
---|
| 133 | |
---|
| 134 | wire [63:0] s1_dat_i; |
---|
| 135 | wire [63:0] s1_dat_o; |
---|
| 136 | wire [63:0] s1_adr_o; |
---|
| 137 | wire [ 7:0] s1_sel_o; |
---|
| 138 | wire s1_we_o; |
---|
| 139 | wire s1_cyc_o; |
---|
| 140 | wire s1_stb_o; |
---|
| 141 | wire s1_ack_i; |
---|
| 142 | |
---|
| 143 | wire [63:0] s2_dat_i; |
---|
| 144 | wire [63:0] s2_dat_o; |
---|
| 145 | wire [63:0] s2_adr_o; |
---|
| 146 | wire [ 7:0] s2_sel_o; |
---|
| 147 | wire s2_we_o; |
---|
| 148 | wire s2_cyc_o; |
---|
| 149 | wire s2_stb_o; |
---|
| 150 | wire s2_ack_i; |
---|
| 151 | |
---|
| 152 | wire [63:0] s3_dat_i; |
---|
| 153 | wire [63:0] s3_dat_o; |
---|
| 154 | wire [63:0] s3_adr_o; |
---|
| 155 | wire [ 7:0] s3_sel_o; |
---|
| 156 | wire s3_we_o; |
---|
| 157 | wire s3_cyc_o; |
---|
| 158 | wire s3_stb_o; |
---|
| 159 | wire s3_ack_i; |
---|
| 160 | |
---|
| 161 | wire [63:0] s4_dat_i; |
---|
| 162 | wire [63:0] s4_dat_o; |
---|
| 163 | wire [63:0] s4_adr_o; |
---|
| 164 | wire [ 7:0] s4_sel_o; |
---|
| 165 | wire s4_we_o; |
---|
| 166 | wire s4_cyc_o; |
---|
| 167 | wire s4_stb_o; |
---|
| 168 | wire s4_ack_i; |
---|
| 169 | |
---|
| 170 | wb_conbus_top wishbone ( |
---|
| 171 | .clk_i(wb_clk_i), |
---|
| 172 | .rst_i(wb_rst_i), |
---|
| 173 | |
---|
| 174 | //CPU |
---|
| 175 | .m0_dat_i(m0_dat_i), |
---|
| 176 | .m0_dat_o(m0_dat_o), |
---|
| 177 | .m0_adr_i(m0_adr_i), |
---|
| 178 | .m0_sel_i(m0_sel_i), |
---|
| 179 | .m0_we_i(m0_we_i), |
---|
| 180 | .m0_cyc_i(m0_cyc_i), |
---|
| 181 | .m0_stb_i(m0_stb_i), |
---|
| 182 | .m0_ack_o(m0_ack_o), |
---|
| 183 | .m0_err_o(), |
---|
| 184 | .m0_rty_o(), |
---|
[17] | 185 | .m0_cab_i(1'b0), |
---|
[8] | 186 | |
---|
| 187 | //Ethernet |
---|
| 188 | .m1_dat_i(m1_dat_i), |
---|
| 189 | .m1_dat_o(m1_dat_o), |
---|
| 190 | .m1_adr_i(m1_adr_i), |
---|
| 191 | .m1_sel_i(m1_sel_i), |
---|
| 192 | .m1_we_i(m1_we_i), |
---|
| 193 | .m1_cyc_i(m1_cyc_i), |
---|
| 194 | .m1_stb_i(m1_stb_i), |
---|
| 195 | .m1_ack_o(m1_ack_o), |
---|
| 196 | .m1_err_o(m1_err_o), |
---|
| 197 | .m1_rty_o(m1_rty_o), |
---|
| 198 | .m1_cab_i(m1_cab_i), |
---|
| 199 | |
---|
[17] | 200 | .m2_dat_i(64'h0000000000000000), |
---|
[8] | 201 | .m2_dat_o(), |
---|
[17] | 202 | .m2_adr_i(64'h0000000000000000), |
---|
| 203 | .m2_sel_i(8'h00), |
---|
| 204 | .m2_we_i(1'b0), |
---|
| 205 | .m2_cyc_i(1'b0), |
---|
| 206 | .m2_stb_i(1'b0), |
---|
[8] | 207 | .m2_ack_o(), |
---|
| 208 | .m2_err_o(), |
---|
| 209 | .m2_rty_o(), |
---|
[17] | 210 | .m2_cab_i(1'b0), |
---|
[8] | 211 | |
---|
[22] | 212 | .m3_dat_i(64'h0000000000000000), |
---|
[8] | 213 | .m3_dat_o(), |
---|
[22] | 214 | .m3_adr_i(64'h0000000000000000), |
---|
| 215 | .m3_sel_i(8'h00), |
---|
| 216 | .m3_we_i(1'b0), |
---|
| 217 | .m3_cyc_i(1'b0), |
---|
| 218 | .m3_stb_i(1'b0), |
---|
[8] | 219 | .m3_ack_o(), |
---|
| 220 | .m3_err_o(), |
---|
| 221 | .m3_rty_o(), |
---|
[22] | 222 | .m3_cab_i(1'b0), |
---|
[8] | 223 | |
---|
[22] | 224 | .m4_dat_i(64'h0000000000000000), |
---|
[8] | 225 | .m4_dat_o(), |
---|
[22] | 226 | .m4_adr_i(64'h0000000000000000), |
---|
| 227 | .m4_sel_i(8'h00), |
---|
| 228 | .m4_we_i(1'b0), |
---|
| 229 | .m4_cyc_i(1'b0), |
---|
| 230 | .m4_stb_i(1'b0), |
---|
[8] | 231 | .m4_ack_o(), |
---|
| 232 | .m4_err_o(), |
---|
| 233 | .m4_rty_o(), |
---|
[22] | 234 | .m4_cab_i(1'b0), |
---|
[8] | 235 | |
---|
[22] | 236 | .m5_dat_i(64'h0000000000000000), |
---|
[8] | 237 | .m5_dat_o(), |
---|
[22] | 238 | .m5_adr_i(64'h0000000000000000), |
---|
| 239 | .m5_sel_i(8'h00), |
---|
| 240 | .m5_we_i(1'b0), |
---|
| 241 | .m5_cyc_i(1'b0), |
---|
| 242 | .m5_stb_i(1'b0), |
---|
[8] | 243 | .m5_ack_o(), |
---|
| 244 | .m5_err_o(), |
---|
| 245 | .m5_rty_o(), |
---|
[22] | 246 | .m5_cab_i(1'b0), |
---|
[8] | 247 | |
---|
[22] | 248 | .m6_dat_i(64'h0000000000000000), |
---|
[8] | 249 | .m6_dat_o(), |
---|
[22] | 250 | .m6_adr_i(64'h0000000000000000), |
---|
| 251 | .m6_sel_i(8'h00), |
---|
| 252 | .m6_we_i(1'b0), |
---|
| 253 | .m6_cyc_i(1'b0), |
---|
| 254 | .m6_stb_i(1'b0), |
---|
[8] | 255 | .m6_ack_o(), |
---|
| 256 | .m6_err_o(), |
---|
| 257 | .m6_rty_o(), |
---|
[22] | 258 | .m6_cab_i(1'b0), |
---|
[8] | 259 | |
---|
[22] | 260 | .m7_dat_i(64'h0000000000000000), |
---|
[8] | 261 | .m7_dat_o(), |
---|
[22] | 262 | .m7_adr_i(64'h0000000000000000), |
---|
| 263 | .m7_sel_i(8'h00), |
---|
| 264 | .m7_we_i(1'b0), |
---|
| 265 | .m7_cyc_i(1'b0), |
---|
| 266 | .m7_stb_i(1'b0), |
---|
[8] | 267 | .m7_ack_o(), |
---|
| 268 | .m7_err_o(), |
---|
| 269 | .m7_rty_o(), |
---|
[22] | 270 | .m7_cab_i(1'b0), |
---|
[8] | 271 | |
---|
| 272 | //DRAM |
---|
| 273 | .s0_dat_i(s0_dat_i), |
---|
| 274 | .s0_dat_o(s0_dat_o), |
---|
| 275 | .s0_adr_o(s0_adr_o), |
---|
| 276 | .s0_sel_o(s0_sel_o), |
---|
| 277 | .s0_we_o(s0_we_o), |
---|
| 278 | .s0_cyc_o(s0_cyc_o), |
---|
| 279 | .s0_stb_o(s0_stb_o), |
---|
| 280 | .s0_ack_i(s0_ack_i), |
---|
[22] | 281 | .s0_err_i(1'b0), |
---|
| 282 | .s0_rty_i(1'b0), |
---|
[8] | 283 | .s0_cab_o(), |
---|
| 284 | |
---|
| 285 | //Flash |
---|
| 286 | .s1_dat_i(s1_dat_i), |
---|
| 287 | .s1_dat_o(s1_dat_o), |
---|
| 288 | .s1_adr_o(s1_adr_o), |
---|
| 289 | .s1_sel_o(s1_sel_o), |
---|
| 290 | .s1_we_o(s1_we_o), |
---|
| 291 | .s1_cyc_o(s1_cyc_o), |
---|
| 292 | .s1_stb_o(s1_stb_o), |
---|
| 293 | .s1_ack_i(s1_ack_i), |
---|
| 294 | .s1_err_i(s1_err_i), |
---|
| 295 | .s1_rty_i(s1_rty_i), |
---|
| 296 | .s1_cab_o(s1_cab_o), |
---|
| 297 | |
---|
| 298 | //Ethernet |
---|
| 299 | .s2_dat_i(s2_dat_i), |
---|
| 300 | .s2_dat_o(s2_dat_o), |
---|
| 301 | .s2_adr_o(s2_adr_o), |
---|
| 302 | .s2_sel_o(s2_sel_o), |
---|
| 303 | .s2_we_o(s2_we_o), |
---|
| 304 | .s2_cyc_o(s2_cyc_o), |
---|
| 305 | .s2_stb_o(s2_stb_o), |
---|
| 306 | .s2_ack_i(s2_ack_i), |
---|
| 307 | .s2_err_i(s2_err_i), |
---|
| 308 | .s2_rty_i(s2_rty_i), |
---|
| 309 | .s2_cab_o(s2_cab_o), |
---|
| 310 | |
---|
| 311 | //UART |
---|
| 312 | .s3_dat_i({s3_dat_i[31:0],s3_dat_i[31:0]}), |
---|
| 313 | .s3_dat_o(s3_dat_o), |
---|
| 314 | .s3_adr_o(s3_adr_o), |
---|
| 315 | .s3_sel_o(s3_sel_o), |
---|
| 316 | .s3_we_o(s3_we_o), |
---|
| 317 | .s3_cyc_o(s3_cyc_o), |
---|
| 318 | .s3_stb_o(s3_stb_o), |
---|
| 319 | .s3_ack_i(s3_ack_i), |
---|
| 320 | .s3_err_i(s3_err_i), |
---|
| 321 | .s3_rty_i(s3_rty_i), |
---|
| 322 | .s3_cab_o(s3_cab_o), |
---|
| 323 | |
---|
| 324 | //Second flash interface for fff8xxxxxx ram disk addressing |
---|
| 325 | .s4_dat_i(s4_dat_i), |
---|
| 326 | .s4_dat_o(s4_dat_o), |
---|
| 327 | .s4_adr_o(s4_adr_o), |
---|
| 328 | .s4_sel_o(s4_sel_o), |
---|
| 329 | .s4_we_o(s4_we_o), |
---|
| 330 | .s4_cyc_o(s4_cyc_o), |
---|
| 331 | .s4_stb_o(s4_stb_o), |
---|
| 332 | .s4_ack_i(s4_ack_i), |
---|
| 333 | .s4_err_i(s4_err_i), |
---|
| 334 | .s4_rty_i(s4_rty_i), |
---|
| 335 | .s4_cab_o(s4_cab_o), |
---|
| 336 | |
---|
[22] | 337 | .s5_dat_i(64'h0000000000000000), |
---|
[8] | 338 | .s5_dat_o(), |
---|
| 339 | .s5_adr_o(), |
---|
| 340 | .s5_sel_o(), |
---|
| 341 | .s5_we_o(), |
---|
| 342 | .s5_cyc_o(), |
---|
| 343 | .s5_stb_o(), |
---|
[22] | 344 | .s5_ack_i(1'b0), |
---|
| 345 | .s5_err_i(1'b0), |
---|
| 346 | .s5_rty_i(1'b0), |
---|
[8] | 347 | .s5_cab_o(), |
---|
| 348 | |
---|
[22] | 349 | .s6_dat_i(64'h0000000000000000), |
---|
[8] | 350 | .s6_dat_o(), |
---|
| 351 | .s6_adr_o(), |
---|
| 352 | .s6_sel_o(), |
---|
| 353 | .s6_we_o(), |
---|
| 354 | .s6_cyc_o(), |
---|
| 355 | .s6_stb_o(), |
---|
[22] | 356 | .s6_ack_i(1'b0), |
---|
| 357 | .s6_err_i(1'b0), |
---|
| 358 | .s6_rty_i(1'b0), |
---|
[8] | 359 | .s6_cab_o(), |
---|
| 360 | |
---|
[22] | 361 | .s7_dat_i(64'h0000000000000000), |
---|
[8] | 362 | .s7_dat_o(), |
---|
| 363 | .s7_adr_o(), |
---|
| 364 | .s7_sel_o(), |
---|
| 365 | .s7_we_o(), |
---|
| 366 | .s7_cyc_o(), |
---|
| 367 | .s7_stb_o(), |
---|
[22] | 368 | .s7_ack_i(1'b0), |
---|
| 369 | .s7_err_i(1'b0), |
---|
| 370 | .s7_rty_i(1'b0), |
---|
[8] | 371 | .s7_cab_o() |
---|
| 372 | ); |
---|
| 373 | |
---|
| 374 | s1_top cpu ( |
---|
| 375 | .sys_clock_i(wb_clk_i), |
---|
| 376 | .sys_reset_i(wb_rst_i), |
---|
| 377 | .eth_irq_i(eth_irq), |
---|
| 378 | .wbm_ack_i(m0_ack_o), |
---|
| 379 | .wbm_data_i(m0_dat_o), |
---|
| 380 | .wbm_cycle_o(m0_cyc_i), |
---|
| 381 | .wbm_strobe_o(m0_stb_i), |
---|
| 382 | .wbm_we_o(m0_we_i), |
---|
| 383 | .wbm_addr_o(m0_adr_i), |
---|
| 384 | .wbm_data_o(m0_dat_i), |
---|
| 385 | .wbm_sel_o(m0_sel_i) |
---|
| 386 | ); |
---|
| 387 | |
---|
| 388 | wire [7:0] fifo_used; |
---|
| 389 | |
---|
| 390 | dram_wb dram_wb_inst ( |
---|
| 391 | .clk200(sysclk), |
---|
| 392 | //.clk200(clk_in), |
---|
| 393 | //.rup(rup), |
---|
| 394 | //.rdn(rdn), |
---|
| 395 | .wb_clk_i(wb_clk_i), |
---|
| 396 | .wb_rst_i(wb_rst_i), |
---|
| 397 | .wb_dat_i(s0_dat_o), |
---|
| 398 | .wb_dat_o(s0_dat_i), |
---|
| 399 | .wb_adr_i(s0_adr_o), |
---|
| 400 | .wb_sel_i(s0_sel_o), |
---|
| 401 | .wb_we_i(s0_we_o), |
---|
| 402 | .wb_cyc_i(s0_cyc_o), |
---|
| 403 | .wb_stb_i(s0_stb_o), |
---|
| 404 | .wb_ack_o(s0_ack_i), |
---|
| 405 | .wb_err_o(s0_err_i), |
---|
| 406 | .wb_rty_o(s0_rty_i), |
---|
| 407 | .wb_cab_i(s0_cab_o), |
---|
[23] | 408 | .ddr2_dq(ddr3_dq), |
---|
| 409 | .ddr2_dqs(ddr3_dqs), |
---|
| 410 | .ddr2_dqs_n(ddr3_dqs_n), |
---|
| 411 | .ddr2_ck(ddr3_ck), |
---|
| 412 | .ddr2_ck_n(ddr3_ck_n), |
---|
[10] | 413 | //.ddr3_reset(ddr3_reset), |
---|
[23] | 414 | .ddr2_a(ddr3_a), |
---|
| 415 | .ddr2_ba(ddr3_ba), |
---|
| 416 | .ddr2_ras_n(ddr3_ras_n), |
---|
| 417 | .ddr2_cas_n(ddr3_cas_n), |
---|
| 418 | .ddr2_we_n(ddr3_we_n), |
---|
| 419 | .ddr2_cs_n(ddr3_cs_n), |
---|
| 420 | .ddr2_odt(ddr3_odt), |
---|
| 421 | .ddr2_ce(ddr3_ce), |
---|
| 422 | .ddr2_dm(ddr3_dm), |
---|
[8] | 423 | .phy_init_done(phy_init_done), |
---|
| 424 | .dcm_locked(dcm_locked), |
---|
| 425 | .fifo_used(fifo_used), |
---|
| 426 | .sysrst(sysrst) |
---|
| 427 | ); |
---|
| 428 | |
---|
[17] | 429 | WBFLASH flash_inst ( |
---|
[8] | 430 | .wb_clk_i(wb_clk_i), |
---|
| 431 | .wb_rst_i(wb_rst_i), |
---|
| 432 | |
---|
| 433 | .wb_dat_i(s1_dat_o), |
---|
| 434 | .wb_dat_o(s1_dat_i), |
---|
| 435 | .wb_adr_i(s1_adr_o), |
---|
| 436 | .wb_sel_i(s1_sel_o), |
---|
| 437 | .wb_we_i(s1_we_o), |
---|
| 438 | .wb_cyc_i(s1_cyc_o), |
---|
| 439 | .wb_stb_i(s1_stb_o), |
---|
| 440 | .wb_ack_o(s1_ack_i), |
---|
| 441 | .wb_err_o(s1_err_i), |
---|
| 442 | .wb_rty_o(s1_rty_i), |
---|
| 443 | .wb_cab_i(s1_cab_o), |
---|
| 444 | |
---|
| 445 | .wb1_dat_i(s4_dat_o), |
---|
| 446 | .wb1_dat_o(s4_dat_i), |
---|
| 447 | .wb1_adr_i(s4_adr_o), |
---|
| 448 | .wb1_sel_i(s4_sel_o), |
---|
| 449 | .wb1_we_i(s4_we_o), |
---|
| 450 | .wb1_cyc_i(s4_cyc_o), |
---|
| 451 | .wb1_stb_i(s4_stb_o), |
---|
| 452 | .wb1_ack_o(s4_ack_i), |
---|
| 453 | .wb1_err_o(s4_err_i), |
---|
| 454 | .wb1_rty_o(s4_rty_i), |
---|
| 455 | .wb1_cab_i(s4_cab_o), |
---|
| 456 | |
---|
| 457 | .flash_addr(flash_addr), |
---|
| 458 | .flash_data(flash_data), |
---|
| 459 | .flash_oen(flash_oen), |
---|
| 460 | .flash_wen(flash_wen), |
---|
| 461 | .flash_cen(flash_cen) |
---|
| 462 | //.flash_rev(flash_rev) |
---|
| 463 | ); |
---|
| 464 | |
---|
| 465 | uart_top uart16550 ( |
---|
| 466 | .wb_clk_i(wb_clk_i), |
---|
| 467 | .wb_rst_i(wb_rst_i), |
---|
| 468 | .wb_adr_i({s3_adr_o[4:3],s3_sel_o[3:0]==4'h0 ? 1'b0:1'b1,2'b00}), |
---|
| 469 | .wb_dat_i(s3_sel_o[3:0]==4'h0 ? {s3_dat_o[39:32],s3_dat_o[47:40],s3_dat_o[55:48],s3_dat_o[63:56]}:{s3_dat_o[7:0],s3_dat_o[15:8],s3_dat_o[23:16],s3_dat_o[31:24]}), |
---|
| 470 | .wb_dat_o({s3_dat_i[7:0],s3_dat_i[15:8],s3_dat_i[23:16],s3_dat_i[31:24]}), |
---|
| 471 | .wb_we_i(s3_we_o), |
---|
| 472 | .wb_stb_i(s3_stb_o), |
---|
| 473 | .wb_cyc_i(s3_cyc_o), |
---|
| 474 | .wb_ack_o(s3_ack_i), |
---|
| 475 | .wb_sel_i(s3_sel_o[3:0]==4'h0 ? {s3_sel_o[4],s3_sel_o[5],s3_sel_o[6],s3_sel_o[7]}:{s3_sel_o[0],s3_sel_o[1],s3_sel_o[2],s3_sel_o[3]}), // Big endian |
---|
| 476 | .int_o(int_o), |
---|
| 477 | .stx_pad_o(stx), |
---|
| 478 | .srx_pad_i(srx), |
---|
| 479 | .rts_pad_o(), |
---|
[17] | 480 | .cts_pad_i(1'b1), |
---|
[8] | 481 | .dtr_pad_o(), |
---|
[17] | 482 | .dsr_pad_i(1'b1), |
---|
| 483 | .ri_pad_i(1'b0), |
---|
| 484 | .dcd_pad_i(1'b1), |
---|
| 485 | .baud_o(baud_o) |
---|
[8] | 486 | ); |
---|
| 487 | |
---|
[6] | 488 | /* |
---|
[8] | 489 | // OpenCores 10/100 Ethernet MAC |
---|
| 490 | eth_top eth_mac ( |
---|
| 491 | .wb_clk_i(wb_clk_i), |
---|
| 492 | .wb_rst_i(wb_rst_i), |
---|
| 493 | |
---|
| 494 | .wb_dat_i(wb_sel_i[7:4]==4'b0 ? {wb_dat_i[7:0],wb_dat_i[15:8],wb_dat_i[23:16],wb_dat_i[31:24]}:{wb_dat_i[39:32],wb_dat_i[47:40],wb_dat_i[55:48],wb_dat_i[63:56]}), |
---|
| 495 | .wb_dat_o(dat_o), |
---|
| 496 | .wb_adr_i(wb_adr_i[31:0]), |
---|
| 497 | .wb_sel_i(wb_sel_i[7:4]==4'b0 ? {wb_sel_i[0],wb_sel_i[1],wb_sel_i[2],wb_sel_i[3]}:{wb_sel_i[4],wb_sel_i[5],wb_sel_i[6],wb_sel_i[7]}), |
---|
| 498 | .wb_we_i(wb_we_i), |
---|
| 499 | .wb_cyc_i(wb_cyc_i), |
---|
| 500 | .wb_stb_i(wb_stb_i), |
---|
| 501 | .wb_ack_o(wb_ack_o), |
---|
| 502 | .wb_err_o(wb_err_o), |
---|
| 503 | .m_wb_adr_o(m_wb_adr_o[31:0]), |
---|
| 504 | .m_wb_sel_o(sel_o), |
---|
| 505 | .m_wb_we_o(m_wb_we_o), |
---|
| 506 | .m_wb_dat_o(mdat_o), |
---|
| 507 | .m_wb_dat_i(m_wb_adr_o[2] ? {m_wb_dat_i[7:0],m_wb_dat_i[15:8],m_wb_dat_i[23:16],m_wb_dat_i[31:24]}:{m_wb_dat_i[39:32],m_wb_dat_i[47:40],m_wb_dat_i[55:48],m_wb_dat_i[63:56]}), |
---|
| 508 | .m_wb_cyc_o(m_wb_cyc_o), |
---|
| 509 | .m_wb_stb_o(m_wb_stb_o), |
---|
| 510 | .m_wb_ack_i(m_wb_ack_i), |
---|
| 511 | .m_wb_err_i(m_wb_err_i), |
---|
| 512 | |
---|
| 513 | .mtx_clk_pad_i(mtx_clk), |
---|
| 514 | .mtxd_pad_o(mtxd), |
---|
| 515 | .mtxen_pad_o(mtxen), |
---|
| 516 | .mtxerr_pad_o(mtxerr), |
---|
| 517 | .mrx_clk_pad_i(mrx_clk), |
---|
| 518 | .mrxd_pad_i(mrxd), |
---|
| 519 | .mrxdv_pad_i(mrxdv), |
---|
| 520 | .mrxerr_pad_i(mrxerr), |
---|
| 521 | .mcoll_pad_i(mcoll), |
---|
| 522 | .mcrs_pad_i(mcrs), |
---|
| 523 | .mdc_pad_o(mdc), |
---|
| 524 | .md_pad_i(md_i), |
---|
| 525 | .md_pad_o(md_o), |
---|
| 526 | .md_padoe_o(md_oe), |
---|
| 527 | .int_o(int_eth) |
---|
| 528 | ); */ |
---|
[6] | 529 | |
---|
[8] | 530 | /*eth_sgmii eth_ctrl ( |
---|
| 531 | .wb_clk_i(wb_clk_i), |
---|
| 532 | .wb_rst_i(wb_rst_i), |
---|
| 533 | .sysclk(sysclk), |
---|
| 534 | |
---|
| 535 | .wb_dat_i(s2_dat_o), |
---|
| 536 | .wb_dat_o(s2_dat_i), |
---|
| 537 | .wb_adr_i(s2_adr_o), |
---|
| 538 | .wb_sel_i(s2_sel_o), |
---|
| 539 | .wb_we_i(s2_we_o), |
---|
| 540 | .wb_cyc_i(s2_cyc_o), |
---|
| 541 | .wb_stb_i(s2_stb_o), |
---|
| 542 | .wb_ack_o(s2_ack_i), |
---|
| 543 | .wb_err_o(s2_err_i), |
---|
| 544 | |
---|
| 545 | .m_wb_adr_o(m1_adr_i), |
---|
| 546 | .m_wb_sel_o(m1_sel_i), |
---|
| 547 | .m_wb_we_o(m1_we_i), |
---|
| 548 | .m_wb_dat_o(m1_dat_i), |
---|
| 549 | .m_wb_dat_i(m1_dat_o), |
---|
| 550 | .m_wb_cyc_o(m1_cyc_i), |
---|
| 551 | .m_wb_stb_o(m1_stb_i), |
---|
| 552 | .m_wb_ack_i(m1_ack_o), |
---|
| 553 | .m_wb_err_i(m1_err_o), |
---|
| 554 | |
---|
| 555 | .sgmii_tx(eth_tx), |
---|
| 556 | .sgmii_rx(eth_rx), |
---|
| 557 | .led_10(led_10), |
---|
| 558 | .led_100(led_100), |
---|
| 559 | .led_1000(led_1000), |
---|
| 560 | .led_an(led_an), |
---|
| 561 | .led_disp_err(led_disp_err), |
---|
| 562 | .led_char_err(led_char_err), |
---|
| 563 | .led_link(led_link), |
---|
| 564 | |
---|
| 565 | .md(md), |
---|
| 566 | .mdc(mdc), |
---|
| 567 | |
---|
| 568 | .int_eth(eth_int) |
---|
| 569 | ); |
---|
| 570 | */ |
---|
| 571 | assign eth_rst=!wb_rst_i; // PHY reset |
---|
| 572 | |
---|
| 573 | wire sysrst_p; |
---|
| 574 | assign sysrst_p=!sysrst; |
---|
| 575 | |
---|
| 576 | |
---|
| 577 | IBUFG ibufg_inst (.O(sysclk),.I(clk_in)); |
---|
| 578 | BUFG bufg_inst (.O(pllclk),.I(sysclk)); |
---|
| 579 | |
---|
| 580 | // Standard PLL |
---|
| 581 | pll pll_inst( |
---|
| 582 | .RST_IN(sysrst_p), |
---|
| 583 | .CLKIN1_IN(pllclk), |
---|
| 584 | .CLKOUT0_OUT(wb_clk_i), //Up to 75 MHz on Stratix IV |
---|
| 585 | .LOCKED_OUT(dcm_locked) |
---|
| 586 | ); |
---|
| 587 | |
---|
[17] | 588 | assign wb_rst_i=(!dcm_locked ); //FIXME |
---|
| 589 | //assign wb_rst_i=(!dcm_locked || !phy_init_done); //FIXME |
---|
[8] | 590 | |
---|
| 591 | //reg [223:0] ILA_DATA; |
---|
| 592 | |
---|
| 593 | /* |
---|
| 594 | [63:0] address |
---|
| 595 | [127:64] data to core |
---|
| 596 | [191:128] data from core |
---|
| 597 | [199:192] sel |
---|
| 598 | [200] cyc |
---|
| 599 | [201] stb |
---|
| 600 | [202] we |
---|
| 601 | [203] ack |
---|
| 602 | */ |
---|
| 603 | |
---|
| 604 | // SignalTap II |
---|
| 605 | /*ST ila( |
---|
| 606 | .acq_clk(wb_clk_i), |
---|
| 607 | .acq_data_in(ILA_DATA), |
---|
| 608 | .acq_trigger_in(ILA_DATA), |
---|
| 609 | .storage_enable(ILA_DATA[203]) // wb_ack |
---|
| 610 | );*/ |
---|
| 611 | |
---|
| 612 | // InSystem Sources |
---|
| 613 | /*VIO vio_inst( |
---|
| 614 | .probe(0), |
---|
| 615 | .source_clk(wb_clk_i), |
---|
| 616 | .source(VIO_SIG) |
---|
| 617 | );*/ |
---|
| 618 | |
---|
| 619 | /*always @(posedge wb_clk_i or posedge wb_rst_i) |
---|
| 620 | if(wb_rst_i) |
---|
| 621 | cycle_count<=0; |
---|
| 622 | else |
---|
| 623 | cycle_count<=cycle_count+1; |
---|
| 624 | |
---|
| 625 | always @( * ) |
---|
| 626 | begin |
---|
| 627 | case(VIO_SIG) |
---|
| 628 | 2'b00: |
---|
| 629 | begin |
---|
| 630 | ILA_DATA[63:0]<=m0_adr_i; |
---|
| 631 | ILA_DATA[127:64]<=m0_dat_o; |
---|
| 632 | ILA_DATA[191:128]<=m0_dat_i; |
---|
| 633 | ILA_DATA[199:192]<=m0_sel_i; |
---|
| 634 | ILA_DATA[200]<=m0_cyc_i; |
---|
| 635 | ILA_DATA[201]<=m0_stb_i; |
---|
| 636 | ILA_DATA[202]<=m0_we_i; |
---|
| 637 | ILA_DATA[203]<=m0_ack_o; |
---|
| 638 | end |
---|
| 639 | 2'b01: |
---|
| 640 | begin |
---|
| 641 | ILA_DATA[63:0]<=m1_adr_i; |
---|
| 642 | ILA_DATA[127:64]<=m1_dat_o; |
---|
| 643 | ILA_DATA[191:128]<=m1_dat_i; |
---|
| 644 | ILA_DATA[199:192]<=m1_sel_i; |
---|
| 645 | ILA_DATA[200]<=m1_cyc_i; |
---|
| 646 | ILA_DATA[201]<=m1_stb_i; |
---|
| 647 | ILA_DATA[202]<=m1_we_i; |
---|
| 648 | ILA_DATA[203]<=m1_ack_o; |
---|
| 649 | end |
---|
| 650 | 2'b10: |
---|
| 651 | begin |
---|
| 652 | ILA_DATA[63:0]<=s2_adr_o; |
---|
| 653 | ILA_DATA[127:64]<=s2_dat_o; |
---|
| 654 | ILA_DATA[191:128]<=s2_dat_i; |
---|
| 655 | ILA_DATA[199:192]<=s2_sel_o; |
---|
| 656 | ILA_DATA[200]<=s2_cyc_o; |
---|
| 657 | ILA_DATA[201]<=s2_stb_o; |
---|
| 658 | ILA_DATA[202]<=s2_we_o; |
---|
| 659 | ILA_DATA[203]<=s2_ack_i; |
---|
| 660 | end |
---|
| 661 | 2'b11: |
---|
| 662 | begin |
---|
| 663 | ILA_DATA[63:0]<=s4_adr_o; |
---|
| 664 | ILA_DATA[127:64]<=s4_dat_o; |
---|
| 665 | ILA_DATA[191:128]<=s4_dat_i; |
---|
| 666 | ILA_DATA[199:192]<=s4_sel_o; |
---|
| 667 | ILA_DATA[200]<=s4_cyc_o; |
---|
| 668 | ILA_DATA[201]<=s4_stb_o; |
---|
| 669 | ILA_DATA[202]<=s4_we_o; |
---|
| 670 | ILA_DATA[203]<=s4_ack_i; |
---|
| 671 | end |
---|
| 672 | endcase |
---|
| 673 | ILA_DATA[204]<=stx; |
---|
| 674 | ILA_DATA[205]<=srx; |
---|
| 675 | ILA_DATA[206]<=baud_o; |
---|
| 676 | //ILA_DATA[220:207]<=cycle_count[31:18]; |
---|
| 677 | ILA_DATA[220:213]<=fifo_used; |
---|
| 678 | ILA_DATA[212:207]<=cycle_count[31:26]; |
---|
| 679 | ILA_DATA[221]<=dcm_locked; |
---|
| 680 | ILA_DATA[222]<=wb_rst_i; |
---|
| 681 | ILA_DATA[223]<=phy_init_done; |
---|
| 682 | end |
---|
| 683 | */ |
---|
| 684 | endmodule |
---|