Design review for MX6 single board computer - Page 1
Forum section: electronics / projects

author: datasheet
author_rank: Newbie
timestamp: November 06, 2022, 04:32:30 pm
content: Hey, I am new here. I have asked for reviews on Reddit in the past, but I was told this is a good place for more advanced stuff. I was inspired by a Jay Carlson blog post to make a 50x50mm single-board computer based on the NXP iMX6, for which I got free samples. I'm using JLC's impedance controlled 4 layers stackup: signal, power/GND, power/GND, signal. I decided on the small dimensions and not using 6 layers for the challenge and to save on costs. The PCB was designed in KiCAD 6, all the files are available below for review. Total board cost is around 25 CAD$.The board is powered through a dedicated USB-C connector. An input load switch is used to limit inrush current, current limiting, reverse protection, etc. A 3-channel buck converter (RT7273) creates the 3.3V, 1.8V, and 1.375V power rails from VBUS. There's current sensing on each rail using an amplifier and the MX6 ADC.The processor (MCIMX6Y7DVM09AB) runs at 900 MHz, which requires a 1.375V core voltage. Power sequencing for the different rails is done with the buck converter. The power good flag (active high) controls the reset pin (active low). I've used about 30% less decoupling than recommended by the manufacturer due to space constraints.The processor is connected to a single 512MB DDR3L x16 device (Samsung K4B4G1646E). A lot of swapping was involved during routing: byte groups are swapped and nearly all data lines within a byte were swapped. No attempt has been made to length match any traces since they are very short (all under 30mm) and the device operates at only 400MHz while being rated for 933MHz. Also the trace impedance is closer to 70Ω than 50Ω but I needed thin traces for space so I chose to ignore it. The DDR is powered by the 1.375V rail.The board also includes a 8GB eMMC 5.1 device. There's no special reason why I decided to include it other than to have the chance to try it. I'm a bit worried about the fine BGA pitch (0.5mm), but worse case scenario I'll just remove it and rely on the micro SD card slot. I've had to use NC pins for routing, and while the datasheet doesn't say anything about it, several sources indicate that it should be fine. The eMMC runs on 1.8V IO and 3.3V core voltages.There's an Ethernet port with a 100Mbps PHY (LAN8720A, RMII) and a RJ45 magjack. This is the only place where I've used series termination resistors though I'm not sure they are necessary. The PHY runs on 3.3V IO and core voltages.Finally there's 2 USB 2.0 device ports (USB-C). The ADC is connected to the CC pins of the input power receptable to know the current capability of the power supply, in order to limit current to USB devices to 50 mA if that capability is below 1.5A (hence the load switch per USB port).I've picked unused processor pins for the GPIO header as to maximize the number of usable peripherals (UART, SPI, I2C, PWM, ADC). I've also used analog switches for current sensing to leave more ADC inputs to the header. All connectors except the GPIO header have TVS protection on them.A power tree is available on the main schematic, which indicates a maximum input current of 2A. This is probably much higher than actually achievable since the processor, DRAM, eMMC, SD card, Ethernet and USB devices can't all be at maximum capacity all at once. I expect the maximum current to be at most 1.5A.I appreciate any input on the design!Files:3D render PDFSchematic PDFPCB PDFKiCAD project & datasheets

author: DC1MC
author_rank: Super Contributor
timestamp: November 06, 2022, 05:08:14 pm
content: Hi, on a quick look the schematic and design sounds solid, the only thing that is a bit unclear IMHO is the choice of PMIC, why not a dedicated NXP one link PM3000/3001?This power measurement stuff, is it really need it ?In any case, if you materialize this board, I can help you with the bring-up, is kind of my day job.Cheers,DC1MC

author: datasheet
author_rank: Newbie
timestamp: November 06, 2022, 07:31:25 pm
content: Quote from: DC1MC on November 06, 2022, 05:08:14 pmTo be honest I chose the cheapest part on LCSC that filled my requirements. I hadn't checked the NXP PMIC dedicated for the MX6, but they seem a bit overkill. 14 channels on the PF0100 when I need 3... A PMIC with a serial management interface would have been nice though.Quote from: DC1MC on November 06, 2022, 05:08:14 pmNo, I just thought it would be cool to have current measurements and I had space for it.

author: nctnico
author_rank: Super Contributor
timestamp: November 06, 2022, 07:36:20 pm
content: I'd leave the current sensing stuff out. The sensing resistors are too high and could impact power delivery performance. I don't know for the iMX6 but later SOCs like to have an impedance below 20 mOhm on their power supplies.

author: coromonadalix
author_rank: Super Contributor
timestamp: November 06, 2022, 08:52:31 pm
content: hum you're gonna hate meWe are using mx6 boards and we are phasing them out, underpowered, outdated and the covid thing made pricing higher, we are creating a new pcb version with raspi ... less costlyi understand all of your projectfutur availabilityhow long you want to maintain it ? what will run on it etc .... BSP packages etc ... , the "os" is not in it ?? what will you use ? will it be under gpl ?You have tons of baseboard on the web, sure pricing is a thingbut now with the raspi world / ecosystemeven at your 25$ costboards cost are for qty of 100, 1000 ??And yes i would not add any current sensing / power measurements on this it could mess with a watchdog or a power supply startup sequence(s)

