Quantcast
Channel: Welldone Blog » Robert Feranec
Viewing all 256 articles
Browse latest View live

TOP 3 Welldone Blog Videos

$
0
0

WOOW, we have reached 100 Posts on Welldone Blog and 400 000 Views on Youtube. Thank you guys!

Here are the TOP 3 HW Design Videos

Altium Designer Tutorial: Start Schematic & PCB Layout (39 195 Views, 91 Likes)

Altium Designer – 3D model of your PCB – it’s really easy (31 345 Views, 56 Likes)

Altium Designer Tutorial – Create 3D component / footprint (16 620 Views, 19 Likes)

BONUS: Here is the TOP video :)

DIY pig grill + How to roast a whole pig recipe (135 516 Views)


PCB Layout Fast Forward – DDR3 Memory

$
0
0

A unique view on PCB layout process. Screenshots captured during iMX6 Module design … and more will come :)

Martin has just graduated and I am helping him to learn HW design. This is all his work – well done Martin!

iMX6 Rex module is an open source hardware project based on Freescale iMX6 processor. It’s smaller then a credit card with CPU up to 1.2GHz / 4core and 4GB DDR3-1066 memory. You can download Schematic & PCB files for free. Have a look at: http://www.imx6rex.com

PCB Layout Planning – How to decide on what Layers should we use

$
0
0

WOW – Planning layout, that sounds really scary :) but it can actually save you a lot of time. This video will show you, how you can do it with your next project. Let me know what you think about it :)

FEDEVEL Academy: Schematic & PCB Design Course – Starting now

$
0
0

Thank you everyone for supporting this blog and our courses. We would not exists without you! – Robert

How to register for the Schematic & PCB Design Course?

Step 1: Register at FEDEVEL Academy website – Click here

Step 2: Login to the FEDEVEL Academy website – Click here

Step 3: Select your course and pay (you will need to be logged in) – Click here

Find out more about this course in this short (2 minutes) introduction video

Design your own Intel x86 motherboard

PCB Soldering with a Hot Air Gun

$
0
0

How to solder BGA and QFN components at home or at your LAB with inexpensive hot air gun?

I made this video tutorial for you, so you can try it by yourself.

x86 Custom Board Design – How long it takes?

$
0
0

I am always curious to see some statistics from projects I have done. As I book all my hours into a system, it’s not very difficult to prepare some interesting graphs. Here they are ….

“Once you have got your prototype you are only on half of the way to get your product.”

What is so interesting on these graphs?
- PCB Layout takes 1/3 of Prototype design
- The non design work (Testing, debugging, emails, manufacturing, documentation) takes another 1/3 of time
- Once you have got your prototype (Schematic + Libraries + PCB), you still have a lot of work to do. You have actually done only 63% of prototype design and you are only on half of the way to get your product!

Note: All these data are based on a real project, a high density and highly customized x86 board very different from the reference circuit.

10 Tips for Better Schematic Checking – Processor Boards

$
0
0

1 ) Tricky power
Be aware of the power rail, which powers a particular pin. A wrong connection can cause current leaking, not defined signal level or can prevent board from booting. Check how the pin is connected inside the chip – is there a pull up/down, is there a protection diode, ….?

Useful TIP:
Always have an option to disable on board watchdog reset.

2 ) Input pins
Be sure, all input pins have defined level (if unconnected, check if internal pull up/down is used). Be sure, the pin level is what you expect.

Useful TIP:
Use series termination resistor on CLOCK signals, place it close to the clock output.

3 ) Buffer type
Be aware of different buffer types. For example, differential pair clocks can have different voltage levels or impedances.

4 ) Reset timing
Be aware of the longest required reset timing in your board. Not meeting this requirement may prevent a chip from working properly.

5 ) Power rail
Be sure you always check required voltage level. Some power pins require unusual voltage levels.

6 ) Maximum current
Always check if your power supply can deliver required current. Don’t forget to make sum of currents flowing to all peripherals connected to one power rail.

Useful TIP:
Always check if your power pins are actually connected to power. Sometimes happen, you may forget to change the power net name when you copy it from reference schematic.

