1 Description
This 10 cm x 10 cm PCB will serve as Single Board Computer now, to develope software for display VGA/RCA based 40x25 character screen (and maybe later 320x200 graphics), managing PS/2 keyboard, SD card, USB Serial communication (with RTS/CTS flow controll) and maybe also other SPI and I2C periferials (like RTC). It will use external RAM and while developing it will also use FORTH as main system/language. Finally it will serve as graphic and I/O card for 8bit computer based on HD6309 processor.
This is second PCB (so MHF-002), with more than 75 improvements over previous PCB (called MHF-001).
PCBway.com generously sponsored manufacturing both those boards. Their work is flawless, easy to use, easy to solder/desolder and repeatedly resolder chips while testing different configuration and software options. Those improvements are result of actually using the MHF-001 board and adress discovered flaws in my design. Even with lot of reworks no trace nor pad was damaged during the tests
2 Details
2.1 Current status:
MHF-001 proved, that VGA signal can be generated clean and stable. Due bad PORTs assignment was characters little distorted, this should be fixed on this new card. Also I failed to solder the external RAM perfectly, due footprints oriented for machine work, not hand soldering, so it sometime worked, sometime not and preesig it by hand improved the chace for right results. New version have much longer pads on footprints, which I can solder reliably.
More similar improvements was discovered over time, but basicaly I was able somehow confirm all wanted features.
Software needs be rewritten for new port usage and for better functionality. It is just matter of time and effort.
FORTH helped very much, as it allows interactivelly program the atmega over keyboard or serial line, without recompiling and uploading everything from start for any and every action wanted. Interactivity simply rules :)
Main idea for this card is to share 128kB RAM with the HD6309 computer, where it will be mapped to one or two 8kB windows and let the CPU fill commands and data in on its own pace, then map the RAM to MCU (ATmega) and read (and execute) everything on its own pace. This will enable high throuhtput at cost of little latency added and paralel work of both systems.
Generating of VGA signal needs like 90% of time on MCU and it runs in Interrupt routine, to provide needed regularity. The rest of time is used for everything else. CPU is not bothered with such details and runs all the time at full speed.
I do work on this project from begining of 2024 (so nearly two years) and it goes forward slowly, but surly. Now I estimate like another year is needed to explore this card and turn to building the CPU part.
3 Building MHF-002 step by step
I first time just took parts from Arduino Mega Pro and solder them to the PCB at right places, then I tested I it works and it worked.
Then I added one subsystem at time and tested that. This way it was not too much complicated and I wrote SW for each test extra. Also it makes more familiarity with the whole system, as it is build by logical steps.
Problem is, that smaller parts are difficult to solder, when larger parts are already there.
Building it easier way
Decide, which all subsystems are to be used, then solder the MCU first, then the RAMs, then the SMD caps and resistors and diodes, then ICs, then normal caps, then connectors, modules and pinheaders.
Submodules links
Each submodule have its own description in logs. There is also schema, and top and bottom view where the parts mentioned are shown in green. Still is recomended to use KiCad and the full project files as main reference, but this should help with orientation.
- RAM (External + Shared)
- SD Card + SPI + ISCP
- Serial+USB
- PS/2
- Composite output
- VGA
- Debug LEDs
- How it started
MHF-002