Close

First page and first roadblock

A project log for Discrete YASEP

a 16-bits YASEP computer (mostly) made of DIP/SOIC chips like in the 70s and 80s... with 2010's twists!

yann-guidon-ygdesYann Guidon / YGDES 10/20/2015 at 16:3129 Comments

Technology has this weird way of messing with you ! You expect something dumb to be easy and you find out it's the contrary...

Board One of this project is a manual/user bus controller : a HEX keypad lets you enter data and a few rows of hexadecimal 7 segment digits show the results. That is so DUMB that I was shocked it couldn't be made out of dirt-cheap, easy-to-use SOIC chips, like "one chip per digit" to keep timings and routing simple.

To be fair, you can find CD4511 in SOIC for $0.1.

Some 74xx4X chips work similarly and are covered extensively on web tutorials. But they are "BCD" converters, not "binary" or "hexadecimal". So this is the mess you get :

You can probably find hexadecimal-compatible drivers : DM9368 or another hard-to-find vintage DIP driver, that consumes space, money and current.

Let me put this in perspective : the boards will use SMD devices on flexible Kapton PCB, should be pretty compact, cheap and energy-conscious (because one board is nice but the power budget could be largely exceeded when all the boards run together, I hope it to run off a USB port...).

The first board will have at least 15 hex digits, and more if possible !

If possible :

Did I mention that I couldn't find ultra-flat LED 7-segments displays ? Should I use 0603 SMD LEDs ? (They cost 10$ for 1Kpc so it's in the project's spirit, "a ton of dirt cheap parts to do fun things" and they can be driven by a HT1632 matrix controller)

I don't want to have to use a microcontroller but it looks like it is a necessary evil :-( I can't use a fistful of TIL311, they are expensive, obsolete, through-hole, power-hungry, thick and large...

A MCU will also solve the issue of timings, keypad input, sending the keypad data to the right output... But it will spoil the magic of not needing ANY program to drive/run the rest of the boards :-/


HELP !


Edit (2016) : solved ;-) see #DYPLED

Discussions

Ted Yapo wrote 08/09/2016 at 15:46 point

Go really old-school with 4-to-16 line decoders and a mess of SMD diodes in a diode-ROM with driver MOSFETs after.

or

GAL16V8's are cheap on ebay since they're discontinued.  They're power-hungry, and I'm not sure if using programmable logic violates the "no-program" restriction.  You can easily make a 4-bit to 7-segment hex decoder in them; I've done it.  You often see the DIP and PLCC, but there is supposedly an SOIC package, too.

That's all I got at the moment...

  Are you sure? yes | no

Yann Guidon / YGDES wrote 08/10/2016 at 03:15 point

You'll see that I have played with diode ROMs in this project and I've solved the other issues with the #DYPLED :-)

* Cheap, thin: one TSSOP drives 4 digits (and I've got some crazy good deals on eBay)

* Easy to program : no PAL programming tool needed, just a plain Flash programmer that you load with C-generated data (PAL programming tools are a mess... and totally obsolete, no need to recover a 20-years old Windows antique to burn a dozen of chips)

* Low power

  Are you sure? yes | no

Ted Yapo wrote 08/10/2016 at 04:27 point

Oh, I get it now.  I was just late to the party...

  Are you sure? yes | no

Yann Guidon / YGDES wrote 08/10/2016 at 15:12 point

BEtter late than never :-) have a seat and enjoy !

  Are you sure? yes | no

K.C. Lee wrote 08/09/2016 at 14:50 point

https://www.fairchildsemi.com/datasheets/MM/MM74C922.pdf

Too bad the new parts are relatively expensive (~$20 range) and kind of hard to find. There are a few cheap sources on aliexpress.  

Alternatively, you could use a parallel FLASH chip as an 16:4 encoder and may be a 555 and some feedback to make a state machine for debouncing.

Back in first year University, I built a 3 digits BCD DAC with a display and a parallel keypad interface. I used 4017 as a state machine to advance to the next digit. It even have a blinking cursor and I used /RESET input as the erase.  Can't remember the details of how I did it, but it has a lot of discrete and CMOS 4000 parts.

  Are you sure? yes | no

Yann Guidon / YGDES wrote 08/10/2016 at 15:15 point

