Linear System Solvers
1. Introduction Solving systems of linear equations is a fundamental computational task in engineering, scientific computing, signal processing, control systems, and artificial intelligence. A general linear system can be represented as $$A\mathbf{x}=\mathbf{b}$$ where ($A\in\mathbb{R}^{n\times n}$) is the coefficient matrix, ($\mathbf{x}\in\mathbb{R}^{n}$) …
Interfacing INMP441 MEMS Based Microphone Module
Microphone is a device which is used to capture or record voices to the micro-controllers or FPGAs. One of the popular microphone sensors is INMP441 MEMS based omni-directional sensor which can be used to record speech signals. The details of …
Interfacing DHT11 with FPGA
DHT11 is a very popular sensor for measuring temperature and humidity in IoT applications. This sensor is very useful when used with Arduino or ESP8266 controllers to make a weather station. There are numerous tutorials are available on the internet …
LED and Camera Interfacing with ZYNQ FPGA using PYNQ
Python productivity on Zynq (PYNQ) open-source software framework has paved the way for easy implementation of digital systems on Xilinx system on chip (SoC) devices. This project focuses on image acquisition problem in real-time image processing systems. Nowadays it is …
FPGA Implementation of Taylor Series Based Exponential
Exponential function is very important to evaluate activation functions (Sigmoid, hyperbolic tangent, SoftMax etc.) used in machine learning (ML) algorithms. Thus, efficient hardware implementation of exponential function very important. In this post, we have discussed detailed FPGA Implementation of Taylor …
Basic Combinational Blocks using Vivado HLS
Vivado HLS is designed for high level language synthesis of digital systems. Any system can be modelled using lower-level languages like Verilog HDL, VHDL. But these HDL languages are considered as machine level languages like assembly language in case of …
General Verilog Codes for Sequential Blocks
In our previous post, we discussed about general codes for some of the most important combinational blocks. In this post, we will discuss general Verilog codes for some of the most important sequential blocks. General Verilog Codes for Sequential Blocks …
General Verilog Codes for Combinational Blocks
In our previous blog, we discussed different combinational circuits but General Verilog codes are essential in writing bigger complex codes for a system. They make it easy for the coders to generalize the overall code. The generalized overall code can …
Double Flip-Flop Synchronizer for CDC
As we discussed in the previous blog one of the methods to solve metastability is the Double Flop Synchroniser method. This method consists of two cascaded D flip-flops that sample the input signal with the destination clock. This design can …
Clock Domain Crossing in Digital Circuits
Clock Domain Crossing (CDC) refers to the process and techniques used to manage data transfer between different clock domains within the digital system in either ASIC IC or FPGA. CDC is one where the data is transferred from one clock …
FPGA Implementation of XOR Function using ANN
Artificial Neural Networks (ANN) are very popular to realize different critical functions related to any field of study. In this project, a simple exclusive-OR function is realized with the help of ANN. The purpose of the XOR function is to …
Solving Linear Equations using QR Decomposition
QR decomposition is another powerful technique to solve linear equations. In QR decomposition, the co-efficient matrix $A \in \mathcal{R}^{M\times K}$ need not to be a symmetric matrix. In special cases where the input signal is compressible or sparse, QR decomposition …
