Difference between revisions of "RETRO-65C816 Rev 1"

From Land Boards Wiki
Jump to navigation Jump to search
Line 1,146: Line 1,146:
  
 
== Pin List ==
 
== Pin List ==
 +
 +
=== EP4CE15F23C8 Pin List ===
 +
 +
<pre>
 +
set_global_assignment -name FAMILY "Cyclone IV E"
 +
set_global_assignment -name DEVICE EP4CE15F23C8
 +
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_T2 -to i_clk_50
 +
set_location_assignment PIN_W13 -to i_n_reset
 +
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to i_n_reset
 +
# PS/2 keyboard
 +
set_location_assignment PIN_R1 -to io_ps2Clk
 +
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to io_ps2Clk
 +
set_location_assignment PIN_R2 -to io_ps2Data
 +
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to io_ps2Data
 +
# Serial port with RTS/CTS
 +
set_location_assignment PIN_A13 -to i_n_cts
 +
set_location_assignment PIN_B13 -to i_rxd
 +
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to i_rxd
 +
set_location_assignment PIN_A10 -to o_n_rts
 +
set_location_assignment PIN_B10 -to o_txd
 +
# Video
 +
set_location_assignment PIN_A17 -to o_vid_blu[1]
 +
set_location_assignment PIN_B17 -to o_vid_blu[0]
 +
set_location_assignment PIN_A16 -to o_vid_grn[1]
 +
set_location_assignment PIN_B16 -to o_vid_grn[0]
 +
set_location_assignment PIN_B18 -to o_vid_hSync
 +
set_location_assignment PIN_A18 -to o_vid_vSync
 +
set_location_assignment PIN_A15 -to o_vid_red[1]
 +
set_location_assignment PIN_B15 -to o_vid_red[0]
 +
# SRAM
 +
set_location_assignment PIN_F1 -to o_n_sRamCS
 +
set_location_assignment O_N_SRAMWE -to n_sRamWE
 +
set_location_assignment PIN_J2 -to o_n_sRamOE
 +
set_location_assignment PIN_E1 -to io_sramData[0]
 +
set_location_assignment PIN_C1 -to io_sramData[1]
 +
set_location_assignment PIN_B1 -to io_sramData[2]
 +
set_location_assignment PIN_B3 -to io_sramData[3]
 +
set_location_assignment PIN_B2 -to io_sramData[4]
 +
set_location_assignment PIN_C2 -to io_sramData[5]
 +
set_location_assignment PIN_D2 -to io_sramData[6]
 +
set_location_assignment PIN_F2 -to io_sramData[7]
 +
set_location_assignment PIN_H1 -to o_sramAddress[0]
 +
set_location_assignment PIN_J1 -to o_sramAddress[1]
 +
set_location_assignment PIN_M1 -to o_sramAddress[2]
 +
set_location_assignment PIN_N1 -to o_sramAddress[3]
 +
set_location_assignment PIN_P1 -to o_sramAddress[4]
 +
set_location_assignment PIN_P2 -to o_sramAddress[5]
 +
set_location_assignment PIN_N2 -to o_sramAddress[6]
 +
set_location_assignment PIN_M2 -to o_sramAddress[7]
 +
set_location_assignment PIN_H2 -to o_sramAddress[8]
 +
set_location_assignment PIN_A3 -to o_sramAddress[9]
 +
set_location_assignment PIN_A4 -to o_sramAddress[10]
 +
set_location_assignment PIN_C3 -to o_sramAddress[11]
 +
set_location_assignment PIN_A5 -to o_sramAddress[12]
 +
set_location_assignment PIN_A6 -to o_sramAddress[13]
 +
set_location_assignment PIN_A7 -to o_sramAddress[14]
 +
set_location_assignment PIN_A8 -to o_sramAddress[15]
 +
set_location_assignment PIN_B7 -to o_sramAddress[16]
 +
set_location_assignment PIN_B6 -to o_sramAddress[17]
 +
set_location_assignment PIN_B5 -to o_sramAddress[18]
 +
set_location_assignment PIN_C4 -to o_sramAddress[19]
 +
# SD Card
 +
set_location_assignment PIN_B20 -to sdClock
 +
set_location_assignment PIN_B19 -to sdCS
 +
set_location_assignment PIN_A19 -to sdMOSI
 +
