ECE 110/120 Honors Lab Section : Field-Programmable Gate Arrays (FPGAs) for Real Time R/C Car control

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

  1. Battery/Supercapacitor Hybrid RC Car from the previous project https://wiki.illinois.edu/wiki/pages/viewpage.action?pageId=703803915
  1. Field Programmable Gate Arrays - (already received this)
  2. Bigger, slower RC Car to upgrade our existing car size while still being able to use a breadboard.
  3. Batteries for mobile power for FPGA (cannot find good batteries in legitimate sites)

May need:

  1. Electronic Speed Controller
  2. ADC/DAC for measuring power usage, speed etc.

Possible challenges

  1. Errors with System Verilog code, exceptions specific to the particular family of FPGAs
  2. RC car may need to be modified to be able to carry the large FPGA development board
  3. Problems in reverse-engineering certain components like PWM speed controllers that we would ideally like the FPGA to drive.
  4. 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:

Comments:

Nice project! Please talk to Fin more about the difficulty of it.

Posted by yuchenc2 at Feb 16, 2020 02:11

Looks good. Swami, you and I have talked about this and I know you're putting in the time to be able to use this. However, I'm concerned that the others on this team may not also be willing to put in the time. Manav and Subramaniam, if you want to work on this FPGA project, I am expecting you to put in equivalent work as Swami (learning SystemVerilog, attending 385 lectures, etc). Working with FPGAs is a significantly steep learning curve, and you all need to contribute to this project equally. It will be very easy for one person to learn the FPGA toolchain and do everything, and result in unbalanced contribution. Everybody needs to get comfortable with working with FPGAs if this team is going to work!

Posted by fns2 at Feb 16, 2020 13:06

Best of luck folks! FPGAs will be rough but a valuable skill. Looks well planned otherwise.

Posted by weustis2 at Feb 16, 2020 22:40

What does the FPGA add to this project that the Arduino can't do? The project without the FPGA is already worthwhile and challenging. Consider that the FPGA aspects might be mapped into a follow-up individual study for the student(s) who wants to take the lead on it.

Posted by cdschmit at Feb 17, 2020 13:44

Hi all, 

I've made some clarifications on how all the work will be divided- The other two members of my team will have enough challenging, non-FPGA work to last the semester. 

Posted by siva3 at Feb 20, 2020 18:33

Approved, Feb 20th.

Posted by fns2 at Feb 20, 2020 18:53