Hi !
A long time ago, I have chosen the Parallel Flash route and it's all being developped as #DYPLED for now :-)

A simplified version will be used for the display board.

  Are you sure? yes | no

agp.cooper wrote 08/09/2016 at 13:46 point

Hey Yann,

I actually struggle a bit trying to understand the architecture.
I gather its a stack CPU rather than a Load/Execute/Save or is it something else?
Can you clarify?

AlanX

  Are you sure? yes | no

Yann Guidon / YGDES wrote 08/10/2016 at 15:22 point

Hi Alan !

the YASEP architecture uses 5 register-mapped memory ports. In this case (and quite a few others implementations), 2 pairs of registers are respectively mapped to 2 independent address spaces. The last interface maps to the instruction memory.

Think of it like a modified CDC6600 where, instead of having registers dedicated to memory read and write, all the accesses can be read and write.

More details are explained at http://archives.yasep.org/yasep2014/#!doc/reg-mem

  Are you sure? yes | no

Yann Guidon / YGDES wrote 11/07/2015 at 00:36 point

@Dave Vandenbout

The 4014 are here and I play with them: https://hackaday.io/project/8121-discrete-yasep/log/27617-hexadecimal-7-segments-display-continued

Think about it next time you add a digit display to your PCB :-)

  Are you sure? yes | no

Dave Vandenbout wrote 11/08/2015 at 15:07 point

Thanks, those look good.

  Are you sure? yes | no

Yann Guidon / YGDES wrote 10/23/2015 at 23:44 point

ICM7218 : interesting and it could more or less work but I would need 4 of them and they are not as cheap as a dumb HC part.

MM74C917N : same deal. Interesting but I would need 4 of them...

MC14494, MC14495 : rare, not SOIC available...

D346D : this board haz it : http://www.nostalcomp.cz/cpu1802.php but nobody else...

How many diodes will it take to decode this code ? :-D That would be in the spirit of this project but i am concerned about the required surface. Overall I need 3 decoders, I would use SMD diodes so it will not look like this https://hackaday.io/project/6668-aytabtu-discrete-computer/log/21252-a-4-to-16-decoder-board but not far...

Time to find some existing conversion matrices on google image.

  Are you sure? yes | no

Yann Guidon / YGDES wrote 10/24/2015 at 00:04 point

34 diodes ! There is a trick though :-P

  Are you sure? yes | no

Andrew Starr wrote 10/22/2015 at 07:59 point

Of course :) There'll be switches for halt/run/single step, reset, clock speed selection and so on

  Are you sure? yes | no

Yann Guidon / YGDES wrote 10/22/2015 at 08:02 point

I can't wait to see it working !
The architecture and programming handbook must also be written and published ;-)

  Are you sure? yes | no

Andrew Starr wrote 10/22/2015 at 06:22 point

The DM9368 is available on ebay, also what about the ICM7211 - too big?

  Are you sure? yes | no

Yann Guidon / YGDES wrote 10/22/2015 at 06:50 point

DM9368 : very obsolete, not available in SOIC, not really cheap and nobody can tell how long the brokers will stock it.

ICM7212(M) looks interesting, it's bulky but I might give it a try for the first proto board. I'm OK with a $8 chip for the first proto but I'm looking for something cheaper and SMT for "the real system".

BTW what did you come up with for the "console" of your T-1 ? :-)

  Are you sure? yes | no

Yann Guidon / YGDES wrote 10/22/2015 at 07:08 point

ICM7212 : beware of not using a "A" variant (not hexadecimal).
It's also "common anode", I wanted to select/drive the 6 rows with a N-MOSFET so I must find P-MOSFETs

I'm not sure how to drive multiple rows without flicker, the timing could become too complex. The "nibble" interface requires an external MUX chip and more scheduling...

HT1632C could work but 1) there is no 7 segments decoder 2) the interface is serial, not nibble or bytes...

  Are you sure? yes | no

Andrew Starr wrote 10/22/2015 at 07:26 point

Just LEDs to display the register data, but mounted in a laser-etched acrylic panel (some colour scheme suitably 60s-70s) and I'll build a discrete uart for console i/o.

  Are you sure? yes | no