set_location_assignment PIN_A20 -to sdMISO
 +
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to sdMISO
 +
set_location_assignment PIN_E4 -to driveLED
 +
# SDRAM
 +
set_location_assignment PIN_Y6 -to sdRamClk
 +
set_location_assignment PIN_W6 -to sdRamClkEn
 +
set_location_assignment PIN_AA4 -to n_sdRamCas
 +
set_location_assignment PIN_AA3 -to n_sdRamCe
 +
set_location_assignment PIN_AB3 -to n_sdRamRas
 +
set_location_assignment PIN_AB4 -to n_sdRamWe
 +
set_location_assignment PIN_V2 -to sdRamAddr[0]
 +
set_location_assignment PIN_V1 -to sdRamAddr[1]
 +
set_location_assignment PIN_U2 -to sdRamAddr[2]
 +
set_location_assignment PIN_U1 -to sdRamAddr[3]
 +
set_location_assignment PIN_V3 -to sdRamAddr[4]
 +
set_location_assignment PIN_V4 -to sdRamAddr[5]
 +
set_location_assignment PIN_Y2 -to sdRamAddr[6]
 +
set_location_assignment PIN_AA1 -to sdRamAddr[7]
 +
set_location_assignment PIN_Y3 -to sdRamAddr[8]
 +
set_location_assignment PIN_V5 -to sdRamAddr[9]
 +
set_location_assignment PIN_W1 -to sdRamAddr[10]
 +
set_location_assignment PIN_Y4 -to sdRamAddr[11]
 +
set_location_assignment PIN_V6 -to sdRamAddr[12]
 +
set_location_assignment PIN_Y1 -to sdRamAddr[13]
 +
set_location_assignment PIN_W2 -to sdRamAddr[14]
 +
set_location_assignment PIN_AA10 -to sdRamData[0]
 +
set_location_assignment PIN_AB9 -to sdRamData[1]
 +
set_location_assignment PIN_AA9 -to sdRamData[2]
 +
set_location_assignment PIN_AB8 -to sdRamData[3]
 +
set_location_assignment PIN_AA8 -to sdRamData[4]
 +
set_location_assignment PIN_AB7 -to sdRamData[5]
 +
set_location_assignment PIN_AA7 -to sdRamData[6]
 +
set_location_assignment PIN_AB5 -to sdRamData[7]
 +
set_location_assignment PIN_Y7 -to sdRamData[8]
 +
set_location_assignment PIN_W8 -to sdRamData[9]
 +
set_location_assignment PIN_Y8 -to sdRamData[10]
 +
set_location_assignment PIN_V9 -to sdRamData[11]
 +
set_location_assignment PIN_V10 -to sdRamData[12]
 +
set_location_assignment PIN_Y10 -to sdRamData[13]
 +
set_location_assignment PIN_W10 -to sdRamData[14]
 +
set_location_assignment PIN_V11 -to sdRamData[15]
 +
#
 +
set_location_assignment PIN_V21 -to IO_PIN[21]
 +
set_location_assignment PIN_V22 -to IO_PIN[22]
 +
set_location_assignment PIN_U21 -to IO_PIN[23]
 +
set_location_assignment PIN_U22 -to IO_PIN[24]
 +
set_location_assignment PIN_R21 -to IO_PIN[25]
 +
set_location_assignment PIN_R22 -to IO_PIN[26]
 +
set_location_assignment PIN_P21 -to IO_PIN[27]
 +
set_location_assignment PIN_P22 -to IO_PIN[28]
 +
set_location_assignment PIN_N21 -to IO_PIN[29]
 +
set_location_assignment PIN_N22 -to IO_PIN[30]
 +
set_location_assignment PIN_M21 -to IO_PIN[31]
 +
set_location_assignment PIN_M22 -to IO_PIN[32]
 +
set_location_assignment PIN_L21 -to IO_PIN[33]
 +
set_location_assignment PIN_L22 -to IO_PIN[34]
 +
set_location_assignment PIN_K21 -to IO_PIN[35]
 +
set_location_assignment PIN_K22 -to IO_PIN[36]
 +
set_location_assignment PIN_J21 -to IO_PIN[37]
 +
set_location_assignment PIN_J22 -to IO_PIN[38]
 +
set_location_assignment PIN_H21 -to IO_PIN[39]
 +
set_location_assignment PIN_H22 -to IO_PIN[40]
 +
