Changes to PC/IMM/Except design

Posted on Sun 11 August 2024 in MUPS16 • Tagged with control

Following on from last month's musings, over the last couple of months I've done a bit more work on the LLVM backend for the MUPS/16. Whilst implementing support for global symbols (which includes function addresses) I realised I'd made a bit of a mistake with the design of the …


Continue reading

New issues with the MMU

Posted on Sat 03 August 2024 in MUPS16 • Tagged with mmu, pcb

I had thought the MMU was pretty solid, since I gave it a good test after its v1.1 rework, and didn't find any issues. In testing the control unit, though, I've noticed some weirdness. Mapping addresses didn't work consistently. More often than not, about half the bits were incorrect …


Continue reading

Debugging the ALU v 1.1

Posted on Wed 31 July 2024 in MUPS16 • Tagged with alu, pcb

Notes:

  • low-temperature solder paste does not flow nearly as well as original version. Maybe because it's not thermally stable, and I'm not storing it at a constant temperature?

  • short between VCC and GND after assembly and soldering. Removed 48 of 60 capacitors before finding the culprit on the 49th.

  • bug …


Continue reading

Version 1.1 of the μcode address generator

Posted on Fri 19 July 2024 in MUPS16 • Tagged with control, pcb

Since the first version of the μcode address generator had a few issues, I re-worked it to fix them, and while I was at it I let a bit of feature-creep happen. The 1.1 revision of the board has quite a lot more functionality than the 1.0 one …


Continue reading

Adding EEPROM reading/writing to test shell

Posted on Sat 13 July 2024 in MUPS16 • Tagged with software

Before testing the new control boards, all of which are driven off a single SPI EEPROM chip containing the microcode, I needed to add code to the Arduino server to read and write SPI ROMs, again - this was in the old version of the server, but not ported over.

Adding …


Continue reading

Notes on changes and improvements to control

Posted on Fri 12 July 2024 in MUPS16 • Tagged with control, improvements

Random notes on things I've noticed over the last few weeks that could be improved:

PC

I think I made a mistake with the j and jal instructions. They currently work like MIPS, and leave the top 4 bits of PC unchanged, replacing the bottom 12 bits with the 11-bit …


Continue reading

TODOs

Posted on Fri 12 July 2024 in MUPS16 • Tagged with control, improvements

Fixes

  • Either RAM should ignore all read/write requests when reset is low or I need fix the decode card to not drive memory control lines during reset. Currently RAM read/writes as the memory control ROM is shifted (same problem as on MMU)
  • fix the bad silk screen on …

Continue reading

Testing the PC and immediate unit

Posted on Sun 12 May 2024 in MUPS16 • Tagged with control, pcb

I combined the PC and immediate units into one board since the immediate unit has three outputs (data, B bus, and PC), and combining the imm and PC units onto one board saved 16 lines on the backplane for the imm->PC connection. Techincally, there's a LUI 'unit' here too …


Continue reading

Testing the μcode address generator

Posted on Mon 06 May 2024 in MUPS16 • Tagged with control, pcb

It's been almost 18 months since I had any time to work on this (life got in the way), but I've started assembling and testing the last batch of boards I designed, and working on the next lot.

The μcode address generator was the simplest piece of the control unit …


Continue reading

Thought on new clock design

Posted on Sun 25 September 2022 in MUPS16 • Tagged with clock

Requirements for a new clock:

  • the output of the clock is a pair of square waves. clk is a 1/4 duty cycle (i.e. high for one quarter of the cycle, low for the remaining three quarters). clk2 is a normal 1/2 duty cycle:


Continue reading

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 debug 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 alomst the same as the 1.0, except …

Continue reading

Debugging the MMU

Posted on Wed 19 May 2021 in MUPS16 • Tagged with 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 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 memory, mmu, pcbs

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 …


Continue reading