An Introduction to RISC-V
RISC-V is an Instruction Set Architecture (ISA) that is both free and open. This means that the RISC-V ISA itself does not require a licensing fee, although individual implementations may do so. The RISC-V ISA is curated by a non-profit foundation with no commercial interest in products or services that use it, and it is possible for anyone to submit contributions to the RISC-V specifications. The RISC-V ISA is suitable for applications ranging from embedded microcontrollers to supercomputers.
This book will first describe the 32-bit RISC-V ISA, including both the base instruction set as well as the majority of the currently-defined extensions. The book will then describe, in detail, an open-source implementation of the ISA that is intended for embedded control applications. This implementation includes the base instruction set as well as a number of standard extensions.
After the description of the CPU design is complete the design is expanded to include memory and some simple I/O. The resulting microcontroller will then be implemented in an affordable FPGA development board (available from Elektor) along with a simple software application so that the reader can investigate the finished design.
The Elektor Audio DSP FX Processor combines an ESP32 microcontroller and an ADAU1701 Audio DSP from Analog Devices. Besides a user-programmable DSP core, the ADAU1701 has high-quality analog-to-digital and digital-to-analog converters built-in and features an I²S port. This makes it suitable as a high-quality audio interface for the ESP32.
Programs for the ESP32 can be created with Arduino, Platform IO, CMake or by using the Espressif IDF in another way. Programs for the ADAU7101 audio DSPs are created with the free visual programming tool SigmaStudio by dragging and dropping pre-defined algorithm blocks on a canvas.
Applications
Bluetooth/Wi-Fi audio sink (e.g. loudspeaker) & source
Guitar effect pedal (stomp box)
Music synthesizer
Sound/function generator
Programmable cross-over filter for loudspeakers
Advanced audio effects processor (reverb, chorus, pitch shifting, etc.)
Internet-connected audio device
DSP experimentation platform
Wireless MIDI
MIDI to CV converter
and many more...
Specifications
ADAU1701 28-/56-bit, 50-MIPS digital audio processor supporting sampling rates of up to 192 kHz
ESP32 32-bit dual-core microcontroller with Wi-Fi 802.11b/g/n and Bluetooth 4.2 BR/EDR and BLE
2x 24-bit audio inputs (2 V RMS, 20 kΩ)
4x 24-bit audio outputs (0.9 V RMS, 600 Ω)
4x Control potentiometer
MIDI in- and output
I²C expansion port
Multi-mode operation
Power supply: 5 V DC USB or 7.5-12 V DC (barrel jack, center pin is GND)
Current consumption (average): 200 mA
Included
1x ESP32 Audio DSP FX Processor board (assembled)
1x ESP32-PICO-KIT
2x Jumpers
2x 18-pin headers (female)
4x 10 KB potentiometers
Downloads
Documentation
GitHub
An 8-in-1 test & measurement instrument for the electronics workbench
A well-equipped electronics lab is crammed with power supplies, measuring devices, test equipment and signal generators. Wouldn‘t it be better to have one compact device for almost all tasks? Based on the Arduino, a PC interface is to be developed that’s as versatile as possible for measurement and control. It simply hangs on a USB cable and – depending on the software – forms the measuring head of a digital voltmeter or PC oscilloscope, a signal generator, an adjustable voltage source, a frequency counter, an ohmmeter, a capacitance meter, a characteristic curve recorder, and much more.
The circuits and methods collected here are not only relevant for exactly these tasks in the "MSR" electronics lab, but many details can also be used within completely different contexts.
Errata/Updates
In the programs printed, all instances of “be()” should read: sei().
With a Cortex-M4F with BLE 5.0 running up to 96MHz and with as low power as 6uA per MHz (less than 5mW), the M.2 MicroMod connector allows you to plug in a MicroMod Carrier Board with any number of peripherals. Let's have a look at what this processor board has to offer! If you need Machine Learning capabilities, Bluetooth, I²C functionality to connect to all our amazing Qwiic boards, and more the Artemis Processor is the perfect choice for your MicroMod Carrier Board. At the heart of SparkFun's Artemis Module is Ambiq Micro's Apollo3 processor, whose ultra-efficient ARM Cortex-M4F processor is spec’d to run TensorFlow Lite using only 6uA/MHz. We've routed two I²C buses, eight GPIO, dedicated digital, analogue, and PWM pins, multiple SPI as well as QuadSPI, and Bluetooth to boot. You really can't go wrong with this processor. Grab one today, pick up a compatible carrier board, and get hacking! Features 1 M Flash / 384 k RAM 48 MHz / 96 MHz turbo available 6uA/MHz (operates less than 5mW at full operation) 48 GPIO - all interrupt capable 31 PWM channels Built-in BLE radio and antenna 10 ADC channels with 14-bit precision with up to 2.67 million samples per second effective continuous, multi-slot sampling rate 2 channel differential ADC 2 UARTs 6 I²C buses 6 SPI buses 2/4/8-bit SPI bus PDM interface I²S Interface Secure 'Smart Card' interface FCC/IC/CE Certified (ID Number 2ASW8-ART3MIS)
1x USB dedicated for programming and debugging 1x UART with flow control 2 x I²C 1 x SPI 1 x Quad-SPI 8 x Fast GPIO 2 x Digital Pins 2 x Analog Pins 2 x PWM 1 x Differential ADC pair Status LED VIN Level ADC
This module includes an integrated trace antenna, fits the IC to an FCC-approved footprint, and includes decoupling and timing mechanisms that would need to be designed into a circuit using the bare nRF52840 IC. The Bluetooth transceiver included on the nRF52840 boasts a BT 5.1 stack. It supports Bluetooth 5, Bluetooth mesh, IEEE 802.15.4 (Zigbee & Thread) and 2.4Ghz RF wireless protocols (including Nordic's proprietary RF protocol) allowing you to pick which option works best for your application.
Features
ARM Cortex-M4 CPU with a floating-point unit (FPU)
1MB internal Flash -- For all of your program, SoftDevice, and file-storage needs!
256kB internal RAM -- For your stack and heap storage.
Integrated 2.4GHz radio with support for:
Bluetooth Low Energy (BLE) -- With peripheral and/or central BLE device support
Bluetooth 5 -- Mesh Bluetooth!
ANT -- If you want to turn the device into a heart-rate or exercise monitor.
Nordic's proprietary RF protocol -- If you want to communicate, securely, with other Nordic devices.
Every I/O peripheral you could need.
USB -- Turn your nRF52840 into a USB mass-storage device, use a CDC (USB serial) interface, and more.
UART -- Serial interfaces with support for hardware flow-control if desired.
I²C -- Everyone's favourite 2-wire bi-directional bus interface
SPI -- If you prefer the 3+-wire serial interface
Analogue-to-digital converters (ADC) -- Eight pins on the nRF52840 Mini Breakout support analogue inputs
PWM -- Timer support on any pin means PWM support for driving LEDs or servo motors.
Real-time clock (RTC) -- Keep close track of seconds and milliseconds, also supports timed deep-sleep features.
Three UARTs
Primary tied to USB interface. Two hardware UARTs.
Two I²C Buses
Two SPI Buses
Secondary SPI Bus primarily used for Flash IC.
PDM Audio Processing
Two Analog Inputs
Two Dedicated Digital I/O Pins
Two Dedicated PWM Pins
Eleven General Purpose I/O Pins
An 8-in-1 test & measurement instrument for the electronics workbench
A well-equipped electronics lab is crammed with power supplies, measuring devices, test equipment and signal generators. Wouldn‘t it be better to have one compact device for almost all tasks? Based on the Arduino, a PC interface is to be developed that’s as versatile as possible for measurement and control. It simply hangs on a USB cable and – depending on the software – forms the measuring head of a digital voltmeter or PC oscilloscope, a signal generator, an adjustable voltage source, a frequency counter, an ohmmeter, a capacitance meter, a characteristic curve recorder, and much more.
The circuits and methods collected here are not only relevant for exactly these tasks in the "MSR" electronics lab, but many details can also be used within completely different contexts.
Recently, the development of a tiny chip called the ESP8266 has made it possible to interface any type of microcontroller to a Wi-Fi AP. The ESP8266 is a low-cost tiny Wi-Fi chip having fully built-in TCP/IP stack and a 32-bit microcontroller unit. This chip, produced by Shanghai based Chinese manufacturer Espressif System, is IEEE 802.11 b/g/n Wi-Fi compatible with on-chip program and data memory, and general purpose input-output ports. Several manufacturers have incorporated the ESP8266 chip in their hardware products (e.g. ESP-xx, NodeMCU etc) and offer these products as a means of connecting a microcontroller system such as the Android, PIC microcontroller or others to a Wi-Fi. The ESP8266 is a low-power chip and costs only a few Dollars.
ESP8266 and MicroPython – Coding Cool Stuff is an introduction to the ESP8266 chip and describes the features of this chip and shows how various firmware and programming languages such as the MicroPython can be uploaded to the chip. The main aim of the book is to teach the readers how to use the MicroPython programming language on ESP8266 based hardware, especially on the NodeMCU.
Several interesting and useful projects are given in the book to show how to use the MicroPython in NodeMCU type ESP8266 hardware:
Project “What shall I wear today?”: You will be developing a weather information system using a NodeMCU development board together with a Text-to-Speech processor module.
Project “The Temperature and Humidity on the Cloud”: You will be developing a system that will get the ambient temperature and humidity using a sensor and then store this data on the cloud so that it can be accessed from anywhere.
Project “Remote Web Based Control”: You will be developing a system that will remotely control two LEDs connected to a NodeMCU development board using an HTTP Web Server application.
A Handbook on DIY
Nowadays, security problems are rarely properly solved or correctly addressed. Electronic security is only part of the chain in making a system secure. Electronic security is usually addressed as network or software security, neglecting other aspects, but the chain is only as strong as its weakest link.
This book is about electronic hardware security, with an emphasis on problems that you can solve on a shoestring DIY budget. It deals mostly with secure communications, cryptosystems, and espionage. You will quickly appreciate that you can’t simply buy a trustworthy and reliable cryptosystem off the shelf. You will then realise that this applies equally to individuals, corporations, and governments.
If you want to increase your electronic security awareness in a world already overcrowded with networks of microphones and cameras, this is a book for you. Furthermore, if you want to do something DIY by designing and expanding upon simple electronic systems, please continue reading. Some of the devices described are already published as projects in the Elektor magazine. Some are still ideas yet to be worked out.
Complexity is the main enemy of security, so we'll try to keep to simple systems. Every chapter will analyse real-life espionage events or at least several hypothetical scenarios that will hopefully spark your imagination. The final goal is to build a security-conscious mindset (or “to get into a head of a spy”) which is necessary to recognise possible threats beforehand, to design a truly secure system.
Don’t bother reading if:
you think you and your secrets are 100% safe and secure
you think somebody else can effectively handle your security
you think conspiracy theories only exist in theory – Telefunken’s masterpiece the “FS-5000 Harpoon” was built on one!
Kick off with the MAX1000 and VHDPlus
Ready to Master FPGA Programming? In this guide, we’re diving into the world of Field Programmable Gate Arrays (FPGAs) – a configurable integrated circuit that can be programmed after manufacturing. Imagine bringing your ideas to life, from simple projects to complete microcontroller systems!
Meet the MAX1000: a compact and budget-friendly FPGA development board packed with features like memory, user LEDs, push-buttons, and flexible I/O ports. It’s the ideal starting point for anyone wanting to learn about FPGAs and Hardware Description Languages (HDLs).
In this book, you’ll get hands-on with the VHDPlus programming language – a simpler version of VHDL. We’ll work on practical projects using the MAX1000, helping you gain the skills and confidence to unleash your creativity.
Get ready for an exciting journey! You’ll explore a variety of projects that highlight the true power of FPGAs. Let’s turn your ideas into reality and embark on your FPGA adventure – your journey starts now!
Exciting Projects You’ll Find in This Book
Arduino-Driven BCD to 7-Segment Display Decoder
Use an Arduino Uno R4 to supply BCD data to the decoder, counting from 0 to 9 with a one-second delay
Multiplexed 4-Digit Event Counter
Create an event counter that displays the total count on a 4-digit display, incrementing with each button press
PWM Waveform with Fixed Duty Cycle
Generate a PWM waveform at 1 kHz with a fixed duty cycle of 50%
Ultrasonic Distance Measurement
Measure distances using an ultrasonic sensor, displaying the results on a 4-digit 7-segment LED
Electronic Lock
Build a simple electronic lock using combinational logic gates with push buttons and an LED output
Temperature Sensor
Monitor ambient temperature with a TMP36 sensor and display the readings on a 7-segment LED
Downloads
Software
The Red Pitaya (STEMlab) is a credit card-sized, open-source test and measurement board that can be used to replace most measurement instruments used in electronics laboratories. With a single click, the board can transform into a web-based oscilloscope, spectrum analyser, signal generator, LCR meter, Bode plotter, and microcontroller.
The Red Pitaya (STEMlab) can replace the many pieces of expensive measurement equipment found at professional research organisations and teaching laboratories. The device, that based on Linux, includes an FPGA, digital signal processing (DSP), dual core ARM Cortex processor, signal acquisition and generation circuitry, micro USB socket, microSD card slot, RJ45 socket for Ethernet connection, and USB socket – all powered from an external mains adaptor.
This book is an introduction to electronics. It aims to teach the principles and applications of basic electronics by carrying out real experiments using the Red Pitaya (STEMlab). The book includes many chapters on basic electronics and teaches the theory and use of electronic components including resistors, capacitors, inductors, diodes, transistors, and operational amplifiers in electronic circuits. Many fun and interesting Red Pitaya (STEMlab) experiments are included in the book. The book also makes an introduction to visual programming environment.
The book is written for college level and first year university students studying electrical or electronic engineering.
Getting started with the world’s best open-source PCB tool
The latest iteration of KiCad, the world’s best free-to-use Printed Circuit Board tool, is packed with features usually found only in expensive commercial CAD tools. This modern, cross-platform application suite built around schematic and design editors, with auxiliary applications is a stable and mature PCB tool. KiCad 8 is a perfect fit for electronic engineers and makers.
Here are the most significant improvements and features in KiCad 8, both over and under the hood:
Modern user interface, completely redesigned from earlier versions
Improved and customizable electrical and design rule checkers
Theme editor allowing you to customize KiCad on your screen
Ability to import projects from Eagle, CADSTART, and more
Python scripting API
Improved integrated SPICE circuit simulator
Multi-sheet schematics
Filters define selectable elements
Enhanced interactive router helps you draw single tracks and differential pairs with precision
New or enhanced tools to draw tracks, measure distances, tune track lengths, etc.
Advanced interactive router
Built-in bill of materials generator
Realistic ray-tracing capable 3D viewer
Customizable teardrops
Plug-in manager for quick installation of themes, libraries and functionalities such as autorouters and BOM generators
This book will teach you to use KiCad through a practical approach. It will help you become productive quickly and start designing your own boards. Example projects illustrate the basic features of KiCad, even if you have no prior knowledge of PCB design.
The author describes the entire workflow from schematic entry to the intricacies of finalizing the files for PCB production and offers sound guidance on the process. Further full-fledged projects, of incremental difficulty, will be presented in a second book, together with a variety of advanced recipes.
This book details the use of the ARM Cortex-M family of processors and the Arduino Uno in practical CAN bus based projects. Inside, it gives a detailed introduction to the architecture of the Cortex-M family whilst providing examples of popular hardware and software development kits. Using these kits helps to simplify the embedded design cycle considerably and makes it easier to develop, debug, and test a CAN bus based project. The architecture of the highly popular ARM Cortex-M processor STM32F407VGT6 is described at a high level by considering its various modules. In addition, the use of the mikroC Pro for ARM and Arduino Uno CAN bus library of functions are described in detail.
This book is written for students, for practising engineers, for hobbyists, and for everyone else who may need to learn more about the CAN bus and its applications. The book assumes that the reader has some knowledge of basic electronics. Knowledge of the C programming language will be useful in later chapters of the book, and familiarity with at least one microcontroller will be an advantage, especially if the reader intends to develop microcontroller based projects using CAN bus.
The book should be useful source of reference to anyone interested in finding an answer to one or more of the following questions:
What bus systems are available for the automotive industry?
What are the principles of the CAN bus?
What types of frames (or data packets) are available in a CAN bus system?
How can errors be detected in a CAN bus system and how reliable is a CAN bus system?
What types of CAN bus controllers are there?
What are the advantages of the ARM Cortex-M microcontrollers?
How can one create a CAN bus project using an ARM microcontroller?
How can one create a CAN bus project using an Arduino microcontroller?
How can one monitor data on the CAN bus?