A comprehensive introduction to technology and applications of microprocessors. Topics include computer hardware, software, programming, computation, interfacing, I/O, communication, data acquisition, data representation, and numerical analysis. Applications of general-purpose and application-specific processors in various disciplines of engineering and engineering problem solving. Previously offered as ENSC 3213.
The syllabus is attached here:
Download Syllabus
This course focuses on algorithmic problem solving and implementation of the algorithm using C Programming Language. Fundamental concepts covered in this course include computing system architecture, operating systems, program execution, algorithm and flowchart, data structure, numerical methods, and hardware interfacing. Prerequisite: Grade C or better in MATH 1426 (or concurrent enrollment).
The syllabus is attached here:
Download Syllabus
An introduction to digital system design with hands-on projects. Number systems and codes. Boolean algebra; combinatorial logic and arithmetic. Digital electronics; CMOS logic gates; digital signals and noise margin; logic gates; and combinatorial logic circuits. Timing hazard and delay. Programmable logic devices; Verilog. State machines; sequential logic elements; counters and shift registers; sequential logic circuits. Arithmetic and computer logic circuits. Prerequisite: Grade C or better in each of the following: EE 1311 and EE 2315 (or concurrent enrollment).
The syllabus is attached here:
Download Syllabus
Hardware/software development techniques for microprocessors with emphasis on asynchronous and synchronous memory interfaces, optimizing data throughput, and modern bus architectures. Topics include DMA controller design, SDRAM controller design, and real-world interfacing. Prerequisite: EE 3310, CSE 3442, or equivalent
The syllabus is attached here:
Download Syllabus
Study of the advanced microprocessor architectures including 32/64-bit RISC and CISC families of microprocessors will be compared based on detailed architectural analysis of the selected devices. Topics include: address/instruction pipelines, burst cycles, memory caching and cache coherency issues, register renaming, speculative instruction execution and other performance-oriented techniques. Prerequisite: EE 5313.
The syllabus is attached here:
Download Syllabus
Study of advanced microcontroller system designs with an emphasis on multi-tasking, real-time control of devices. Topics include: review of M4F architecture and assembly code, design of real-time control systems, FreeRTOS, and Ethernet applications. Prerequisite: EE5314.
The syllabus is attached here:
Download Syllabus
The course focuses mostly on the design of transceivers for communications engineering problems. The emphasis is on wireless communication problems with transceivers with non-negligible computation power. Typical applications include high rate transmission, like cellular or wireless local loop type systems. Some low complexity applications, like sensor networks may use simpler techniques than the some considered in this course. We focus herein mostly to digital and baseband (BB) processing from algorithm design and optimization perspectives.
I took the exercise and project work of Communication Signal Processing 1 course for the International masters program of Wireless Communication Engineering in University of Oulu. The lecture notes can be found in Optima.
Exercise:
There will be 5 total exercises and 4 minor exams. Starting from exercise session 2, there will be a minor exam after each exercise.
1. Exercise 1:
This exercise is related to basic linear algebra, matrix decomposition and linear filtering;
2. Exercise 2
This exercise related to optimal filtering of autoregressive process;
3. Exercise 3
This exercise related to steepest descent method;
4. Exercise 4
This exercise is related to LMS and RLS adaptive filtering;
5. Exercise 5
Laboratory Tasks:
The laboratory project will be carried out in groups of 1/2 students. Form your group and inform the instructor by sending email by deadline. Download the zip file for labwork_CSPI_year.zip from Optima. The file can be found inside the Laboratory project/year/Material. All the supplementary file needed for the labwork can be found from the zip file.
There will be 5 tasks in total.
1. Write your own SVD function in Matlab.
2. Channel Equalization.
3. LMS adaptive equalization.
4. Matrix Decomposition.
5. Performance study of a MIMO-OFDM downlink Simulator.
The detailed instruction for the labwork is given here.
Note: This exercise and labwork are applicable for Spring 2016 and Spring 2017. The syllabus might be changed in the future.
The focus on the course is algorithms of the receiver and perform joint optimization of transmitter and receiver.Design of synchronization algorithms of a receiver and the related filtering and sample rate conversions are in the focal area of the course. He/she can derive the performance of the algorithms and methods to compare them. In addition, she/he can utilize and develop algorithms for fading channels.
I am taking the project work of Communication Signal Processing 2 course for the International masters program of Wireless Communication Engineering in University of Oulu. I will be also providing 3 lectures about algorithm realization and implementation.
Lecture:
The lecture slides can be found here:
Lecture 1: Algorithm Realization and Implementation
Lecture 2: Fixed Point Implementation
Laboratory Tasks:
A details about the labwork can be found in the following pdf:
Note: This lectures and labwork are applicable for Autumn 2015 and Autumn 2016. The syllabus might be changed in the future.
I created a companion website for VHDL language, which is commonly used for designing digital circuits. VHDL is a programming language to describe a hardware. It is not a typical software language that are used to instruct a CPU what to do. When you use high level programming languages like Java/C or low level programming language like assembly, you give a series of instructions to the CPU. With VHDL, you actually describe a physical digital circuit that consists of gates/arithmetic units etc. You can design the CPU with VHDL and write software for the CPU in C!
A myriad of tutorial and lessons to learn VHDL are available online. It is easy to get lost in this sea of lessons and I have always found it difficult to find a concise resource including the most important lessons. On the other hand, most comprehensive resources are so elaborated that it becomes boring after a certain stage. I tried to compile a list and my own explanation here.
The problem with learning this language is thinking in the way of how digital circuits work. A simple statement in VHDL can be very powerful. For a software designer, it is problematic to think in the way of hardware because the compiler takes care of most of the stuffs for him. For a hardware engineer, it is easy to over complicate things while learning the language.
The website can be found in this link:
Learn VHDL
Note: This website is currently being used as a companion material for a graduate level course in Institute of Technology, Sligo, Ireland