Difference between revisions of "ITX-65C816"

From Land Boards Wiki
Jump to navigation Jump to search
 
(5 intermediate revisions by the same user not shown)
Line 1: Line 1:
[[file:ITX-65C816_FRONT_3D.png]]
+
[[file:ITX-65816_P18616_720PX.jpg]]
  
 
== Features ==
 
== Features ==
Line 405: Line 405:
  
 
* [https://github.com/douggilliland/MultiComp/tree/master/MultiComp_On_FPGA-ITX-01/M6502_VGA_Ext_65C816_Cyclone10 GitHub repo]
 
* [https://github.com/douggilliland/MultiComp/tree/master/MultiComp_On_FPGA-ITX-01/M6502_VGA_Ext_65C816_Cyclone10 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 ===
 +
 +
<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 415: 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

ITX-65816 P18616 720PX.jpg

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

BlockDiagram 65C816.PNG

CPU Features

Features 65C816.PNG

CPU Pinout

Pinout 65C816.PNG

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

W65C816 NOP Addresses-at 0xFFFF.PNG

Upper address bits latch

AddressLatching 65C816.PNG

Timing

TimingDiagram 65C816.PNG

TimingTable 65C816.PNG

Connectors

RETRO-65C816 CAD.PNG

Schematics

ITX-65C816 Schematic.PNG

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

Installed

ITX-65816 P18611 720PX.jpg

Mechanicals

ITX-65C816-Mechs.PNG

Assembly Sheet