I'm doing a small Motorola 6809-based computer project, and since I'm a bit rusty when it comes to boolean algebra I'm wondering if I'm doing my address decoding a bit too complicated for my simple use case.
What I want to achieve is the memory mapping show below. I've divided it in this way since I have four ICs (2 x 62256 32K RAM, MC68B50 UART, 8K 28C64 ROM) mapped into memory.
0000-7FFF : 32K RAM (LO-RAM) 8000-BFFF : 16K RAM (HI-RAM) C000-DFFF : UART (minimally decoded) E000-FFFF : 8K ROM (monitor)
I'm thinking of using a 2-4 decoder to divide the upper 32K of memory where the first 16K reserved for the HI-RAM. For simplicity's sake I'm lazily mapping the UART into an entire 8K block, and using the last 8K block for the ROM.
I've drawn up the decoding logic as below which requires three 74-series logic which gets the job done but somehow feels like it could be reduced:
This if I'm thinking correctly would produce the following truth table which I believe corresponds to my memory map:
Am I making this more complicated than it needs to be? Could I reduce the memory decoding logic?