Line 15... |
Line 15... |
//// 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 56... |
Line 59... |
// prepared header
|
// prepared header
|
//
|
//
|
//
|
//
|
|
|
|
|
module oc8051_indi_addr (clk, rst, wr_addr, data_in, wr, wr_bit, ri_out, sel, bank);
|
module oc8051_indi_addr (clk, resetn, wr_addr, data_in, wr, wr_bit, ri_out, sel, bank);
|
//
|
//
|
|
|
|
|
input clk, // clock
|
input clk, // clock
|
rst, // reset
|
resetn, // reset
|
wr, // write
|
wr, // write
|
sel, // select register
|
sel, // select register
|
wr_bit; // write bit addressable
|
wr_bit; // write bit addressable
|
input [1:0] bank; // select register bank
|
input [1:0] bank; // select register bank
|
input [7:0] data_in; // data input
|
input [7:0] data_in; // data input
|
Line 79... |
Line 82... |
|
|
reg [7:0] buff [0:7];
|
reg [7:0] buff [0:7];
|
|
|
//
|
//
|
//write to buffer
|
//write to buffer
|
always @(posedge clk or posedge rst)
|
always @(posedge clk or negedge resetn)
|
begin
|
begin
|
if (rst) begin
|
if (resetn == 1'b0) begin
|
buff[3'b000] <= #1 8'h00;
|
buff[3'b000] <= #1 8'h00;
|
buff[3'b001] <= #1 8'h00;
|
buff[3'b001] <= #1 8'h00;
|
buff[3'b010] <= #1 8'h00;
|
buff[3'b010] <= #1 8'h00;
|
buff[3'b011] <= #1 8'h00;
|
buff[3'b011] <= #1 8'h00;
|
buff[3'b100] <= #1 8'h00;
|
buff[3'b100] <= #1 8'h00;
|
Line 114... |
Line 117... |
assign ri_out = (({3'b000, bank, 2'b00, sel}==wr_addr) & (wr) & !wr_bit_r) ?
|
assign ri_out = (({3'b000, bank, 2'b00, sel}==wr_addr) & (wr) & !wr_bit_r) ?
|
data_in : buff[{bank, sel}];
|
data_in : buff[{bank, sel}];
|
|
|
|
|
|
|
always @(posedge clk or posedge rst)
|
always @(posedge clk or negedge resetn)
|
if (rst) begin
|
if (resetn == 1'b0) begin
|
wr_bit_r <= #1 1'b0;
|
wr_bit_r <= #1 1'b0;
|
end else begin
|
end else begin
|
wr_bit_r <= #1 wr_bit;
|
wr_bit_r <= #1 wr_bit;
|
end
|
end
|
|
|