OpenCores
URL https://opencores.org/ocsvn/eco32/eco32/trunk

Subversion Repositories eco32

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /eco32/trunk/fpga
    from Rev 223 to Rev 224
    Reverse comparison

Rev 223 → Rev 224

/boards/xsa-xst-3/clk_rst/clk_rst.v
1,11 → 1,11
//
// clk_reset.v -- clock and reset generator
// clk_rst.v -- clock and reset generator
//
 
 
module clk_reset(clk_in, reset_inout_n,
sdram_clk, sdram_fb,
clk, clk_ok, reset);
module clk_rst(clk_in, reset_inout_n,
sdram_clk, sdram_fb,
clk, clk_ok, reset);
input clk_in;
inout reset_inout_n;
output sdram_clk;
/boards/s3e-500/clk_rst/clk_rst.v
0,0 → 1,146
//
// clk_rst.v -- clock and reset generator
//
 
 
module clk_rst(clk_in, reset_in,
ddr_clk_0, ddr_clk_90, ddr_clk_180,
ddr_clk_270, ddr_clk_ok, clk, reset);
input clk_in;
input reset_in;
output ddr_clk_0;
output ddr_clk_90;
output ddr_clk_180;
output ddr_clk_270;
output ddr_clk_ok;
output clk;
output reset;
 
wire clk50_in;
wire clk50_out;
wire clk50_ok;
wire clk100_out;
wire clk100_in;
wire clk100_0;
wire clk100_90;
wire clk100_180;
wire clk100_270;
wire clk100_ok;
 
reg reset_p;
reg reset_s;
reg [23:0] reset_counter;
wire reset_counting;
 
//------------------------------------------------------------
 
IBUFG clk_in_buffer(
.I(clk_in),
.O(clk50_in)
);
 
DCM_SP dcm50(
.RST(1'b0),
.CLKIN(clk50_in),
.CLKFB(clk),
.CLK0(clk50_out),
.CLK2X(clk100_out),
.LOCKED(clk50_ok),
.PSCLK(1'b0),
.PSEN(1'b0),
.PSINCDEC(1'b0)
);
 
defparam dcm50.CLKDV_DIVIDE = 2.0;
defparam dcm50.CLKFX_DIVIDE = 1;
defparam dcm50.CLKFX_MULTIPLY = 4;
defparam dcm50.CLKIN_DIVIDE_BY_2 = "FALSE";
defparam dcm50.CLKIN_PERIOD = 20.0;
defparam dcm50.CLKOUT_PHASE_SHIFT = "NONE";
defparam dcm50.CLK_FEEDBACK = "1X";
defparam dcm50.DESKEW_ADJUST = "SYSTEM_SYNCHRONOUS";
defparam dcm50.DLL_FREQUENCY_MODE = "LOW";
defparam dcm50.DUTY_CYCLE_CORRECTION = "TRUE";
defparam dcm50.PHASE_SHIFT = 0;
defparam dcm50.STARTUP_WAIT = "FALSE";
 
BUFG clk50_buffer(
.I(clk50_out),
.O(clk)
);
 
BUFG clk100_buffer(
.I(clk100_out),
.O(clk100_in)
);
 
//------------------------------------------------------------
 
DCM_SP dcm100(
.RST(~clk50_ok),
.CLKIN(clk100_in),
.CLKFB(ddr_clk_0),
.CLK0(clk100_0),
.CLK90(clk100_90),
.CLK180(clk100_180),
.CLK270(clk100_270),
.LOCKED(clk100_ok),
.PSCLK(1'b0),
.PSEN(1'b0),
.PSINCDEC(1'b0)
);
 
defparam dcm100.CLKDV_DIVIDE = 2.0;
defparam dcm100.CLKFX_DIVIDE = 1;
defparam dcm100.CLKFX_MULTIPLY = 4;
defparam dcm100.CLKIN_DIVIDE_BY_2 = "FALSE";
defparam dcm100.CLKIN_PERIOD = 10.0;
defparam dcm100.CLKOUT_PHASE_SHIFT = "NONE";
defparam dcm100.CLK_FEEDBACK = "1X";
defparam dcm100.DESKEW_ADJUST = "SYSTEM_SYNCHRONOUS";
defparam dcm100.DLL_FREQUENCY_MODE = "LOW";
defparam dcm100.DUTY_CYCLE_CORRECTION = "TRUE";
defparam dcm100.PHASE_SHIFT = 0;
defparam dcm100.STARTUP_WAIT = "FALSE";
 
BUFG clk100_0_buffer(
.I(clk100_0),
.O(ddr_clk_0)
);
 
BUFG clk100_90_buffer(
.I(clk100_90),
.O(ddr_clk_90)
);
 
BUFG clk100_180_buffer(
.I(clk100_180),
.O(ddr_clk_180)
);
 
BUFG clk100_270_buffer(
.I(clk100_270),
.O(ddr_clk_270)
);
 
assign ddr_clk_ok = clk100_ok;
 
//------------------------------------------------------------
 
assign reset_counting = (reset_counter == 24'hFFFFFF) ? 0 : 1;
 
always @(posedge clk) begin
reset_p <= reset_in;
reset_s <= reset_p;
if (reset_s | ~clk50_ok | ~clk100_ok) begin
reset_counter <= 24'h000000;
end else begin
if (reset_counting == 1) begin
reset_counter <= reset_counter + 1;
end
end
end
 
assign reset = reset_counting;
 
endmodule

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.