set_location_assignment PIN_F21 -to IO_PIN[41]
 +
set_location_assignment PIN_F22 -to IO_PIN[42]
 +
set_location_assignment PIN_E21 -to IO_PIN[43]
 +
set_location_assignment PIN_E22 -to IO_PIN[44]
 +
set_location_assignment PIN_D21 -to IO_PIN[45]
 +
set_location_assignment PIN_D22 -to IO_PIN[46]
 +
set_location_assignment PIN_C21 -to IO_PIN[47]
 +
set_location_assignment PIN_C22 -to IO_PIN[48]
 +
# 65C816
 +
set_location_assignment PIN_AB17 -to CPU_ABORTB
 +
set_location_assignment PIN_AA15 -to CPU_BusEnable
 +
set_location_assignment PIN_AB14 -to CPU_CLK
 +
set_location_assignment PIN_AA13 -to CPU_E
 +
set_location_assignment PIN_AB16 -to CPU_IRQB
 +
set_location_assignment PIN_AB19 -to CPU_MLB
 +
set_location_assignment PIN_AA14 -to CPU_MX
 +
set_location_assignment PIN_AB15 -to CPU_NMIB
 +
set_location_assignment PIN_AB18 -to CPU_RDY
 +
set_location_assignment PIN_AA16 -to CPU_RWB
 +
set_location_assignment PIN_AA17 -to CPU_VDA
 +
set_location_assignment PIN_AA18 -to CPU_VPA
 +
set_location_assignment PIN_AA19 -to CPU_VPB
 +
set_location_assignment PIN_AB13 -to n_CPU_Res
 +
</pre>
  
 
== Revision History ==
 
== Revision History ==

Revision as of 13:16, 29 August 2022

RETRO-65C816-P18516-720PX.jpg

Features

65C816 CPU

65C816 Datasheet

Features 65C816.PNG

Block Diagram

BlockDiagram 65C816.PNG

Timing

TimingDiagram 65C816.PNG

TimingTable 65C816.PNG

Connectors

RETRO-65C816.PNG

H1 - 5V

RETRO-65C816 H1 J4 USB-B PWR.PNG

  • Install jumper to power card from USB

H2 - VREG I/O Conn

RETRO-65C816 H2 3P3V PWR PCB.PNG

RETRO-65C816 H2 3P3V PWR.PNG

  • Power to J1

J1 - I/O Connector

RETRO-65C816 J1 IO.PNG

  • 50-pin I/O Connector

J2 - Keyboard

RETRO-65C816 J2 P2 PS2 PCB.PNG

RETRO-65C816 J2 P2 PS2.PNG

  • 1x4 header

J3 - 6 FPGA pins

RETRO-65C816 J3 IO6 PCB.PNG

RETRO-65C816 J3 IO6.PNG

J4 - USB B Serial/Power

RETRO-65C816 H1 J4 USB-B PWR.PNG

  • Serial to/from FTDI
  • Can power the card

J5 - 5V/GND

RETRO-65C816 J5 5V PWR PCB.PNG

RETRO-65C816 J5 5V PWR.PNG

  • 5V/ground for external 5V logic

J7 Pin Mapping Card to FPGA pins - Right connector

