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

Subversion Repositories 8051

[/] [8051/] [tags/] [rel_12/] [rtl/] [verilog/] [oc8051_sfr.v] - Diff between revs 117 and 118

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

Rev 117 Rev 118
Line 42... Line 42...
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
//
//
// CVS Revision History
// CVS Revision History
//
//
// $Log: not supported by cvs2svn $
// $Log: not supported by cvs2svn $
 
// Revision 1.8  2003/04/09 15:49:42  simont
 
// Register oc8051_sfr dato output, add signal wait_data.
 
//
// Revision 1.7  2003/04/07 14:58:02  simont
// Revision 1.7  2003/04/07 14:58:02  simont
// change sfr's interface.
// change sfr's interface.
//
//
// Revision 1.6  2003/04/07 13:29:16  simont
// Revision 1.6  2003/04/07 13:29:16  simont
// change uart to meet timing.
// change uart to meet timing.
Line 153... Line 156...
 
 
 
 
 
 
input rst, clk, we, bit_in, desAc, desOv, rmw, rxd, t2, t2ex;
input rst, clk, we, bit_in, desAc, desOv, rmw, rxd, t2, t2ex;
input int_ack, int0, int1, reti, wr_bit, t0, t1;
input int_ack, int0, int1, reti, wr_bit, t0, t1;
input [1:0] psw_set;
input [1:0] psw_set, wr_sfr;
input [2:0] ram_rd_sel, ram_wr_sel, wr_sfr;
input [2:0] ram_rd_sel, ram_wr_sel;
input [7:0] adr0, adr1, dat1, dat2, p0_in, p1_in, p2_in, p3_in;
input [7:0] adr0, adr1, dat1, dat2, p0_in, p1_in, p2_in, p3_in;
 
 
output bit_out, txd, intr, srcAc, cy, wait_data;
output bit_out, txd, intr, srcAc, cy, wait_data;
output [1:0] bank_sel;
output [1:0] bank_sel;
output [7:0] dat0, p0_out, p1_out, p2_out, p3_out, int_src, dptr_hi, dptr_lo, acc;
output [7:0] dat0, p0_out, p1_out, p2_out, p3_out, int_src, dptr_hi, dptr_lo, acc;
Line 210... Line 213...
//
//
// b register
// b register
// B
// B
oc8051_b_register oc8051_b_register (.clk(clk), .rst(rst), .bit_in(bit_in),
oc8051_b_register oc8051_b_register (.clk(clk), .rst(rst), .bit_in(bit_in),
           .data_in(dat1), .wr(we), .wr_bit(wr_bit_r), .wr_addr(adr1),
           .data_in(dat1), .wr(we), .wr_bit(wr_bit_r), .wr_addr(adr1),
           .data_out(b_reg), .wr_sfr(wr_sfr));
           .data_out(b_reg));
 
 
//
//
//stack pointer
//stack pointer
// SP
// SP
oc8051_sp oc8051_sp1(.clk(clk), .rst(rst), .ram_rd_sel(ram_rd_sel), .ram_wr_sel(ram_wr_sel),
oc8051_sp oc8051_sp1(.clk(clk), .rst(rst), .ram_rd_sel(ram_rd_sel), .ram_wr_sel(ram_wr_sel),
Line 397... Line 400...
    dat0 <= #1 dat1;
    dat0 <= #1 dat1;
    wait_data <= #1 1'b0;
    wait_data <= #1 1'b0;
  end else if (
  end else if (
      (((wr_sfr==`OC8051_WRS_ACC1) & (adr0==`OC8051_SFR_ACC)) |                 //write to acc
      (((wr_sfr==`OC8051_WRS_ACC1) & (adr0==`OC8051_SFR_ACC)) |                 //write to acc
      ((wr_sfr==`OC8051_WRS_DPTR) & (adr0==`OC8051_SFR_DPTR_LO)) |      //write to dpl
      ((wr_sfr==`OC8051_WRS_DPTR) & (adr0==`OC8051_SFR_DPTR_LO)) |      //write to dpl
      ((wr_sfr==`OC8051_WRS_BA)   & (adr0==`OC8051_SFR_B)) |            //write to b
//      ((wr_sfr==`OC8051_WRS_BA)   & (adr0==`OC8051_SFR_B)) |          //write to b
      (adr1[7] & (adr1==adr0) & we & !wr_bit_r)) & !wait_data) begin                            //write and read same address
      (adr1[7] & (adr1==adr0) & we & !wr_bit_r)) & !wait_data) begin                            //write and read same address
//    dat0 <= #1 dat1;
//    dat0 <= #1 dat1;
    wait_data <= #1 1'b1;
    wait_data <= #1 1'b1;
 
 
  end else if (
  end else if (
      (((wr_sfr==`OC8051_WRS_ACC2) & (adr0==`OC8051_SFR_ACC)) |         //write to acc
      (((wr_sfr==`OC8051_WRS_ACC2) & (adr0==`OC8051_SFR_ACC)) |         //write to acc
      ((wr_sfr==`OC8051_WRS_DPTR) & (adr0==`OC8051_SFR_DPTR_HI)) |      //write to dph
      ((wr_sfr==`OC8051_WRS_DPTR) & (adr0==`OC8051_SFR_DPTR_HI))        //write to dph
      ((wr_sfr==`OC8051_WRS_BA)   & (adr0==`OC8051_SFR_ACC))) & !wait_data) begin       //write to b
//      ((wr_sfr==`OC8051_WRS_BA)   & (adr0==`OC8051_SFR_ACC))
 
      ) & !wait_data) begin     //write to b
//    dat0 <= #1 dat2;
//    dat0 <= #1 dat2;
    wait_data <= #1 1'b1;
    wait_data <= #1 1'b1;
 
 
//  else if (({adr1[7:3], 3'b000}==adr0_r) & we & wr_bit_r)
//  else if (({adr1[7:3], 3'b000}==adr0_r) & we & wr_bit_r)
//    dat0 <= #1 dat1;
//    dat0 <= #1 dat1;
Line 455... Line 459...
begin
begin
  if (rst)
  if (rst)
    bit_out <= #1 1'h0;
    bit_out <= #1 1'h0;
  else if (
  else if (
          ((adr1[7:3]==adr0[7:3]) & (~&adr1[2:0]) &  we & !wr_bit_r) |
          ((adr1[7:3]==adr0[7:3]) & (~&adr1[2:0]) &  we & !wr_bit_r) |
          ((wr_sfr==`OC8051_WRS_ACC1) & (adr0[7:3]==`OC8051_SFR_B_ACC)) |       //write to acc
          ((wr_sfr==`OC8051_WRS_ACC1) & (adr0[7:3]==`OC8051_SFR_B_ACC))         //write to acc
          ((wr_sfr==`OC8051_WRS_BA)   & (adr0[7:3]==`OC8051_SFR_B_B)))          //write to b
//          ((wr_sfr==`OC8051_WRS_BA)   & (adr0[7:3]==`OC8051_SFR_B_B))
 
          )             //write to b
 
 
    bit_out <= #1 dat1[adr0[2:0]];
    bit_out <= #1 dat1[adr0[2:0]];
  else if ((adr1==adr0) & we & wr_bit_r)
  else if ((adr1==adr0) & we & wr_bit_r)
    bit_out <= #1 bit_in;
    bit_out <= #1 bit_in;
  else
  else

powered by: WebSVN 2.1.0

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