2110714 Digital Systems 

1st semester 2017 weekend (Aug)
classroom :  Sat  13:00-16:00, Eng 4, floor 17, room 17-03 (green room)


Today digital technology permeates every corner of our society. There are three big trends that shape our future. The first one is the coming of Artificial Intelligence.  The second one is the rise of Automation.  The last one the revolution of technology to transfer money.  These advancements rely on the power of computing.  To understand this future, we need a firm grip on how the technology work.  This class will discuss the basic of digital technology.  The idea of educating ourselves is not just read about the new development, but to "participate", or in the other words, to practice and experiment to see how things work. We will discuss the following topics:

Microprocessor  and how to program in assembly language
High level language and its translation into machine code
Interrupt and its role in multi-tasking
Low power programming
Concurrency, operating system
Multi-core processor

The highlight of the class will be a final project to really build a very simple processor from scratch.

How we learn

We learn by doing both hardware simulation and software.  The assignments will be given out periodically throughout the semester. We will also do in class running demo and programming for half an hour every week.  Please take a notebook with you  into the class. The final exam is "open book" and has an element of system design plus some "pseudo" programming.


  19 Aug 2017   start of the class
  . . .


30%   midterm (40 min. open book)
30%   final (90 minutes) (open book)
40%   project  (using multicore processors to solve a problem)


Basic logic design
Assembly language S2 version 1: 32-bit processor 
Rz language   we use Rz 3.6
Learn how to write in Rz by reading  Quick Start Rz
    Example of writing  a recursive descent parser for a simple language
    Example of writing a parser and build parse tree
    Recursive programming with List    extra exercises
Virtual machine
    code generation
    recursive evaluator --  C interpreter of Rz parse tree    eval3.c
Interrupt and its programming
Low power programming (with simulated IoT board)
     example interrupt mode program:   (in Rz)  demo-rz.txt
2-6 October 2017 (midterm)
Operating systems and task scheduling basic OS concepts
Multi-task OS  (MOS)      semaphore video
Multicore processor    Multicore programming
Graphic Processing Unit (GPU)
Quantum Computers
2 December 2017 -- final exam
9 December 2017 -- project presentation

Next week

Please prepare your machine for next week in class activities

26 Aug 2017   I will show assembly programming of S21, download  s21-3.zip and Logicwork5  (below)
  6 Nov 2017    Multi-core tools is now updated    s30-6.zip  and rz compiler for s30  rz40.zip
13 Nov 2017    Prepare to discuss your idea of project.
. . .


S21 simulator and assembler  s21-3.zip  (latest update 24 Jan 2017)
Logicwork5   (tool for Logic Design, no installation required, just unzip)
I use Rz language as an example language.  See my Rz language homepage
Demonstrate the actual compiler of this course RZ.   Rz compiler on web
Compiler uses in this class  Rz 3.6  source and executable  rz36-3.zip  (last update 13 Feb 2017)
ASM parser   asm-parser-2.zip  (update with bug fixed, 2 Sept 2017)
Example of building parse tree  ex-parse-tree.zip
Tools for interrupt programming   iot-rz-17.zip
Multi-core simulator    s30-6.zip
GPU simulator  npsim4.zip
Compiler rz for s30  rz40.zip
NPU simulator  npsim4-1.zip

Recommended free C compiler for Windows lcc-win32 . (for Windows 7, 8, 8.1 and 10).  Please also download and install "User Manual". You need it to look up the library function of this C.  (for OS X you need xcode, also free).


19 Aug 2017 -- Install Logicworks5.   Search for its manual.  Try some simple examples.
26 Aug 2017 -- Learn how to write in Rz by reading  Quick Start Rz.
2 Sept 2017 -- Try to use asm-parser-2.zip.  Add a new instruction,  SUB R10.
9 Sept 2017     Try to do ex-parse-tree.zip.   And write some recursive program.
30 Sept 2017   Try some example of interrupt programming using iot-rz tools.
28 Oct 2017     Try multi-core example programs.  Think how to write multi-core program to run one task faster.
11 Nov 2017    Complete the multiplication program of NPU.  Use the new simulator   npsim4-1.zip
  . . .


. . .

Additional information

Logicworks 4  Tutorial 2   This is a bit old but easy to read.
NEW  Jaruloj Chongstitvatana, Programming Languages, Dept. of Math and CS, Chulalongkorn, 2017.  A standard textbook on compilers. (free download).

last update 25 Nov 2017