U7 PIN EP4CE15 EP4CE55 5CEFA2 CYC 10 FUNCTION U7 PIN EP4CE15 EP4CE55 5CEFA2 CYC 10 FUNCTION
1 GND GND GND GND GND 2 GND GND GND GND GND
3 3.3V 3.3V 3.3V 3.3V 3.3V 4 3.3V 3.3V 3.3V 3.3V 3.3V
5 GND GND GND GND GND 6 GND GND GND GND GND
7 PIN_R1 PIN_R1 PIN_AA2 PIN_G1 PS2CLK 8 PIN_R2 PIN_R2 PIN_AA1 PIN_G2 PS2DAT
9 PIN_P1 PIN_P1 PIN_Y3 PIN_D1 SRAMA4 10 PIN_P2 PIN_P2 PIN_W2 PIN_C2 SRAMA5
11 PIN_N1 PIN_N1 PIN_U1 PIN_B1 SRAMA3 12 PIN_N2 PIN_N2 PIN_U2 PIN_F5 SRAMA6
13 PIN_M1 PIN_M1 PIN_N1 PIN_D3 SRAMA2 14 PIN_M2 PIN_M2 PIN_N2 PIN_C3 SRAMA7
15 PIN_J1 PIN_J1 PIN_L1 PIN_B3 SRAMA1 16 PIN_J2 PIN_J2 PIN_L2 PIN_A3 SRAM0E_N
17 PIN_H1 PIN_H1 PIN_G1 PIN_B4 SRAMA0 18 PIN_H2 PIN_H2 PIN_G2 PIN_A4 SRAMA8
19 PIN_F1 PIN_F1 PIN_E2 PIN_E5 SRAMCS_N 20 PIN_F2 PIN_F2 PIN_D3 PIN_A2 SRAMD7
21 PIN_E1 PIN_E1 PIN_C1 PIN_D4 SRAMD0 22 PIN_D2 PIN_D2 PIN_C2 PIN_E6 SRAMD6
23 PIN_C1 PIN_C1 PIN_G6 PIN_C6 SRAMD1 24 PIN_C2 PIN_C2 PIN_H6 PIN_D6 SRAMD5
25 PIN_B1 PIN_B1 PIN_G8 PIN_B5 SRAMD2 26 PIN_B2 PIN_B2 PIN_H8 PIN_A5 SRAMD4
27 PIN_B3 PIN_B3 PIN_F7 PIN_B6 SRAMD3 28 PIN_A3 PIN_A3 PIN_E7 PIN_A6 SRAMA9
29 PIN_B4 PIN_B4 PIN_D6 PIN_B7 SRAMWE_N 30 PIN_A4 PIN_A4 PIN_C6 PIN_A7 SRAMA10
31 PIN_C4 PIN_C4 PIN_E9 PIN_D8 SRAMA19 32 PIN_C3 PIN_C3 PIN_D9 PIN_C8 SRAMA11
33 PIN_B5 PIN_B5 PIN_B5 PIN_D9 SRAMA18 34 PIN_A5 PIN_A5 PIN_A5 PIN_C9 SRAMA12
35 PIN_B6 PIN_B6 PIN_B6 PIN_B8 SRAMA17 36 PIN_A6 PIN_A6 PIN_B7 PIN_A8 SRAMA13
37 PIN_B7 PIN_B7 PIN_A7 PIN_B9 SRAMA16 38 PIN_A7 PIN_A7 PIN_A8 PIN_A9 SRAMA14
39 PIN_B8 PIN_B8 PIN_A9 PIN_E9 N/C 40 PIN_A8 PIN_A8 PIN_A10 PIN_E8 SRAMA15
41 PIN_B9 PIN_B9 PIN_B10 PIN_E11 N/C 42 PIN_A9 PIN_A9 PIN_C9 PIN_E10 N/C
43 PIN_B10 PIN_B10 PIN_G10 PIN_A10 USBRX/FPGATX 44 PIN_A10 PIN_A10 PIN_F10 PIN_B10 USBCTS/FPGARTS
45 PIN_B13 PIN_B13 PIN_C11 PIN_D12 USBTX/FPGARX 46 PIN_A13 PIN_A13 PIN_B11 PIN_D11 UBSRTS/FPGACTS
47 PIN_B14 PIN_B14 PIN_B12 PIN_B11 CD_DET 48 PIN_A14 PIN_A14 PIN_A12 PIN_A11 N/C
49 PIN_B15 PIN_B15 PIN_E12 PIN_B12 REDLO 50 PIN_A15 PIN_A15 PIN_D12 PIN_A12 REDHI
51 PIN_B16 PIN_B16 PIN_D13 PIN_B13 GRNLO 52 PIN_A16 PIN_A16 PIN_C13 PIN_A13 GRNHI
53 PIN_B17 PIN_B17 PIN_B13 PIN_B14 BLULO 54 PIN_A17 PIN_A17 PIN_A13 PIN_A14 BLUHI
55 PIN_B18 PIN_B18 PIN_A15 PIN_D14 HSYNC 56 PIN_A18 PIN_A18 PIN_A14 PIN_C14 VSYNC
57 PIN_B19 PIN_B19 PIN_B15 PIN_B16 SDCS_N 58 PIN_A19 PIN_A19 PIN_C15 PIN_A15 SD_MOSI
59 PIN_B20 PIN_B20 PIN_C16 PIN_C16 SD_SCK 60 PIN_A20 PIN_A20 PIN_B16 PIN_C15 SD_MISO
61 GND GND GND GND GND 62 GND GND GND GND GND
63 VIN VIN VIN VIN VIN 64 VIN VIN VIN VIN VIN

