Difference between revisions of "ITX-65C816"
Jump to navigation
Jump to search
Blwikiadmin (talk | contribs) |
Blwikiadmin (talk | contribs) |
||
(2 intermediate revisions by the same user not shown) | |||
Line 413: | Line 413: | ||
** 1MB SRAM | ** 1MB SRAM | ||
** PS/2 Keyboard | ** PS/2 Keyboard | ||
+ | |||
+ | === Pins 10CL006YU256C8G === | ||
+ | |||
+ | <pre> | ||
+ | set_global_assignment -name FAMILY "Cyclone 10 LP" | ||
+ | set_global_assignment -name DEVICE 10CL006YU256C8G | ||
+ | set_global_assignment -name TOP_LEVEL_ENTITY M6502_VGA | ||
+ | set_global_assignment -name ORIGINAL_QUARTUS_VERSION "13.0 SP1" | ||
+ | set_global_assignment -name PROJECT_CREATION_TIME_DATE "18:01:55 MARCH 31, 2019" | ||
+ | set_global_assignment -name LAST_QUARTUS_VERSION "21.1.0 Lite Edition" | ||
+ | set_global_assignment -name PROJECT_OUTPUT_DIRECTORY output_files | ||
+ | set_global_assignment -name MIN_CORE_JUNCTION_TEMP 0 | ||
+ | set_global_assignment -name MAX_CORE_JUNCTION_TEMP 85 | ||
+ | set_global_assignment -name ERROR_CHECK_FREQUENCY_DIVISOR 1 | ||
+ | set_global_assignment -name PARTITION_NETLIST_TYPE SOURCE -section_id Top | ||
+ | set_global_assignment -name PARTITION_FITTER_PRESERVATION_LEVEL PLACEMENT_AND_ROUTING -section_id Top | ||
+ | set_global_assignment -name PARTITION_COLOR 16764057 -section_id Top | ||
+ | set_global_assignment -name POWER_PRESET_COOLING_SOLUTION "23 MM HEAT SINK WITH 200 LFPM AIRFLOW" | ||
+ | set_global_assignment -name POWER_BOARD_THERMAL_MODEL "NONE (CONSERVATIVE)" | ||
+ | set_global_assignment -name STRATIX_DEVICE_IO_STANDARD "3.3-V LVTTL" | ||
+ | set_global_assignment -name USE_CONFIGURATION_DEVICE OFF | ||
+ | set_global_assignment -name CRC_ERROR_OPEN_DRAIN OFF | ||
+ | set_global_assignment -name OUTPUT_IO_TIMING_NEAR_END_VMEAS "HALF VCCIO" -rise | ||
+ | set_global_assignment -name OUTPUT_IO_TIMING_NEAR_END_VMEAS "HALF VCCIO" -fall | ||
+ | set_global_assignment -name OUTPUT_IO_TIMING_FAR_END_VMEAS "HALF SIGNAL SWING" -rise | ||
+ | set_global_assignment -name OUTPUT_IO_TIMING_FAR_END_VMEAS "HALF SIGNAL SWING" -fall | ||
+ | set_global_assignment -name CYCLONEII_RESERVE_NCEO_AFTER_CONFIGURATION "USE AS REGULAR IO" | ||
+ | # Clock, reset switch | ||
+ | set_location_assignment PIN_E1 -to i_clk_50 | ||
+ | set_location_assignment PIN_J6 -to i_n_reset | ||
+ | set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to i_n_reset | ||
+ | # PS/2 keyboard | ||
+ | set_location_assignment PIN_C2 -to io_ps2Clk | ||
+ | set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to io_ps2Clk | ||
+ | set_location_assignment PIN_D1 -to io_ps2Data | ||
+ | set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to io_ps2Data | ||
+ | # Serial port with RTS/CTS | ||
+ | set_location_assignment PIN_A15 -to i_n_cts | ||
+ | set_location_assignment PIN_D14 -to i_rxd | ||
+ | set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to i_rxd | ||
+ | set_location_assignment PIN_B16 -to o_n_rts | ||
+ | set_location_assignment PIN_C15 -to o_txd | ||
+ | # Audio | ||
+ | set_location_assignment PIN_G1 -to audioR | ||
+ | set_location_assignment PIN_G2 -to audioL | ||
+ | # Video | ||
+ | set_location_assignment PIN_A10 -to o_vid_red[0] | ||
+ | set_location_assignment PIN_B10 -to o_vid_red[1] | ||
+ | set_location_assignment PIN_E11 -to o_vid_red[2] | ||
+ | set_location_assignment PIN_A11 -to o_vid_grn[0] | ||
+ | set_location_assignment PIN_D12 -to o_vid_grn[1] | ||
+ | set_location_assignment PIN_D11 -to o_vid_grn[2] | ||
+ | set_location_assignment PIN_A12 -to o_vid_blu[0] | ||
+ | set_location_assignment PIN_B11 -to o_vid_blu[1] | ||
+ | set_location_assignment PIN_B12 -to o_vid_hSync | ||
+ | set_location_assignment PIN_A13 -to o_vid_vSync | ||
+ | # SRAM | ||
+ | set_location_assignment PIN_D4 -to o_n_sRamCS | ||
+ | set_location_assignment PIN_A4 -to o_n_sRamOE | ||
+ | set_location_assignment PIN_D8 -to o_n_sRamWE | ||
+ | set_location_assignment PIN_C6 -to io_sramData[0] | ||
+ | set_location_assignment PIN_B5 -to io_sramData[1] | ||
+ | set_location_assignment PIN_B6 -to io_sramData[2] | ||
+ | set_location_assignment PIN_B7 -to io_sramData[3] | ||
+ | set_location_assignment PIN_A6 -to io_sramData[4] | ||
+ | set_location_assignment PIN_A5 -to io_sramData[5] | ||
+ | set_location_assignment PIN_D6 -to io_sramData[6] | ||
+ | set_location_assignment PIN_E6 -to io_sramData[7] | ||
+ | set_location_assignment PIN_E5 -to o_sramAddress[0] | ||
+ | set_location_assignment PIN_B4 -to o_sramAddress[1] | ||
+ | set_location_assignment PIN_B3 -to o_sramAddress[2] | ||
+ | set_location_assignment PIN_D3 -to o_sramAddress[3] | ||
+ | set_location_assignment PIN_B1 -to o_sramAddress[4] | ||
+ | set_location_assignment PIN_F5 -to o_sramAddress[5] | ||
+ | set_location_assignment PIN_C3 -to o_sramAddress[6] | ||
+ | set_location_assignment PIN_A3 -to o_sramAddress[7] | ||
+ | set_location_assignment PIN_A2 -to o_sramAddress[8] | ||
+ | set_location_assignment PIN_A7 -to o_sramAddress[9] | ||
+ | set_location_assignment PIN_C8 -to o_sramAddress[10] | ||
+ | set_location_assignment PIN_C9 -to o_sramAddress[11] | ||
+ | set_location_assignment PIN_A8 -to o_sramAddress[12] | ||
+ | set_location_assignment PIN_A9 -to o_sramAddress[13] | ||
+ | set_location_assignment PIN_E8 -to o_sramAddress[14] | ||
+ | set_location_assignment PIN_E10 -to o_sramAddress[15] | ||
+ | set_location_assignment PIN_E9 -to o_sramAddress[16] | ||
+ | set_location_assignment PIN_B9 -to o_sramAddress[17] | ||
+ | set_location_assignment PIN_B8 -to o_sramAddress[18] | ||
+ | set_location_assignment PIN_D9 -to o_sramAddress[19] | ||
+ | # SD Card | ||
+ | set_location_assignment PIN_B13 -to sdCS | ||
+ | set_location_assignment PIN_C14 -to sdMISO | ||
+ | set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to sdMISO | ||
+ | set_location_assignment PIN_A14 -to sdMOSI | ||
+ | set_location_assignment PIN_B14 -to sdClock | ||
+ | set_location_assignment PIN_C16 -to i_n_CardDet | ||
+ | set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to i_n_CardDet | ||
+ | set_location_assignment PIN_L9 -to driveLED | ||
+ | # SDRAM | ||
+ | set_location_assignment PIN_P2 -to sdRamClk | ||
+ | set_location_assignment PIN_R1 -to sdRamClkEn | ||
+ | set_location_assignment PIN_M7 -to n_sdRamCas | ||
+ | set_location_assignment PIN_P8 -to n_sdRamCe | ||
+ | set_location_assignment PIN_M8 -to n_sdRamRas | ||
+ | set_location_assignment PIN_P6 -to n_sdRamWe | ||
+ | set_location_assignment PIN_R7 -to sdRamAddr[0] | ||
+ | set_location_assignment PIN_T7 -to sdRamAddr[1] | ||
+ | set_location_assignment PIN_R8 -to sdRamAddr[2] | ||
+ | set_location_assignment PIN_T8 -to sdRamAddr[3] | ||
+ | set_location_assignment PIN_R6 -to sdRamAddr[4] | ||
+ | set_location_assignment PIN_T5 -to sdRamAddr[5] | ||
+ | set_location_assignment PIN_R5 -to sdRamAddr[6] | ||
+ | set_location_assignment PIN_T4 -to sdRamAddr[7] | ||
+ | set_location_assignment PIN_R4 -to sdRamAddr[8] | ||
+ | set_location_assignment PIN_T3 -to sdRamAddr[9] | ||
+ | set_location_assignment PIN_T6 -to sdRamAddr[10] | ||
+ | set_location_assignment PIN_R3 -to sdRamAddr[11] | ||
+ | set_location_assignment PIN_T2 -to sdRamAddr[12] | ||
+ | set_location_assignment PIN_N8 -to sdRamAddr[13] | ||
+ | set_location_assignment PIN_L8 -to sdRamAddr[14] | ||
+ | set_location_assignment PIN_K5 -to sdRamData[0] | ||
+ | set_location_assignment PIN_L3 -to sdRamData[1] | ||
+ | set_location_assignment PIN_L4 -to sdRamData[2] | ||
+ | set_location_assignment PIN_K6 -to sdRamData[3] | ||
+ | set_location_assignment PIN_N3 -to sdRamData[4] | ||
+ | set_location_assignment PIN_M6 -to sdRamData[5] | ||
+ | set_location_assignment PIN_P3 -to sdRamData[6] | ||
+ | set_location_assignment PIN_N5 -to sdRamData[7] | ||
+ | set_location_assignment PIN_N2 -to sdRamData[8] | ||
+ | set_location_assignment PIN_N1 -to sdRamData[9] | ||
+ | set_location_assignment PIN_L1 -to sdRamData[10] | ||
+ | set_location_assignment PIN_L2 -to sdRamData[11] | ||
+ | set_location_assignment PIN_K1 -to sdRamData[12] | ||
+ | set_location_assignment PIN_K2 -to sdRamData[13] | ||
+ | set_location_assignment PIN_J1 -to sdRamData[14] | ||
+ | set_location_assignment PIN_J2 -to sdRamData[15] | ||
+ | # | ||
+ | set_location_assignment PIN_J14 -to IO_PIN[47] | ||
+ | set_location_assignment PIN_J13 -to IO_PIN[48] | ||
+ | set_location_assignment PIN_K11 -to IO_PIN[49] | ||
+ | set_location_assignment PIN_J11 -to IO_PIN[50] | ||
+ | set_location_assignment PIN_G11 -to IO_PIN[51] | ||
+ | set_location_assignment PIN_F11 -to IO_PIN[52] | ||
+ | set_location_assignment PIN_F13 -to IO_PIN[53] | ||
+ | set_location_assignment PIN_F14 -to IO_PIN[54] | ||
+ | set_location_assignment PIN_F10 -to IO_PIN[55] | ||
+ | set_location_assignment PIN_F9 -to IO_PIN[56] | ||
+ | set_location_assignment PIN_E16 -to IO_PIN[57] | ||
+ | set_location_assignment PIN_E15 -to IO_PIN[58] | ||
+ | set_location_assignment PIN_D16 -to IO_PIN[59] | ||
+ | set_location_assignment PIN_D15 -to IO_PIN[60] | ||
+ | set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to IO_PIN[60] | ||
+ | set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to IO_PIN[59] | ||
+ | set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to IO_PIN[56] | ||
+ | set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to IO_PIN[55] | ||
+ | set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to IO_PIN[54] | ||
+ | set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to IO_PIN[53] | ||
+ | set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to IO_PIN[52] | ||
+ | set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to IO_PIN[51] | ||
+ | set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to IO_PIN[50] | ||
+ | set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to IO_PIN[49] | ||
+ | set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to IO_PIN[48] | ||
+ | set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to IO_PIN[47] | ||
+ | # | ||
+ | set_global_assignment -name ENABLE_OCT_DONE OFF | ||
+ | set_global_assignment -name ENABLE_CONFIGURATION_PINS OFF | ||
+ | set_global_assignment -name ENABLE_BOOT_SEL_PIN OFF | ||
+ | set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS ON | ||
+ | set_global_assignment -name SMART_RECOMPILE ON | ||
+ | set_global_assignment -name NUM_PARALLEL_PROCESSORS ALL | ||
+ | set_location_assignment PIN_M12 -to i_CPU_ADDR[15] | ||
+ | set_location_assignment PIN_L13 -to i_CPU_ADDR[14] | ||
+ | set_location_assignment PIN_K15 -to i_CPU_ADDR[13] | ||
+ | set_location_assignment PIN_J12 -to i_CPU_ADDR[12] | ||
+ | set_location_assignment PIN_K12 -to i_CPU_ADDR[11] | ||
+ | set_location_assignment PIN_K16 -to i_CPU_ADDR[10] | ||
+ | set_location_assignment PIN_L14 -to i_CPU_ADDR[9] | ||
+ | set_location_assignment PIN_P15 -to i_CPU_ADDR[8] | ||
+ | set_location_assignment PIN_L16 -to i_CPU_ADDR[7] | ||
+ | set_location_assignment PIN_N16 -to i_CPU_ADDR[6] | ||
+ | set_location_assignment PIN_P16 -to i_CPU_ADDR[5] | ||
+ | set_location_assignment PIN_N14 -to i_CPU_ADDR[4] | ||
+ | set_location_assignment PIN_R14 -to i_CPU_ADDR[3] | ||
+ | set_location_assignment PIN_N12 -to i_CPU_ADDR[2] | ||
+ | set_location_assignment PIN_T15 -to i_CPU_ADDR[1] | ||
+ | set_location_assignment PIN_R13 -to i_CPU_ADDR[0] | ||
+ | set_location_assignment PIN_P9 -to I_CPU_E | ||
+ | set_location_assignment PIN_N9 -to i_CPU_MLB | ||
+ | set_location_assignment PIN_T11 -to i_CPU_MX | ||
+ | set_location_assignment PIN_N11 -to i_CPU_RWB | ||
+ | set_location_assignment PIN_T10 -to i_CPU_VDA | ||
+ | set_location_assignment PIN_P11 -to i_CPU_VPA | ||
+ | set_location_assignment PIN_R9 -to i_CPU_VPB | ||
+ | set_location_assignment PIN_R11 -to o_CPU_ABORTB | ||
+ | set_location_assignment PIN_M9 -to o_CPU_BE | ||
+ | set_location_assignment PIN_R12 -to o_CPU_IRQB_n | ||
+ | set_location_assignment PIN_M10 -to o_CPU_NMIB_n | ||
+ | set_location_assignment PIN_T12 -to o_CPU_PHI2 | ||
+ | set_location_assignment PIN_T9 -to o_CPU_RESB_n | ||
+ | set_location_assignment PIN_R10 -to io_CPU_RDY | ||
+ | set_location_assignment PIN_L15 -to IO_CPU_DATA[7] | ||
+ | set_location_assignment PIN_N15 -to IO_CPU_DATA[6] | ||
+ | set_location_assignment PIN_R16 -to IO_CPU_DATA[5] | ||
+ | set_location_assignment PIN_P14 -to IO_CPU_DATA[4] | ||
+ | set_location_assignment PIN_N13 -to IO_CPU_DATA[3] | ||
+ | set_location_assignment PIN_M11 -to IO_CPU_DATA[2] | ||
+ | set_location_assignment PIN_T14 -to IO_CPU_DATA[1] | ||
+ | set_location_assignment PIN_T13 -to IO_CPU_DATA[0] | ||
+ | set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to i_CPU_ADDR[15] | ||
+ | set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to i_CPU_ADDR[14] | ||
+ | set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to i_CPU_ADDR[13] | ||
+ | set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to i_CPU_ADDR[12] | ||
+ | set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to i_CPU_ADDR[11] | ||
+ | set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to i_CPU_ADDR[10] | ||
+ | set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to i_CPU_ADDR[9] | ||
+ | set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to i_CPU_ADDR[8] | ||
+ | set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to i_CPU_ADDR[7] | ||
+ | set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to i_CPU_ADDR[6] | ||
+ | set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to i_CPU_ADDR[5] | ||
+ | set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to i_CPU_ADDR[4] | ||
+ | set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to i_CPU_ADDR[3] | ||
+ | set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to i_CPU_ADDR[2] | ||
+ | set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to i_CPU_ADDR[1] | ||
+ | set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to i_CPU_ADDR[0] | ||
+ | set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to i_CPU_ADDR | ||
+ | set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to I_CPU_E | ||
+ | set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to i_CPU_MLB | ||
+ | set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to i_CPU_MX | ||
+ | set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to i_CPU_RWB | ||
+ | set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to i_CPU_VDA | ||
+ | set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to i_CPU_VPA | ||
+ | set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to i_CPU_VPB | ||
+ | set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to i_n_cts | ||
+ | set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to IO_CPU_DATA[7] | ||
+ | set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to IO_CPU_DATA[6] | ||
+ | set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to IO_CPU_DATA[5] | ||
+ | set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to IO_CPU_DATA[4] | ||
+ | set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to IO_CPU_DATA[3] | ||
+ | set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to IO_CPU_DATA[2] | ||
+ | set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to IO_CPU_DATA[1] | ||
+ | set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to IO_CPU_DATA[0] | ||
+ | set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to IO_CPU_DATA | ||
+ | set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to io_CPU_RDY | ||
+ | set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to io_sramData[7] | ||
+ | set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to io_sramData[6] | ||
+ | set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to io_sramData[5] | ||
+ | set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to io_sramData[4] | ||
+ | set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to io_sramData[3] | ||
+ | set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to io_sramData[2] | ||
+ | set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to io_sramData[1] | ||
+ | set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to io_sramData[0] | ||
+ | set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to io_sramData | ||
+ | </pre> | ||
== Resources == | == Resources == | ||
Line 423: | Line 675: | ||
* [https://www.defence-force.org/computing/oric/coding/annexe_2/ A 6502 Programmer's Introduction to the 65816] | * [https://www.defence-force.org/computing/oric/coding/annexe_2/ A 6502 Programmer's Introduction to the 65816] | ||
* [http://sbc.bcstechnology.net/65c816interrupts.html INVESTIGATING 65C816 INTERRUPTS] | * [http://sbc.bcstechnology.net/65c816interrupts.html INVESTIGATING 65C816 INTERRUPTS] | ||
+ | |||
+ | == Installed == | ||
+ | |||
+ | * Installed on [[FPGA-ITX-01]] card behind bus monitor | ||
+ | |||
+ | [[file:ITX-65816_P18611_720PX.jpg]] | ||
== Mechanicals == | == Mechanicals == |
Latest revision as of 23:49, 20 September 2022
Contents
Features
- W65C816 CPU
- 3.3V
- Running at 8.33 MHz
- Native mode (65C816 extended code) and emulation mode (65C02 code)
- Native mode allows for 24-bit address space
- Installs into FPGA-ITX-01 backplane
CPU Internal Block Diagram
CPU Features
CPU Pinout
NOP Generator
- Validate connections between CPU and FPGA
- Address line count up
- Data lines send out NOP ($EA) opcode controlled by RWB and CPU Clock
- Control lines
- Clock to CPU (from clock divider)
- RWB from CPU
- Bus control lines
- VHDL code
-- CPU signals IO_CPU_DATA <= x"EA" when i_CPU_RWB = '1' else (others => 'Z'); CPUClkGen : entity work.counter generic map (n => 20) port map ( clock => w_cpuClk, clear => '0', count => '1', Q => w_CPUClkCount ); process (i_clk_50) begin if rising_edge(i_clk_50) then o_CPU_PHI2 <= w_CPUClkCount(4); end if; end process; o_CPU_RESB_n <= i_n_reset; o_CPU_IRQB_n <= '1'; o_CPU_NMIB_n <= '1'; o_CPU_ABORTB <= '1'; o_CPU_BE <= '1';
- Used scope and observed Address lines count up
- SignalTap capture of address lines at 0xFFFF to 0x0000 transition
Upper address bits latch
Timing
Connectors
Schematics
Pin List
U8 PIN | EP4CE15/55 | 5CEFA2 | 10C1006 | FUNCTION | U8 PIN | EP4CE15/55 | 5CEFA2 | 10C1006 | FUNCTION | |
---|---|---|---|---|---|---|---|---|---|---|
1 | GND | GND | GND | GND | 2 | GND | GND | GND | GND | |
3 | 3.3V | 3.3V | 3.3V | 3.3V | 4 | 3.3V | 3.3V | 3.3V | 3.3V | |
5 | GND | GND | GND | GND | 6 | GND | GND | GND | GND | |
7 | PIN_AA13 | PIN_AA14 | PIN_R9 | CPU_VPB | 8 | PIN_AB13 | PIN_AA13 | PIN_T9 | CPU_RESB* | |
9 | PIN_AA14 | PIN_AA15 | PIN_R10 | CPU_RDY | 10 | PIN_AB14 | PIN_AB15 | PIN_T10 | CPU_VDA | |
11 | PIN_AA15 | PIN_Y15 | PIN_R11 | CPU_ABORT | 12 | PIN_AB15 | PIN_Y14 | PIN_T11 | CPU_MX | |
13 | PIN_AA16 | PIN_AB18 | PIN_R12 | CPU_IRQB | 14 | PIN_AB16 | PIN_AB17 | PIN_T12 | CPU_PHI2 | |
15 | PIN_AA17 | PIN_Y17 | PIN_N9 | CPU_MLB | 16 | PIN_AB17 | PIN_Y16 | PIN_M9 | CPU_BE | |
17 | PIN_AA18 | PIN_AA18 | PIN_M10 | CPU_NMIB | 18 | PIN_AB18 | PIN_AA17 | PIN_P9 | CPU_E | |
19 | PIN_AA19 | PIN_AA20 | PIN_P11 | CPU_VPA | 20 | PIN_AB19 | PIN_AA19 | PIN_N11 | CPU_RWB | |
21 | PIN_AA20 | PIN_Y20 | PIN_R13 | CPU_A0 | 22 | PIN_AB20 | PIN_Y19 | PIN_T13 | CPU_D0 | |
23 | PIN_Y22 | PIN_AB21 | PIN_T15 | CPU_A1 | 24 | PIN_Y21 | PIN_AB20 | PIN_T14 | CPU_D1 | |
25 | PIN_W22 | PIN_AA22 | PIN_N12 | CPU_A2 | 26 | PIN_W21 | PIN_AB22 | PIN_M11 | CPU_D2 | |
27 | PIN_V22 | PIN_W22 | PIN_R14 | CPU_A3 | 28 | PIN_V21 | PIN_Y22 | PIN_N13 | CPU_D3 | |
29 | PIN_U22 | PIN_Y21 | PIN_N14 | CPU_A4 | 30 | PIN_U21 | PIN_W21 | PIN_P14 | CPU_D4 | |
31 | PIN_R22 | PIN_U22 | PIN_P16 | CPU_A5 | 32 | PIN_R21 | PIN_V21 | PIN_R16 | CPU_D5 | |
33 | PIN_P22 | PIN_V20 | PIN_N16 | CPU_A6 | 34 | PIN_P21 | PIN_W19 | PIN_N15 | CPU_D6 | |
35 | PIN_N22 | PIN_U21 | PIN_M16 | N/C | 36 | PIN_N21 | PIN_U20 | PIN_M15 | N/C | |
37 | PIN_M22 | PIN_R22 | PIN_L16 | CPU_A7 | 38 | PIN_M21 | PIN_T22 | PIN_L15 | CPU_D7 | |
39 | PIN_L22 | PIN_P22 | PIN_P15 | CPU_A8 | 40 | PIN_L21 | PIN_R21 | PIN_M12 | CPU_A15 | |
41 | PIN_K22 | PIN_T20 | PIN_L14 | CPU_A9 | 42 | PIN_K21 | PIN_T19 | PIN_L13 | CPU_A14 | |
43 | PIN_J22 | PIN_P16 | PIN_K16 | CPU_A10 | 44 | PIN_J21 | PIN_P17 | PIN_K15 | CPU_A13 | |
45 | PIN_H22 | PIN_N20 | PIN_K12 | CPU_A11 | 46 | PIN_H21 | PIN_N21 | PIN_J12 | CPU_A12 | |
47 | N/C | N/C | N/C | N/C | 48 | N/C | N/C | N/C | N/C | |
49 | N/C | N/C | N/C | N/C | 50 | N/C | N/C | N/C | N/C |
MultiComp Build
- GitHub repo
- 24-bit address (upper 8-bits latched in FPGA)
- 8.33 MHz operation
- Tested/Working
- Running OSI 6502
- Microsoft 8K BASIC "in ROM"
- VGA output
- 1MB SRAM
- PS/2 Keyboard
Pins 10CL006YU256C8G
set_global_assignment -name FAMILY "Cyclone 10 LP" set_global_assignment -name DEVICE 10CL006YU256C8G set_global_assignment -name TOP_LEVEL_ENTITY M6502_VGA set_global_assignment -name ORIGINAL_QUARTUS_VERSION "13.0 SP1" set_global_assignment -name PROJECT_CREATION_TIME_DATE "18:01:55 MARCH 31, 2019" set_global_assignment -name LAST_QUARTUS_VERSION "21.1.0 Lite Edition" set_global_assignment -name PROJECT_OUTPUT_DIRECTORY output_files set_global_assignment -name MIN_CORE_JUNCTION_TEMP 0 set_global_assignment -name MAX_CORE_JUNCTION_TEMP 85 set_global_assignment -name ERROR_CHECK_FREQUENCY_DIVISOR 1 set_global_assignment -name PARTITION_NETLIST_TYPE SOURCE -section_id Top set_global_assignment -name PARTITION_FITTER_PRESERVATION_LEVEL PLACEMENT_AND_ROUTING -section_id Top set_global_assignment -name PARTITION_COLOR 16764057 -section_id Top set_global_assignment -name POWER_PRESET_COOLING_SOLUTION "23 MM HEAT SINK WITH 200 LFPM AIRFLOW" set_global_assignment -name POWER_BOARD_THERMAL_MODEL "NONE (CONSERVATIVE)" set_global_assignment -name STRATIX_DEVICE_IO_STANDARD "3.3-V LVTTL" set_global_assignment -name USE_CONFIGURATION_DEVICE OFF set_global_assignment -name CRC_ERROR_OPEN_DRAIN OFF set_global_assignment -name OUTPUT_IO_TIMING_NEAR_END_VMEAS "HALF VCCIO" -rise set_global_assignment -name OUTPUT_IO_TIMING_NEAR_END_VMEAS "HALF VCCIO" -fall set_global_assignment -name OUTPUT_IO_TIMING_FAR_END_VMEAS "HALF SIGNAL SWING" -rise set_global_assignment -name OUTPUT_IO_TIMING_FAR_END_VMEAS "HALF SIGNAL SWING" -fall set_global_assignment -name CYCLONEII_RESERVE_NCEO_AFTER_CONFIGURATION "USE AS REGULAR IO" # Clock, reset switch set_location_assignment PIN_E1 -to i_clk_50 set_location_assignment PIN_J6 -to i_n_reset set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to i_n_reset # PS/2 keyboard set_location_assignment PIN_C2 -to io_ps2Clk set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to io_ps2Clk set_location_assignment PIN_D1 -to io_ps2Data set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to io_ps2Data # Serial port with RTS/CTS set_location_assignment PIN_A15 -to i_n_cts set_location_assignment PIN_D14 -to i_rxd set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to i_rxd set_location_assignment PIN_B16 -to o_n_rts set_location_assignment PIN_C15 -to o_txd # Audio set_location_assignment PIN_G1 -to audioR set_location_assignment PIN_G2 -to audioL # Video set_location_assignment PIN_A10 -to o_vid_red[0] set_location_assignment PIN_B10 -to o_vid_red[1] set_location_assignment PIN_E11 -to o_vid_red[2] set_location_assignment PIN_A11 -to o_vid_grn[0] set_location_assignment PIN_D12 -to o_vid_grn[1] set_location_assignment PIN_D11 -to o_vid_grn[2] set_location_assignment PIN_A12 -to o_vid_blu[0] set_location_assignment PIN_B11 -to o_vid_blu[1] set_location_assignment PIN_B12 -to o_vid_hSync set_location_assignment PIN_A13 -to o_vid_vSync # SRAM set_location_assignment PIN_D4 -to o_n_sRamCS set_location_assignment PIN_A4 -to o_n_sRamOE set_location_assignment PIN_D8 -to o_n_sRamWE set_location_assignment PIN_C6 -to io_sramData[0] set_location_assignment PIN_B5 -to io_sramData[1] set_location_assignment PIN_B6 -to io_sramData[2] set_location_assignment PIN_B7 -to io_sramData[3] set_location_assignment PIN_A6 -to io_sramData[4] set_location_assignment PIN_A5 -to io_sramData[5] set_location_assignment PIN_D6 -to io_sramData[6] set_location_assignment PIN_E6 -to io_sramData[7] set_location_assignment PIN_E5 -to o_sramAddress[0] set_location_assignment PIN_B4 -to o_sramAddress[1] set_location_assignment PIN_B3 -to o_sramAddress[2] set_location_assignment PIN_D3 -to o_sramAddress[3] set_location_assignment PIN_B1 -to o_sramAddress[4] set_location_assignment PIN_F5 -to o_sramAddress[5] set_location_assignment PIN_C3 -to o_sramAddress[6] set_location_assignment PIN_A3 -to o_sramAddress[7] set_location_assignment PIN_A2 -to o_sramAddress[8] set_location_assignment PIN_A7 -to o_sramAddress[9] set_location_assignment PIN_C8 -to o_sramAddress[10] set_location_assignment PIN_C9 -to o_sramAddress[11] set_location_assignment PIN_A8 -to o_sramAddress[12] set_location_assignment PIN_A9 -to o_sramAddress[13] set_location_assignment PIN_E8 -to o_sramAddress[14] set_location_assignment PIN_E10 -to o_sramAddress[15] set_location_assignment PIN_E9 -to o_sramAddress[16] set_location_assignment PIN_B9 -to o_sramAddress[17] set_location_assignment PIN_B8 -to o_sramAddress[18] set_location_assignment PIN_D9 -to o_sramAddress[19] # SD Card set_location_assignment PIN_B13 -to sdCS set_location_assignment PIN_C14 -to sdMISO set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to sdMISO set_location_assignment PIN_A14 -to sdMOSI set_location_assignment PIN_B14 -to sdClock set_location_assignment PIN_C16 -to i_n_CardDet set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to i_n_CardDet set_location_assignment PIN_L9 -to driveLED # SDRAM set_location_assignment PIN_P2 -to sdRamClk set_location_assignment PIN_R1 -to sdRamClkEn set_location_assignment PIN_M7 -to n_sdRamCas set_location_assignment PIN_P8 -to n_sdRamCe set_location_assignment PIN_M8 -to n_sdRamRas set_location_assignment PIN_P6 -to n_sdRamWe set_location_assignment PIN_R7 -to sdRamAddr[0] set_location_assignment PIN_T7 -to sdRamAddr[1] set_location_assignment PIN_R8 -to sdRamAddr[2] set_location_assignment PIN_T8 -to sdRamAddr[3] set_location_assignment PIN_R6 -to sdRamAddr[4] set_location_assignment PIN_T5 -to sdRamAddr[5] set_location_assignment PIN_R5 -to sdRamAddr[6] set_location_assignment PIN_T4 -to sdRamAddr[7] set_location_assignment PIN_R4 -to sdRamAddr[8] set_location_assignment PIN_T3 -to sdRamAddr[9] set_location_assignment PIN_T6 -to sdRamAddr[10] set_location_assignment PIN_R3 -to sdRamAddr[11] set_location_assignment PIN_T2 -to sdRamAddr[12] set_location_assignment PIN_N8 -to sdRamAddr[13] set_location_assignment PIN_L8 -to sdRamAddr[14] set_location_assignment PIN_K5 -to sdRamData[0] set_location_assignment PIN_L3 -to sdRamData[1] set_location_assignment PIN_L4 -to sdRamData[2] set_location_assignment PIN_K6 -to sdRamData[3] set_location_assignment PIN_N3 -to sdRamData[4] set_location_assignment PIN_M6 -to sdRamData[5] set_location_assignment PIN_P3 -to sdRamData[6] set_location_assignment PIN_N5 -to sdRamData[7] set_location_assignment PIN_N2 -to sdRamData[8] set_location_assignment PIN_N1 -to sdRamData[9] set_location_assignment PIN_L1 -to sdRamData[10] set_location_assignment PIN_L2 -to sdRamData[11] set_location_assignment PIN_K1 -to sdRamData[12] set_location_assignment PIN_K2 -to sdRamData[13] set_location_assignment PIN_J1 -to sdRamData[14] set_location_assignment PIN_J2 -to sdRamData[15] # set_location_assignment PIN_J14 -to IO_PIN[47] set_location_assignment PIN_J13 -to IO_PIN[48] set_location_assignment PIN_K11 -to IO_PIN[49] set_location_assignment PIN_J11 -to IO_PIN[50] set_location_assignment PIN_G11 -to IO_PIN[51] set_location_assignment PIN_F11 -to IO_PIN[52] set_location_assignment PIN_F13 -to IO_PIN[53] set_location_assignment PIN_F14 -to IO_PIN[54] set_location_assignment PIN_F10 -to IO_PIN[55] set_location_assignment PIN_F9 -to IO_PIN[56] set_location_assignment PIN_E16 -to IO_PIN[57] set_location_assignment PIN_E15 -to IO_PIN[58] set_location_assignment PIN_D16 -to IO_PIN[59] set_location_assignment PIN_D15 -to IO_PIN[60] set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to IO_PIN[60] set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to IO_PIN[59] set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to IO_PIN[56] set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to IO_PIN[55] set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to IO_PIN[54] set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to IO_PIN[53] set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to IO_PIN[52] set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to IO_PIN[51] set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to IO_PIN[50] set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to IO_PIN[49] set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to IO_PIN[48] set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to IO_PIN[47] # set_global_assignment -name ENABLE_OCT_DONE OFF set_global_assignment -name ENABLE_CONFIGURATION_PINS OFF set_global_assignment -name ENABLE_BOOT_SEL_PIN OFF set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS ON set_global_assignment -name SMART_RECOMPILE ON set_global_assignment -name NUM_PARALLEL_PROCESSORS ALL set_location_assignment PIN_M12 -to i_CPU_ADDR[15] set_location_assignment PIN_L13 -to i_CPU_ADDR[14] set_location_assignment PIN_K15 -to i_CPU_ADDR[13] set_location_assignment PIN_J12 -to i_CPU_ADDR[12] set_location_assignment PIN_K12 -to i_CPU_ADDR[11] set_location_assignment PIN_K16 -to i_CPU_ADDR[10] set_location_assignment PIN_L14 -to i_CPU_ADDR[9] set_location_assignment PIN_P15 -to i_CPU_ADDR[8] set_location_assignment PIN_L16 -to i_CPU_ADDR[7] set_location_assignment PIN_N16 -to i_CPU_ADDR[6] set_location_assignment PIN_P16 -to i_CPU_ADDR[5] set_location_assignment PIN_N14 -to i_CPU_ADDR[4] set_location_assignment PIN_R14 -to i_CPU_ADDR[3] set_location_assignment PIN_N12 -to i_CPU_ADDR[2] set_location_assignment PIN_T15 -to i_CPU_ADDR[1] set_location_assignment PIN_R13 -to i_CPU_ADDR[0] set_location_assignment PIN_P9 -to I_CPU_E set_location_assignment PIN_N9 -to i_CPU_MLB set_location_assignment PIN_T11 -to i_CPU_MX set_location_assignment PIN_N11 -to i_CPU_RWB set_location_assignment PIN_T10 -to i_CPU_VDA set_location_assignment PIN_P11 -to i_CPU_VPA set_location_assignment PIN_R9 -to i_CPU_VPB set_location_assignment PIN_R11 -to o_CPU_ABORTB set_location_assignment PIN_M9 -to o_CPU_BE set_location_assignment PIN_R12 -to o_CPU_IRQB_n set_location_assignment PIN_M10 -to o_CPU_NMIB_n set_location_assignment PIN_T12 -to o_CPU_PHI2 set_location_assignment PIN_T9 -to o_CPU_RESB_n set_location_assignment PIN_R10 -to io_CPU_RDY set_location_assignment PIN_L15 -to IO_CPU_DATA[7] set_location_assignment PIN_N15 -to IO_CPU_DATA[6] set_location_assignment PIN_R16 -to IO_CPU_DATA[5] set_location_assignment PIN_P14 -to IO_CPU_DATA[4] set_location_assignment PIN_N13 -to IO_CPU_DATA[3] set_location_assignment PIN_M11 -to IO_CPU_DATA[2] set_location_assignment PIN_T14 -to IO_CPU_DATA[1] set_location_assignment PIN_T13 -to IO_CPU_DATA[0] set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to i_CPU_ADDR[15] set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to i_CPU_ADDR[14] set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to i_CPU_ADDR[13] set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to i_CPU_ADDR[12] set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to i_CPU_ADDR[11] set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to i_CPU_ADDR[10] set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to i_CPU_ADDR[9] set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to i_CPU_ADDR[8] set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to i_CPU_ADDR[7] set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to i_CPU_ADDR[6] set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to i_CPU_ADDR[5] set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to i_CPU_ADDR[4] set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to i_CPU_ADDR[3] set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to i_CPU_ADDR[2] set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to i_CPU_ADDR[1] set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to i_CPU_ADDR[0] set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to i_CPU_ADDR set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to I_CPU_E set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to i_CPU_MLB set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to i_CPU_MX set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to i_CPU_RWB set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to i_CPU_VDA set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to i_CPU_VPA set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to i_CPU_VPB set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to i_n_cts set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to IO_CPU_DATA[7] set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to IO_CPU_DATA[6] set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to IO_CPU_DATA[5] set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to IO_CPU_DATA[4] set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to IO_CPU_DATA[3] set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to IO_CPU_DATA[2] set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to IO_CPU_DATA[1] set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to IO_CPU_DATA[0] set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to IO_CPU_DATA set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to io_CPU_RDY set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to io_sramData[7] set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to io_sramData[6] set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to io_sramData[5] set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to io_sramData[4] set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to io_sramData[3] set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to io_sramData[2] set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to io_sramData[1] set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to io_sramData[0] set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to io_sramData
Resources
- Datasheet on Archive.org site
- The 6502/65C02/65C816 Instruction Set Decoded
- Programming the 65816
- Text version of the datasheet
- A 65816 Primer
- A 6502 Programmer's Introduction to the 65816
- INVESTIGATING 65C816 INTERRUPTS
Installed
- Installed on FPGA-ITX-01 card behind bus monitor