Embedded
In this article, we’ll study the basic structure of a Verilog module, look at some examples of using the Verilog “wire” data type and its vector form, and briefly touch on some differences between VHDL and Verilog. In this article, we’ll study the basic structure of a Verilog module, look
This article explains how to model combinational logic in Verilog, covering the conditional operator for truth‑table implementation and the powerful “always” block for concise design. In this guide, we walk through the key techniques for describing combinational circuits in Verilog. First, we revis
This article demonstrates how open‑source functional simulators such as Antmicro’s Renode become indispensable in hardware‑software co‑design. Embedded systems are evolving rapidly, and next‑generation SoCs are growing in complexity. According to Semico Research, this complexity drives longer design
Structures are a cornerstone of efficient embedded C programming. In this article, we’ll explore their practical applications, the syntax for declaring them, and the impact of data alignment on memory usage. By strategically ordering structure members, you can often reduce the footprint of your data
Where Electrical Engineers Can Apply Python in Everyday Work Python’s versatility makes it an indispensable tool for electrical engineers, from early research to final production testing. Below we explore the most impactful areas where Python can streamline workflows, reduce manual effort, and enhan
Understanding Unions in Embedded C In embedded systems, a union is a powerful data structure that lets you store different data types in the same memory location. This article walks through the fundamentals of unions, shows practical examples, and explains why they are a go-to tool for memory‑constr
Using Unions in C for Efficient Data Packing and Unpacking Unions provide a powerful, memory‑efficient way to reinterpret the same bytes as different data types. While originally intended for shared memory among mutually exclusive variables, modern C programmers often use unions for data packing, un
Learn how to initialize C arrays using external text files. This guide explains how to populate arrays in a C program with data stored in separate text files. The values are not embedded in the source code; instead, they are loaded at compile time. We cover one‑dimensional and multi‑dimensional ar
An Introduction to the Perceptron – The Foundations of Neural‑Network Classification This article is the first in a comprehensive series that explains how to design, train, and evaluate neural networks for complex classification tasks using Python. Our focus is on the multilayer perceptron (MLP), a
Understanding the Perceptron: A Practical Example of Data Classification This article is part of a series that demystifies Perceptron neural networks. Whether you’re starting fresh or want to revisit a specific topic, the related posts below provide a comprehensive roadmap. How to Perform Classific
Training a Basic Perceptron Neural Network with Python This guide walks you through a fully commented Python implementation that automatically learns the weights for a single‑layer perceptron. The code is ready to copy‑paste, run, and adapt to your own data. Explore the AAC Perceptron Series For de
This article explains how the IEC 60730 Class B standard ensures functional safety for household appliances, covering both mechanical and electrical design, and highlights controllers that help manufacturers meet these requirements. Modern appliances streamline everyday tasks, allowing users to per
Explore the most common techniques for filtering time‑domain data, and examine how the LPC55S69’s PowerQuad Dual Biquad IIR engine accelerates DSP tasks. When working with data collected over time, the first step is often to apply a digital filter. Understanding the various filtering strategies not
This article demystifies how JTAG is integrated into ARM core devices, focusing on the Arm Debug Interface (ADI) and the Serial Wire Debug (SWD) protocol. Previous posts in this series explored the IEEE 1149.1 standard, the Test Access Port (TAP) controller, and the TAP state machine. We also revie
Leveraging the LPC55S69 PowerQuad Engine for Efficient FFT Computation The NXP LPC55S69 microcontroller is engineered for high‑performance signal processing. Its PowerQuad coprocessor houses two specialized engines: the Biquad filter and the Transform Engine. While the Biquad handles time‑domain fil
This article provides a detailed comparison of binary, Gray, and one‑hot encodings when implementing finite state machines (FSMs) on FPGAs. Understanding how synthesis tools evaluate and potentially transform these encodings is essential for achieving optimal performance and power efficiency. Finite
Follow three experiments that illustrate how to choose the most suitable encoding for an FPGA design. When designing FPGA logic, the synthesis tool typically selects the encoding; it’s generally best to trust its decision. However, understanding the nuances of binary, Gray, and one‑hot representati
This article covers the basics of MOS transistors with a view towards better understanding the leakage current that can occur in such transistors. MOS transistors are getting scaled down to maximize their package density inside integrated circuits. This has led to the reduction of oxide t
Leakage current can significantly contribute to power dissipation, especially as devices scale to lower threshold voltages. Below we examine the six most common leakage paths in modern MOS transistors. In short‑channel MOSFETs, the following leakage mechanisms dominate: Reverse‑bias p‑n junction le
Explore the essential role of battery management systems and the foundational components that enable safe, efficient power design. Today’s high‑performance Li‑ion batteries deliver energy densities of up to 265 Wh/kg, yet their power can be hazardous if they are overstressed. Battery Management Sys
Embedded