2010-04-30

First Time Power On

2010-04-01: The frontpanel software is making progress: Meanwhile i can upload microcode to the i2c eeproms or directly to the microcode upload header of the CPU! This also required a small modification to the microcode assembler, to generate a combined file for the three eproms. I am using CoolTerm on my Mac with an usbserial adapter for uploading the hex files. Also, implementation of the XON/XOFF protocol proofed to be useful. :-)

2010-04-05: During Easter holydays i made a great leap and put it all together!
Off course, there were problems. E.g. when my highly valued power supply unit did only deliver 4.4 instead of 5.1 Volts. And became quite warm. First i had problems to measure the current drawn by the CPU, because the PSU always switched off when i cramped the amperemeter into the fuse socket. Measure leads too high impedance... But i was lucky to revive an old pair of leads and see: 3.2 ampere. Off limit for the PSU. Why? Hu hu hu. Some explorations later: i had connected the ALU data registers in reverse direction in the circuit drawing. Impressive what they can survive! I made a dead-cockroach-type operation to both of them. (100 points for those who know what i'm citing! :-))
The ALU Registers [on the left] after Operation

But still the power drawn is a little bit suspicious. The CPU now draws 350mA when stopped and up to 1.3A when running at full speed. But at some points the power consumption rises from 0.5A to 1.0A and above while slowly idling through some random microcode found in the eproms. No explanation yet, but i decided to finish the frontpanel's debugger and start from there. If there is some cause to draw more than 0.5A unexpectedly there will be some error. Hopefully.
So, as said, i worked on the debugger. I implemented routines to read in the sensor ring, which provides information on all three busses (data, address and control). And a preliminary single stepper. Occasionally i could alredy verify that the address incrementer seems to work. Yeah. Tomorrow more...

2010-04-08: It seems that i have more problems with the assembler than with the CPU now. B-) Slowly but shurely i am writing test routines for registers and functions and so far they all work. Except if the assembler fails to generate correct code. Data registers, ALU functions, shift registers, address registers and address increment/decrement up and running. Ram test ok! And on we go...

2010-04-10: I am excessively testing the CPU. At one point i probably had a non-connect in a socket (the CY input to the SR register) which now seems to be fixed. And i was hunting an error in the z-flag result:
    tst $0008 : z
    jp  1,error
jumped to error sometimes, but when i uploaded hundreds of tests into the microcode rams it always failed at the same microcode address, if it failed, which was different for every special code mix. What was going wrong here?
Nothing. It was ok. I will have to put a wait cycle here (or eventually it works when i replace the condition selector, a 74HC151 by it's AC counterpart.) The 'error' was the impression, that the immediate value came from the 'ival' registers on the control unit. But these are no registers, but drivers. And they put the data from the microcode rams on the bus, thus i had to add the latency from the microcode rams to the total round-trip time and – alas! – that was tight. VERY tight...


For the records: Power drawn by the CPU is ~350mA@5V when halted and ~800mA@5V when running at 16MHz.
2010-04-11 to 2010-04-15: Webside down, because iMac down. PSU failure.
2010-04-16: Resuming testing.

2010-03-22

The New Front Panel

I finished the new frontpanel board: Exposed, etched, drilled, soldered and connected. The software for the ATmega32 is under development.
Front panel showing the K1-16/16 Logo

2010-02-28

I/O Board and Microcode Upload Header

2010-01:

I have ordered the I/O board from LeitOn.
The new front panel is still under development.
The microcode upload header is designed and routed.

2010-02:

The I/O board is finished:
K1-16/16 Expansion Bus Board
 The microcode upload header is finished:
The Microcode Upload Header ontop of the Control Unit

2009-12-24

2009-12

I decided to design a new front panel with more 'gears'.
• Subproject LCDs mostly finished.
• Subproject IR-Keyboard mostly finished.

2009-11-30

Data and Address Register Boards

I have ordered the address and data registers boards from LeitOn. Again the quality is not as good as from PCB-Pool, the boards are slightly bent. Both boards are now finished:
K1-16/16 Data Registers Board
K1-16/16 Address Registers Board
Seemingly some companies expect a great economical success for my groundbreaking CPU design:
Spam


2009-10-05

The ALU

2009-10-05: CadSoft is bought by Premier Farnell plc.
I have ordered the ALU PCB from LeitOn.
It is of lower quality than the board from PCB-Pool.
K1-16/16 Arithmetic/Logic Unit

2009-09-30

Front panel finished

I finished and manufactured the front panel PCB. It provides 3 clock sources for demonstrations and debugging. It is single-sided, so i could etch it at home. I have tested my mental rugginess and designed the front panel in Open Office.
2009-09-27: Today we had elections in Germany. Of course i did vote, though, there is not much to choose between ...

2009-08-15

The Majority Gate

After a long while I resumed work on the Arithmetic/Logic Unit. I wired up a test circuit for the 3-resistor majority gate, which i use in the ALU for the joined AND and OR functions. I was lucky and the gate worked as expected. Dieter Müller has written an article about the majority gate and it's use for ALU design. Website now offline (2010) and email address invalid. I don't know what has happened to him :-/

2009-04-15

Working on the compiler


Working on the compiler for user-space (as opposed to microcode) programs. It seems it's gonnabe a compiler, not an assembler, with c-like syntax and some c++ goodies. Finally i got stuck. Using a non-typed script language to write a compiler has it's disadvantages too.

2009-03-15

Working on microcode

Working on the microcode and microcode assembler.The microcode is organized in 2 planes of 16k * 24-bit codes. There is a 1-instruction pipeline which imposes a 1-instruction latency on code branching: In every microcode instruction a flag is selected. This flag is tested at the end of the previous instruction and determines from which code plane the next instruction is read. The assembler takes care for the most of this brain hazzard.

2009-02-28

The Control Unit

2009-01

Production of the first board by PCB-Pool (voucher). It is the control unit, which is abbreviated as "SSW" for German "Schrittschaltwerk".

2009-02

I'm in the Homebuilt CPU Webring.
The Control Unit is finished:
K1-16/16 Control Unit

2009-01-01

EagleCAD certainly has it's quirks.

EagleCAD certainly has it's quirks.



2008-12-01

2008

Planning. Design and evaluation of circuits. First i drew the PCBs in Freehand, a graphics program. But Freehand was bought by Adobe and Adobe terminated development. So i bought a non-profit license for the circuit design and layout program from CadSoft, which is quite affordable.