J8 Pin Mapping Card to FPGA pins - Left connector

  • Cyclone 10 FPGA notes
    • Cannot place output or bidirectional pin J8IO[35] in input pin location M16
    • Cannot place output or bidirectional pin J8IO[36] in input pin location M15
    • Cannot place output or bidirectional pin J8IO[57] in input pin location E16
    • Cannot place output or bidirectional pin J8IO[58] in input pin location E15
U8 PIN EP4CE15 EP4CE55 5CEFA2 10C1006 J1 Function U8 PIN EP4CE15 EP4CE55 5CEFA2 10C1006 J1 Function
1 GND GND GND GND N/C 2 GND GND GND GND N/C
3 3.3V 3.3V 3.3V 3.3V J1-1 4 3.3V 3.3V 3.3V 3.3V J1-2
5 GND GND GND GND N/C 6 GND GND GND GND N/C
7 PIN_AA13 PIN_AA13 PIN_AA14 PIN_R9 N/C CPUE 8 PIN_AB13 PIN_AB13 PIN_AA13 PIN_T9 N/C CPURES*
9 PIN_AA14 PIN_AA14 PIN_AA15 PIN_R10 J1-4 CPUMX 10 PIN_AB14 PIN_AB14 PIN_AB15 PIN_T10 J1-3 CPUCLK
11 PIN_AA15 PIN_AA15 PIN_Y15 PIN_R11 J1-6 CPUBE 12 PIN_AB15 PIN_AB15 PIN_Y13 PIN_T11 J1-5 CPUNMIB
13 PIN_AA16 PIN_AA16 PIN_AB18 PIN_R12 J1-8 CPURWB 14 PIN_AB16 PIN_AB16 PIN_AB17 PIN_T12 J1-7 CPUIRQB
15 PIN_AA17 PIN_AA17 PIN_Y7 PIN_N9 J1-10 CPUVDA 16 PIN_AB17 PIN_AB17 PIN_Y16 PIN_M9 J1-9 CPUABORTB
17 PIN_AA18 PIN_AA18 PIN_AA18 PIN_M10 J1-12 CPUVPA 18 PIN_AB18 PIN_AB18 PIN_AA17 PIN_P9 J1-11 CPURDY
19 PIN_AA19 PIN_AA19 PIN_AA20 PIN_P11 J1-14 CPUVPB 20 PIN_AB19 PIN_AB19 PIN_AA19 PIN_N11 J1-13 CPUMLB
21 PIN_AA20 PIN_AA20 PIN_Y20 PIN_R13 I1-16 22 PIN_AB20 PIN_AB20 PIN_Y19 PIN_T13 J1-15
23 PIN_Y22 PIN_Y22 PIN_AB21 PIN_T15 J1-18 24 PIN_Y21 PIN_Y21 PIN_AB20 PIN_T14 J1-17
25 PIN_W22 PIN_W22 PIN_AA22 PIN_N12 J1-20 26 PIN_W21 PIN_W21 PIN_AB22 PIN_M11 J1-19
27 PIN_V22 PIN_V22 PIN_W22 PIN_R14 J1-22 28 PIN_V21 PIN_V21 PIN_Y22 PIN_N13 J1-21
29 PIN_U22 PIN_U22 PIN_Y21 PIN_N14 J1-24 30 PIN_U21 PIN_U21 PIN_W21 PIN_P14 J1-23
31 PIN_R22 PIN_R22 PIN_U22 PIN_P16 J1-26 32 PIN_R21 PIN_R21 PIN_V21 PIN_R16 J1-25
33 PIN_P22 PIN_P22 PIN_V20 PIN_N16 J1-28 34 PIN_P21 PIN_P21 PIN_W19 PIN_N15 J1-27
35 PIN_N22 PIN_N22 PIN_U21 PIN_M16 (Note) J3-3 36 PIN_N21 PIN_N21 PIN_U20 PIN_M15 (Note) J3-1
37 PIN_M22 PIN_M22 PIN_R22 PIN_L16 J1-30 38 PIN_M21 PIN_M21 PIN_T22 PIN_L15 J1-29
39 PIN_L22 PIN_L22 PIN_P22 PIN_P15 J1-32 40 PIN_L21 PIN_L21 PIN_R21 PIN_M12 J1-31
41 PIN_K22 PIN_K22 PIN_T20 PIN_L14 J1-34 42 PIN_K21 PIN_K21 PIN_T19 PIN_L13 J1-33
43 PIN_J22 PIN_J22 PIN_P16 PIN_K16 J1-36 44 PIN_J21 PIN_J21 PIN_P17 PIN_K15 J1-35
45 PIN_H22 PIN_H22 PIN_N20 PIN_K12 J1-38 46 PIN_H21 PIN_H21 PIN_N21 PIN_J12 J1-37
47 PIN_F22 PIN_F22 PIN_M21 PIN_J14 J1-40 48 PIN_F21 PIN_F21 PIN_M20 PIN_J13 J1-39
49 PIN_E22 PIN_E22 PIN_M18 PIN_K11 J1-42 50 PIN_E21 PIN_E21 PIN_N19 PIN_J11 J1-41
51 PIN_D22 PIN_D22 PIN_L18 PIN_G11 J1-44 52 PIN_D21 PIN_D21 PIN_L19 PIN_F11 J1-43
53 PIN_C22 PIN_C22 PIN_M22 PIN_F13 J1-46 54 PIN_C21 PIN_C21 PIN_L22 PIN_F14 J1-45
55 PIN_B22 PIN_B22 PIN_L17 PIN_F10 J1-48 56 PIN_B21 PIN_B21 PIN_K17 PIN_F9 J1-47
57 PIN_N20 PIN_N20 PIN_K22 PIN_E16 (Note) J3-5 58 PIN_N19 PIN_N19 PIN_K21 PIN_E15 (Note) J3-7
59 PIN_M20 PIN_M20 PIN_M16 PIN_D16 J3-8 60 PIN_M19 PIN_M19 PIN_N16 PIN_D15 J3-11
61 GND GND GND GND J1-50 62 GND GND GND GND J1-49
63 +5V +5V +5V +5V J1-50 64 +5V +5V +5V +5V J1-50

