The Arduino ecosystem has dramatically lowered the barriers to embedded system development.
As a next step, the FPGA (Field-programable gate array) further increases the potential of the system by offloading the portion of CPU work.
- Resource savings associated with timers and frequent interrupts
- Simplify and accelerate processing, lower power consumption
- Release CPU power/resources for major processing such as AI
I expect this could significantly enhances the possibilities of Makers.
What exactly is the FPGA? What can FPGA do and what can't? To know that, I created an FPGA learning tool.
- Short-term learning of Verilog (HDL:Hardware Description Language)
- Creating a feasibility model
- Get an accurate estimate of the logic volume
I hope that this tool will make the FPGA more accessible and will give Makers lots of new Make tips.
- USB connector for writing generated circuit data
- Implemented components such as LEDs, IR transceiver/receiver, Tact switch, Piezo speaker
- Connectors for connecting Servo Motor/DC Motor
- Connectors for test points and external connections
- Connector to attach Arduino Nano / Nano 33
- Automatic encoding/decoding/transfer of communication
- Free the CPU from processing that requires direct control of CPU resources such as NeoPixel
- Semi-automatic playback of buzzer sounds, etc
- Motor Slow operation, acceleration/deceleration, trapezoidal control
- Run with minimal CPU intervention
In any case, parameters / data can be exchanged with the CPU via I2C. (regardless of the CPU type. The results can also be used for Pi.)
These multiple processes are executed independently at the same time on the FPGA. It's an inspiring experience if you're used to programs that are processed serially or pseudo-parallel on the processor.
- Lattice MachOX2 FPGA data sheet used for this board
- I referred to here for the MachOX2 I2C library. thanks you. Craftsman Kodera-san
- Install from IDE Diamond link (Windows only) This software is light, so you can use an old computer sleeping in a corner of the laboratory
- Link to the writing tool Tiny FPGA Programmer. Just select the generated jed file and transfer it. To be honest, I think I had a lot of trouble without this. Thanks Mr. Valenty
- fpga4fun.com it's amazing. My textbook. Thank you Mr. Jean P. Nicole
You can start by blinking the LED, learn and check the operation by using a simple logic analyzer that uses the Arduino IDE Serial Plotter function.
You might imagine that you have to use a simulation tool or an oscilloscope, but even if you don't have it, you can do various things!
The figure shows the case of sampling at 40us. Can we monitor only signals around 10kHz?
However, if you operate it slowly and raise the clock after checking the logic, you can make a high-speed circuit.
- A0 - pin9 Ex pin
- A1 - pin14 Ex pin
- A2 - pin17 IR Transmitter
- A3 - pin8 Buzzer
- A6 - pin12 Servo Motor
- A7 - pin13 Ex pin
Now it's time to deploy to your system.
This board also has an external writing function.
Switch Jumper plugs, and connect your system to GO.
In the previous Arduino Nano 33 BLE OV7670 Camera Shield, in order to resolve conflicts such as camera real-time image processing operation and servo control interrupts, a PWM-dedicated IC (PCA9685) was implemented and 10-bit servo control via I2C was adopted.
However, even with this, the sweep operation of the servo required MPU intervention (sequential update of the servo angle during movement) that interrupted image processing every several tens of ms.
Therefore, based on this learning, I will use FPGA to perform slow panning or semi-automatic control of foot acceleration / deceleration moving.
The next report will show how much the CPU can concentrate on image processing while performing related operations at the same time.
Comments