CDL Modules
|
CDL implementation of 6502 CPU core. More...
CDL implementation of 6502 CPU core.
This is a (fairly) complete implementation of the original 6502 processor; currently it is missing the decimal mode for add, though.
The original 6502 is latch-based, using both levels of the clock.
This implementation is fully synchronous, running from a single clock edge (although it used to use two edges to match the 6502 behavior, this proved to be unnecessary).
Because of this, read and write controls, addresses and write data are valid at the start of a cycle, and read data is expected to be valid at the end of the cycle - i.e. an asynchronous RAM is required. This asynchronous behavior is best handled by having an intermediate clock edge (i.e. using a faster clock to generate the CPU clock and an SRAM clock, which alternate).
The BBC microcomputer effectively did just this, actually using one clock phase for CPU memory reads, and the other clock phase for video memory reads (oh for the days when memories were faster than logic...)
Data Structures | |
struct | cpu6502::t_flags |
struct | cpu6502::t_interrupt_state |
struct | cpu6502::t_state |
struct | cpu6502::t_ir_decode |
struct | cpu6502::t_mem_request |
struct | cpu6502::t_useq_decode |
struct | cpu6502::t_alu_result |
struct | cpu6502::t_data_path |
Namespaces | |
cpu6502 | |
Typedefs | |
typedef bit[src_en_num] | cpu6502::t_src_enables |
typedef bit[src_wr_en_num] | cpu6502::t_src_write_enables |
typedef bit[ids_en_num] | cpu6502::t_ids_enables |