Line 7... |
Line 7... |
// Purpose: This file isn't really a part of the synthesis implementation
|
// Purpose: This file isn't really a part of the synthesis implementation
|
// of the wb2axip project itself, but rather it is an example
|
// of the wb2axip project itself, but rather it is an example
|
// of how the wb2axip project can be used to connect a MIG generated
|
// of how the wb2axip project can be used to connect a MIG generated
|
// IP component.
|
// IP component.
|
//
|
//
|
|
// This implementation depends upon the existence of a MIG generated
|
|
// core, named "mig_axis", and illustrates how such a core might be
|
|
// connected to the wbm2axip bridge. Specific options of the mig_axis
|
|
// setup include 6 identifier bits, and a full-sized bus width of 128
|
|
// bits. These two settings are both appropriate for driving a DDR3
|
|
// memory (whose minimum transfer size is 128 bits), but may need to be
|
|
// adjusted to support other memories.
|
//
|
//
|
// Creator: Dan Gisselquist, Ph.D.
|
// Creator: Dan Gisselquist, Ph.D.
|
// Gisselquist Technology, LLC
|
// Gisselquist Technology, LLC
|
//
|
//
|
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
//
|
//
|
// Copyright (C) 2015-2016, Gisselquist Technology, LLC
|
// Copyright (C) 2015-2017, Gisselquist Technology, LLC
|
//
|
//
|
// This program is free software (firmware): you can redistribute it and/or
|
// This program is free software (firmware): you can redistribute it and/or
|
// modify it under the terms of the GNU General Public License as published
|
// modify it under the terms of the GNU General Public License as published
|
// by the Free Software Foundation, either version 3 of the License, or (at
|
// by the Free Software Foundation, either version 3 of the License, or (at
|
// your option) any later version.
|
// your option) any later version.
|
Line 26... |
Line 33... |
// ANY WARRANTY; without even the implied warranty of MERCHANTIBILITY or
|
// ANY WARRANTY; without even the implied warranty of MERCHANTIBILITY or
|
// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
// for more details.
|
// for more details.
|
//
|
//
|
// You should have received a copy of the GNU General Public License along
|
// You should have received a copy of the GNU General Public License along
|
// with this program. (It's in the $(ROOT)/doc directory, run make with no
|
// with this program. (It's in the $(ROOT)/doc directory. Run make with no
|
// target there if the PDF file isn't present.) If not, see
|
// target there if the PDF file isn't present.) If not, see
|
// <http://www.gnu.org/licenses/> for a copy.
|
// <http://www.gnu.org/licenses/> for a copy.
|
//
|
//
|
// License: GPL, v3, as defined and found on www.gnu.org,
|
// License: GPL, v3, as defined and found on www.gnu.org,
|
// http://www.gnu.org/licenses/gpl.html
|
// http://www.gnu.org/licenses/gpl.html
|
//
|
//
|
//
|
//
|
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
//
|
//
|
//
|
//
|
|
`default_nettype none
|
|
//
|
module migsdram(i_clk, i_clk_200mhz, o_sys_clk, i_rst, o_sys_reset,
|
module migsdram(i_clk, i_clk_200mhz, o_sys_clk, i_rst, o_sys_reset,
|
// Wishbone components
|
// Wishbone components
|
i_wb_cyc, i_wb_stb, i_wb_we, i_wb_addr, i_wb_data, i_wb_sel,
|
i_wb_cyc, i_wb_stb, i_wb_we, i_wb_addr, i_wb_data, i_wb_sel,
|
o_wb_ack, o_wb_stall, o_wb_data, o_wb_err,
|
o_wb_ack, o_wb_stall, o_wb_data, o_wb_err,
|
// SDRAM connections
|
// SDRAM connections
|
Line 69... |
Line 78... |
:((WBDATAWIDTH==64) ? RAMABITS-3
|
:((WBDATAWIDTH==64) ? RAMABITS-3
|
:((WBDATAWIDTH==128) ? RAMABITS-4
|
:((WBDATAWIDTH==128) ? RAMABITS-4
|
: RAMABITS-5)); // (WBDATAWIDTH==256)
|
: RAMABITS-5)); // (WBDATAWIDTH==256)
|
localparam SELW= (WBDATAWIDTH/8);
|
localparam SELW= (WBDATAWIDTH/8);
|
//
|
//
|
input i_clk, i_clk_200mhz, i_rst;
|
input wire i_clk, i_clk_200mhz, i_rst;
|
output o_sys_clk;
|
output wire o_sys_clk;
|
output reg o_sys_reset;
|
output reg o_sys_reset;
|
//
|
//
|
input i_wb_cyc, i_wb_stb, i_wb_we;
|
input wire i_wb_cyc, i_wb_stb, i_wb_we;
|
input [(AW-1):0] i_wb_addr;
|
input wire [(AW-1):0] i_wb_addr;
|
input [(DW-1):0] i_wb_data;
|
input wire [(DW-1):0] i_wb_data;
|
input [(SELW-1):0] i_wb_sel;
|
input wire [(SELW-1):0] i_wb_sel;
|
output wire o_wb_ack, o_wb_stall;
|
output wire o_wb_ack, o_wb_stall;
|
output wire [(DW-1):0] o_wb_data;
|
output wire [(DW-1):0] o_wb_data;
|
output wire o_wb_err;
|
output wire o_wb_err;
|
//
|
//
|
output wire [0:0] o_ddr_ck_p, o_ddr_ck_n;
|
output wire [0:0] o_ddr_ck_p, o_ddr_ck_n;
|
Line 133... |
Line 142... |
wire [0:0] s_axi_arlock;
|
wire [0:0] s_axi_arlock;
|
wire [3:0] s_axi_arcache;
|
wire [3:0] s_axi_arcache;
|
wire [2:0] s_axi_arprot;
|
wire [2:0] s_axi_arprot;
|
wire [3:0] s_axi_arqos;
|
wire [3:0] s_axi_arqos;
|
wire s_axi_arvalid;
|
wire s_axi_arvalid;
|
|
wire s_axi_arready;
|
// Read response/data channel
|
// Read response/data channel
|
wire [(AXIDWIDTH-1):0] s_axi_rid;
|
wire [(AXIDWIDTH-1):0] s_axi_rid;
|
wire [(AXIWIDTH-1):0] s_axi_rdata;
|
wire [(AXIWIDTH-1):0] s_axi_rdata;
|
wire [1:0] s_axi_rresp;
|
wire [1:0] s_axi_rresp;
|
wire s_axi_rlast;
|
wire s_axi_rlast;
|
wire s_axi_rvalid;
|
wire s_axi_rvalid;
|
|
wire s_axi_rready;
|
|
|
// Other wires ...
|
// Other wires ...
|
wire init_calib_complete, mmcm_locked;
|
wire init_calib_complete, mmcm_locked;
|
wire app_sr_active, app_ref_ack, app_zq_ack;
|
wire app_sr_active, app_ref_ack, app_zq_ack;
|
wire app_sr_req, app_ref_req, app_zq_req;
|
wire app_sr_req, app_ref_req, app_zq_req;
|