Alexander Fell

Courses

Currently I am teaching the following courses:

Embedded Logic Design (ELD)

This course will introduce BTech ECE students in their second year to the various programmable logic devices (PLDs) available in the market and get them started with how to program such devices to develop simple applications. First part of this course will target microcontroller unit (MCU) programming and the second part will cover FPGA programming and synthesis.

For the microcontroller part, the class lectures and programming assignments will help students learn about resources available on microcontroller chip and typical interfaces available for allowing the microcontroller to interact with the outside world. Students will be using the Arduino platform that contains a robust 8 bit processor. The programming assignment will be in embedded C using the AVR library (not the Arduino libraries nor sketches) and will cover the following topics:

  1. Internal periphery such as timers, PWM, ADC and interrupt control
  2. Interfacing an LCD with the microcontroller
  3. Debounce of buttons
  4. Interrupts
  5. Interfacing external sensors and displaying the data on LCD
  6. Communication between Arduino boards

For the FPGA part, class lectures and programming assignments will include simulation of designs on Xilinx ISE platform as well as synthesis on Digilent Basys2 FPGA boards. Students will be learning Verilog HDL and using it to design circuits. Programming assignments will cover the following:

  1. Combinatorial logic design
  2. Sequential logic design
  3. State machine design

Post Conditions/Learning Outcome

Course Material

There are many resources available in the Internet about Embedded Systems and Arduino and the class is a composition of them. However some content is partly taken out of books. Please be aware that the topics in the following books are overlapping:

Advanced Embedded Logic Design (AELD)

This course will introduce students to various existing and upcoming computer architectures. At first this course will be targeting MCU programming in assembly language using a 32bit simulator to explain the internal data processing. After understanding the fundamental functions of a compiler tool chain and the peripherals integrated in an MCU and its architectures, the course shifts to reconfigurable architectures such as FPGAs and CGRAs. After a short introduction into these architectures and based on the findings in the MCU part, a CGRA is built including communications through a bus system or simplified NoC using Bluespec System Verilog, a proprietary high level abstraction language. Further the implemented architecture will be tested on FPGA development boards. An interface to a host machine allows to upload hand compiled code to the self-made CGRA to test and compare its performance. Doing this automatically shows limitations of reconfigurable architectures and research problems. Hence this course confronts students with CS as well as ECE related subjects.

Post Conditions/Learning Outcome

Course Material

Introduction to Engineering Design (IED)

Introduction to Engineering Design is a multidisciplinary course offered with an aim to ignite the young minds with concepts in design and innovation. The course is divided into 2 parts:

At the beginning of the course, students need to submit their project ideas and group members. To be able to do so, in the previous semester students have been instructed to form groups and to think about a possible project idea preferably having a social impact. Within the first week they are exposed to the basics of project planning and management allowing them to design and implement a feasible plan and time line for their project for which the students are supported with seed money from the institute. Later students are introduced to microcontrollers such as Raspberry Pi and Arduino including their development environments (IDE) to rapidly prototype their project ideas. This part of the course concludes with topics about digital and analogue sensors and communication protocols such as UART, SPI, 1-Wire and I2C. Further, example data sheets are discussed allowing the student to choose the right devices for their project.

The second part of the course is dedicated to project realization. In regular intervals reports are filed and discussed to check the progress and for advice. The course completes with a showcase in which the functionality of the project is demonstrated.

Post Conditions/Learning Outcome

Assignment Tips

The course load is geared towards the assignments which are quite large and evaluated every week. Here are some tips, how to solve the assignment questions:
  1. Make sure that you understood the assignment in the first place. If not, do not hesitate and ask questions before you make assumptions and start programming.
  2. Think about the assignment for some days and build a broad step-by-step plan in your head or on paper. For instance in the FPGA part it is very helpful to draw a block diagram of the various components that are required, even before hitting a single key for your program. It will save you several hours and your head stays clear on the problem at hand.
  3. The aim of each assignment is to make you learn how to tackle big problems and to do proper time management. It is nearly impossible to finish the assignments in a single night session just before the deadline.
  4. The big problems can be divided into smaller problems which are easily solvable. Test your solutions for the tiny problems individually before plugging them together to a larger one.
  5. Since ideally you solved tiny problems first to tackle the big problem, you have a very clear about what you did and everything is neatly distinguishable. My assignments are building on top of each other allowing you to use components from the previous assignments saving your precious time.
  6. Copying from any other group or the Internet defies the very purpose of the assignment. Better submit an incomplete assignment and live with some mark reduction than getting a zero for the whole assignment without further chance of improving it.

Useful Links