16 hours ago •
The RES15 relay is nice but requires way too much current to operate, in particular in some circuits where low current is necessary : the DRAM sense circuit as well as the instruction sense circuit, because 16 bits multiply the coil current, that reaches a value that can't be reliable...
Another type of relay is required and @Artem Kashkanov suggested the RES55 : a reed-type relay with the typical fast operation and low operating current, though at a higher voltage.
I couldn't find a suitable lot of this reference on eBay but found 2 other things :
- RES-64A rated 9-11V : vintage, pretty bulky, only SPST but 2K ohm coil so it must be pretty sensitive
- 1A12 : miniature SIP chinese reed SPST relays, rated 12V, 1K ohm coil, very cheap
I just tested the 1A12 and I am impressed : the contact closes at about 5V (varies with the piece) and opens at about 3V, with a current under 2mA. With such a hysteresis and low power, it even becomes interesting to use them for the register set...
I still have to receive the RES-64A, which would look way better, and I'll have to compare it to the modern miniature version. However there is now a good solution to the problem I had before : I can switch 16 bits on, and draw at most 2×16=32mA, which will not strain the address decoder's contacts much.
Oh and I still have to design that automated relay tester...
3 days ago •
I made it !
I had to correct a couple of blunders (see the diagram below) and now the system woks (almost) as expected !
Not all the forbidden/impossible codes are prevented :
- IN and OUT seem to allow the IMM4 and REG modes, though the output binary code will be decoded "correctly"
- INV allows SND to be output
- probably some other obscure combinations are possible
However this panel is only one half of the ASM equation : the disassembler display will prevail over the buttons configuration.
This is why some markings are missing : when programming, look at the output and trust the display, don't stare at the buttons.
(I'll have to shoot a video...)
10/06/2019 at 15:07 •
It took a long while, efforts, expenses, and a full disassembly of my laser printer but here it is !
The look/aspect is great ! I had some little issues with the size (maybe due to slight resizing somewhere) and there are a few hicups with some mounting screws.
However the toner ink sticks rather well to the vinyl sheet and glueing didn't leave bubbles. The alu face plate can remain (mostly) clean and it adds a lot to the ergonomics :-D
Locating the "right" plastic sheet took a while...
And here it is in all its glory !
All the switches are soldered but the assembly/wiring is not complete, I need to add another board to really get all the signals together. So I created a small board with 16 Glühbirnchen to ease the tests :-)
09/29/2019 at 05:26 •
I tried to fight procrastination and while it's fun to prepare, gather the parts and imagine things, implementing is still important, despite the higher efforts... I think I solved most of the issues so I decided it was about time for action, instead of starting yet another sub-project :-D
One part (the ROM/ASM switch) is still missing and might be delivered late but it is not essential and it can be added later. All the other switches are here so let's go !
I have uploaded the DIA files for the layout of the buttons and switches. They are laser-printed on normal paper, which is then glued (with a glue spray) on a suitable aluminium plate (found in my archives). So far the expense is about 8€ for the glue spray :-)
Once glued, the centre of each hole is punched to help later with the drilling.
Drilling took "some time" because of the required precision and odd diameters but my neighbour Alex greatly helped ! Thanks dude ;-)
Overall, the result is surprisingly satisfying and close to my expectations :-)
The two hex encoders don't have the appropriate nuts and can't be fastened to the alu plate, so I made a mezzanine PCB, which will later host diodes as well.
The 3 lower rows of buttons have some alignment issues and need filing and adjustments, that's more work but the rest was almost smooth :-)
Better pictures :
Nothing is wired yet : I need a way to "laser print" the marks on the alu plate.
09/10/2019 at 23:24 •
People are (rightfully) confused with this project, and I understand why: it's ambitious and covers many aspects at once.
For other projects, I have split the whole project into several sub-projects, for example into an architecture ( #YASEP Yet Another Small Embedded Processor) and various implementations ( #microYasep, #Discrete YASEP...). Even for the precursor ( #YGREC16 - YG's 16bits Relay Electric Computer/ #YGREC-РЭС15-bis) I created several sub-projects ( #YGREC-Si , #YGRECmos, #YGREC-ECL... ) that clearly separate the architecture from the various technologies I wanted to explore.
But designing a new microprocessor is more than defining an ISA and making the prototype work: it's a complex ecosystem that must be carefully crafted and every piece of the puzzle must fit right into place. I think that the following sketch give a taste of the ambition of the project :
In fact it's not so much different from the YASEP and F-CPU, except that I can go deep in the design of everything, thanks to the simplicity of the core.
The immediate use of Y8 would be as a softcore in FPGA projects where a tiny but easy-to-use and expandable microcontroller is required. However getting there also paves the way to more sophisticated cores and technologies...
I admit that at this moment, I focus mostly on the ASIC and relay implementations, which hold the whole project back and I need to progress on other fronts. However some tools (such as the #VHDL library of ProASIC3 gates) are in development and should be short-term only, but are very important for the rewrite of the core in VHDL.
09/04/2019 at 23:35 •
At the start of 2019, I found a very interesting item on @qro_team 's eBay store : a single box of 40 low-voltage РЭС60 relays. I wish there were more !
It's the real deal : it's DPDT (unlike the РЭС15 which is only SPDT), it's very small (great for density) and the version I have can turn on at around 2.5V at half the current of the РЭС15.
The DPDT part is very important for several circuits, for example the incrementer for PC and the ALU. But today I focus on other less visible parts : the bit sense circuits for the memory arrays. The DRAM uses capacitors that will discharge in the coil and the lower current increases the reliability of the whole system (less sensitive to current leaks in the capacitors). The instruction PROM (on which I work at the moment) also benefits from a lower current because each line drives 16 bits and the aggregate current is then handled by a single relay... So if a current of 10mA is enough to trip one line sensor, the worst case scenario for the main driver is 160mA, which is within the tolerance of the РЭС15. It remains to be seen how long it remains reliable but this is another debate. I could make the "single point of failure" easy to replace.
The РЭС60 I have are sold as "6 to 8V" with a coil that measures about 66 ohms. It's a -02 type (?) and all the others I find on eBay have a much higher voltage : 18V, 23V, 27V, 34V... They would certainly have a lower driving current but the voltage swing is not practical. I could try my luck if there are "12V" versions but I need another box because the 40 pieces I have at the moment is barely enough for the various circuits that require it... Who could help me ? @Artem Kashkanov ? @[skaarj] ? ...
According to this datasheet (and many others found online),
there must be a marking error on my box because the -02 is rated at 270 ohms and I measured coils in the 65 ohms range... but apparently I need a 12V version, with -02 or -08 type (I still can't get the difference).
I might have found -04 (lower voltage) that would be useful in the ALU so my -03 would be used as sensors, probably using pre-biasing, unless there is some magic reed relay that could save the circuit ? (Artem ? ;-) )
Correction : the box is marked "00.02" so according to the references I have found, it should be a 23-34V version. Measurements disagree... I don't know what happened or if the parts were repackaged but anyway, I have them :-D
09/03/2019 at 12:35 •
So I tried to build a prototype and it was almost finished in a day :-)
32 instructions, 64 DIP-switches with 16 pins each, that's already 1024 soldering joints.
Then 512 diodes (LL4148), linked in 8 rows, make another kilojoints :
but it's not as hard as it sounds.
What is still missing is the 64 column wires and the connectors. I'll also add one LED per line.
Of course a dedicated PCB would ease assembly but this
- would be very costly
- I have more important other expenses
- I already have these parts in stock
- I don't want to waste money with a flawed PCB design that a prototype could solve.
Anyway with 32 instructions I'll have enough room to test interesting things and it's not as hard as it looks.
I want to make the board design modular, each board can be relocated physically on a backplane to change the address. There are 2 decoders, large MUXes for the lines and columns, that will not need changes, while the data boards can be of any type (DIP switches, solder joints or anything else I come up with).
08/27/2019 at 21:52 •
As I build the instruction assembler and disassember, I must also provide a way to store instructions. This was already covered in #YGREC16 - YG's 16bits Relay Electric Computer in the log PROM boards.
Things have evolved since 2017 and I now have a whole bunch of DIP switches (Log: I hope that's enough this time) and pretty large proto boards... I have just what is required to build boards with 16×4=64 instructions :-)
But let's look at how these boards must be organised. The YGREC8 has 16-bits instructions so a higher density than the 24 bits of the YGREC16. And there are only 256 addressable instructions. That's 256×2=512 DIP switches, I have more than 700 in stock these days :-)
Then the topology must be optimised to reduce the number of relays : how many lines and columns ?
- 1 column and 256 lines : 1 huge MUX256, or 255 relays. HUGE...
- 2 columns and 128 lines : 1 huge MUX128 and 16 relays to select the column, or 143 relays. Better but still not optimal.
- 4 comumns and 64 lines : 1 large MUX64 and 16×MUX4, or 63+(16×3) = 111 relays. Good.
- 8 columns and 32 lines : 1 MUX32 and 16×MUX8 = 31 + 16×7 = 143 : the column MUX gets too large now.
So be it : the PROM cards are organised with 4 columns.
I'll try to build a 8×4 board to get started... because I also need to build the 2 big MUXes for lines and colums. Where are my boxes of SMD diodes ? :-D
08/25/2019 at 13:09 •
I have received and tested all the interlocked switches :-)
and I'm updating the layout and dimensions, using the diagrams I have found on the web:
So far the layout of the panel is:
but many questions are still in the air...
I can print with my laser printer to the exact scale so this will be very useful: no need of a CNC ! but it only moves the problem around.
How can I transfer the toner to the front panel (aluminium) for the labels of the buttons ?
I added the "SEL" button : it's a SPDT switch that selects which circuit gets the power/signal, either the assembler panel or the program ROM. That makes now 3 switches (IMM8, NEG and SEL) and I haven't decided/found which model to use. I need a low-force, high-endurance switch with a long lever (10mm or 12mm ?) so the drill diameter is undetermined (until I find THE model that fits).
The SEL button changes several things, because initially I wanted to use a 16-pole dual throw switch to select the value sent to the instruction decoder. The operating force and endurance would not be satisfying because I want to alternate between both sources easily and fast. Now the instruction bus is shared between the ASM panel, the instruction ROM and the eventual electronic/remote interface.
For the YGREC16 with 24 instruction bits, I started with positive logic, then realised it would be more complex for the driving electronics so I changed to a different driving system where PNP transistors just pull the signal to 0V. But overall this is not easy to manage and a return to "positive logic" seems unavoidable.
Another consequence is that the outputs of the asm panel must be "diode protected" because some signals can be shorted by the switches. This is not a problem when the panel is operated alone but it will interfere in some cases with the ROM and the external interface. Another version of the diagram is necessary... So here it is!
There are now 38 diodes now. It is not a tragic increase but there is a good side effect : all the signal paths have one diode drop, everything is now balanced !
08/08/2019 at 02:31 •
As you can see at Log: Don't go full Numitron ! Unless... OK whatever., I started to design the disassembler and I totally renewed the look:
This version now shares a pair of Numitrons to display either the SRI or the Immediate field, which saves a bit of room and 2 tubes but adds some complexity in the decoding logic (yet not enough to scare me, of course). The above display is not compliant with the normal assembler but close enough and it gets the job done :-)
I draw a lot experience from the #Numitron Hexadecimal display module so I know what to expect and what to do to display the desired patterns on the 7 segments. There is no technical challenge anymore to display the CND, SND, SRI and Opcode fields, but it's still a lot of work, in particular for the Opcodes: this decoder not only must display 19 words on 3 tubes, but also sends control signals to enable the other fields.
It's going to be small and gorgeous but behind the front panel, the electronics will be pretty dense and draw a significant amount of power...
Damnit I forgot that IN/OUT have 9 bits of immediate address...
The Imm field will create more problems, on top of the multiplexing with the SRI decoder. The field must select the width between 4, 8 and 9 bits. The last case is not a problem because an address is just a positive number. Imm4 is sign-extended to 8 bits (easy: 4 relays) but should Imm8 be represented as a signed number ?
Then there is the special case of Add imm4(>=0) where Imm4 is incremented.
The easy way is to simply display the number as is, and forget about it, though the display would not be accurate. It would even be misleading.
But then, if the Add correction or the negative display are implemented, an increment unit is required. And negative numbers require a XOR to transpose to positive numbers. This means more circuits in front of the display modules...
But with negative numbers, the added Numitron can have another segment used, for the sign bit:
To keep the system modular (and help with development, debug and repairs), I think I'll make 3 modules with 3 Numitrons each, with identical connectors. I can then develop all 3 groups in parallel.
The connector is probably IDC 2×13 : each Numitron has 7 segments + 1 common signal, or 8 wires, and 3 Numitrons need 3×8=24 wires. Add two positions for a pair of pins for the optional red Glühbirnchen and we have exactly 26 pins.