IBM System 360 Model 30 VHDL files

For up-to-date VHDL please go to

There is now a version for the Digilent Zybo Z7-20, this is a Work-in-Progress. Currently the VHDL has been revised but the I/O infrastructure is incomplete.

To find this version select the ZyboZ7 branch. The original (S3) branch is S3BOARD.

This update: 2012-04-11 (Release 1.1)

This page contains the VHDL source for a 360/30 implementation, plus compiled files suitable for use on a Digilent Spartan 3 board. To see a video of this in operation, see my YouTube channel

You can also see a recording of a talk I gave to the OSHUG in London on 2011-04-21, about 22 minutes long.

The VHDL is a literal translation of the diagrams that can be found in the MDM manual (see Manuals below). Where errors are suspected, these are flagged in the VHDL, typically using "??".

The Model 30 was implemented using transparent latches and SR flip-flops. These are not a good fit for an FPGA, which prefers edge-triggered flip-flops, but as the timing requirements are not onerous it works well. There are some cases where explicit delays have been added to allow the circuitry to work as intended.

The front panel output is via VGA using the 3-bit interface provided on the board. Switch inputs are via multiplexed rotary switches, and the on-board pushbuttons and slide switches. Both the panel and switch sections are in their own files for ease of modification. The switch file contains details of how the switches are wired in. Basically, the 10 hex-encoded switches are scanned via 10 outputs and 4 inputs, and the remaining 8 switch inputs are discrete. The 'PROC' positions are not connected, so disconnecting the entire switch assembly defaults all switches to the 'Process' position.

Release 1.1 has the 1050 console implemented via the serial port at 9600bps. Use Ctrl+D to indicate end of input. If you program the mcs file below into the Digilent board, and connect something to the serial port, you can run the program by pressing Reset (BTN0) then Start (BTN1) twice. You should get a prompt on the serial port - enter a 3 digit number and press Ctrl+D. No other peripherals are required to do this, but you can look at the front panel on the VGA output if you wish.

If anyone ports this to an alternative FPGA board, please let me have the relevant files and I will host them here.

Carl Claunch has an equivalent project for the IBM1130.