Dénes Faragó

Introduction

Computer science engineer specializing in embedded programming, especially in LabVIEW. My experience covers all stages of embedded systems development, from circuit design to final, software-driven implementation.

I hold B.S. and M.S. degrees from the University of Szeged, Hungary. Since 2016, I have been actively involved in university teaching. In 2022, I transitioned into a full-time role as an assistant lecturer in the Department of Technical Informatics.

My research interests include analog electronics, signal processing, atomic force microscopy, and the application of embedded systems in multidisciplinary sciences in general. I am excited to explore new opportunities and collaborations, always ready to apply my skills and knowledge to innovative projects.

CV
CV Portrait
Skills
> LabVIEW - Very experienced. Confidently use common design patterns and well-versed in project organization conventions.
> NI Embedded Systems - Very experienced. Expertise in FPGA programming at high clock frequencies, Xilinx IP Cores, Fixed-Point Math, DMA, FIFOs, and Streams (Real-Time Module and FPGA Module).
> Microcontroller Programming - Experienced in expanding existing microcontroller-based devices with new peripherals and writing complete, standalone firmware.
> Electronics - Comprehensive theoretical knowledge with the ability to understand, design, and improve analog and digital circuits. Proficient use of lab equipment.
> Python - Basic experience with Kivy GUI, Numpy, Matplotlib, Scipy, etc. Mainly used for teaching.
> MATLAB/Simulink - Advanced. Skills in identification, simulation, and control design for LTI systems.
> C/C++ - Advanced. Primarily used for microcontroller (MCU) programming.
> Web Programming - Basic HTML, CSS, javascript. See this website.
> Familiar With - VHDL, C#, Java, LaTex, G-Code, Jupyter Notebook
Work experience
Hinstra Instruments 2016 -
  • Developed embedded software for various projects and contract works.
  • Key projects: AFM Controller, Density Monitor, Headset Tester, Photacoustic Controller.
University of Szeged 2022 - 2024
  • Conducting research, writing scientific journal articles.
  • Assisted in teaching undergraduate courses.
  • Conducted lab sessions, graded assignments, and provided support to students.
  • Compiled and revised full semester practical materials for the courses: Signals and Systems, Electronics II, and Intelligent Systems.
eChemicles 2023 -
  • Embedded software development, contract work.
Education
2018 - 2022
2016 - 2018
2012 - 2016
2010 - 2012
Doctoral School of Computer Science, University of Szeged
MSc in Computer Science and Engineering, University of Szeged
BSc in Computer Science and Engineering, University of Szeged
IT network installer and operator (Vocational training), Szeged, Hungary
Teaching
Laboratory practices form 2016:
Signals and Systems (basics of LTI systems, signal processing, MATLAB)
Control Systems (PID family, state feedback control, MATLAB)
Electronics II (opamp-based circuits, regulators, converters, PLLs, LTSpice, Tina, etc.)
Instrumentation Electronics (opamp-based circuits)
Intermediate Level LabVIEW Programming (CLAD course)
Measurement and Data Acquisition (LabVIEW, basic measurements, spectrum analysis, etc.)
Intelligent Systems (Fuzzy logic controllers, genetic algorithms, neural networks, all in python)
Mechatronics (Autocad, Fusion 360 CAD, CAE, CAM, G-Code, basics of CNC milling)
Modern Measurement Techniques (Lock-in, LabVIEW FPGA, PXI, LCR-meter, STFT)
Microelectronics (High precision SMU, DMM, PXI, LCR-meter measurements)
Digital Laboratory Practices (Basic combinatory and sequential circuits)
Electronics Technology (PCB design, soldering, Spectrum Analyzers, SMU, LCR-meters)
Basic Technical Skills (Basic calculations in electronics, breadboard usage, multimeter, etc.)
Previous Projects
AFM Controller

Platform: NI sbRIO
Languages: G (LabVIEW)

The project aimed to develop firmware and PC software for a high-speed digital lock-in amplifier capable of operating simultaneously at two frequencies in the 400 kHz to 7 MHz range, with a sampling rate of 150 MHz. The hardware utilized was the NI sbRIO-9651 single-board system featuring an embedded FPGA and a processor core. My task involved designing the complete software architecture, comprising three main parts: the FPGA code, software for the embedded processor, and the PC GUI. The completed instrument is now integrated into a high-speed atomic force microscope, enhancing image and video acquisition speeds.

Corresponding scientific article:
Francesca Zuttion, Adai Colom, Prof. Stefan Matile, Denes Farago, Frédérique Pompeo, Janos Kokavecz, Anne Galinier, James N Sturgis & Ingacio Casuso "Mode of action of daptomycin: Evidence of new molecular mechanisms highlighted by high-speed atomic force microscopy," Nature Communications

Block-diagram of the custom High-Speed Lockin amplifier.

Block diagram of the custom high-speed lock-in amplifier. My job was to develop the blue (digital) region. The hardware was made by Hinstra Instruments Ltd.

Graphical interface of the custom Lock-in amplifier

Graphical interface of the custom lock-in amplifier developed for high-speed atomic force microscopy

FPGA Code

  • Developed using LabVIEW's FPGA Module and VHDL.
  • Includes custom DDS modules, SPI engine, high-speed Fourier transforms, and digital filtering.
  • Uses Xilinx IPs and fixed-point arithmetic.
  • Operates at a clock frequency of 150 MHz.
  • Communicates with multiple ICs and hardware components, including:
    • 3 DDS modules
    • 1 high-speed ADC with parallel DDR communication
    • 4 high-speed DACs
    • 4 serial DACs
    • Analog multiplexers and switches

