Hamming Codes

Hamming Codes

Hamming codes are basic Linear Block Codes. The most common configuration is Hamming [7,4] with 3 parity bits, 4 data bits and 7 bits total. The codeword length can be increased however to any arbitrary 2N - 1 as the algorithm is generic. The code can detect and repair 1 error or detect two errors. This is bound by the hamming distance, which is 3 for standard hamming codes, but can be extended to 4 in case of extended hamming codes, which...

GPS Signal Processing

GPS Signal Processing

Back in the university, one of my favorite projects I worked on was the estimation of a GPS signal delay and a Doppler Offset. The Doppler offset is simply caused by the fact that GNSS satellites move across the sky while broadcasting on a specified frequency. As a result the final received frequency is different. For L1 (1575.42MHz), the expected range is ~(+-6 KHz). Since the receiver is also interested in the delay between the generated...

Matlab Mex C++

Matlab Mex C++

Back then when I was I starting to learn CUDA, I used to verify some of the functionality by writing to text files and then reading it back to Matlab. As you can guess, this is not an extra efficient way to verify your algo and so it wasn't long before I moved on to investigation of how to directly interfere with your custom CUDA C/C++ stuff directly from Matlab. Eventhough it may sound difficult, it is in fact quite easy and the requirements...

Ocean FFT

Ocean FFT

I was always wondering how hard it might be to simulate ocean waves and decided to take a look under the hood with a simplified demo that can run in real-time (Modern movies with ocean waves are rendered over a long period of time with much higher resolution and precision). Since I studied electromagnetics, i became obssessed with the idea of using one of the commonly used algorithms for that purpose - FFT. Luckily,there is the famous work on...

CUDA Bitonic Sort

CUDA Bitonic Sort

Sorting data is a very common task and there are variety of algorithms to do the same (QuickSort, BubbleSort, MergeSort Etc ... ). Not all of them are however suited for CUDA Architecture. Its important to bear that in mind, as people occasionally forces you to do something without the underlying information whether that is even possible - keep your own head, stay informed and make proper decisions based on your knowledge. A very simple example...

GPS CA/L2-CM Code Generator

GPS CA/L2-CM Code Generator

GPS's CA (Coarse-Acquisition) code - also known generally as "Gold Codes" is a pseudorandom sequence used for the GPS system, which uses CDMA technology to distinguish between different satellites. There are 37 unique sequences. Each sequence has 1023 bits - sometimes denoted as "chips".  The entire sequence is repeated each 1 ms - leading to a total chip rate of 1.023Mbit/s. As in case of most PRN sequences, they are implemnted via LSFRs...

CUDA Inclusive Scan

CUDA Inclusive Scan

My first class of CUDA programming was almost a nightmare ( I have fortunately enrolled spontaneously). I was excited to learn about GPGPU and was expecting to do some really cool stuff on GeForce cards within that semester. The truth however was, that we have spent quite a long time in CPU assembly (SSE Instructions) and also with CPU Threads and their synchronization and work distribution. Only half of it was dedicated to CUDA programming...

CUDA Matrix Multiplication

CUDA Matrix Multiplication

Matrix to Matrix multiplication is a very popular algorithm to show the real performance of any Graphic card. This is by nature due to the fact that this operation is very costly in terms of computing performance as the amount of multiplications required scales with matrix size - N3 . Even a very bad and naive CUDA kernel would perform very well in comparison to any CPU implementation. The goal of this post is to however show that GPUs have not...

NVIDIA CUDA Introduction

NVIDIA CUDA Introduction

Many people are wondering how is it possible that Graphics Processing Units (GPUs) have so much computing power. The answer lies in the history of GPUs. They have always been used as accelerators for graphics and rendering, especially video games. In fact GPUs thanks for their power to all the gamers around the world ?. Seriously, most games need to compute at least 25 frames per second a new scene. Lets say the resolution is FullHD (1920 x...

Hello and welcome to IrisCores! This will be “hopefully” mine personal technical blog for the upcomming decade(s). It took me a while to chose this domain name, but I have had several reasons to do that (Except for the fact that Iris is my favorite flower🌱) and even for choosing rather a subdomain for blogging – As the name suggest, it opens for more professional business usage, which is even why I have stayed away from DNS names, which would be more appropriate for my personality – rain, woods and cycling.

At the beginning of 2023, most of the posts from my previous domain ( https://www.beechwood.eu ) has been either revised and moved here or discarded in case the topic was outdated or a complete nonsense. Because beeing partially IT admin is sometimes fun, I have decided to keep maintaining the back-end, but to ease my pain a little bit and give me more freedom and less worries, the site is proudly powered by GCP ☁️ 

After graduating from Czech Technical University in Prague in 2016, I started working in GPGPU (General Purpose GPU CUDA ) for accelerating processing of large data sets and variety of computing intensive algorithms for signal and image processing.  Soon after, I started my career as an FPGA designer and since then I have widely broadened my expertise among other related fields such as high speed data interfacing, communication on standartized interfaces such as AXI or PCIe and cooperation with software world and kernel drivers.

My dream is to live and work in peace in the coutryside, have a dog (or two 😇), a loving wife and a wonderfull family ☄️. I find joy in appreciations to my work, but I never expect to receive any. I learned the hard way that if you need something, you have to ask for it and go for it and that every small step you take brings you closer.

Love and kindness. Two words, that make life worth living

Vojtech

FPGA Engineer