Team Members and Responsibilities:
Siva, Swamynathan (siva3) (ECE 110) - SystemVerilog coding, FPGA work, co-ordination of electronics work
Agrawal, Manav (manava3) (ECE 110) - High-level FSM design, Arduino coding, electronics work including finding ESCs and how they work, additional circuitry to control steering of car; Planning and mechanical arrangement of components on the actual car.
Muthiah, Subramaniam (muthiah2) (ECE 110) - Electronics work including finding a way to charge capacitors with constant current, mobile power supply for the FPGA and other devices; Planning and mechanical arrangement of components on the actual car.
Introduction
With lesser benefits coming from node shrinks that are getting even harder to do, Moore’s Law for integrated circuits is on its decline. The future of compute hardware is being increasingly dependent on performance boosts from designs that are specific to the application (ASIC), and this is where FPGAs have gained new prominence.
FPGAs are programmable silicon chips with a collection of programmable logic blocks surrounded by Input/Output (I/O) blocks that are put together through programmable interconnect resources to become any kind of digital circuit or system. There are 2 main components to FPGAs- PROM (programmable read-only memory) and PLDs (programmable logic devices). PROM lets us both erase and reprogram the read-only memory of the FPGA. A PLD on the other hand is an electronic component used to build reconfigurable digital circuits. The combination of these two aspects of the FPGA allows creation of logic circuits in hardware through software.
The purpose of this project is to utilize Field Programmable Gate Arrays to control a remote-controlled car in real-time. Our goal will be to successfully control our RC Car with an FPGA. This project is derivative from a previous project from last semester, namely the ‘Supercapacitor/Battery Hybrid RC Car’
Background Research
FPGAs or Field Programmable Gate Arrays are used in electronic hardware circuits as a way for users to program logic operations. Depending upon the use case, the integrated circuits can have multiple collections of gates, memory or other electronic components.
FPGAs have some characteristics which make them better than the CPUs and GPUs like better latency and connectivity. A very small latency can be achieved on FPGAs due to their high specialization, and the fact that they do not rely on generic Operating Systems or communicate with generic electronic buses. You can use or transmit any type of data directly through the pins of the chips. This is very useful when you are creating supercomputing applications or using it in the fields of ML/AI chips which require higher computational power.
These integrated chips are used in applications like video, imaging, space, electronics, auto industries, aerospace, ML/AI etc. Traditionally, FPGAs have been considered very electrical and mostly used by electrical engineers, but upon Intel’s acquisition of Altera in 2015, more companies such as Microsoft and Amazon have been developing FPGAs, thereby employing computer engineers and scientists. FPGAs are used in data centres due to their efficiency and their capability of handling multiple operations which makes it very useful for Computer Engineers to learn and know how to use such an integrated chip.
Design Details
Block Diagram:
Flowchart for FSM:
The FSM for the car is implemented as two parallely-running FSMs- one for the steering, and one for throttle.
The inputs to the steering FSM are as follows:
L- Turn Left
R- Turn Right
(No input) - Go straight
The corresponding state digram:
The inputs to the throttle FSM are as follows:
F- Forward
B- Backward
REST- Car is at rest? (potentially vestigial)
The corresponding state diagram:
Parts Required
- Battery/Supercapacitor Hybrid RC Car from the previous project https://wiki.illinois.edu/wiki/pages/viewpage.action?pageId=703803915
- Field Programmable Gate Arrays - (already received this)
- Bigger, slower RC Car to upgrade our existing car size while still being able to use a breadboard.
- Batteries for mobile power for FPGA (cannot find good batteries in legitimate sites)
May need:
- Electronic Speed Controller
- ADC/DAC for measuring power usage, speed etc.
Possible challenges
- Errors with System Verilog code, exceptions specific to the particular family of FPGAs
- RC car may need to be modified to be able to carry the large FPGA development board
- Problems in reverse-engineering certain components like PWM speed controllers that we would ideally like the FPGA to drive.
- We may end up having to use an Arduino as a Bluetooth receiver if we’re not able to figure out how implement a Bluetooth/radio connection on the FPGA itself.
References
[1]"Why use an FPGA instead of a CPU or GPU?", Medium, 2020. [Online]. Available: https://blog.esciencecenter.nl/why-use-an-fpga-instead-of-a-cpu-or-gpu-b234cd4f309c. [Accessed: 14- Feb- 2020]
[2]"Intel Completes Acquisition of Altera | Intel Newsroom", Intel Newsroom, 2020. [Online]. Available: https://newsroom.intel.com/news-releases/intel-completes-acquisition-of-altera/#gs.wamakm. [Accessed: 14- Feb- 2020]
[3]"When is an FPGA Worth it and When is it NOT – when developing an Industrial Embedded System - Viewpoint Systems", Viewpoint Systems, 2020. [Online]. Available: https://www.viewpointusa.com/industrial-embedded/when-is-an-fpga-worth-it-and-when-is-it-not-when-developing-an-industrial-embedded-system/. [Accessed: 14- Feb- 2020]
[4] Guerra, Maria. “The Principle of FPGA | Electronic Design”, 2020, www.electronicdesign.com/technologies/fpgas/article/21801527/the-principles-of-fpgas.
Attachments:
FSM_Steering_State_diagram.png (image/png)
FSM_State Diagram.png (image/png)