OpenCores
URL https://opencores.org/ocsvn/6809_6309_compatible_core/6809_6309_compatible_core/trunk

Subversion Repositories 6809_6309_compatible_core

[/] [6809_6309_compatible_core/] [trunk/] [rtl/] [verilog/] [MC6809_cpu.v] - Diff between revs 7 and 9

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 7 Rev 9
Line 121... Line 121...
        .set_e(k_set_e),
        .set_e(k_set_e),
        .clear_e(k_clear_e),
        .clear_e(k_clear_e),
        .CCR_o(regs_o_CCR),
        .CCR_o(regs_o_CCR),
        .path_left_data(regs_o_left_path_data),
        .path_left_data(regs_o_left_path_data),
        .path_right_data(regs_o_right_path_data),
        .path_right_data(regs_o_right_path_data),
        .eamem_addr(regs_o_eamem_addr),
        .eamem_addr_o(regs_o_eamem_addr),
        .reg_pc(regs_o_pc),
        .reg_pc(regs_o_pc),
        .reg_dp(regs_o_dp),
        .reg_dp(regs_o_dp),
        .reg_su(regs_o_su)
        .reg_su(regs_o_su)
);
);
 
 
decode_regs dec_regs(
decode_regs dec_regs(
 
        .cpu_clk(cpu_clk),
        .opcode(k_opcode),
        .opcode(k_opcode),
        .postbyte0(k_postbyte),
        .postbyte0(k_postbyte),
        .page2_valid(k_p2_valid),
        .page2_valid(k_p2_valid),
        .page3_valid(k_p3_valid),
        .page3_valid(k_p3_valid),
        .path_left_addr(dec_o_left_path_addr),
        .path_left_addr_o(dec_o_left_path_addr),
        .path_right_addr(dec_o_right_path_addr),
        .path_right_addr_o(dec_o_right_path_addr),
        .dest_reg(dec_o_dest_reg_addr),
        .dest_reg_o(dec_o_dest_reg_addr),
        .write_dest(dec_o_wdest),
        .write_dest(dec_o_wdest),
        .source_size(dec_o_source_size),
        .source_size(dec_o_source_size),
        .result_size(dec_o_alu_size)
        .result_size(dec_o_alu_size)
        );
        );
 
 
Line 806... Line 807...
                                        begin
                                        begin
                                                state <= `SEQ_FETCH;
                                                state <= `SEQ_FETCH;
                                        end
                                        end
                                `SEQ_JSR_PUSH:
                                `SEQ_JSR_PUSH:
                                        begin
                                        begin
                                                k_pp_active_reg <= 8'h80; // push PC
                                                k_pp_active_reg <= `RN_PC; // push PC
                                                state <= `SEQ_PUSH_WRITE_L;
                                                state <= `SEQ_PUSH_WRITE_L;
                                                next_state <= `SEQ_JMP_LOAD_PC;
                                                next_state <= `SEQ_JMP_LOAD_PC;
                                        end
                                        end
                                `SEQ_PREPUSH:
                                `SEQ_PREPUSH:
                                        begin
                                        begin
Line 846... Line 847...
                                                        end
                                                        end
                                                else
                                                else
                                                        state <= `SEQ_FETCH; // end of sequence
                                                        state <= `SEQ_FETCH; // end of sequence
                                                if (k_pp_regs[0]) begin k_pp_active_reg <= `RN_CC; k_pp_regs[0] <= 0; state <= `SEQ_MEM_READ_L; end
                                                if (k_pp_regs[0]) begin k_pp_active_reg <= `RN_CC; k_pp_regs[0] <= 0; state <= `SEQ_MEM_READ_L; end
                                                else
                                                else
 
                                                if ((k_opcode == 8'h3B) && (!`FLAGE)) // not all registers have to be pulled
 
                                                        begin
 
                                                                k_pp_active_reg <= `RN_PC;  k_pp_regs <= 0; state <= `SEQ_MEM_READ_H;
 
                                                        end
 
                                                else
                                                if (k_pp_regs[1]) begin k_pp_active_reg <= `RN_ACCA; k_pp_regs[1] <= 0; state <= `SEQ_MEM_READ_L; end
                                                if (k_pp_regs[1]) begin k_pp_active_reg <= `RN_ACCA; k_pp_regs[1] <= 0; state <= `SEQ_MEM_READ_L; end
                                                else
                                                else
                                                if (k_pp_regs[2]) begin k_pp_active_reg <= `RN_ACCB; k_pp_regs[2] <= 0; state <= `SEQ_MEM_READ_L; end
                                                if (k_pp_regs[2]) begin k_pp_active_reg <= `RN_ACCB; k_pp_regs[2] <= 0; state <= `SEQ_MEM_READ_L; end
                                                else
                                                else
                                                if (k_pp_regs[3]) begin k_pp_active_reg <= `RN_DP; k_pp_regs[3] <= 0; state <= `SEQ_MEM_READ_L; end
                                                if (k_pp_regs[3]) begin k_pp_active_reg <= `RN_DP; k_pp_regs[3] <= 0; state <= `SEQ_MEM_READ_L; end

powered by: WebSVN 2.1.0

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