Hardware - KS10FPGA/KS10FPGA GitHub Wiki

Console Hardware

The KS10 Hardware is a system comprised of an off-the-shelf Terasic DE10-Nano Development Kit attached to a custom KS10 Daughter Board.

DE10-NANO Development Kit

The DE10-Nano Development Kit provides the bulk of the functionality for the KS10 system. The DE10-Nano provides:

  1. HPS (Hard Processor System)
    1. 800MHz Dual-core ARM Cortex-A9 processor (Linux CPU).
    2. 1GB DDR3 32-bit SDRAM (Linux memory).
    3. 1 Gigabit Ethernet PHY with RJ45 connector (Linux device).
    4. USB OTG Port, USB Micro-AB connector (Linux device).
    5. Micro SD card socket (Linux filesystem).
    6. UART to USB, USB Mini-B connector (Linux console).
  2. FPGA Device
    1. 50 MHz clock sources for the HPS and FPGA.
    2. Intel Cyclone® V SE 5CSEBA6U23 device (110K LEs).
    3. Serial Flash Memory for FPGA and Software Storage.
    4. USB-Blaster II for onboard JTAG programming.
    5. HDMI video output compatible with DVI 1.0 and HDCP v1.4 (Linux device implemented in FPGA).
    6. Two 40-pin expansion headers (used by KS10 FPGA daughter board).
    7. One Arduino expansion header (used by KS10 FPGA daughter board).
    8. Status LEDs, switches, buttons, ADCs, Accelerometer, and other toys (not used).

Intel Cyclone 5 System on a Chip

The Intel Quartus tooling uses a program called Plaform Designer (aka Qsys) to configure the Intel Cyclone 5 System on Chip (SoC).

A block diagram of the KS10 design as implemented on the Intel Cyclone 5 System on Chip (SoC) is illustrated below:

KS10 FPGA design on Intel Cyclone 5 System on Chip (SoC)

The DE10-Nano was chosen for this application mostly because it has two 40-pin expansion headers plus Arduino-compatible expansion headers. This provides enough FPGA IO to add external memory to the FPGA.

Whereas the DEC KS10 Console Processor was implemented in an Intel 8080 microprocessor, this device implements the KS10 Console Processing as a Linux application.

KS10 FPGA Daughter Board

While the DE10-Nano provides a lot of useful IO for the Console Processor, it does not provide the functionality that is unique to the KS10.

The KS10 FPGA Daughter Board contains KS10 memory and IO interfaces that are not present on the DE10-Nano board. These include:

  1. 1 MW of KS10 Memory using a Cypress Semiconductor CY7C1463KV33 2M x 18-bit Pipelined Synchronous Static RAM. The KS10 FPGA performs all memory accesses using a two 18-bit word burst. The two word burst saves a lot of pins and does not affect performance.
  2. SDHC (Secure Digital) card slot (used by the RP06 Disks).
  3. 8x RS-232 to 2x USB (used by the DZ11 and LP20). The RS-232 to USB connectivity is provided by two FTDI FT4232 Mini Modules - each providing 4x RS-232 devices.
  4. Connector for external KS10 front panel switches and status LEDs.
  5. Connector for 8x external RP06 disk drives.

Some photographs of the KS10 FPGA Daughter Board are presented below:

KS10 FPGA Hardware (Side View)



KS10 FPGA Hardware (Front View)

Additionally, I've chosen to add a MiSTer USB HUB Daughter Board to the board stack underneath the DE10-Nano board (not shown). The KS10 has 5 USB connections and the USB Hub simplifies wiring greatly.

USB Hub

I used a MiSTer USB Hub for all the USB connections. There are a lot of USB connections.

Schematic and PWB Layout Design Information

The Schematic and PWB Layout was generated using the ExpressPCB Classic tool set.

A document that provides schematics, PWB layout information, Bill of Material, and Assembly Information is available from: https://github.com/KS10FPGA/KS10FPGA/wiki/DE10-Nano-IO_RD04.pdf

A zip file containing ExpressPCB Schematic and PWB Layout files is also available from: https://github.com/KS10FPGA/KS10FPGA/wiki/DE10-Nano-IO_RD04-order.zip

I have an untested version of the Schematic and PWB layout that was captured in KICAD. If you are interested in that, please contact me.

My Target Configuration

My KS10 development target configuration may be a little unique but is illustrated below for your amusement.


KS10 FPGA Hardware Configuration

WiFi

It is nice to give the DE10-Nano a connection to the internet. The DE10-Nano does not have a built-in real-time clock and the DE10-Nano is just plain stupid when it does not have access to a Network Time Server. Simple things like 'make' don't work because the file modification times are random. It is also nice to grab KS10 software directly from GitHub on occasions.

There are a few supported USB/WiFi devices that can be connected to the DE10-Nano's USB-OTG port. I have one. I couldn't find a lot of documentation on how to configure the DE10-Nano to use it. I couldn't make it work. Even if it did work, you give up the Ethernet over USB Remote Network Driver Interface Specification (RNDIS) connection between the Host PC and and the KS10. In the end, I decided it was not the preferred solution.

For a WIFI connection, I selected an IOGEAR Universal Wi-Fi N Transmitter - Ethernet to Wi-Fi N 300Mbps (MPN GWU637) Ethernet to WiFi adapter. I selected this device because it had decent reviews but mostly because Amazon Prime could deliver it on the same day that I ordered it. The low-level technical documentation is a little thin (users are dummies), but the little device is smart enough to forward DHCP from the WiFi to the Ethernet and forward the DE10-Nano MAC address from the Ethernet to the WiFi.

I had one little problem that took some time to sort. The device is configured via a on-board http server. The configuration process would malfunction when selecting the WiFi SSID and password. Apparently the firmware as delivered does not work with Chrome or Mozilla. It does work with Internet Explorer (who uses that anymore?). There is a firmware update that fixes the browser compatibility issues.

Other Issues that needed to be solved.

By default, the Ethernet interface is configured for DHCP. That is the correct setting. My Ethernet configuration is:

$ cat /var/lib/connman/ethernet_000000000000_cable/settings
[ethernet_000000000000_cable]
Name=Wired
AutoConnect=true
Modified=2022-02-26T07:46:13.860356Z
IPv4.method=dhcp
IPv6.method=auto
IPv6.privacy=disabled
IPv4.DHCP.LastAddress=192.168.0.108
$

I wanted my router to assign the same IP address (192.168.0.13) to the DE10-Nano always. My router provides an Address Reservation feature. When the router sees a DHCP request, it examines the MAC address, and if that MAC address is in the Address Reservation table, it assigns the device the IP address from the Address Reservation table. Address reservation allows devices to have a consistent IP addresses without having to configure the devices to do static IP.

However, by default, U-Boot assigns random MAC addresses to the Ethernet MAC. This defeats the Address Reservation function of the router. For this to work, U-Boot must be reconfigured to provide the same MAC address always. You can program the Ethernet MAC address in U-Boot as follows:

When you see the "Hit any key to stop autoboot:" message a bootup, hit the'any' key. You should see the U-Boot prompt. Type the following commands.

    => setenv ethaddr 00:11:22:33:44:55 (for example)
    => saveenv
    => boot

You can pick your favorite MAC address for your DE10-Nano.

Hardware Status

The KS10 Daughter Board is fully debugged: the 1MW x 36 Synchronous Static RAM works, the Secure Digital (SDHC) card slot works, and the two FTDI FT4232 Mini Modules work.

⚠️ **GitHub.com Fallback** ⚠️