Get Started with Altium Upverter, Sign Up Now.
Coding is just one important part of embedded systems design
Have you ever started an embedded systems project? If the answer to this question is no, just know that an embedded systems project is easy to start but difficult to master. You’ll need to become something of a coder as well as a hardware developer, and you may need to learn a new programming language in the process. If you already have programming experience, then you’ve got a head start over other engineers. Otherwise, there are plenty of open source hardware and software packages you can use to get started with building and programming your next embedded systems projects.
What Are Embedded Systems?
There is no strict definition of an embedded system. In the simplest sense, an embedded system is any electronic system that includes some components that provide computing capabilities. These computing capabilities could be reprogrammable, depending on the processing and memory components used in a particular system. These systems often appear as part of a larger electromechanical system or other complicated product. They also contain some kind of mechanism to receive user input or interface with another electronic, whether it is a set of buttons, a touch screen interface, or a wireless connection.
If you’re questioning whether you should build your next project as an embedded system, think about this: does the device need to process some kind of input from the external environment or another device, and does the device then need to make some kind of logical decision based upon that input? If the answer is yes, then you’ve got an embedded system on your hands.
You can find an extensive range of embedded systems, and you can even get some good ideas for your next project, by looking throughout your home. From appliances like air conditioners and microwaves to smartphones and smartwatches, you are probably using many embedded systems at the moment. With IoT devices set to become more popular in consumer electronics, industry, and other areas, many more products will function as embedded systems.
Your processor, whether it’s an MCU or other component, will form the cornerstone of your embedded systems project. It also determines how many external components your device can incorporate, as well as the communication protocol your system will use to send or acquire data from other devices. Different processors provide different processing speed, although they carry different costs and will consume different amounts of board space.
Microcontrollers are an excellent choice for providing processing power in applications that don’t require extremely high speed and variable bit depth. Affordable microcontroller ICs provide bit depths ranging from 8 to 32 bits, and are available in speeds reaching from 10’s to 100’s of MHz. The footprints vary as well; many microcontroller come in DIP packages, while more powerful microcontrollers will be available in SMD/SMT packages.
This microcontroller board can provide the backbone for a simple embedded system
Different microcontrollers support different programming languages, although microcontrollers typically use some higher-level programming language like Java or C/C++ in an integrated development environment (IDE). As an example, Arduino’s IDE is its own variant of C/C++. Before selecting a microcontroller, check the manufacturer’s IDE to ensure that you are familiar with the language. Microcontrollers are typically programmed in higher-level languages such as C++ or Java.
Embedded systems can be designed with an FPGA, and their reprogrammable nature makes them more flexible than most microcontrollers. The costs for a single FPGA can reach hundreds of dollars, and FPGAs tend to consume more power than typical microcontrollers. This makes them unsuitable in devices where power consumption is an issue.
If your device requires access to steady power, must run at high speed, requires hundreds of I/Os for data processing, and/or needs to be periodically reprogrammed, then a microcontroller is the better choice for your application. There are a number of specialized languages for programming FPGAs, with Verilog being the oldest. C/C++/System C is one example of a simpler tool for programming an FPGA, although you’ll need to use the manufacturer’s core generator tools to translate your code to the hardware level.
These limitations in programming languages cause FPGAs to be less accessible to designers who do not have experience with these embedded languages. For these reasons, many designers will find microcontrollers much easier to use for embedded systems projects compared to FPGAs and other CPLDs.
Building Your PCB and Your Device
Once you do select an appropriate processor for your next device, you’ll need to design a PCB that integrates your processor and your other devices onto a single package. If you are not the type to design a PCB on your own, there are plenty of microcontroller projects that can help you get started with your design. You can take these projects and expand on them, or you can use a popular microcontroller platform like Arduino to build your next device. Other, more powerful options are a Raspberry Pi single-board computer, or the even-more-powerful BeagleBone Black. The prices for these products ranges from a few dollars upwards, and your processing power and built-in memory will scale with costs.
Working with a microcontroller board like Arduino limits you to the capabilities that already exist on the board; you won’t have any ability to expand the on-board capabilities unless you open the schematic and layout for your microcontroller board in your PCB design software and modify it manually. If your board will interface with a number of other devices that will run at high speed and/or high frequency, it can be difficult to ensure signal integrity unless you have some PCB design experience. In this case, it is better to include these little extras directly on the board.
If you want your device to connect to other devices wirelessly or through the internet, then you might be better off going with a single board computer, like a Raspberry Pi or BeagleBone. If you are in the business of incorporating these capabilities on your own, you’ll need access to an extensive component database with electrical models, schematic symbols, and PCB footprints.
Once you decide on the basic requirements your device needs, and you have narrowed down the processing unit you will use, there are plenty of directions you can go to expand the capabilities of your embedded system. All this takes the right PCB design software with an extensive set of design tools.
Embedded Systems Projects in Upverter
If you’re looking for a platform to build an embedded system, Upverter provides a massive component library with plenty of FPGA and microcontroller options to choose from. All the important board design, rules verification, and circuit simulator features are available in a browser-based interface. You’ll also be able to collaborate with other designers on your next embedded systems project.
The Embedded Micro – Mojo project, built for use in an embedded system with an FPGA
With the browser-based design features in Upverter®, you’ll have access to the PCB design features you need to create embedded systems projects and design PCBs to support these devices. The schematic design and PCB layout tools are designed for taking your design from start to finish and preparing for manufacturing. These standard design features are accessible from anywhere. These features also provide collaboration and rules verification for your next embedded systems project.