Merge pull request #21 from AngeloJacobo/uberddr3_with_xadc
Added simulation and project demo with XADC
This commit is contained in:
commit
faa94a839a
|
|
@ -72,11 +72,13 @@
|
|||
wire[31:0] o_debug1;
|
||||
reg[7:0] i_wb_data;
|
||||
reg[7:0] i_wb_addr;
|
||||
wire user_temp_alarm_out; // asserts if XADC detects internal temp to be above user temp alarm
|
||||
|
||||
// o_debug1 taps on value of state_calibrate (can be traced inside ddr3_controller module)
|
||||
assign led[0] = (o_debug1[4:0] != 23); //light up if not at DONE_CALIBRATE
|
||||
assign led[1] = (o_debug1[4:0] == 23); //light up if at DONE_CALIBRATE
|
||||
assign led[2] = (o_debug1[4:0] == 23); //light up if at DONE_CALIBRATE
|
||||
assign led[3] = (o_debug1[4:0] == 23); //light up if at DONE_CALIBRATE
|
||||
assign led[1] = (o_debug1[4:0] == 23 && !user_temp_alarm_out); //light up if at DONE_CALIBRATE
|
||||
assign led[2] = (o_debug1[4:0] == 23 && !user_temp_alarm_out); //light up if at DONE_CALIBRATE
|
||||
assign led[3] = (o_debug1[4:0] == 23 && !user_temp_alarm_out); //light up if at DONE_CALIBRATE
|
||||
|
||||
always @(posedge i_controller_clk) begin
|
||||
begin
|
||||
|
|
@ -144,6 +146,15 @@
|
|||
.uart_rx_data(rd_data) // The recieved data.
|
||||
);
|
||||
|
||||
`define XADC
|
||||
`ifdef XADC
|
||||
xadc_wiz_0 xadc_inst (
|
||||
.dclk_in(i_controller_clk), // Clock input for the dynamic reconfiguration port
|
||||
.user_temp_alarm_out(user_temp_alarm_out) // Temperature-sensor alarm output
|
||||
);
|
||||
`else
|
||||
user_temp_alarm_out = 1'b0;
|
||||
`endif
|
||||
|
||||
// UART module from https://github.com/alexforencich/verilog-uart (DOES NOT WORK ON OPENXC7, UberDDR3 cannot finish calibration when this UART is used)
|
||||
// uart #(.DATA_WIDTH(8)) uart_m
|
||||
|
|
@ -184,7 +195,7 @@
|
|||
.i_ddr3_clk(i_ddr3_clk), //i_controller_clk has period of CONTROLLER_CLK_PERIOD, i_ddr3_clk has period of DDR3_CLK_PERIOD
|
||||
.i_ref_clk(i_ref_clk),
|
||||
.i_ddr3_clk_90(i_ddr3_clk_90),
|
||||
.i_rst_n(!i_rst && clk_locked),
|
||||
.i_rst_n(!i_rst && clk_locked && !user_temp_alarm_out),
|
||||
// Wishbone inputs
|
||||
.i_wb_cyc(1), //bus cycle active (1 = normal operation, 0 = all ongoing transaction are to be cancelled)
|
||||
.i_wb_stb(i_wb_stb), //request a transfer
|
||||
|
|
@ -227,9 +238,7 @@
|
|||
.io_ddr3_dqs_n(ddr3_dqs_n),
|
||||
.o_ddr3_dm(ddr3_dm),
|
||||
.o_ddr3_odt(ddr3_odt), // on-die termination
|
||||
.o_debug1(o_debug1),
|
||||
.o_debug2(),
|
||||
.o_debug3()
|
||||
.o_debug1(o_debug1)
|
||||
);
|
||||
|
||||
endmodule
|
||||
|
|
|
|||
|
|
@ -260,6 +260,6 @@ set_property CONFIG_MODE SPIx4 [current_design]
|
|||
## be set to enable an internal VREF for BANK 34. Since a 1.35v supply is being
|
||||
## used the internal reference is set to half that value (i.e. 0.675v). Note that
|
||||
## this property must be set even if SW3 is not used in the design.
|
||||
# set_property INTERNAL_VREF 0.675 [get_iobanks 34]
|
||||
set_property INTERNAL_VREF 0.675 [get_iobanks 34]
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -96,7 +96,7 @@
|
|||
`timescale 1ps / 1ps
|
||||
`define den8192Mb
|
||||
`define sg125
|
||||
`define x8
|
||||
`define x16
|
||||
`default_nettype wire
|
||||
|
||||
module ddr3 (
|
||||
|
|
|
|||
|
|
@ -31,9 +31,10 @@
|
|||
`define sg125
|
||||
`define x16
|
||||
//`define USE_CLOCK_WIZARD
|
||||
//`define TWO_LANES_x8
|
||||
`define EIGHT_LANES_x8
|
||||
`define TWO_LANES_x8
|
||||
//`define EIGHT_LANES_x8
|
||||
`define RAM_8Gb
|
||||
`define XADC
|
||||
|
||||
module ddr3_dimm_micron_sim;
|
||||
`ifdef den1024Mb
|
||||
|
|
@ -65,9 +66,9 @@ module ddr3_dimm_micron_sim;
|
|||
DDR3_CLK_PERIOD = 2500,//ps, period of clock input to DDR3 RAM device
|
||||
AUX_WIDTH = 16, // AUX lines
|
||||
ECC_ENABLE = 0, // ECC enable
|
||||
SELF_REFRESH = 2'b11,
|
||||
DUAL_RANK_DIMM = 1,
|
||||
TEST_SELF_REFRESH = 1;
|
||||
SELF_REFRESH = 2'b00,
|
||||
DUAL_RANK_DIMM = 0,
|
||||
TEST_SELF_REFRESH = 0;
|
||||
|
||||
|
||||
reg i_controller_clk, i_ddr3_clk, i_ref_clk, i_ddr3_clk_90;
|
||||
|
|
@ -114,6 +115,9 @@ module ddr3_dimm_micron_sim;
|
|||
// User enabled self-refresh
|
||||
reg i_user_self_refresh;
|
||||
wire clk_locked;
|
||||
// temperature
|
||||
wire user_temp_alarm_out;
|
||||
|
||||
|
||||
`ifdef USE_CLOCK_WIZARD
|
||||
// Use clock wizard
|
||||
|
|
@ -179,7 +183,7 @@ ddr3_top #(
|
|||
.i_ddr3_clk(i_ddr3_clk), //i_controller_clk has period of CONTROLLER_CLK_PERIOD, i_ddr3_clk has period of DDR3_CLK_PERIOD
|
||||
.i_ref_clk(i_ref_clk),
|
||||
.i_ddr3_clk_90(i_ddr3_clk_90),
|
||||
.i_rst_n(i_rst_n && clk_locked),
|
||||
.i_rst_n(i_rst_n && clk_locked && !user_temp_alarm_out),
|
||||
// Wishbone inputs
|
||||
.i_wb_cyc(i_wb_cyc), //bus cycle active (1 = normal operation, 0 = all ongoing transaction are to be cancelled)
|
||||
.i_wb_stb(i_wb_stb), //request a transfer
|
||||
|
|
@ -274,6 +278,14 @@ ddr3_top #(
|
|||
o_ddr3_clk_n[1]=0;
|
||||
end
|
||||
endgenerate
|
||||
|
||||
`endif
|
||||
|
||||
`ifdef XADC
|
||||
xadc_wiz_0 xadc_inst (
|
||||
.dclk_in(i_controller_clk), // Clock input for the dynamic reconfiguration port
|
||||
.user_temp_alarm_out(user_temp_alarm_out) // Temperature-sensor alarm output
|
||||
);
|
||||
`endif
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,9 @@
|
|||
TIME TEMP
|
||||
0 25
|
||||
30000 50
|
||||
35000 51
|
||||
50000 48
|
||||
70000 51
|
||||
80000 48
|
||||
|
||||
|
||||
Loading…
Reference in New Issue