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

Subversion Repositories mem_ctrl

[/] [mem_ctrl/] [trunk/] [rtl/] [verilog/] [mc_timing.v] - Diff between revs 9 and 12

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 9 Rev 12
Line 35... Line 35...
////                                                             ////
////                                                             ////
/////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////
 
 
//  CVS Log
//  CVS Log
//
//
//  $Id: mc_timing.v,v 1.3 2001-09-02 02:28:28 rudi Exp $
//  $Id: mc_timing.v,v 1.4 2001-09-24 00:38:21 rudi Exp $
//
//
//  $Date: 2001-09-02 02:28:28 $
//  $Date: 2001-09-24 00:38:21 $
//  $Revision: 1.3 $
//  $Revision: 1.4 $
//  $Author: rudi $
//  $Author: rudi $
//  $Locker:  $
//  $Locker:  $
//  $State: Exp $
//  $State: Exp $
//
//
// Change History:
// Change History:
//               $Log: not supported by cvs2svn $
//               $Log: not supported by cvs2svn $
 
//               Revision 1.3  2001/09/02 02:28:28  rudi
 
//
 
//               Many fixes for minor bugs that showed up in gate level simulations.
 
//
//               Revision 1.2  2001/08/10 08:16:21  rudi
//               Revision 1.2  2001/08/10 08:16:21  rudi
//
//
//               - Changed IO names to be more clear.
//               - Changed IO names to be more clear.
//               - Uniquifyed define names to be core specific.
//               - Uniquifyed define names to be core specific.
//               - Removed "Refresh Early" configuration
//               - Removed "Refresh Early" configuration
Line 413... Line 417...
 
 
always @(posedge clk)
always @(posedge clk)
        rsts <= #1 rsts1;
        rsts <= #1 rsts1;
 
 
// Control Signals Output Enable
// Control Signals Output Enable
always @(posedge clk)
always @(posedge clk or posedge rst)
        if(!rst)        mc_c_oe <= #1 1'b0;
        if(rst)         mc_c_oe <= #1 1'b0;
        else            mc_c_oe <= #1 mc_c_oe_d;
        else            mc_c_oe <= #1 mc_c_oe_d;
 
 
always @(posedge clk or negedge rsts)
always @(posedge clk or posedge rsts)
        if(!rsts)       mc_le <= #1 1'b0;
        if(rsts)        mc_le <= #1 1'b0;
        else            mc_le <= #1 ~mc_le;
        else            mc_le <= #1 ~mc_le;
 
 
always @(posedge clk)
always @(posedge clk)
        pack_le0 <= #1 pack_le0_d;
        pack_le0 <= #1 pack_le0_d;
 
 
Line 512... Line 516...
 
 
always @(posedge clk)
always @(posedge clk)
        lookup_ready2 <= #1 lookup_ready1;
        lookup_ready2 <= #1 lookup_ready1;
 
 
// Keep Track if it is a SDRAM write cycle
// Keep Track if it is a SDRAM write cycle
always @(posedge clk or negedge rst)
always @(posedge clk or posedge rst)
        if(!rst)        wr_cycle <= #1 1'b0;
        if(rst)         wr_cycle <= #1 1'b0;
        else
        else
        if(wr_set)      wr_cycle <= #1 1'b1;
        if(wr_set)      wr_cycle <= #1 1'b1;
        else
        else
        if(wr_clr)      wr_cycle <= #1 1'b0;
        if(wr_clr)      wr_cycle <= #1 1'b0;
 
 
// Track when a cycle is *still* active
// Track when a cycle is *still* active
always @(posedge clk or negedge rst)
always @(posedge clk or posedge rst)
        if(!rst)                        wb_cycle <= #1 1'b0;
        if(rst)                         wb_cycle <= #1 1'b0;
        else
        else
        if(wb_cycle_set)                wb_cycle <= #1 1'b1;
        if(wb_cycle_set)                wb_cycle <= #1 1'b1;
        else
        else
        if(!wb_cyc_i)                   wb_cycle <= #1 1'b0;
        if(!wb_cyc_i)                   wb_cycle <= #1 1'b0;
 
 
// Track ack's for read cycles 
// Track ack's for read cycles 
always @(posedge clk or negedge rst)
always @(posedge clk or posedge rst)
        if(!rst)                                ack_cnt <= #1 4'h0;
        if(rst)                                 ack_cnt <= #1 4'h0;
        else
        else
        if(!wb_read_go & !wb_write_go)          ack_cnt <= #1 4'h0;
        if(!wb_read_go & !wb_write_go)          ack_cnt <= #1 4'h0;
        else
        else
        if(dv & !mem_ack_s)                     ack_cnt <= #1 ack_cnt + 4'h1;
        if(dv & !mem_ack_s)                     ack_cnt <= #1 ack_cnt + 4'h1;
        else
        else
Line 561... Line 565...
        rfr_ack_r <= #1 rfr_ack;
        rfr_ack_r <= #1 rfr_ack;
 
 
// Suspend Select Logic
// Suspend Select Logic
assign susp_sel = susp_sel_r | susp_sel_set;
assign susp_sel = susp_sel_r | susp_sel_set;
 
 
always @(posedge clk or negedge rst)
always @(posedge clk or posedge rst)
        if(!rst)                susp_sel_r <= #1 0;
        if(rst)                 susp_sel_r <= #1 0;
        else
        else
        if(susp_sel_set)        susp_sel_r <= #1 1'b1;
        if(susp_sel_set)        susp_sel_r <= #1 1'b1;
        else
        else
        if(susp_sel_clr)        susp_sel_r <= #1 1'b0;
        if(susp_sel_clr)        susp_sel_r <= #1 1'b0;
 
 
Line 608... Line 612...
wire    [3:0]    twrp;
wire    [3:0]    twrp;
 
 
assign twrp = tms_x[16:15] + tms_x[23:20];
assign twrp = tms_x[16:15] + tms_x[23:20];
 
 
// SDRAM Memories timing tracker
// SDRAM Memories timing tracker
always @(posedge clk or negedge rst)
always @(posedge clk or posedge rst)
`ifdef MC_POR_DELAY
`ifdef MC_POR_DELAY
        if(!rst)                timer <= #1 `MC_POR_DELAY_VAL ;
        if(rst)                 timer <= #1 `MC_POR_DELAY_VAL ;
        else
        else
`endif
`endif
        if(tmr_ld_twr2)         timer <= #1 { 4'h0, tms_x[15:12] };
        if(tmr_ld_twr2)         timer <= #1 { 4'h0, tms_x[15:12] };
        else
        else
        if(tmr_ld_trdz)         timer <= #1 { 4'h0, tms_x[11:8] };
        if(tmr_ld_trdz)         timer <= #1 { 4'h0, tms_x[11:8] };
Line 681... Line 685...
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//
//
// Main State Machine
// Main State Machine
//
//
 
 
always @(posedge clk or negedge rst)
always @(posedge clk or posedge rst)
`ifdef MC_POR_DELAY
`ifdef MC_POR_DELAY
        if(!rst)        state <= #1 POR;
        if(rst)         state <= #1 POR;
`else
`else
        if(!rst)        state <= #1 IDLE;
        if(rst)         state <= #1 IDLE;
`endif
`endif
        else            state <= #1 next_state;
        else            state <= #1 next_state;
 
 
always @(state or cs_a or
always @(state or cs_a or
        twd_is_zero or wb_stb_i or
        twd_is_zero or wb_stb_i or

powered by: WebSVN 2.1.0

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