7 ) Double check voltage dividers
If a voltage divider is used to set output voltage of a regulator, be sure you double check resistor values. You don’t want to damage your board with higher voltage.

8 ) Tricky “power” pins
Some pins don’t appear as power pins, but may have unusual requirements e.g. “VBUS – Connect directly to 5V”

9 ) Read Errata
Errata document describes known bugs of a chip – and some of the errata are really important.

10 ) Use Checklist
Some chip manufacturers provides Schematic / Layout / Design checklists. When you finish your schematic, don’t forget to read them.

Following video shows some examples:

Here you can download the iMX6 Rex Altium Project files: http://www.imx6rex.com/


Altium – How to Create Net Class and Differential Pair Class

$
0
0

Why to create a NetClass?
Net Classes are very useful during layout – by one click you can select whole interface (e.g. UART1, SD card, …. ) or a group of special signals (DATA BANK 0, 1, 2, …). You can also apply some rules on particular class (e.g. minimum track width, clearance, length, …)

Why to create a Differential Pair Class?
Differential Pair Classes are needed in case you are setting up rules for differential pairs. Differential pair rules will not work with standard NetClass.

This video explains how you can set up NetClasses and Differential Pair Classes

Online Advanced PCB Layout Course, by Motherboard Designer

$
0
0

Hi, I am thinking to share my knowledge from motherboard and processor board design. Would you be interested?

What & How will you learn

You will learn how to do Advanced PCB Layout (CPU, DDR3, PCIE, SATA, Ethernet, …).

You will be practising the layout by actually doing it. All the important things will be explained in the tutoring videos. You will be practising layout on a real project.

Layout Examples from the course

Content of the course

  • Placement (CPU, memories, power supplies, connectors, protection, …)
  • Layout & Power distribution planning (how and why to place the key components certain ways)
  • Fanouts and Placement under CPU / FPGA (how to do placement and fanout in hight density areas)
  • DDR2 / DDR3 memory layout (how to do memory layout)
  • General Layout (tips and tricks)
  • Stackup (how to choose and design High Density Interconnect HDI stackup)
  • Impedances (how to calculate impedances)
  • High speed design rules (how to do layout for PCIE, SATA, USB, LVDS, SDVO, … )
  • Finishing & Improving Layout (power distribution, power planes, improving individual nets)
  • DDR2 / DDR3 Memory length matching (important parameters & how to do the length matching)
  • PCB checking (final PCB checking)
  • Generating manufacturing documentation (how to generate professional output documentation)

More information

Schedule
The end of 2013 or beginning of 2014

Duration / Workload
10 Lessons. Each lesson with around 1 hour of tutoring video (watch when it’s best for you) + activities for practising.

About Instructor
Robert Feranec (37), started designing advanced boards during PhD study. He designed his first Linux OS running board in 2002 and his first x86 board in 2004. Next 5 years (2005-2010), Robert spent in the UK designing processor boards. Since 2010 he has been working for different clients around the world as an independent contractor. Robert’s skills and knowledge are in designing Schematic and doing PCB layout for advanced digital boards such motherboards or processor boards.

Survery form

Nothing beats sticky notes :)

Community website for HW Design

$
0
0

Did you hear about SnapEDA?

Great idea – FREE CAD library, schematic symbols, simulation models, reference designs, professional network, manufacturing, …. I am very curious where this project will go.

Read more about the project at TechCrunch.

3 STEPS How to determine / calculate number of PCB layers

$
0
0

STEP 1: Choose initial number of layers

1 or 2 Layer PCBs – Home prototyping
Use 1 or 2 Layer PCB only for very simple boards, breakouts or for some circuits which you are making at home. Don’t use 1 or 2 layer PCBs for interfaces with controlled impedance (USB, Ethernet, LVDS, …). In this case, use at least 4 layer PCB.

4 Layer PCB – Simple or cheap boards & breakouts
If possible, always use at least 4 layer PCB. There is not much difference in cost between 2 and 4 layer PCBs, but 4 layer PCB is much better. Recommended for breakouts, small and simple boards. Don’t use for CPU boards with memory interface, but it’s fine for Base boards or some microcontroller boards.

