Line 2... |
Line 2... |
//
|
//
|
// This file is part of the M32632 project
|
// This file is part of the M32632 project
|
// http://opencores.org/project,m32632
|
// http://opencores.org/project,m32632
|
//
|
//
|
// Filename: ADDR_UNIT.v
|
// Filename: ADDR_UNIT.v
|
// Version: 1.0
|
// Version: 1.1 bug fix
|
// Date: 30 May 2015
|
// History: 1.0 first release of 30 Mai 2015
|
|
// Date: 7 October 2015
|
//
|
//
|
// Copyright (C) 2015 Udo Moeller
|
// Copyright (C) 2015 Udo Moeller
|
//
|
//
|
// 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 37... |
Line 38... |
//
|
//
|
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
|
module ADDR_UNIT ( BCLK, BRESET, READ, WRITE, LDEA, NEWACC, CLRMSW, POST, DISP_OK, FULLACC, SRC2SEL, INDEX, ASIZE, SRC1, SRC2, BWD,
|
module ADDR_UNIT ( BCLK, BRESET, READ, WRITE, LDEA, NEWACC, CLRMSW, POST, DISP_OK, FULLACC, SRC2SEL, INDEX, ASIZE, SRC1, SRC2, BWD,
|
DISP, PC_ARCHI, PC_ICACHE, IO_READY, ACC_STAT, MMU_UPDATE, IC_TEX, ABO_STAT, ADIVAR, RWVAL_1, OP_RMW, PHASE_17,
|
DISP, PC_ARCHI, PC_ICACHE, IO_READY, ACC_STAT, MMU_UPDATE, IC_TEX, ABO_STAT, ADIVAR, RWVAL_1, OP_RMW, PHASE_17,
|
NO_TRAP, FPU_TRAP, READ_OUT, WRITE_OUT, ZTEST, RMW, VADR, ADDR, SIZE, PACKET, ACC_DONE, ABORT, REG_OUT, BITSEL );
|
NO_TRAP, FPU_TRAP, READ_OUT, WRITE_OUT, ZTEST, RMW, VADR, ADDR, SIZE, PACKET, ACC_DONE, ABORT, REG_OUT, BITSEL,
|
|
QWATWO );
|
|
|
input BCLK,BRESET;
|
input BCLK,BRESET;
|
input READ,WRITE,LDEA;
|
input READ,WRITE,LDEA;
|
input NEWACC;
|
input NEWACC;
|
input CLRMSW,POST,FULLACC;
|
input CLRMSW,POST,FULLACC;
|
Line 72... |
Line 74... |
output [3:0] PACKET;
|
output [3:0] PACKET;
|
output ACC_DONE;
|
output ACC_DONE;
|
output ABORT;
|
output ABORT;
|
output REG_OUT;
|
output REG_OUT;
|
output [2:0] BITSEL;
|
output [2:0] BITSEL;
|
|
output reg QWATWO;
|
|
|
reg [31:0] VADR;
|
reg [31:0] VADR;
|
reg READ_OUT,write_reg,ZTEST,RMW;
|
reg READ_OUT,write_reg,ZTEST,RMW;
|
reg [1:0] SIZE;
|
reg [1:0] SIZE;
|
reg [3:0] PACKET;
|
reg [3:0] PACKET;
|
Line 336... |
Line 339... |
else no_done <= (~acc_ende & acc_step) | (no_done & ~(acc_run & acc_ende));
|
else no_done <= (~acc_ende & acc_step) | (no_done & ~(acc_run & acc_ende));
|
|
|
// The final DONE Multiplexer
|
// The final DONE Multiplexer
|
assign ACC_DONE = acc_run ? (acc_step & ~no_done) : ea_ok;
|
assign ACC_DONE = acc_run ? (acc_step & ~no_done) : ea_ok;
|
|
|
|
// Bugfix of 7.October 2015
|
|
always @(posedge BCLK) QWATWO <= acc_run & acc_ok & qwa_flag & ~io_rdy & ca_hit & ~PACKET[3] & (SIZE == 2'b11) & READ_OUT & ~no_done;
|
|
|
always @(posedge BCLK) reg_out_i <= ~acc_step & BRESET & ((qwa_flag & (io_rdy | ~ca_hit) & acc_ok) | reg_out_i);
|
always @(posedge BCLK) reg_out_i <= ~acc_step & BRESET & ((qwa_flag & (io_rdy | ~ca_hit) & acc_ok) | reg_out_i);
|
|
|
always @(posedge BCLK) io_rdy <= IO_READY & (WRITE_OUT | READ_OUT);
|
always @(posedge BCLK) io_rdy <= IO_READY & (WRITE_OUT | READ_OUT);
|
|
|
always @(posedge BCLK) next_reg <= (acc_step & ~qwa_flag) & (SIZE == 2'b11);
|
always @(posedge BCLK) next_reg <= (acc_step & ~qwa_flag) & (SIZE == 2'b11);
|