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

Subversion Repositories oms8051mini

[/] [oms8051mini/] [trunk/] [rtl/] [8051/] [oc8051_sp.v] - Diff between revs 2 and 25

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

Rev 2 Rev 25
Line 14... Line 14...
////  Author(s):                                                  ////
////  Author(s):                                                  ////
////      - Simon Teran, simont@opencores.org                     ////
////      - Simon Teran, simont@opencores.org                     ////
////      - Dinesh Annayya, dinesha@opencores.org                 ////
////      - Dinesh Annayya, dinesha@opencores.org                 ////
////                                                              ////
////                                                              ////
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
 
////   v0.0 - Dinesh A, 5th Jan 2017
 
////        1. Active edge of reset changed from High to Low
 
//////////////////////////////////////////////////////////////////////
////                                                              ////
////                                                              ////
//// Copyright (C) 2000 Authors and OPENCORES.ORG                 ////
//// Copyright (C) 2000 Authors and OPENCORES.ORG                 ////
////                                                              ////
////                                                              ////
//// This source file may be used and distributed without         ////
//// This source file may be used and distributed without         ////
//// restriction provided that this copyright statement is not    ////
//// restriction provided that this copyright statement is not    ////
Line 58... Line 61...
 
 
`include "top_defines.v"
`include "top_defines.v"
 
 
 
 
 
 
module oc8051_sp (clk, rst, ram_rd_sel, ram_wr_sel, wr_addr, wr, wr_bit, data_in, sp_out, sp_w);
module oc8051_sp (clk, resetn, ram_rd_sel, ram_wr_sel, wr_addr, wr, wr_bit, data_in, sp_out, sp_w);
 
 
 
 
input clk, rst, wr, wr_bit;
input clk, resetn, wr, wr_bit;
input [2:0] ram_rd_sel, ram_wr_sel;
input [2:0] ram_rd_sel, ram_wr_sel;
input [7:0] data_in, wr_addr;
input [7:0] data_in, wr_addr;
output [7:0] sp_out, sp_w;
output [7:0] sp_out, sp_w;
 
 
reg [7:0] sp_out, sp_w;
reg [7:0] sp_out, sp_w;
Line 79... Line 82...
assign write = ((wr_addr==`OC8051_SFR_SP) & (wr) & !(wr_bit));
assign write = ((wr_addr==`OC8051_SFR_SP) & (wr) & !(wr_bit));
 
 
assign sp_t= write ? data_in : sp;
assign sp_t= write ? data_in : sp;
 
 
 
 
always @(posedge clk or posedge rst)
always @(posedge clk or negedge resetn)
begin
begin
  if (rst)
  if (resetn == 1'b0)
    sp <= #1 `OC8051_RST_SP;
    sp <= #1 `OC8051_RST_SP;
  else if (write)
  else if (write)
    sp <= #1 data_in;
    sp <= #1 data_in;
  else
  else
    sp <= #1 sp_out;
    sp <= #1 sp_out;
Line 111... Line 114...
  else sp_out = sp_t - {7'b0, pop};
  else sp_out = sp_t - {7'b0, pop};
 
 
end
end
 
 
 
 
always @(posedge clk or posedge rst)
always @(posedge clk or negedge resetn)
begin
begin
  if (rst)
  if (resetn == 1'b0)
    pop <= #1 1'b0;
    pop <= #1 1'b0;
  else if (ram_rd_sel==`OC8051_RRS_SP) pop <= #1 1'b1;
  else if (ram_rd_sel==`OC8051_RRS_SP) pop <= #1 1'b1;
  else pop <= #1 1'b0;
  else pop <= #1 1'b0;
end
end
 
 

powered by: WebSVN 2.1.0

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