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

Subversion Repositories socgen

[/] [socgen/] [trunk/] [Projects/] [opencores.org/] [Mos6502/] [ip/] [core/] [rtl/] [verilog/] [control] - Rev 131

Compare with Previous | Blame | View Log


module  `VARIANT`CONTROL

#( parameter BOOT_VEC =8'hfc,
   parameter STATE_SIZE=3
)
(
input wire                    clk,
input wire                    reset,
input wire                    enable,
input wire                    nmi,
input wire [7:0]              vec_int,
input wire                    invalid,
input wire                    run_status, 
input wire                    irq_status,
input wire                    brk_status,
input wire [STATE_SIZE:0]    state,
input wire   [2:0]            ctrl,
input wire   [7:0]            ir,
input wire  [15:0]            address,
input wire                    branch_inst,
 
output reg   [7:0]            vector,
output reg   [1:0]            cmd, 
output reg                    core_reset
);

 
reg nmi_taken   ;   
   
always @ (posedge clk )
begin
     if (reset)
      begin                                
      nmi_taken      <= 1'b0;
      end
     else
     if (!nmi)       
      begin
      nmi_taken      <= 1'b0;
      end
     else
     if (ir == `RTI_IMP)       
      begin
      nmi_taken      <= 1'b0;
      end
     else
     if (nmi && (state == `INT_1))           
      begin
      nmi_taken      <= 1'b1;
      end
     else                         
      begin
      nmi_taken      <= nmi_taken;
      end
end
   
always @ (posedge clk )
begin
     if (reset)             core_reset     <= 1'b1;
     else
     if (!enable)           core_reset     <= core_reset;
     else                   core_reset     <= 1'b0;

end
   
always @ (posedge clk )
begin
     if (reset)             vector     <= 8'h00;
     else
     if (!enable)           vector     <= vector;
     else
     if(state == `RESET)    vector     <= BOOT_VEC;
     else                   vector     <= vec_int;
  
end

always @ (posedge clk )
begin
     if ( reset)            cmd            <= `cmd_none;
     else
     if (!enable)           cmd            <=  cmd;
     else
     if(state == `RESET)    cmd            <= `cmd_load_vec;
     else
     if(state == `HALT)     cmd            <= `cmd_load_vec;
     else
     if(nmi &&(!nmi_taken)) cmd            <= `cmd_load_vec;
     else                   cmd            <= `cmd_run;
end

endmodule

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

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