P1 - VGA

RETRO-65C816 P1 VGA.PNG

  • DB-15HD connector
  • 2:2:2 R:G:B

P2 - PS/2 Keyboard

RETRO-65C816 J2 P2 PS2.PNG

  • Purple DIN-6 for PS/2 keyboard

P4 - SD Card

RETRO-65C816 P4 SD-CARD.PNG

Mechanicals

RETRO-65C816 MECHS CAD.PNG

MultiComp On RETRO-65C816 VHDL Code

References/Notes

...potential for data bus contention during Ø2 low. My solution was two-fold: use VDA and VPA to qualify chip selects, and qualify read-accesses with Ø2. The former assures that an addressed device will not respond to selection until the address bus is truly valid—invalid bus states may occur during the execution of some instructions. The latter assures that a selected device will not drive the data bus when the '816 is presenting A16-A23 on it. This solution doesn't totally eliminate the risk of contention but greatly narrows the window of opportunity for it. The need for more stringent qualifying of D0-D7 would depend on the peripheral silicon on the bus. In the case of POC and the Ø2 rate I'm using (12.5 MHz maximum), everything gets off the data bus before the '816 starts to drive it with the bank address. That would not be the case if I were to increase Ø2 to 20 MHz, however.

Floating the buses with BE creates the odd situation where no valid address exists on A0-A15, which I daresay could cause a device to be selected solely because of a residual charge in bus capacitance. Also, BE floats the RWB signal*, which may trip up other logic that is dependent on RWB always being driven to one state or the other. The most fool-proof solution is the use of a data bus transceiver as you suggested, which is a straightforward method (74AC245 or 74AHC245 recommended if Ø2 will exceed 8 MHz).

Pin List

EP4CE15F23C8 Pin List