Yann Guidon / YGDES wrote 10/22/2015 at 07:30 point

That sounds awesome ! Will you add switches too ? ;-) who can resist toggle switches ? Not me :-D

  Are you sure? yes | no

Yann Guidon / YGDES wrote 10/21/2015 at 22:13 point

The LED segments issue is now considered solved. Dave, you're welcome to use that trick in your next boards too ;-)
But the 7 segments binary converter is still an issue... (I want it to be CMOS, SOIC, fixed-function and cheap)

  Are you sure? yes | no

Yann Guidon / YGDES wrote 10/21/2015 at 21:15 point

Found it !

Thank you Dave, I tweaked the search parameters and found a "3014" LED format in the search results. Almost there !

According the my caliper, it's 4mm long so I tried 4014. Bingo !

http://www.lumileds.com/products/luxeon-mid-power/luxeon-4014

http://buyersguide.ledsmagazine.com/guangzhou-hongli-optoelectronic-co-ltd/p/smd-led-4014-02w-lm80.html

http://www.osram-os.com/osram_os/en/press/press-releases/led-for-automotive,-consumer,-industry/2014/extremely-low-profile-synios-e4014-leds-makes-it-easier-to-implement-design-ideas/index.jsp

etc.

I'll try to source a bunch of them and make a prototype ;-)

But the other question remains : how can I find bin->7 segments that does a correct hexadecimal conversion in SOIC ?

I'll probably end up using a diodes array :-D

  Are you sure? yes | no

Dave Vandenbout wrote 10/21/2015 at 20:40 point

If you haven't found it already, here's something that looks similar:

http://www.aliexpress.com/item/5730-SMD-High-Bright-LED-for-bulb-lamps-cornLights-0-5W-55-60LM-3-3-4V/1980469977.html

They're about 6mm long and cost around $5 USD for 100.

These are high-brightness LEDs. They may be too bright for your application, but maybe you can find something dimmer with a similar form factor. Or use a big current-limiting resistor.

  Are you sure? yes | no

Yann Guidon / YGDES wrote 10/21/2015 at 20:45 point

Thanks for the link !
I've seen similar things on eBay, they have appeared on the market a few years ago.
However the ultra-narrow white LED must have been mass-produced for at least 6 years yet I've never seen them sold separately...
(I've gotten them on broken laptop screens 4 years ago, add 1 year of use and 1 year of fabrication/distribution latency...)

The LED hunt season is open !

Meanwhile I'll use more mundane methods...

  Are you sure? yes | no

Yann Guidon / YGDES wrote 10/21/2015 at 21:35 point

Dave, that's the link I sent 20 minutes ago ;-)

Now I'm searching vendors...

  Are you sure? yes | no

Dave Vandenbout wrote 10/21/2015 at 13:52 point

Yes, those look good! The problem with the 0603 LEDs I used is they are too "point-like". 

  Are you sure? yes | no

Yann Guidon / YGDES wrote 10/21/2015 at 15:37 point

Now if I knew how to find those very narrow LEDs... I don't even know their format/package code/name :-(

  Are you sure? yes | no

Dave Vandenbout wrote 10/21/2015 at 05:08 point

As for using 0603 LEDs for the 7-segment displays: I did that for the XSA-3S1000 Board (http://www.xess.com/shop/product/xsa-3s1000/) and it pretty-much looks like shit. You really need the diffusers over the LEDs to make an easy-to-read digit. The only advantage is the 0603 LEDs are so easy to get from anywhere.

  Are you sure? yes | no

Yann Guidon / YGDES wrote 10/21/2015 at 06:03 point

Thanks for the hints.
This is going to be quite a challenge.
However there could be hope on the horizon...
Several years ago (2011 ?), I have discovered these LEDs while disassembling a laptop's LCD backlight :

These LED are almost perfect for my purpose.
The caliper says it's about 4.0 or 3.9mm × 1.5 or 1.4mm wide.
I can't find any source for "new" chips, I can desolder tens or a hundred of them but I'd rather find a good "new" source... Any hint ? Google is clueless...

BTW your "7 segments" display is actually "7 dots". The red SMT LEDs I intend to use would be paralleled, maybe 2 or 3 to make a small stick...

Cheers !

  Are you sure? yes | no