Wednesday, July 28, 2021

MiSTer FPGA : User Serial Connector to C64 IEC - part 2


This is part 2 of my journey, building my own custom board for C64 peripherals for MiSTer.
If you haven't read part 1, you can do so here Part 1

Today my boards from PCBWay arrived, so straight to the workbench to put it together.

The board I had made actually has two functions the IEC bus and a keyboard interface for a C128 keyboard that I use for my MiSTer.

The new board makes a pretty big difference, here are my previous prototypes that I had hanging off my MiSTer.

What I used to have
My original custom IEC bus for my custom C64 core
 

The new IEC Bus for the official core
 

A C128 Keyboard to USB interface
 

What I have now!

IEC on the Left - C128 Keyboard interface on the Right

Giving it a test run before unplugging my MiSTer

The MiSTer stack and my new board looking neat

From the back with the IO port

All plugged in and working

Make your own?

I know my requirements are pretty niche, but if you want one you can get one 
from PCBWay
 
You'll also need these parts:
 

 

Programming the Arduino

I found a great piece of Arduino code for C64 keyboard on the Internet.  
I've hacked it to suit my needs and to drive a C128 Keyboards extra keys.
 
You can get my hacked version of the code from Git Hub.
 
A special note: 
  Once you upload the code it is really hard to re-program the Micro with the keyboard code again.
  Simply upload the blink example code first ( that comes with the Arduino IDE ) THEN reload the 
  keyboard code.
 
 
PCB and Schematics 
 
I have released the board schematics and design here.

 

 




Monday, July 19, 2021

MiSTer FPGA : User Serial Connector to C64 IEC - part 1

I have been using my own custom hacked code and hardware on the MiSTer C64 core for a few years now, but finally it's in the official core.  This is awesome for two reasons, 1) I don't have to keep recompiling my cores and 2) it uses less pins and also has reset.

Initially I was confused about how the in/out pins worked and I also got lost in a mess of wires.  Eventually, I bit the bullet and rebuilt it from scratch and it worked.


You'll note that the uIEC is powered from my USB hub.  The DE10-nano doesn't have enough juice to run it.

I even put together a board for my IEC bus and my USB Arduino Interface for my C128 keyboard. They should sit together nicely under the MiSTer. I hope it works :-) . . . ( see Part 2 )


Here is a dump of all of my notes . . .

Caveat

Be very aware that this plug contains both 5v and 3.3v and that you are connecting a 3.3v system to a 5v system.

a) Wiring this up incorrectly may destroy your MiSTer!

b) You must also use a logic level converter

c) Verify everything I have written and linked to, I am not responsible for any mistakes below.


USB Cables

Please note that the pins of the USB 3 cable ends do differ on plug in some places (not all are straight through).


C64 Core Document

You should refer to the C64 core documentation : https://github.com/MiSTer-devel/C64_MiSTer#user_io-pins


USB 3 Type A Receptacle on the I/O board and DE10-nano pins

I have previously wired my own IEC bus directly from the DE10-nano. However, please note that the official MiSTer I/O board has 100 Ohm resistors between the pins and the USB Connector. The Newer I/O boards (5.6 and up) also have 10K Ohm weak pull ups.

However the IEC bus works fine without the pull ups ( I have a 5.5 board ).


Study the schematic for the pin out on the I/O Board : https://github.com/MiSTer-devel/Hardware_MiSTer/blob/master/releases/iobrd_5.5.pdf

or this one with the pull ups : https://github.com/MiSTer-devel/Hardware_MiSTer/blob/master/releases/iobrd_5.6.pdf

Verify the pin numbering of the USB 3 Type A Receptacle on the I/O board : https://au.mouser.com/datasheet/2/837/USB1075-1948891.pdf

Verify the pin translation of the USB 3 Type a Receptacle on the I/O board : https://pinout.net/pinout-scheme/507/USB%203.0%20SuperSpeed

Make the necessary adjustments / translations for your cable!!


The pins for the USB connector ON THE I/O board are :

1) 5 V

2) RS232 Tx

3) RS232 Rx

4) GND

5) ATN

6) DATA

7) RESET

8) CLK

9) 3.3v


Logic Level Conversion

I used this Logic Level converter : [url]https://www.sparkfun.com/products/12009[/url]

Please read the data sheet for usage.

L side is MiSter side

H side is IEC side


LV1 ATN => HV1 ATN

LV2 DATA = HV2 DATA

LV connect to 3.3v

GND connect to GND to GND ( I powered the Logic Level Converter entirely from the MiSTer so it has a common Ground, if you don't then you'll need to separate the grounds to each power source, Read The Manual ).

HV connect to 5v

LV3 RESET to HV3 RESET

LV4 CLK to HV4 CLK


IEC receptacle

I used this part for the IEC receptacle on my PCB design : SDS-60J : https://au.mouser.com/datasheet/2/670/sds_j-1778983.pdf


1) SRQ ( unused )

2) GND

3) ATN

4) CLK

5) DATA

6) RESET

 

Please see Part 2 for Schematics and Design!

https://8bitshardway.blogspot.com/2021/07/mister-fpga-user-serial-connector-to_2.html