EEL 4783: Hardware/Software
Co-design with FPGAs
Course:
EEL 4783: Hardware/Software Codesign with FPGAs, Spring 2012. 3 credits.
Lectures: MW9.00-10:15AM @ HEC 110
Instructor Office Hours: MW 10:15-12:00AM @ HEC 416
TA office hour: W 11:00AM-1:00PM@Eng. I Building, Room471
Course Instructor:
Mingjie Lin
Office: HEC 416, Telephone: 407-882-2298
Email: mingjie@eecs.ucf.edu, Home Page: http://www.eecs.ucf.edu/~mingjie
Course Description:
This course provides a systematic introduction
to the topic of Hardware-Software Codesign.
It emphasizes the basic ideas, and the practical aspects of Hardware-Software
Codesign with FPGA devices. In addition,
this course presents techniques for modeling
hardware and software components
at different levels of abstraction
and many concepts including the various forms of expressing computations,
sequential and parallel implementations, control-flow and data-flow, control
dependency and data dependency, latency and throughput as well as the
architecture design space of hardware data paths, finite state machines,
micro-programmed machines, instruction-set processors, system-on-chip, and
on-chip buses. Specific topics
include:
• Analyzing the control-flow and
data-flow of a software program
and a cycle-based hardware description
• Transforming simple software programs into cycle-based hardware
descriptions with equivalent behavior and vice versa
• Partitioning
simple software programs into hardware and software components, and creating appropriate hardware-software
interfaces to reflect this partitioning
• Identifying performance bottlenecks in a given
hardware-software architecture and optimize them by transformations on hardware and software components
• Using simulation
software to co-simulate software programs with cycle-based hardware
descriptions.
Prerequisites:
EEL 3342: Digital Logic Design
Co-prerequisites:
EEL 4768: Computer Architecture
Minimally Required Skills:
Basic logic design, basic HDL (Verilog or
VHDL) programming, basic software programming skills.
Recommended Text:
“A Practical Introduction
to Hardware/Software Codesign", Patrick Schaumont, Springer, 2009
Grading:
The distribution of weights for the exams, assigments, and projects is as
follows:
Midterm Exam |
20% |
Final Exam |
30% |
Projects |
30% |
Assigments |
20% |
Students
are encouraged to participate in class.
Honor System Policy:
Schedule (minor changes possible throughout the semester )
Event | Spring 2012 | Topics | Notes | Assignments |
Lecture 1 | Jan 9 |
Introduction (Objectives, Expectations, Logistics) | ||
Lecture 2 | Jan 11 | Hardware vs. Software |
1. Download SystemC lib 2. Download SystemC tests 3. Install both on your own PC |
|
MLK day | Jan 16 | |||
Lecture 3 | Jan 18 |
Overview: Digital Camera |
1. HW1. Coding assignment. 2. Read Essential C from Stanford CS Education Library. 3. Read Unix programming tool from Stanford CS Education Library. |
|
Lecture 4 | Jan 23 | Digital Camera: Software Implementation |
1. Software implementation of a digital camera: digcam.zip 2. HW2 |
|
Lecture 5 | Jan 25 |
Digital Camera: Software Implementation
|
pdf
|
1. Programming Assignment 1 out, due in two weeks. |
Lecture 6 | Jan 30 | |||
Lecture 7 | Feb 1 |
Introduction to Basic C/C++ Programming |
1. HW3 out. HW2 due today. |
|
Lecture 8 | Feb 6 | Project code review 1 |
||
Lecture 9 | Feb 8 |
Project code review 2. Verilog Introduction. | Verilog according to Tom. |
|
Lecture 10 | Feb 13 | VHDL Introduction. |
pdf
| VHDL tutorial 1. VHDL tutorial 2. |
Lecture 11 | Feb 15 |
|||
Lecture 12 | Feb 20 | Hardware Implementation of CODEC (Huffman Decoder) |
pdf
|
1. Programming Assignment 1 Due. 2. Programming Assignment 2 out, due in two weeks. 3. Src Code of PA2. 4. code. |
Lecture 13 | Feb 22 | |||
Lecture 14 | Feb 27 | HW/SW Partitioning |
PA2 Timing graph updated |
|
Lecture 15 | Feb 29 |
Huffman Decoder Programming Project: Q&A |
Xilinx FSM |
1. PA2 Timing graph updated 2. Programming Assignment 2 3. code. |
Spring Break | Mar 5 |
|||
Mar 7 |
1. Sample Mid-Term |
|||
Lecture 16 | Mar 12 | Pipelined Processor: Design and Implementation |
||
Lecture 17 | Mar 14 | Mideterm Exam |
1. PA2 Due today! |
|
Lecture 18 | Mar 19 | PA2 and Midterm |
1. Midterm |
|
Lecture 19 | Mar 21 | Introduction to SystemC |
pdf |
1. Instructions of installing SystemC 2. HW3: install SystemC and compile the hello.c. Email the output to the TA. Due on March 28. |
Lecture 20 | Mar 26 | Demo of Install VirtualBox, SystemC, and Compiling. |
1. PA3 Part 1: Download the Verilog source code. Simulate it without any modification. Send the simulation output to TA by Apr 2. |
|
Lecture 21 | Mar 28 |
SystemC Data Types, Methods, and Debugging |
1. Quick References of SystemC. |
|
Lecture 22 | Apr 2 |
System-Level Modeling in SystemC 2.0 |
1. PA3 Part 2: a) Compile and run C++ program imageEdgeDetector.cpp of edge detection algorithm, try to understand the program in general, at least to find 4 steps of the program. b) To compile you need to type in terminal window: g++ -o [output name] [file name] c) To run: ./[output name] example image: goldenbridge |
|
Lecture 23 | Apr 4 |
Describing Synthesizable RTL in SystemC |
||
Lecture 24 | Apr 9 |
Describing Synthesizable RTL in SystemC (cont.) |
1. PA3 Part 3: We would like to make some simple co-design of the algorithm given above (imageEdgeDetector.cpp).
We divide it into 2 parts (Software and Hardware). Let the software
part “SW” read and write picture from/to a file and hardware “HW” makes
all the calculations for the algorithm. Lets store the picture read as
input into some common memory, the same story goes for calculated
picture (this means we would have some global matrixes of pictures as
unsigned char* inputImage). Make 2 clocked modules in SystemC: “SW” and
“HW” and establish communication between them with the help of ready
signals, for example such as inputPictureReady and outputPictureReady. a) Download the startup SystemC file [link]. b) Replace two functions and in imageEdgeDetector.cpp with SystemC implementation. c) Your implementation should produce exactly the same output image as in the Part 2. |
|
Lecture 25 | Apr 11 | Hardware-Software Co-Simulation |
||
Lecture 26 | Apr 16 | |||
Lecture 27 | Apr 18 |
PA3 Part3 Due. |
||
Lecture 28 | Apr 23 | Final Exam Preparation |
Final Exam | Apr 25 | Location: Classroom HEC 110, Time: 8:00-10:00AM |