author: DC1MC
author_rank: Super Contributor
timestamp: November 06, 2022, 09:16:20 pm
content: Quote from: coromonadalix on November 06, 2022, 08:52:31 pmWow, so much wrong, where to start on, well, in no particular order:- Future availability: iMX6ULL has extended availability until 2032, that should be enough for everybody and I'm sure that by then nobody will never remember what was used in the 2022 year in RPi.- Support: There are TONS of fully supported BSPs, from Yocto to Buildroot and PTXDist, iMX6 is the one of the most most supported MCUs in U-Boot and Linux kernel.- Killer feature: the fully encrypted and signed firmware with HW root of trust, something that RPI doesn't have in any revision, that means, anybody can copy and "crack" your stuff and also compromise any crypto material that you'll use.Why does this matter: EU has adopted the miserable named: Cyber Resilience Act that mandates signed and encrypted firmware.- Anecdotal stuff: I have seen companies attempting to make commercial products of RPi, even using those Computing Modules, they were really laughed out of the room, except for some billboards and that's it. The safest way to be considered a joke is to start your sales and/or funding pitch with: "Yeah, we have this idea based on RPi platform..."@datasheet: If you want more power, consider also iMX8M or 8MM and eventually the new Nuvoton 35D1xx, they all support encrypted and signed images with HW anchor of trust and can be safely used in products that will not be copied in the next 5min. Also available in industrial and automotive temperature grades. Hell, there are even some suitable Rockchips if you need much multimedia.Cheers,DC1MC

author: datasheet
author_rank: Newbie
timestamp: November 06, 2022, 10:06:12 pm
content: To be clear this is my first project using a microprocessor, so I started small. This is not meant to be a commercial project, it's purely for learning. MX6 apparently has good software support and is widely used, and I already have the free samples. The board will be manufactured in quantity of one, maybe two if I have enough pieces left. I don't expect this to be a powerful computer, in fact I'm fully aware that I could've bought a RPi Zero for 10$ instead of spending 150$ making a single, less powerful board. The 25$ thing is what it would cost me had I made significant quantities.I can remove the current measurement stuff, but with 10mΩ shunts and decoupling after I don't understand how it can be much of an issue.

author: nctnico
author_rank: Super Contributor
timestamp: November 06, 2022, 10:13:58 pm
content: 1A drops 10mV over a 10m Ohm shunt. At a supply voltage of 1.3V, that is almost 1% of margin you throw away. Dynamic voltage scaling (to make the processor run at various clock speeds can be steps as small as 50mV to make a difference between running stable at 800MHz or 1.2GHz. Don't underestimate the importance of the power distribution on a PCB where it comes to high speed SOCs and memory.

author: DC1MC
author_rank: Super Contributor
timestamp: November 06, 2022, 10:26:47 pm
content: Quote from: datasheet on November 06, 2022, 10:06:12 pmDon't let anybody discourage you, the real and CV experience for doing successful mainstream MCU board from scratch, with all involved is invaluable. Also very few things that are not immoral, illegal or makes you fatcould bring more of a satisfaction that comes when you have a board of your own concept running. One can get RPis and play with them for a while and then forget them in a drawer to collect dust, because are mostly useless for anything else than low-code/no-code/Python crowd and kids in school, you really don't become a better professional from your level playing with RPi.Regarding the current sensing resistors, leave them if you must, but drop the OP amps and just either use some larger parts or test-points to be able to either put scope probe or SMD twezzers to measure what you want. Also, if you want to do some analogue stuff, on the same PCB make some nice differential amplifiers for your DVM/Scope as detachable "biscuits" and you can reuse them on other projects, when you've done measuring replace the current sensing resistors with "real" 0ohm parts, there a lot of truth in the strange issues coming from hi-impedance power supplies. Also in place of the OP amps, put an RTC battery, see the app note and with the proper PMIC one can even go to a deep sleep more wit 6ULL.Cheers,DC1MC

author: datasheet
author_rank: Newbie
timestamp: November 07, 2022, 11:41:27 pm
content: Alright thanks. Would it be fine if I kept power measurement for on the 5V rail only? If I use a 5-10mΩ shunt and plenty of decoupling afterwards, worst case scenario I have a 20mV drop and not on a power rail used by the SoC. I admit power sensing on other rails is not very useful, but on the input supply I still think that would be nice to have.Quote from: nctnico on November 06, 2022, 10:13:58 pmI think I'll have to revise some of the inner traces. Most of them are around 1mm on 0.5oz copper, that means 10mΩ per cm, not great... Maybe I could increase the regulator voltage to 1.4V just to be sure.

author: nctnico
author_rank: Super Contributor
timestamp: November 08, 2022, 01:16:07 am
content: Always use poors when powering SOCs and memory and make sure to add enough decoupling capacitors using various values (like 10uf for bulk, 1uf, 100nf and 10nf) to create a wide frequency range where the power distribution network has a low impedance. Put the 10nf 0402 decoupling capacitors close to the SOC and memory. Typically I like to interconnect the decoupling capacitors where they are connected so the vias connecting them to the power plane are parallelled.