OpenCores

PDP-11/70 CPU core and SoC :: Features

Features

click for higher resolution
Fig F-1: A KB11-C processor without FPP and one Massbus interface, build around 1976 in SN74Sxx Schottky TTL technology. The w11a core has a similar feature set. See also hi-res jpg, and view on backplane in wire wrap technology. Picture courtesy of Dave McGuire, see also Dave's PDP-11/70 site.

click for higher resolution
Fig F-2: PDP-11/70 Console with 2 RK05 drives with a UNIX 7th edition system (see disk labels in high resolution jpg). The current w11a systems emulate a similar configuration. Picture courtesy of John Holden. See also John's PDP-11 Site.

click for higher resolution
Fig F-3: w11a running on a Digilent Nexys2 board. The rlink connection is via the RS232 port and a FTDI US232R-100 cable. The mini-USB connector is currently used only to power the board.

The w11a CPU core

The w11a CPU core has a functionality very close to a PDP-11/70 CPU (Model KB11-B or KB11-C) and supports with very few exceptions everything the PDP-11 architecture has to offer:
  • standard and extended (MUL, DIV, XOR, ASH) instruction set
  • special instructions (SPL, MTPD, ect)
  • dual register set
  • three processor modes: kernel, supervisor, user
  • memory management with 18 and 22 bit addressing and separate instruction and data address space
  • UNIBUS mapping support (18->22 bit address translation)
All fits today easily in a fraction of a modest size low cost FPGA. The original 11/70 CPU was implemented in TTL, see Figure F-1 for comparison.

The I/O System

Project goal was to create a retro-computing platform able to run the historical UNIX systems and other original software. The I/O system is therefore setup to have the same register model and semantics as the original DEC UNIBUS peripherals. To interface this to contemporary I/O hardware all I/O transactions are emulated by a backend server in the following way:
  • all device registers are effectively dual-ported, visible from the w11a core via a bus structure named ibus with an addressing model similar to the DEC UNIBUS, and from the backend server via a 'remote register interface', called rri.
  • the rri communication between fpga and backend server can be done directly via bus structure named rbus or over any bi-directional byte stream connection via the rlink protocol.
  • an attention mechanism allows the efficient detection of significant device register state changes by the server, which will usually read the device state, emulate the desired I/O transaction and update the device state. DMA transfers are emulated by direct memory access over rbus.
  • in current 'proof-of-principle' implementation the backend server is a process running on a normal Linux system, the communication is done over an rlink via RS232 or USB FIFO channels. See Figure F-3 for such a setup.
Currently available is a basic set of UNIBUS peripherals which is, apart from the IIST, quite similar to a baseline configuration of the late '70ties:
  • KW11L: line frequency clock
  • DL11: console interface
  • LP11: line printer
  • PC11: paper tape reader/puncher
  • RK11: disk controller with 8 RK05 drives (2.4 MByte capacity each)
  • IIST: interprocessor interrupt and sanity timer (operationally not used so far, but was fun to do...)

Complete Systems

The project holds all the sources to synthesize a complete system. The systems are comprised of
  • w11a processor core
  • I/O subsystem
  • cache subsystem: 8 kByte, 32 bit cache line, fully associative, write-thru
  • memory subsystem interface with PDP-11/70 style control registers
  • memory controller: depends on board, currently for SRAM and PSRAM
  • rlink interface: used as control and debug interface as well as for I/O emulation
Complete configurations for two boards are currently part of the project:
  Name          Board    FPGA       Clock   #flop #luts  #slices
                                    [MHz]    
  sys_w11a_s3   S3BOARD  XC3S1000     50     1301  4671  2613(34%)
  sys_w11a_n2   Nexys2   XC3S1200E    58     1450  4804  2740(31%)
  sys_w11a_n3   Nexys3   XC6SLX16     80     1441  3260  1081(47%)
The Digilent S3BOARD has 1 MByte SRAM (is61lv2561), the Digilent NEXYS2 and NEXYS3 boards have 16 MByte PSRAM (mt45w8mw16b) of which only 4 MByte, the maximum a PDP-11 can address, are used.

System Configuration

Both systems have the following configuration for the UNIBUS peripherals:
  Controller Name                    CSR  VEC PRI    Device Names
                                                     BSD     DEC
  IIST    MP interrupt/timer      177500  260  6     -       - 
  KW11-L  line frequency clock    177546  100  6     -       - 
  RK11    disk controller         177400  220  5     rkxh    DKx:    (x=0..7)
  DL11    console                 177560  060  4     cn 0    TT0:
  DL11    2nd console             176500  300  4     cn 1    TT1:
  PC11    papertape read/punch    177550  070  4     -       PP:,PR:
  LP11    line printer            177514  200  4     lp 0    LP:

© copyright 1999-2012 OpenCores.org, equivalent to ORSoC AB, all rights reserved. OpenCores®, registered trademark.