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: DECODER.v
|
// Filename: DECODER.v
|
// Version: 3.0
|
// Version: 3.2 bug fix
|
// History: 2.0 of 11 August 2016
|
// History: 3.0 of 2 December 2018
|
|
// 2.0 of 11 August 2016
|
// 1.0 first release of 30 Mai 2015
|
// 1.0 first release of 30 Mai 2015
|
// Date: 2 December 2018
|
// Date: 17 January 2021
|
//
|
//
|
// Copyright (C) 2018 Udo Moeller
|
// Copyright (C) 2021 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
|
// removed from the file and that any derivative work contains
|
// removed from the file and that any derivative work contains
|
// the original copyright notice and the associated disclaimer.
|
// the original copyright notice and the associated disclaimer.
|
Line 569... |
Line 570... |
assign jump = (ex_br_op[0] & branch) | (acb_reg & ~ACB_ZERO) | ex_br_op[1];
|
assign jump = (ex_br_op[0] & branch) | (acb_reg & ~ACB_ZERO) | ex_br_op[1];
|
|
|
always @(posedge BCLK) ldpc_phase <= (phase_reg == 8'h3E) // PC load at CXP/Traps , all one clock cycle guaranted
|
always @(posedge BCLK) ldpc_phase <= (phase_reg == 8'h3E) // PC load at CXP/Traps , all one clock cycle guaranted
|
| (phase_reg == 8'h43) // PC load at RXP
|
| (phase_reg == 8'h43) // PC load at RXP
|
| ((phase_reg == 8'h49) & reti_flag) // PC load at RETI
|
| ((phase_reg == 8'h49) & reti_flag) // PC load at RETI
|
| (phase_reg == 8'h4E) // PC load at RETT
|
| ((phase_reg == 8'h4E) & next) // PC load at RETT - here not one clock cycle guaranted
|
| (phase_reg == 8'h66) // PC load at JUMP/JSR/CASE
|
| (phase_reg == 8'h66) // PC load at JUMP/JSR/CASE
|
| (phase_reg == 8'h7B); // PC load at DE = Direct Exception
|
| (phase_reg == 8'h7B); // PC load at DE = Direct Exception
|
|
|
assign NEW = ((phase_reg == 8'd1) & jump & di_stat[0]) | LOAD_PC;
|
assign NEW = ((phase_reg == 8'd1) & jump & di_stat[0]) | LOAD_PC;
|
assign LOAD_PC = ((phase_reg == 8'h2B) & di_stat[0]) // only one pulse, but DISP must be ok => di_stat[0] (RET)
|
assign LOAD_PC = ((phase_reg == 8'h2B) & di_stat[0]) // only one pulse, but DISP must be ok => di_stat[0] (RET)
|