Fix synthesis warnings, add SYNC output
Change-Id: If14a39f0621803c7105d6289aca9621c2ff67b99
This commit is contained in:
38
cpu_65c02.v
38
cpu_65c02.v
@@ -48,7 +48,7 @@
|
|||||||
|
|
||||||
// `define IMPLEMENT_CORRECT_BCD_FLAGS
|
// `define IMPLEMENT_CORRECT_BCD_FLAGS
|
||||||
|
|
||||||
module cpu_65c02( clk, reset, AB, DI, DO, WE, IRQ, NMI, RDY );
|
module cpu_65c02( clk, reset, AB, DI, DO, WE, IRQ, NMI, RDY, SYNC );
|
||||||
|
|
||||||
input clk; // CPU clock
|
input clk; // CPU clock
|
||||||
input reset; // reset signal
|
input reset; // reset signal
|
||||||
@@ -59,6 +59,7 @@ output WE; // write enable
|
|||||||
input IRQ; // interrupt request
|
input IRQ; // interrupt request
|
||||||
input NMI; // non-maskable interrupt request
|
input NMI; // non-maskable interrupt request
|
||||||
input RDY; // Ready signal. Pauses CPU when RDY=0
|
input RDY; // Ready signal. Pauses CPU when RDY=0
|
||||||
|
output reg SYNC; // AB is first cycle of the intruction
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* internal signals
|
* internal signals
|
||||||
@@ -183,7 +184,6 @@ reg sed; // set decimal
|
|||||||
reg cli; // clear interrupt
|
reg cli; // clear interrupt
|
||||||
reg sei; // set interrupt
|
reg sei; // set interrupt
|
||||||
reg clv; // clear overflow
|
reg clv; // clear overflow
|
||||||
reg brk; // doing BRK
|
|
||||||
|
|
||||||
reg res; // in reset
|
reg res; // in reset
|
||||||
|
|
||||||
@@ -490,7 +490,7 @@ always @*
|
|||||||
|
|
||||||
BRK2: DO = (IRQ | NMI_edge) ? (P & 8'b1110_1111) : P;
|
BRK2: DO = (IRQ | NMI_edge) ? (P & 8'b1110_1111) : P;
|
||||||
|
|
||||||
default: DO = store_zero ? 0 : regfile;
|
default: DO = store_zero ? 8'b0 : regfile;
|
||||||
endcase
|
endcase
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -729,7 +729,7 @@ always @*
|
|||||||
|
|
||||||
BRA1: AI = ABH; // don't use PCH in case we're
|
BRA1: AI = ABH; // don't use PCH in case we're
|
||||||
|
|
||||||
FETCH: AI = load_only ? 0 : regfile;
|
FETCH: AI = load_only ? 8'b0 : regfile;
|
||||||
|
|
||||||
DECODE,
|
DECODE,
|
||||||
ABS1: AI = 8'hxx; // don't care
|
ABS1: AI = 8'hxx; // don't care
|
||||||
@@ -788,11 +788,11 @@ always @*
|
|||||||
|
|
||||||
READ,
|
READ,
|
||||||
REG: CI = rotate ? C :
|
REG: CI = rotate ? C :
|
||||||
shift ? 0 : inc;
|
shift ? 1'b0 : inc;
|
||||||
|
|
||||||
FETCH: CI = rotate ? C :
|
FETCH: CI = rotate ? C :
|
||||||
compare ? 1 :
|
compare ? 1'b1 :
|
||||||
(shift | load_only) ? 0 : C;
|
(shift | load_only) ? 1'b0 : C;
|
||||||
|
|
||||||
PULL0,
|
PULL0,
|
||||||
RTI0,
|
RTI0,
|
||||||
@@ -1069,6 +1069,29 @@ always @(posedge clk or posedge reset)
|
|||||||
|
|
||||||
endcase
|
endcase
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Sync state machine
|
||||||
|
*/
|
||||||
|
always @(posedge clk or posedge reset)
|
||||||
|
if( reset )
|
||||||
|
SYNC <= 1'b0;
|
||||||
|
else if( RDY ) case( state )
|
||||||
|
BRA0 : SYNC <= !cond_true;
|
||||||
|
BRA1 : SYNC <= !(CO ^ backwards);
|
||||||
|
BRA2,
|
||||||
|
FETCH,
|
||||||
|
REG,
|
||||||
|
PUSH1,
|
||||||
|
PULL2,
|
||||||
|
RTI4,
|
||||||
|
JMP1,
|
||||||
|
BRA2 : SYNC <= 1'b1;
|
||||||
|
default: SYNC <= 1'b0;
|
||||||
|
endcase
|
||||||
|
|
||||||
|
//assign SYNC = state == DECODE;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Additional control signals
|
* Additional control signals
|
||||||
*/
|
*/
|
||||||
@@ -1360,7 +1383,6 @@ always @(posedge clk )
|
|||||||
clv <= (IR == 8'hb8);
|
clv <= (IR == 8'hb8);
|
||||||
cld <= (IR == 8'hd8);
|
cld <= (IR == 8'hd8);
|
||||||
sed <= (IR == 8'hf8);
|
sed <= (IR == 8'hf8);
|
||||||
brk <= (IR == 8'h00);
|
|
||||||
end
|
end
|
||||||
|
|
||||||
always @(posedge clk)
|
always @(posedge clk)
|
||||||
|
|||||||
Reference in New Issue
Block a user