6 Layer PCB – Cheap and large boards
Some PC motherboards are built on 6 Layer PCBs. Suitable for very high quantity and/or large boards.

8 Layer PCB – Cost effective
There is not big difference in price between 8 Layer or 10 layer PCB, but 10 Layer PCB is better.

10 Layer PCB – Suitable for SODIMM computer on module
This is normally maximum number of layers which fits into 1mm thick SODIMM socket. Comparing to 8 layer PCB, this 10 Layer PCB provides additional space for power planes in designs with many power domains.

12 Layers – Heavy industry boards or boards with may tracks
I use 12 layer stackup a lot – especially for industrial PC designs. Price is still reasonable and this PCB offers 4 solid ground planes or two additional signal layers.

STEP 2: Start layout

  1. Start with TOP & BOTTOM signal layers.
  2. If your design has too many connections or uses high speed signals, add 2 more inner signal layers. Start layout and try to fit everything into these 4 layers (top and bottom + 2 inner layers).
  3. If you see:
    1. that you need a little bit more space, mix your power plane layer(s) with not important or slow signals,
    2. that you need a lot of space, add two more signal layers.

I do not know any calculator to calculate number of PCB layers. Simply, use the steps I described and your own intuition. Hovewer, sometimes it may be hard to determine the smallest size of your PCB. Even this can not be calculated, as it depends on too many factors (PCB stackup, PCB technology – VIAs / uVIAs / Burried VIAs / minimum track width / clearance, number of components, placement, …..)

STEP 3: PCB Layer ordering

Of course, there are many options to order your PCB layers. I have used these in my designs. Note: One of the main reasons why I prefer to use GND as the second layer is shielding. This layer creates solid GND shield from the high speed signals running inside PCB.

  • 12 layer stackup – 4 GNDs
    I use this stackup a lot, provides GND shielding of high speed signals and has tightly coupled Power-Ground planes:
    Signal / Solid GND plane / High speed signals and important buses / Solid GND plane / Power / Power or Mixed with signals / Power or Mixed with signals / Power / Solid GND plane / High speed signals and important buses / Solid GND plane / Signal
  • 12 layer stackup – two additional signal layers
    Signal / Solid GND plane / Signal / Signal / Solid Power Plane / Power or Mixed with signals / Power or Mixed with signals / Solid Power Plane / Signal / Signal / Solid GND plane / Signal
  • 10 layer stackup
    I sometimes use this:
    Signal / Solid GND / High speed signals and important buses / Solid Power or Solid GND / Power or Mixed with signals / Power or Mixed with signals / Solid Power or Solid GND / High speed signals and important buses / Solid GND / Signal
  • 8 layer stackup
    I dont use this very often. There are many options:
    Signal / GND / Signal / Power / Power / Signal / GND / Signal
  • 6 layer stackup
    I normally don’t use this. Here is an example of layer ordering:
    Signals / GND / Power or Mixed with signals / Power or Mixed with signals / GND / Signals
  • 4 layer stackup
    I use this quite often:
    Important Signals / GND / Power / Signals

Download High Speed Altium Project with DDR3, PCIE, SATA, HDMI, LVDS, …

$
0
0


Complete Altium files can be downloaded at http://www.imx6rex.com/

It’s our open source project: based on Freescale i.MX6 CPU, 12 Layer High Speed Design with micro VIAs, DDR3, SATA, PCIE, Gb Ethernet, HDMI, LVDS, …

If you would like to participate and get some hardware / software experience, you are welcome. Do you have a good idea? You can design your own baseboard and we will build the most interesting ones – we will pay for the production! Send me a message or leave a comment.

Working on an open source project gives you an exposure and if you are looking for a better job, it tells your future employer, that you really like what you do. And you are good at it.

Hardware Design Directory Template

$
0
0

Visual version of the FEDEVEL Directory Template.
This directory template helps you organize your documentation. It also helps engineers to generate high standards and consistent outputs. Download latest template here and PDF Directory Template document here.

Thank you to Guillermo for the idea of creating this visual diagram of the directory structure :)


i.MX6 Module Layout – Complete PCB Routing [Video]

$
0
0

This video shows complete layout process of a module based on iMX6 Freescale CPU.

What you can see:
0:08 – 0:11 Memory fanouts
0:11 – 0:16 Processor fanouts, component placement under CPU
0:16 – 0:25 Two data banks of DDR3 are routed
0:25 – 0:29 Clocks, Command & Control signals of DDR3 are routed
0:29 – 0:34 Other two data banks of DDR3 are routed
0:34 – 0:39 CPU fanout, Ethernet fanout
0:39 – 0:41 HDMI routing
0:41 – 0:54 Connecting Ethernet and the top connector (UART, SD, USB, …)
0:54 – 1:10 Connecting the bottom connector (LVDS, PCIE, SATA, …)
1:10 – 1:25 Length matching
1:25 – 1:33 Creating Power planes

If you are interested, you can download this PCB layout files in Altium Designer from http://www.imx6rex.com/ – It’s free :)

8 Steps to Bring up your Board to Life

$
0
0

This is a real video, from bringing up iMX6 Rex board to Life.

Step 1: Visual inspection

What to look for:

  • if all the the components for your VARIANT are correctly fitted,
  • if all the pin 1 are placed correctly,
  • if there are no visible short circuits between pads,
  • if pads are soldered with a good quality (QFN pads, connectors with a small pitch… )

Tip: Print out Assembly drawing with all the components and testpoints

Step 2: Measure impedance on power rails

Go through all the power rails and measure impedance between 0R and a power rail. There must not be 0 OHM – that would be a short circuit.

Tip: Some power rails may have very low impedance e.g. CPU core voltage, memories, …. 20OHMs, 40OHMs, 90OHMs … don’t be surprised.

Step 3: Connect power supply for the very first time

  • double check voltage output from your power supply (output level +5V, +12V, +24V, ….)
  • set your power supply current limit (always use power supply with limiting current e.g. 1A, 1.5A, …)
  • double check, if you have connected your board correctly (polarity + / -)
  • cover the board (in case something blow up e.g. if a capacitor is soldered the wrong way, it may very easily happen)
  • switch on the power
  • watch the maximum current, watch if current is changing or is stable (e.g. if it goes rappidly up, something may be wrong)
  • check component temperature with your finger (touch first all the integrated circuits, but try also passive components e.g. resistors, inductors and beads). Nothing should get very hot – if CPU goes very hot, use heatsink.

Step 4: Measure all the on board voltages

In this step check all the power rails.

Tip: Many times, you set output voltage through a resistor divider, so it’s very important you know you didnt make any mistake in calculation and all to powers are in tollerance.

Step 5: Measure crystals and oscillators

It’s very important you check all the crystals & oscillators. It may really happen, that some of the crystals may not start and board will not boot up.

Step 6: Upload firmware

We used Freescale MfgTool. If everything is working ok, after you connect your i.MX6 board to your PC (via USB), you will see a new USB device: HID-compliant device (USB input). Press “Start” to upload firmware into your board (you may want to check, what profile is used and what firmware will be uploaded). Watch the information about board current consumption. If everything goes ok, once the board starts booting, you will see the current fluctuation.

Step 7: Check Serial TX signal

Many times happen, that the RS232 cable that you use to connect your board with your PC is wrong (e.g. doesnt cross RX / TX signals correctly). It’s very good practise to measure TX activity directly on your CPU output. Connect an oscilloscope and when boards is booting, you will see some activity on the signal.

Step 8: Connect Console

This is the moment of the truth :) If everything is ok, you will see console output co

Tip: Very often, the default console settings are Baud rate: 115200 / Data: 8b / Parity: None / Stop: 1b / Flow control: None

Tip: Mark each board with a sticker and a number

Use a sticker and write down board number, so you can easily identify the boards. Keep making notes about each board in a document or on a paper (e.g. if you see something unusual about the board – write it down, something doesn’t work – write it down, …).
Note: Some boards will come with a serial number sticker from production, so you don’t have to do this step.

For the very first testing, use the board which looks the best e.g. best soldered and everything looks ok.

A great video from Assembling one of our boards

$
0
0

A big thank you to our assembly house AMSET for taking this video and building high quality boards. Enjoy this 1 minute video :)

How does ARM boot?

$
0
0

There are some differences between processors, but concept stays similar.

Step 1: Internal bootloader

Based on bootstrap resistors (or/and eFuses) an internal bootloader (stored in CPU ROM) determines what peripheral will be used for booting (NAND, SD card, SATA, SPI, Ethernet, ….). From this peripheral a small code (bootloader) is downloaded to internal CPU SRAM and started.

Tip: Often, the same internal bootloader can be used to download an image over serial port or USB and execute it. This is very useful during the initial stage of development (e.g. it’s possible to start a board with no firmware, booted it up and FLASH a firmware to the onboard memory).

Note: eFuses are used for some CPUs (e.g. Freescale processors). An eFuse defines some advanced boot settings (e.g. “boot from the SPI memory chip connected to SPI port 3 and chipselect 2″). Be aware, once an eFuse is programmed to 1, it can not be changed back to 0.

Step 2: Bootloader

The main purpose of the Bootloader is initialize DRAM and the peripherals needed for OS booting. The OS files are then downloaded from a peripheral (NAND, SD card, SATA, SPI, Ethernet, ….) to DRAM and executed.

Tip: Bootloader has some basic commands which can be used for debugging / testing (e.g. read / write memory, loading images to ram, starting images, …). Bootloader also keeps some parameters, which are later used to start OS (such: what serial port is used for OS output, memory size, file system info, video output info …..)

Step 3: OS

At this stage, the OS is loaded and started.

Note: There are differences between OS. Generally, Linux has two parts called Kernel and file system (Kernel is the OS itself, File System is the part where all the files are located).

Watch the practical demonstration in this 6 minutes video

4 STEPS How to verify DDR3 memory layout of your board – using a software

$
0
0

What is the best way to test DDR3 interface by running a memory test?

STEP 1: Do DDR3 calibration

Before you start with any testing, be sure you did DDR3 calibration. Every layout is different and needs specific settings in DDR3 controller registers. Run a calibration tool (often provided by chipset / cpu chip manufacturer). Here are screenshots of running diagnostic tools for an AMD design (from BIOS) and for Freescale design (an calibration utility):

The calibration tool basically goes through different memory settings from when they dont work – through when they work – and then when they dont work again. Based on the measurement, the tool suggest the correct values for DDR3 registers.

STEP 2: Do Basic testing

Run your board with a memory test in your lab for couple of days. For all boards (x86 and ARM boards) I use standard memory test and its variants: memtest86, memtester, … These software run some preprogrammed patterns to stress the memory interfaces to maximum. If there is a problem, this software will find it.

STEP 3: Do Extended testing

Place several boards (minimum 5 is recommend) in an environmental chamber. Run memory test for at least 48h. Change temperature in cycles between -40 + 60 (or what is your board maximum temperature). There must be no errors.

STEP 4: Do Long run test

Leave your board running memory test for weeks (months). Be sure you backup your main power source in case of electricity interruption (otherwise you will need to start again).

Summary

  • if your board passes 1 loop of running memory test – that means nothing
  • if your board passes 2h of running memory test – that means nothing
  • if your board passes 24h of running memory test – that looks promising
  • if your board passes 1 week of running memory test – that looks good
  • if 5 of your boards passes 2 days of running memory test in environmental chamber changing temperature in cycles – your layout is good

Other methods of DDR3 testing

There are two other most obvious methods of verifying DDR3 memory layout, but these may not be an option for smaller companies:

Simulation
You need an expensive software and you need someone who understand it (who understand how to set it up, how to simulate and who can interpret the results). Possibly you can outsource the simulation, but it still cost a lot of money. Also, I have seen a board with great results from simulation and …. DDR3 problems.

Measurement
You need an expensive tool and layout which will support the measurements.

How do you verify DDR3 interface? Leave a comment …

Viewing all 256 articles
Browse latest View live