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

Subversion Repositories t6507lp

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /
    from Rev 101 to Rev 102
    Reverse comparison

Rev 101 → Rev 102

/t6507lp/trunk/rtl/verilog/t6507lp_fsm_tb.v
170,10 → 170,11
fake_mem[333] = STA_IDY; // testing IDY mode WRITE TYPE, page crossed;
fake_mem[334] = 8'h00;
fake_mem[335] = STA_IDY; // testing IDY mode WRITE TYPE, page not crossed;
fake_mem[336] = 8'h0e;
fake_mem[337] = JMP_IND; // testing absolute indirect addressing. page crossed when updating pointer.
fake_mem[338] = 8'hff;
fake_mem[339] = 8'h00;
fake_mem[336] = 8'h0e;
fake_mem[337] = INX_IMP;
fake_mem[338] = JMP_IND; // testing absolute indirect addressing. page crossed when updating pointer.
fake_mem[339] = 8'hff;
fake_mem[340] = 8'h00;
//fake_mem[337] = JMP_IND; // testing absolute indirect addressing. no page crossed when updating pointer.
//fake_mem[338] = 8'h3b;
//fake_mem[339] = 8'h00;
187,7 → 188,7
reset_n=1'b1;
 
#3000;
#4000;
$finish; // to shut down the simulation
end //initial
 
/t6507lp/trunk/rtl/verilog/t6507lp_fsm.v
96,7 → 96,7
localparam MEM_WRITE = 1'b1;
 
reg [ADDR_SIZE_:0] pc; // program counter
reg [DATA_SIZE_:0] sp; // stack pointer
reg [ADDR_SIZE_:0] sp; // stack pointer
reg [DATA_SIZE_:0] ir; // instruction register
reg [ADDR_SIZE_:0] temp_addr; // temporary address
reg [DATA_SIZE_:0] temp_data; // temporary data
174,9 → 174,9
if (reset_n == 1'b0) begin
// all registers must assume default values
pc <= 0; // TODO: this is written somewhere. something about a reset vector. must be checked.
sp <= 0; // TODO: the default is not 0. maybe $0100 or something like that. must be checked.
sp <= 13'h100; // TODO: the default is not 0. maybe $0100 or something like that. must be checked.
ir <= 8'h00;
temp_addr <= 0;
temp_addr <= 13'h00;
temp_data <= 8'h00;
state <= RESET;
// registered outputs also receive default values
250,6 → 250,9
temp_data <= data_in;
control <= MEM_READ;
end
else begin // the special instructions will fall here: BRK, RTI, RTS...
end
end
FETCH_HIGH_CALC_INDEX: begin
pc <= next_pc;
509,6 → 512,9
else if (indirectx || indirecty) begin
next_state = READ_FROM_POINTER;
end
else begin // all the special instructions will fall here
next_state = RESET;
end
end
READ_FROM_POINTER: begin
if (indirectx) begin
529,7 → 535,7
next_state = READ_MEM_FIX_ADDR;
end
else begin
if (read || read_modify_write) begin
if (read) begin // read_modify_write was showing up here for no reason. no instruction using pointers is from that type.
next_state = READ_MEM;
end
else if (write) begin
658,7 → 664,7
branch = 1'b0;
 
case (ir)
BRK_IMP, CLC_IMP, CLD_IMP, CLI_IMP, CLV_IMP, DEX_IMP, DEY_IMP, INX_IMP, INY_IMP, NOP_IMP, PHA_IMP, PHP_IMP, PLA_IMP,
CLC_IMP, CLD_IMP, CLI_IMP, CLV_IMP, DEX_IMP, DEY_IMP, INX_IMP, INY_IMP, NOP_IMP, PHA_IMP, PHP_IMP, PLA_IMP,
PLP_IMP, RTI_IMP, RTS_IMP, SEC_IMP, SED_IMP, SEI_IMP, TAX_IMP, TAY_IMP, TSX_IMP, TXA_IMP, TXS_IMP, TYA_IMP: begin
implied = 1'b1;
end
797,6 → 803,9
JMP_IND: begin
jump_indirect = 1'b1;
end
BRK_IMP: begin
// something goes in here
end
default: begin
$write("state : %b", state);
if (reset_n == 1 && state != FETCH_OP_FIX_PC) begin // the processor is NOT being reset neither it is fixing the pc

powered by: WebSVN 2.1.0

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