First Control Boards Ordered

Posted on Mon 19 September 2022 in MUPS16 • Tagged with control, pcb

I finally decided to stop tweaking the design of the pieces of the control unit that have been mostly complete for almost a year now, and just send them to be manufactured. There are four new boards here:

  • a new lower backplane
  • a new tester board to allow an Arduino …

Continue reading

Thoughts on hardware debugging

Posted on Sun 11 September 2022 in MUPS16 • Tagged with debugging, control

The control lines are designed with a couple of common features:
  • they all have a safe or no-op state when the lines are high. For simple lines, this means that they are active-low. For encoded lines, this means that all ones is a no-op command
  • they all have pullup resistors …

Continue reading

Fighting with Pelican

Posted on Thu 04 August 2022 in MUPS16 • Tagged with website

Whilst trying to write up some work I've been doing on the control unit I ran into a problem: when building the web pages I wasn't getting overbars on control signals (e.g. THIS). I had a vague memory of having solved this a couple of years ago when I …


Continue reading

Control Unit Underway

Posted on Sun 16 January 2022 in MUPS16 • Tagged with control

I've finally had a bit of time around work to get back to this. The last major piece to do is the control unit, and since a) I expect this will take several attempts to get right, and b) I only left myself a 14x20cm space for the whole unit …


Continue reading

Memory board rev 1.1

Posted on Mon 05 July 2021 in MUPS16 • Tagged with memory, pcb

I finally got a bit of time to fix the bugs in the memory and MMU boards, and to solder up the memory board (waiting for some chips for the MMU still).

The rev 1.1 design of the memory board is almost the same as the 1.0, except …

Continue reading

Debugging the MMU

Posted on Wed 19 May 2021 in MUPS16 • Tagged with debugging, memory, mmu, pcb

Notes

I don't really have time to write this up properly, so these are just some notes from debugging the MMU as I go along.

20210517
  • left-hand A bus connection is misplaced by X mm (too far right)
  • set_tbl_index works
  • set_tbl_entry mostly works? Seems to set the physical page correctly …

Continue reading

Debugging the Memory Board, pt 2.

Posted on Tue 04 May 2021 in MUPS16 • Tagged with debugging, memory

Three out of four ain't bad

OK, so it took a little while (real life keeps getting in the way), but I've done a bunch more testing of the memory board. The good news is that 3 of the 4 RAM chips work perfectly. I wrote a trivial test program …


Continue reading

Debugging the Memory Board, pt 1.

Posted on Sun 07 February 2021 in MUPS16 • Tagged with memory

In which nothing works

The memory board was part of the collection of boards that arrived all the way back in August last year, and which I put together soon after, but which I never got around to properly testing. I got a little distracted by experimenting with writing a …


Continue reading

Rethinking control

Posted on Sat 26 September 2020 in MUPS16 • Tagged with registers, control

Several of the instructions in the current design need a bit of a rethink. In particular, I've been thinking about how this CPU could eventually be pipelined, and as part of that, how to simplify the control unit. I've probably made too much use of the flexibility that microcoding instructions …


Continue reading

MMU board soldered, and debugged

Posted on Tue 01 September 2020 in MUPS16 • Tagged with debugging, memory, mmu, pcb

I finally put together the MMU, the fourth of the seven PCBs that arrived in my August batch. A couple of things were obvious right off the bat:

  1. I'd somehow screwed up the silkscreening, and all the text labels for the current MMU mode on the left of the board …

Continue reading

Reset board PCBs arrived!

Posted on Tue 18 August 2020 in MUPS16 • Tagged with debugging, memory, reset, pcb

A big batch of PCBs arrived last week from China (7 different boards!), and I decided to have a go at the reset board first. This is a straightforward conversion of my breadboard prototype, so I thought it would be quick and easy to assemble and test, and I could …


Continue reading

Interrupt and syscall handling, redesigned

Posted on Sat 20 June 2020 in MUPS16 • Tagged with interrupts, control

I'm going to just call interrupts, syscalls, page faults, privilege errors etc. exceptions from now on to save typing. Since the current design of exceptions has a few flaws, we need a new design. I'm not keen on redesigning the existing hardware I've made if possible, so that means no …


Continue reading

Interrupt and syscall handling

Posted on Fri 19 June 2020 in MUPS16 • Tagged with interrupts, control

My first attempt at implementing interrupt, syscall and exception handling in MUPS/16 currently has 4 types of traps:

  • interrupts (currently 4, with equal priority)
  • page faults
  • syscalls
  • privilege errors

Syscalls are handled slightly differently as they are completely synchronous, and so can be treated just as another instruction (R-type …


Continue reading

Detour: copying ROM to RAM on startup

Posted on Sat 30 May 2020 in MUPS16 • Tagged with memory

I've been toying with the idea of trying to use serial ROM chips in my build for quite a while, but I couldn't find anyone else who had done something similar, and wrote it off as too complicated. A couple of weeks ago, however, I started working on the PCB …


Continue reading

Fixing mistakes in rev. 1 of the ALU

Posted on Sun 19 April 2020 in MUPS16 • Tagged with alu, pcbs

Well, it turned out that there were more problems with the first revision of the ALU than I thought:

  • I knew I'd left three pairs of inputs floating across two ICs in the comparison unit, but it turned out I'd also completely neglected to wire up power or ground. Both …


Continue reading

ALU PCB assembled, finally

Posted on Sat 11 April 2020 in MUPS16 • Tagged with alu, pcb

I finally got time to assemble the ALU PCB, after having been away for 6 weeks, waiting for components to arrive, then dealing with the start of the lockdown.

Overall, I'm pretty happy with the result. I had a few problems:

  • I ordered the wrong size of component for all …

Continue reading

Converted ALU from breadboard to PCB

Posted on Sun 29 December 2019 in MUPS16 • Tagged with alu, pcb

The ALU PCB design is finished, finally. It's similar in design to the breadboard implementation, but with a few changes:

  • a full shifter in place of the fixed right-shift-by-one element on the breadboard
  • support for addc and subb instructions, in case I want to add them later
  • no dedicated zero …

Continue reading

Adding ADDC and SUBB instructions

Posted on Sun 22 December 2019 in MUPS16 • Tagged with alu, instructions

Currently we don't have add-with-carry or subtract-with-borrow instructions, but they would be useful for doing 32-bit maths, and easy to implement. If nothing else, the ALU should support them in case I want to add them later.

Control unit changes

We need to add a carry flag to the control …


Continue reading

Redesigning the BZ/BNZ/SEQ/SNE instructions

Posted on Sun 22 December 2019 in MUPS16 • Tagged with alu, instructions

There are four instructions that need to do some kind of equality comparisons of registers:

  • BZ (branch if input register is zero)
  • BNZ (branch if input register is not zero)
  • SEQ (set output register to 1 if both input registers are identical)
  • SNE (set output register to 1 if both …

Continue reading

Gremlins in the Registers

Posted on Tue 17 December 2019 in MUPS16 • Tagged with registers, pcbs

I finished soldering the remaining components onto the register boards last night, and started running a more comprehensive set of tests than I had before, and I've found some of the problems I was worried about.

Firstly, there's a simple mistake in the schematic, in which I swapped pins 14 …


Continue reading