# OSHW-System-On-Module ## Abstraction Fabrication of Printed Circuit Boards ("PCBs") is not very economical as the cost of fabrication raises (among others) with size and the amount of layers and addition to that it also often requires to sign an NDA (such as with NXP) and/or restriction on release of important documents (documentation, reference schematics and gerbers) and often the sources for the product iself (e.g. [OLIMEX RK3328-SOM-1G](https://www.olimex.com/Products/SOM/RK3328/RK3328-SOM-1G)) Which is a limiting factor for Open-Source Hardware (OSHW) development that I want to address. ## Idea The inspiration comes from OLIMEX's SODIMM-204 project which is a solution of two PCBs: **Module Board** Board with 4~12+ layers of restricted size that includes the chip, RAM and optionally chip-specific components such as the [OLIMEX A20-SOM204](https://www.olimex.com/Products/SOM204/A20/A20-SOM204): ![image](https://git.dotya.ml/attachments/612f40b3-91d0-48e3-bb4d-d6cfc680e335) Notice that it's a PCB with restricted size that only has the chip, RAM, eMMC, SDCard and then has an edge connector to fit in SODIM-204 connector. For clarity it's this connector, often used for RAM sticks in notebooks: ![image](https://git.dotya.ml/attachments/5281a7b2-4c1a-4511-af1b-db5b8706a04a) **Platform Board (Evaluation Board)** Board with SODIMM-204 connector that the Module Board slots in such as the [OLIMEX A20-SOM204-EVB](https://www.olimex.com/Products/SOM204/A20-SOM204-EVB) which then adds various devices (Ethernet, PCIe, GPIO, Battery, HDMI, etc..) ![image](https://git.dotya.ml/attachments/5b7e32aa-e58e-453c-8195-7baa3bce57bb) which declares the standard for the DDR3 SODIMM 204 pin connector as: ![image](https://git.dotya.ml/attachments/5208894f-6201-4870-86be-59ace8b0ab7a) that can then be used to design anything from drones, tablets, cluster servers, etc.. on a platform board PCB that is 1~4 layers and costs around 25 EUR to fabricate. This effectically allows us to make variety of OSHW projects very economically that use hardware comparable to those in raspberry pi and beyond which integrates on difficulty of changing the RAM in a common notebook. ### Use of proprietary module boards Additionally many chips are near impossible to get as OSHW-compatible due to consumer-hostile business plan and strategy until the chip reaches it's peak economical cycle and becomes obsolete. To allow us to use better hardware this would allow the module boards to be produced in batches of 1000+ to keep the cost down while not affecting the hackability and flexibility of the OSHW project as the user can always use OSHW Module Board and only have the option to use proprietary module board until it's manufacturer decides to release the required documents (documentation for the chips, reference schematics/design, etc..) ## Issue 204 pins is not enough which eventually lead to OLIMEX using non-standardized headers per chip that break portability such as the [OLIMEX A20-SOM-EVB](https://www.olimex.com/Products/SOM/A20/A20-SOM-EVB/open-source-hardware) Using 240 pins. The obvious solution would be to use DDR5 SODIMM which has 262pins, but that still feels like using the wrong tool for the job -> Is there a better connecting solution for this usecase? ## Possible solutions ### Use of Edge Connectors on Single Board Computers ("SBCs") boards Lets imagine that we have [OLIMEX OlinuXino-A64](https://www.olimex.com/Products/OLinuXino/A64/A64-OLinuXino/open-source-hardware) board as an example: ![image](https://git.dotya.ml/attachments/15b998d5-eaa8-49bb-8a8b-6bf33adf88e6) Imagine having an edge connector.. For clarity edge connector are contact points on the edge of PCBs designed to slot into a connector, often used on PCIe x16 graphics cards used for desktop computers: ![image](https://git.dotya.ml/attachments/54bd7c9b-b9d6-49ac-9965-5e1fb7d6ee55) .. on one side: ![image](https://git.dotya.ml/attachments/3117b88e-9936-465b-adf7-7b9664da5adb) (note that contacts are on both sides of the PCB) This would efectivelly enable OSHW manufacturers to adjust their SBCs so that they can be slotted in this solution. The issue with this solution is that the edge connectors have to have a bevelled edge to help guide them to the connector: ![image](https://git.dotya.ml/attachments/f596d7db-ce35-49f9-8584-ff8e0fcc1ad5) which adds extra cost (seems to be a minor added cost for fabrication) ### Additional Notes Originally discussed in https://git.dotya.ml/kreyren/kreyren/issues/75 ### References 1. OLIMEX's SOM204 platform on GitHub -- https://github.com/OLIMEX/SOM204/blob/master/SOM204-EVB/SOM204_EVB_Platform.pdf 2. Explanation to what is an edge connector by eurocircuits -- https://www.eurocircuits.com/pcb-design-guidelines/edge-connectors