set_global_assignment -name FAMILY "Cyclone IV E"
set_global_assignment -name DEVICE EP4CE15F23C8
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_T2 -to i_clk_50
set_location_assignment PIN_W13 -to i_n_reset
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to i_n_reset
# PS/2 keyboard
set_location_assignment PIN_R1 -to io_ps2Clk
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to io_ps2Clk
set_location_assignment PIN_R2 -to io_ps2Data
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to io_ps2Data
# Serial port with RTS/CTS
set_location_assignment PIN_A13 -to i_n_cts
set_location_assignment PIN_B13 -to i_rxd
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to i_rxd
set_location_assignment PIN_A10 -to o_n_rts
set_location_assignment PIN_B10 -to o_txd
# Video
set_location_assignment PIN_A17 -to o_vid_blu[1]
set_location_assignment PIN_B17 -to o_vid_blu[0]
set_location_assignment PIN_A16 -to o_vid_grn[1]
set_location_assignment PIN_B16 -to o_vid_grn[0]
set_location_assignment PIN_B18 -to o_vid_hSync
set_location_assignment PIN_A18 -to o_vid_vSync
set_location_assignment PIN_A15 -to o_vid_red[1]
set_location_assignment PIN_B15 -to o_vid_red[0]
# SRAM
set_location_assignment PIN_F1 -to o_n_sRamCS
set_location_assignment O_N_SRAMWE -to n_sRamWE
set_location_assignment PIN_J2 -to o_n_sRamOE
set_location_assignment PIN_E1 -to io_sramData[0]
set_location_assignment PIN_C1 -to io_sramData[1]
set_location_assignment PIN_B1 -to io_sramData[2]
set_location_assignment PIN_B3 -to io_sramData[3]
set_location_assignment PIN_B2 -to io_sramData[4]
set_location_assignment PIN_C2 -to io_sramData[5]
set_location_assignment PIN_D2 -to io_sramData[6]
set_location_assignment PIN_F2 -to io_sramData[7]
set_location_assignment PIN_H1 -to o_sramAddress[0]
set_location_assignment PIN_J1 -to o_sramAddress[1]
set_location_assignment PIN_M1 -to o_sramAddress[2]
set_location_assignment PIN_N1 -to o_sramAddress[3]
set_location_assignment PIN_P1 -to o_sramAddress[4]
set_location_assignment PIN_P2 -to o_sramAddress[5]
set_location_assignment PIN_N2 -to o_sramAddress[6]
set_location_assignment PIN_M2 -to o_sramAddress[7]
set_location_assignment PIN_H2 -to o_sramAddress[8]
set_location_assignment PIN_A3 -to o_sramAddress[9]
set_location_assignment PIN_A4 -to o_sramAddress[10]
set_location_assignment PIN_C3 -to o_sramAddress[11]
set_location_assignment PIN_A5 -to o_sramAddress[12]
set_location_assignment PIN_A6 -to o_sramAddress[13]
set_location_assignment PIN_A7 -to o_sramAddress[14]
set_location_assignment PIN_A8 -to o_sramAddress[15]
set_location_assignment PIN_B7 -to o_sramAddress[16]
set_location_assignment PIN_B6 -to o_sramAddress[17]
set_location_assignment PIN_B5 -to o_sramAddress[18]
set_location_assignment PIN_C4 -to o_sramAddress[19]
# SD Card
set_location_assignment PIN_B20 -to sdClock
set_location_assignment PIN_B19 -to sdCS
set_location_assignment PIN_A19 -to sdMOSI
set_location_assignment PIN_A20 -to sdMISO
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to sdMISO
set_location_assignment PIN_E4 -to driveLED
# SDRAM
set_location_assignment PIN_Y6 -to sdRamClk
set_location_assignment PIN_W6 -to sdRamClkEn
set_location_assignment PIN_AA4 -to n_sdRamCas
set_location_assignment PIN_AA3 -to n_sdRamCe
set_location_assignment PIN_AB3 -to n_sdRamRas
set_location_assignment PIN_AB4 -to n_sdRamWe
set_location_assignment PIN_V2 -to sdRamAddr[0]
set_location_assignment PIN_V1 -to sdRamAddr[1]
set_location_assignment PIN_U2 -to sdRamAddr[2]
set_location_assignment PIN_U1 -to sdRamAddr[3]
set_location_assignment PIN_V3 -to sdRamAddr[4]
set_location_assignment PIN_V4 -to sdRamAddr[5]
set_location_assignment PIN_Y2 -to sdRamAddr[6]
set_location_assignment PIN_AA1 -to sdRamAddr[7]
set_location_assignment PIN_Y3 -to sdRamAddr[8]
set_location_assignment PIN_V5 -to sdRamAddr[9]
set_location_assignment PIN_W1 -to sdRamAddr[10]
set_location_assignment PIN_Y4 -to sdRamAddr[11]
set_location_assignment PIN_V6 -to sdRamAddr[12]
set_location_assignment PIN_Y1 -to sdRamAddr[13]
set_location_assignment PIN_W2 -to sdRamAddr[14]
set_location_assignment PIN_AA10 -to sdRamData[0]
set_location_assignment PIN_AB9 -to sdRamData[1]
set_location_assignment PIN_AA9 -to sdRamData[2]
set_location_assignment PIN_AB8 -to sdRamData[3]
set_location_assignment PIN_AA8 -to sdRamData[4]
set_location_assignment PIN_AB7 -to sdRamData[5]
set_location_assignment PIN_AA7 -to sdRamData[6]
set_location_assignment PIN_AB5 -to sdRamData[7]
set_location_assignment PIN_Y7 -to sdRamData[8]
set_location_assignment PIN_W8 -to sdRamData[9]
set_location_assignment PIN_Y8 -to sdRamData[10]
set_location_assignment PIN_V9 -to sdRamData[11]
set_location_assignment PIN_V10 -to sdRamData[12]
set_location_assignment PIN_Y10 -to sdRamData[13]
set_location_assignment PIN_W10 -to sdRamData[14]
set_location_assignment PIN_V11 -to sdRamData[15]
# 
set_location_assignment PIN_V21 -to IO_PIN[21]
set_location_assignment PIN_V22 -to IO_PIN[22]
set_location_assignment PIN_U21 -to IO_PIN[23]
set_location_assignment PIN_U22 -to IO_PIN[24]
set_location_assignment PIN_R21 -to IO_PIN[25]
set_location_assignment PIN_R22 -to IO_PIN[26]
set_location_assignment PIN_P21 -to IO_PIN[27]
set_location_assignment PIN_P22 -to IO_PIN[28]
set_location_assignment PIN_N21 -to IO_PIN[29]
set_location_assignment PIN_N22 -to IO_PIN[30]
set_location_assignment PIN_M21 -to IO_PIN[31]
set_location_assignment PIN_M22 -to IO_PIN[32]
set_location_assignment PIN_L21 -to IO_PIN[33]
set_location_assignment PIN_L22 -to IO_PIN[34]
set_location_assignment PIN_K21 -to IO_PIN[35]
set_location_assignment PIN_K22 -to IO_PIN[36]
set_location_assignment PIN_J21 -to IO_PIN[37]
set_location_assignment PIN_J22 -to IO_PIN[38]
set_location_assignment PIN_H21 -to IO_PIN[39]
set_location_assignment PIN_H22 -to IO_PIN[40]
set_location_assignment PIN_F21 -to IO_PIN[41]
set_location_assignment PIN_F22 -to IO_PIN[42]
set_location_assignment PIN_E21 -to IO_PIN[43]
set_location_assignment PIN_E22 -to IO_PIN[44]
set_location_assignment PIN_D21 -to IO_PIN[45]
set_location_assignment PIN_D22 -to IO_PIN[46]
set_location_assignment PIN_C21 -to IO_PIN[47]
set_location_assignment PIN_C22 -to IO_PIN[48]
# 65C816
set_location_assignment PIN_AB17 -to CPU_ABORTB
set_location_assignment PIN_AA15 -to CPU_BusEnable
set_location_assignment PIN_AB14 -to CPU_CLK
set_location_assignment PIN_AA13 -to CPU_E
set_location_assignment PIN_AB16 -to CPU_IRQB
set_location_assignment PIN_AB19 -to CPU_MLB
set_location_assignment PIN_AA14 -to CPU_MX
set_location_assignment PIN_AB15 -to CPU_NMIB
set_location_assignment PIN_AB18 -to CPU_RDY
set_location_assignment PIN_AA16 -to CPU_RWB
set_location_assignment PIN_AA17 -to CPU_VDA
set_location_assignment PIN_AA18 -to CPU_VPA
set_location_assignment PIN_AA19 -to CPU_VPB
set_location_assignment PIN_AB13 -to n_CPU_Res

Revision History

Rev 2+

Rev 1

  • W65C816 footprint is too small for part
    • Used TQFP footprint but part is clearly too big
    • Datasheet does not indicate package detail
    • 0.8mm pitch was OK
  • Works well as RETRO-EP4CE15 replacement
    • PS/2 @5V is good

Videos

Assembly Sheet