Difference between revisions of "Main Page"

From SoC Design Wiki
Jump to: navigation, search
(Labs additional readings)
 
(140 intermediate revisions by 7 users not shown)
Line 1: Line 1:
 +
[[File:Logo_SoC.png|300px|right]]
 +
 
=Introduction=
 
=Introduction=
Welcome to SoC design wiki. We started this series of labs/projects from 2014 and we are upgrading and fixing problems every year to make it better.
+
Welcome to the wiki for the SoC Design course! We started this series of labs/projects in 2014 and we are upgrading and fixing problems every year to make it better.
===Learning Objectives===
+
 
By completion of this SoC Design labs, you should be able to:
+
Slides for the introductory presentation are available [https://docs.google.com/presentation/d/1n4VfibjQcfBR-hYUb8m64C-zhhVq0kOHvIEwQkTPN8I/edit?usp=sharing here]
 +
 
 +
==Learning Objectives==
 +
After the completion of the labs, you will be able to:
  
 
{|
 
{|
 
|style="vertical-align:top;"|
 
|style="vertical-align:top;"|
 
'''Tutorials''':
 
'''Tutorials''':
#Kernel Driver: How to write a simple kernel driver and use it to control a simple IP on ZedBoard.
+
# Make Linux kernel drivers: Write a simple kernel driver for controlling a simple IP (intellectual property) on ZedBoard.
#Building custom SoC on ZedBoard:
+
# Build custom SoC (System-on-Chip) on ZedBoard:
#*Creation of simple SoC with Vivado from existing IPs
+
#* Create a simple SoC with Vivado from existing IPs
#*Building a custom embedded Linux system to be run on the SoC
+
#* Build a custom embedded Linux system to run on the SoC
#*Using custom kernel drivers to control the IPs in the SoC
+
#* Using custom kernel drivers to control the IPs in the SoC
#Custom IP creation:  
+
# Create custom IPs:  
#*Development of simple custom IP
+
#* Development of simple custom IP from VHDL code
#*Integrating IP into the SoC using AXI bus  
+
#* Integrate the IP into the SoC using AXI bus  
#*Controlling the IP from Linux using custom driver
+
#* Control the IP from Linux using custom driver
#Setup 1 board system for the lab
+
# Build a simple audio processor system
#*Complex system integration
+
#* Complex system integration
#*Preparation for project
+
#* Preparation for course project
  
 
|style="vertical-align:top;"|
 
|style="vertical-align:top;"|
Line 28: Line 33:
 
|style="vertical-align:top;"|
 
|style="vertical-align:top;"|
 
'''Project''':
 
'''Project''':
*Component reuse and system improvement  
+
* Component reuse and system improvement  
*Functional test and analysis
+
* Functional test and analysis
*Work in a team
+
* Work in a team
'''Workshop''':
+
*Introduction to a Network on Chip Simulator
+
*Routing algorithms in NoC based systems
+
*QoS in NoC based systems
+
 
|}
 
|}
  
===Labs Requirements===
+
==Requirements for Taking the Labs==
For this labs we assume that you have passed the following courses:
+
For these labs we assume that you have basic knowledge of the following:
* IAY0600 : Digital Systems Design
+
* C language '''<- This is a must!'''
* IAY0330: Embedded Systems
+
* Digital Systems Design
So you are familiar with digital systems (you should be familiar with High Level Description Languages like VHDL or Verilog (our main focus is on VHDL but if you know Verilog, its also ok!)) and Embedded Systems.
+
* Embedded Systems Programming
  
===Labs Regulations===
+
==Lab Organization==
 
{|
 
{|
 
|style="vertical-align:top;"|
 
|style="vertical-align:top;"|
 
'''Important dates'''
 
'''Important dates'''
  
* <span style="color:#FF0000">'''03.02.2016''':</span> Test Lab
+
* <span style="color:#FF0000">'''Week 2''':</span> Lab 1
* <span style="color:#FF0000">'''15-26.02.2016''':</span> Lab 1
+
* <span style="color:#FF0000">'''Week 3 ... week 5''':</span> Lab 2
* <span style="color:#FF0000">'''29.02.2016''':</span> Lab 2
+
* <span style="color:#FF0000">'''Week 6 ... week 9''':</span> Lab 3
* <span style="color:#FF0000">'''07-18.03.2016''':</span> Lab 3
+
* <span style="color:#FF0000">'''Week 10, week 11''':</span> Lab 4
* <span style="color:#FF0000">'''21.03 - 08.04.2016''':</span> Lab 4
+
* <span style="color:#FF0000">'''End of week 15''':</span> Project Deadline
* <span style="color:#FF0000">'''??''':</span> Project Deadline
+
  
 
|style="vertical-align:top;"|
 
|style="vertical-align:top;"|
Line 62: Line 62:
  
 
|style="vertical-align:top;"|
 
|style="vertical-align:top;"|
'''Lab grading policy'''
+
'''Lab Grading Policy'''
* Basic Tutorials (Pass/Fail - prerequisite for project) (30%) (this is prerequisite for project)
+
* Tutorials (Pass/Fail - prerequisite for project)
* Project (20%) (prerequisite for Exam)  
+
* Project (50% of the grade)
* Workshop  (10%) (prerequisite for Exam)
+
* Examination (50% of the grade)
* Final Course Examination (40%)
+
 
 +
'''In order to pass the course, you have to get a positive result in both the project and the exam.'''
 +
 
 +
'''You cannot finish the project without passing all tutorial labs!'''
  
 
|style="vertical-align:top;"|
 
|style="vertical-align:top;"|
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+
 
&nbsp;
+
 
|style="vertical-align:top;"|
 
|style="vertical-align:top;"|
[[File:Grading.png|300px]]
+
[[File:Grading.png]]
  
 
|}
 
|}
  
===Contact Us===
+
==Rules and Regulations==
[[File:redphone.png|70px|left]]
+
<big><big>For your programs, <span style="color:green"> '''please follow the coding style:''' [https://blue.pri.ee/ttu/resources/coding-style/ [LINK]] </span></big></big>
 +
 
 +
<span style="color:red"> '''Please read the following page before you start the course:''' </span>
 +
 
 +
===Timing and Plans===
 +
'''Please note that the project's (strong) deadline is on the last lab session, no extension will be made!'''
 +
 
 +
===General Rules===
 +
* <span style="color:red">'''Unplugging any cables from the lab computers is NOT ALLOWED!'''</span> If you use your own computer, please use Wi-Fi.
 +
* It is '''OK''' to discuss your code with colleagues during the labs.
 +
* Copying a colleague's code '''is not''' OK! You need to write your own code.
 +
* You '''must understand''' the code you write! We will check that you do!
 +
 
 +
===When writing Code===
 +
* '''The first thing your code MUST do is print out your name, ''otherwise you are not allowed defend the lab!''''' Kernel modules should print your name when they are inserted.
 +
(This requirement only applies for code that you have modified or written yourself)
 +
 
 +
Have in mind that you or someone else might want to reuse your code!
 +
* '''Use comments in your code.''' Even you, as the author of the code, may not understand it in the future.
 +
* '''Write a proper doc-string for the functions.''' It makes your life and of others much easier.
 +
* '''Use meaningful variable names.''' A variable named "counterMaxValue" is much easier to understand than one for the same purpose named "cMNum", for example.
 +
 
 +
===In Case of Problems===
 +
'''Please use the following methods in the following order for solving your issues:'''
 +
 
 +
# Check the current lab's additional materials.
 +
# Re-read the lab manual to make sure you did not miss anything.
 +
# Google your problems
 +
# Ask the lab assistants for help.
 +
 
 +
'''NOTE:''' In case you find a problem with the documentation, please tell the assistants. Then we can fix the problem and everyone will be happy :)
 +
 
 +
<!-- *[[Rules and Regulations]] -->
 +
 
 +
=Lab Results=
 +
{|
 +
! rowspan="2" | [[File:statistics-512.png|70px|left]]
 +
! style="text-align:left;" | You can view you current lab results and statistics [https://docs.google.com/spreadsheets/d/1u3bBAw2f1uKMgvfhTSlCykirtgVpc7G-ZVDIn3g1FLQ/edit?usp=sharing '''here''']
 +
|}
 +
 
 +
=Contact Us=
 
In case of any questions, please contact us:
 
In case of any questions, please contact us:
* [http://ati.ttu.ee/socdesign/index.php/User:Kjans Karl Janson]
 
* [http://ati.ttu.ee/socdesign/index.php/User:Siavoosh Siavoosh Payandeh Azad]
 
  
== Lab Tutorials ==
+
{|
The following is the test lab for the first week of the semester. :) Enjoy!
+
! rowspan="2" | [[File:redphone.png|70px|left]]
* [[Test Lab|Test Lab]]
+
|-
 +
| style="text-align:left;" | '''• [http://ati.ttu.ee/socdesign/index.php/User:madker Madis Kerner]'''
 +
|}
 +
 
 +
= Labs =
 +
==Lab Tutorials==
 
Here you can find lab manuals for the tutorials:
 
Here you can find lab manuals for the tutorials:
*[[Lab 1|Lab 1: Kernel Driver]]
+
*[[Lab 1|Lab 1: Building Custom SoC on ZedBoard]]
*[[Lab 2|Lab 2: Building custom SoC on ZedBoard]]
+
*[[Lab 2|Lab 2: Kernel Driver]]
*[[Lab 3|Lab 3: Custom IP creation]]
+
*[[Lab 3|Lab 3: Custom IP creation]]  
 
*[[Lab 4|Lab 4: Setup 1 board system for the lab]]
 
*[[Lab 4|Lab 4: Setup 1 board system for the lab]]
  
===Labs additional readings===
+
==Additional Material==
+
Additional reading and more information about the labs can be found here:
+
*[[Creating a new project in Vivado]]
+
*[[Basic information about Linux]]
+
*[[Lab1 additional material]]
+
*[[Lab2 additional material]]
+
*[[Lab3 additional material]]
+
*[[Lab4 additional material]]
+
  
===Labs known issues===
+
Additional reading materials and more information about the labs can be found here:
Please add related issues to each lab under the [[Labs known Issues]] page.
+
  
===Tutorial Labs Archive ===
+
===Lab Specific Information===
*[[2015 Tutorials]]
+
*[[Lab1 Additional Material]]
*[[2014 Tutorials]]
+
*[[Lab2 Additional Material]]
 +
*[[Lab3 additional material]]
 +
*[[Lab4 additional material]] <!--<span style="color:red"> TBU </span>-->
 +
 
 +
===General Information===
 +
*[[Creating New Vivado Project]]
 +
*[[Basic Linux Usage]]
 +
*[[Using ZedBoard]]
  
=Audio Mixer Project=
+
==Audio Mixer Project==
==Project Description==
+
 
[[File:mixer.jpg|300px|right]]
 
[[File:mixer.jpg|300px|right]]
Design project is defined in each round for System on Chip design(IAY0550) students with the aim of providing them with real world experience of working on a SoC project, teamwork and project management. This wiki will serve as a platform for students to pass-on their designs and documents to students in the next round of course. Full description of the project can be found [[Project Description]] page.
+
[[File:Zedboard_icon.png|53px|left]]
 +
Design project is defined in each round for System on Chip design(IAY0550) students with the aim of providing them with real world experience of working on a SoC project, teamwork and project management. This wiki will serve as a platform for students to pass-on their designs and documents to students in the next round of course. Full description of the project can be found on the Project Description page
 +
* '''[[Project Description]] page'''.
  
==Git==
+
=Using Own Computer for the Labs=
 +
You can find some information about using your own computer on the [[Using Own Computer]] page.
 +
 
 +
'''Please note that using any other computer than the ones in lab is not officially supported. The information on this page is not checked by the lab supervisors and might not be up-to-date and might not work! We recommend not to rely your course progress on getting the systems running on your personal machine and use the lab computers!'''
 +
 
 +
However, if you decide to follow the instructions on the page, please let us know about the problems you encounter, so we can update the manual for the benefit of other students.
 +
 
 +
=Git=
 
[[File:github.png|43px|left]]
 
[[File:github.png|43px|left]]
 
The project code should be stored in git. Every component of the project should be uploaded as a separate branch.
 
The project code should be stored in git. Every component of the project should be uploaded as a separate branch.
Line 121: Line 172:
 
There exists a dedicated Github repository for the course, that can be accessed here: [https://github.com/karljans/SoC_Design]
 
There exists a dedicated Github repository for the course, that can be accessed here: [https://github.com/karljans/SoC_Design]
  
==Rules and Regulations==
+
=Archive=
Please read the following page before you start the project:  
+
'''Tutorials:'''
*[[Rules and Regulations]]
+
*[[2016 Tutorials]]
 
+
*[[2015 Tutorials]]
==Team Organization==
+
*[[2014 Tutorials]]
The following page is for clear and transparent team organization for design project:
+
*[[Team Organization Spring 2014]]
+
*[[Team Organization Spring 2015]]
+
  
==Design project parts==
+
'''Design project:'''
The following pages contain data about different parts of the project:
+
* [[Old project archive (2014/2015)]]
*[[General]]
+
*[[Amplifier Design]]
+
**[[Balance Unit]]
+
*[[Audio Interface]]
+
**[[Buffers Design]]
+
*[[Communication]]
+
*[[External Control Panel]]
+
**[[Pmod Encoder]]
+
*[[Filter Design]]
+
*[[Web Server]]
+
+
We keep separate pages for special design parts that will be used/shared by different groups:
+
*[[Shift and Add Multiplier]]
+

Latest revision as of 13:35, 26 September 2023

Logo SoC.png

Introduction

Welcome to the wiki for the SoC Design course! We started this series of labs/projects in 2014 and we are upgrading and fixing problems every year to make it better.

Slides for the introductory presentation are available here

Learning Objectives

After the completion of the labs, you will be able to:

Tutorials:

  1. Make Linux kernel drivers: Write a simple kernel driver for controlling a simple IP (intellectual property) on ZedBoard.
  2. Build custom SoC (System-on-Chip) on ZedBoard:
    • Create a simple SoC with Vivado from existing IPs
    • Build a custom embedded Linux system to run on the SoC
    • Using custom kernel drivers to control the IPs in the SoC
  3. Create custom IPs:
    • Development of simple custom IP from VHDL code
    • Integrate the IP into the SoC using AXI bus
    • Control the IP from Linux using custom driver
  4. Build a simple audio processor system
    • Complex system integration
    • Preparation for course project

                                  

Project:

  • Component reuse and system improvement
  • Functional test and analysis
  • Work in a team

Requirements for Taking the Labs

For these labs we assume that you have basic knowledge of the following:

  • C language <- This is a must!
  • Digital Systems Design
  • Embedded Systems Programming

Lab Organization

Important dates

  • Week 2: Lab 1
  • Week 3 ... week 5: Lab 2
  • Week 6 ... week 9: Lab 3
  • Week 10, week 11: Lab 4
  • End of week 15: Project Deadline

                                  

Lab Grading Policy

  • Tutorials (Pass/Fail - prerequisite for project)
  • Project (50% of the grade)
  • Examination (50% of the grade)

In order to pass the course, you have to get a positive result in both the project and the exam.

You cannot finish the project without passing all tutorial labs!

          


Grading.png

Rules and Regulations

For your programs, please follow the coding style: [LINK]

Please read the following page before you start the course:

Timing and Plans

Please note that the project's (strong) deadline is on the last lab session, no extension will be made!

General Rules

  • Unplugging any cables from the lab computers is NOT ALLOWED! If you use your own computer, please use Wi-Fi.
  • It is OK to discuss your code with colleagues during the labs.
  • Copying a colleague's code is not OK! You need to write your own code.
  • You must understand the code you write! We will check that you do!

When writing Code

  • The first thing your code MUST do is print out your name, otherwise you are not allowed defend the lab! Kernel modules should print your name when they are inserted.

(This requirement only applies for code that you have modified or written yourself)

Have in mind that you or someone else might want to reuse your code!

  • Use comments in your code. Even you, as the author of the code, may not understand it in the future.
  • Write a proper doc-string for the functions. It makes your life and of others much easier.
  • Use meaningful variable names. A variable named "counterMaxValue" is much easier to understand than one for the same purpose named "cMNum", for example.

In Case of Problems

Please use the following methods in the following order for solving your issues:

  1. Check the current lab's additional materials.
  2. Re-read the lab manual to make sure you did not miss anything.
  3. Google your problems
  4. Ask the lab assistants for help.

NOTE: In case you find a problem with the documentation, please tell the assistants. Then we can fix the problem and everyone will be happy :)


Lab Results

Statistics-512.png
You can view you current lab results and statistics here

Contact Us

In case of any questions, please contact us:

Redphone.png
Madis Kerner

Labs

Lab Tutorials

Here you can find lab manuals for the tutorials:

Additional Material

Additional reading materials and more information about the labs can be found here:

Lab Specific Information

General Information

Audio Mixer Project

Mixer.jpg
Zedboard icon.png

Design project is defined in each round for System on Chip design(IAY0550) students with the aim of providing them with real world experience of working on a SoC project, teamwork and project management. This wiki will serve as a platform for students to pass-on their designs and documents to students in the next round of course. Full description of the project can be found on the Project Description page

Using Own Computer for the Labs

You can find some information about using your own computer on the Using Own Computer page.

Please note that using any other computer than the ones in lab is not officially supported. The information on this page is not checked by the lab supervisors and might not be up-to-date and might not work! We recommend not to rely your course progress on getting the systems running on your personal machine and use the lab computers!

However, if you decide to follow the instructions on the page, please let us know about the problems you encounter, so we can update the manual for the benefit of other students.

Git

Github.png

The project code should be stored in git. Every component of the project should be uploaded as a separate branch.

There exists a dedicated Github repository for the course, that can be accessed here: [1]

Archive

Tutorials:

Design project: