In this part we will take a look at the big picture of our system. So what is a big picture in terms of a embedded system? Right! A block diagram
We can see, that our system will be a bit rudimentary and has lack of many, today often seen features like HDMI, CSI, USB and many others.
Of course, we could also integrate all of these features. But the goal was to show you how to build a (basic) embedded system. The idea is, if you can design a basic board, then you have understood the principle and then you are able to extend further boards with this knowledge.
So lets discuss some of the blocks mentioned in the above picture.
JTAG is something OBD is for cars. It allows us to look deep into the processor, stops the execution of any running code, inject code into memory areas, manipulate bits in nearly every desired register and readout some bytes. Settings Breakpoints and debug misbehavior of our target.
This is the physical layer of our Ethernet network. This chip is responsible for doing the QAM modulation and demodulation. In fact it will do a lot more. But this would be out of scope of this post to discuss it here.
To make it easier to connect phy’s to targets, there are some established standards. One of them is RMII or MII. R stands for „reduced“ MII for „Media Independent Interface“. So re RMII uses less IO’s for its connection.
We will use the RMII interface for our interconnection between our i.MX6 and our PHY. I have choosen a KSZ8041 as the PHY. This Chip is relatively cheap and is widely available which makes it a good candidate for own projects. There is also a pin compatible pendant, the KSZ8081 available which has got some features.
Why should we use magnetic’s if there are jacks available on the market with already integrated magnetic’s (so called MagJacks)? The reason is: flexibility. At the beginning of this project, i was not sure what kind of problems i will have to face during the first start-up phase. Therefore i wanted to give me the maximum of flexibility. A nice side effect of this is, that the whole solution gets a bit less expensive.
The main memory for the processor. Not that much to say about it. It is as DDR3 type, so more cautious must be given during the routing process, since signal integrity topics come in place here. But don’t worry, we will discuss this topic here also.
The main memory for our operating system itself and the bootloader u-boot. We will use the generic SDIO interface of the processor with 4-Bit bus width.
This will, expect for JTAG, become the most important interface on our board. The serial interface will give us the possibility to send „heat beats“ out of our board at a very early stage. We will have regular UART’s with 3.3V logic and one USB-UART bridge on board.
Our board need different voltage sources. 3.3V for regular logic like PHY, SD-Card, GPIO and so on. The processors core will need 1.275V (depends on its run-mode) and our DDR3 memory will need 1.5V. And, of course, if we will use USB we need 5V. I have decided to first transform the incoming voltage to 5V and then go down to the other levels.
One of the more important blocks. Complex designs like this one often needs something called power sequencing. Power sequencing is a method where you bring up your voltage sources in a per-defined sequence. This is important for a correct behavior of all components and sometimes could destroy a device if you don’t follow its power up sequence exactly.
For many SOC’s (like the i.MX6 is one) there exists some special designed PMIC (power management ic’s). They could have some advantages in case they include also some buck boost converters. In our case, i decided to do all blocks as discrete as possible. So therefore i will design each power supply stage as a single buck converter. The PMIC in this case is only responsible for monitoring the voltages and bring (enable) them up in the correct sequence. For this task, i will use a little STM8 micro controller.
This should give you a rough overview what will going on and what will be discussed in the next parts.
Next time i will show you, how to choose the right processor and the appropriate DDR3 memory.