Contrary to the #Discrete YASEP I'm going the easy route with a fully integrated ALU.
So it will be the first time I actually USE a 74181 ALU ! After more than a year hearing about it and considering different approaches, this project makes perfect sense. Indeed, there is already a 5-bits field in the instruction for the ALU function, which maps directly to the 181's control signals.
For now I ignore if I'll use a '182 Carry Lookahead Generator. I like the simplicity of the carry chain system and I don't know if the '182 will significantly speed things up, but the options are open for experimentations (and I'm expecting delivery of the chips in the next weeks...).
So the 16-bits datapath contains 4×74HC181 (yes, CMOS, not F/S/LS...) and maybe one 74HC182.
But the function table of the 181 is ... weird ! I'll probably have to make some modifications in the control signals, with a PAL or, if I can, with a 74188 or 74187 PROM. Wait, can I find any similar product ? Can I source some oldfashioned PROM burner ? Or find the specs for burning the equivalent Soviet chips ?
Let's recap the functions that the ALU of the YGREC are meant to do:
- Logic group : the whole 16× ROP3 functions, made with a MUX16. I think the 181 does it.
- ADD/SUB group : ADD, ADDC, SUB, SUBB, MIN, MAX, CMP... ADDC and SUBB reuse the previous carry flag, there are SUB-based comparisons, but the 181 mixes the ADD/SUB logic with ROP2 logic...
So there is some design to do, to transcode the ALU function into the 181 codes. I've seen others covering it but I didn't bookmark the pages...