Real-Time Host

  • Embedded, real-time LabVIEW code running on the processor core inside the Xilinx SoC.
  • Transfers commands and large data blocks between the PC and FPGA using DMA and TCP Streams in a state-machine setup.

PC Software

  • Desktop application with a user-friendly windowed interface.
  • Provides access to functions such as spectral analysis and setting parameters of excitation signals.
  • Developed using the QMH (Queued Message Handler) design pattern.
Software Defined Noise Generator

Platform: NI compactRIO
Languages: G (LabVIEW)

With my former supervisor, we developed an efficient mixed-signal noise generation system using the well-known method of applying a filter bank to modify noise spectra. The filter bank parameters are precisely set by an optimization algorithm, achieving spectral shapes that would otherwise be unattainable. The parameters are sent to the FPGA, where the random number generation and the filtering take place. The platform is NI CompactRIO.

Corresponding conference article to read more:
R. Mingesz, D. Farago, "Implementing software defined noise generators" in R25th International Conference on Noise and Fluctuations ICNF 2019 Proceedings 18 - 21 June 2019 EPFL Neuchâtel campus - Neuchâtel, Switzerland

Differential evolution algorithm searching for the best possible filter arrangement to achieve a predefined, custom noise spectrum

Actigraphy
Platform: SiLabs 8051F410 MCU
Languages: C, G (LabVIEW), MATLAB

Actigraphs are small devices that measure human activity by tracking wrist movements on the non-dominant hand. I was involved in developing custom actigraphs, and my role was to adapt the MCU code for different hardware versions, rewriting several existing functions of the firmware. I developed drivers for memory chips (including bad block management) and 6-axis accelerometers. Additionally, I optimized the entire MCU code for reliability and power efficiency, as the actigraphic measurements can take up to two or more weeks.

Additionally, I developed desktop applications to configure and start actigraphic measurements, read raw acceleration data from the actigraph after measurement, and visualize and calibrate the data and the accelerometer.

I have also worked on a calibration algorithm. Corresponding featured article:
D. Farago, B. Maczak and Z. Gingl, "Enhancing Accuracy in Actigraphic Measurements: A Lightweight Calibration Method for Triaxial Accelerometers," in IEEE Access, vol. 12, pp. 38102-38111, 2024, doi: 10.1109/ACCESS.2024.3374652.

Front panel of a LabVIEW program that tests the efficency of different accelerometer calibration methods

Front panel of a LabVIEW program that tests the efficiency of various accelerometer calibration methods

Density Monitor

Platform: NI sbRIO
Languages: G (LabVIEW)

End-to-end embedded system programming, similar to that of the AFM Controller project: FPGA code, Real-Time Code and PC GUI, testing and deployment.

FPGA:
- Custom SPI engine to communicate with several SPI devices
- Custom DDS implementations on the FPGA fabric
- High-speed, pipelined Fourier-transform implemented with fixed-point arithmetics
- Buffered data acquisition

Real-Time Code:
- Buffered data transfers using DMA-s and TCP streams
- Command recognition and direct communication with the FPGA
- Safety functions

PC GUI:
- Scope-like visualization of the measured waveform with virtual trigger
- N-point calibration
- Self-test and service mode

Self-Agency

Platform: Arduino, PC
Languages: Python (Kiwi framework) and C

The person being tested has to put their finger into a thimble-like holder that can move along a straight line. When they hear different sound effects, they need to move the thimble. After that, they have to say whether they moved the thimble themselves or if the machine moved it.

My task was to develop the firmware for the microcontroller (MCU) and create a desktop application. On the MCU, I handled tasks such as sound generation, reaction time measurement, and programming routines to control the solenoid responsible for moving the thimble. The main challenge was achieving precise timing, which couldn't be accomplished with basic Arduino libraries. Instead, I had to directly manipulate the Atmega328 registers. By utilizing timers and an external oscillator, I managed to generate sound with various frequencies, accurately measure reaction times, and control the solenoid using PWM. For the desktop software, I used the Kiwi framework.

GUI for the self-agency examination device

GUI for the self-agency diagnostic equipment

Electrosynthesis

Complex desktop and NI-RT control program for conducting electrochemical measurements. Some of the implemented features and essential elements include:

  • - multi-window user interface

  • - communication with
    • - high-current power supply
    • - humidifier
    • - gas analyzers
    • - relative temperature and humidity sensors
    • - several thermometers
    • - cooling-heating equipment
    • - flow regulators
    • - flow meters

  • - communication protocols:
    • - MODBUS
    • - RS232
    • - analog interfaces (4-20 mA, 0-10 V, PWM)

  • - startup, shutdown sequences
  • - emergency functions
  • - continuous logging
  • - display of multiple graphs simultaneously
  • - control of pumps and valves
  • - temperature control with ON/OFF and PID controllers
Photoacoustic Controller
Block-diagram of the Photuacoustic Controller

Block-diagram of the Photuacoustic Controller

Platform: ATmega128

The custom, microcontroller based device receives string-based commands from a PC, triggering actions such as reading/controlling ADCs, DACs, digital thermometers, and solenoid driver circuits.

Communication protocols utilized in the project:

  • RS232 (PC)
  • I2C (DAC)
  • SPI (ADC)
  • 1-Wire (Dallas thermometer)
Automatic EEG Tester

Platform: Raspberry PI

This project is special in the sense that it uses a Raspberry Pi single-board computer as its foundation, but its programming is done entirely in the C language instead of higher-level languages. The Raspberry Pi controls DDS ICs, ADCs and DACs, digital potentiometers, and relays from a custom PCB. Based on the initial instructions from the user, it runs complex, fully automated test sequences.

© 2024 Denes Farago. All rights reserved.