ECEN 2220 - Computers As Components
Syllabus
This syllabus is organized by weeks.
All of the class periods for the week are listed, and a lecture title, an
hour examination or a holiday is given for each.
Lecture titles are accompanied by a list of sections from the
textbook that are relevant to that lecture.
When a sequence of lectures is devoted to the same material, all are listed
with the same title.
In this case, relevant sections of the text are listed only for the first
lecture in the sequence.
Subsequent lectures bear the notation ``(continued)''.
Each textbook section reference is a link to a short description of the
material in that section, giving you hints about how to get the most out of
your reading and what we consider to be the section's important points.
The list of topics covered by the
homework to be
turned in the following week is also given for each week.
(The schedule for turning in homework can be found in the discussion of
administrative
details.)
-
- Course goals
- Course mechanics
- Applications for embedded systems
- How an embedded system solves a problem
-
- I/O devices, CPU, Memory
- Interconnections -- the use of a bus
- Specifying computations
-
- CPU architecture and Assembly language
- The condition code
- Signed and unsigned interpretations
- The behavior of if and while
Basic software familiarization
- Access information via the WWW
- Use electronic mail
- Use Borland C
9/4: Labor day, no lecture
-
- Access to denotations
- Array variable access
9/8: Addressing modes (continued)
- Pointer variable access
- Pointers to arrays
- General taxonomy of addressing modes
Homework
Assembler and debugger
- Configure the compiler to produce assembly code
- Produce .asm files and identify redundant code
- Obtain information via the debugger
-
- How the call and return operations use the stack
- Passing arguments via the stack
- Use of BP to access arguments
- Saving and restoring state
- Example is a routine to move characters
-
- Interface specifications
- Recursion
- Use of the stack for local variables
- The concept of an activation record
- Example is a routine to convert numbers
-
- Storage reservation and data generation: DB, DW, DD
- Activation records STRUC/ENDS
- How directives are used to separate data layout from code
- How directives are used to obtain properties of data
Homework
Recursion and activation records
- Write a recursive routine
- Use the debugger to follow execution
-
- Determining addresses
- ORG and EQU
- Attributes computed by the assembler
-
- Separation of concerns and information hiding
- Visibility and lifetime
- Segment directives and combine types
- The analogy between assembly and linkage
9/22: Summary for first examination
- This time can also be used to catch up
- Recap system and machine architecture
- Recap language issues
Homework
Modules and linking
- Create two subroutines as separate modules
- Examine the segment addressing for various combine types
- Examine instructions that refer to external symbols
-
- The RS-232 interface
- The function of a UART
- Access to I/O devices via OUT and IN instruction
9/27: Serial I/O (continued)
- Programming the UART
- Writing characters to the UART
- Reading characters from the UART
-
- Sampling analog waveforms
- Conversion between analog and digital representations
- Handshaking required for A/D, D/A conversion
Homework
Serial I/O
- Write character input/output routines in assembly language
- Write a general input/output module in C
- Combine these routines to copy text from one machine to another
10/2:
First examination,
covering material through week 4
- Machine architecture
- Assembly language
-
- Examples from real life
- How interrupts affect the CPU
- When interrupts can and cannot occur
- Interrupt priority
10/6: Interrupts (continued)
- Interrupt-handlers for serial I/O
Homework
Analog Output
- Write an assembly language routine to output samples
- Write a variable-frequency sine wave generator
- Produce morse code from alphanumeric text
-
- How the processor deals with instructions: The fetch/execute cycle
- Variable-length instructions and how they are decoded
- Instruction timing and interrupt cost
- The cost of transmitting one sample
-
- Sampling requirements for signal reproduction
- Block transfer data paths and cycle stealing
- Interaction between DMA controller and device controller
10/13: Block transfers and DMA (continued)
- Setup operations for block transfer
- Bus mastery
- Buffering considerations
Homework
Interrupt-driven serial I/O
- Write interrupt-driven character I/O routines
- Implement a "talk" facility between two machines
10/16: Block transfers and DMA (continued)
10/18: Buffering and buffer management (Text, Section 6-5)
- Buffering for data-rate averaging
- Use of multiple buffers
- Circular buffers
10/20: Buffering and buffer management (continued)
- Circular buffer management routines
Homework
Analog I/O
- Write an interrupt-driven routine to input samples
- Output a copy of the input samples as they are read
- Degrade the output by changing values, skipping samples, etc.
10/23:
Time
(Text, Section
9-3)
- 60 Hz interrupts as a timing mechanism
- Timing of short intervals
- Cascaded counters and software clocks
-
- The critical section problem
- Assumptions made by Dijkstra
- Solution under Dijkstra's assumptions
10:27: Process management (continued)
- A computer system as a collection of cooperating processes
- Semaphores
- Preemptive and non-preemptive scheduling
Homework
Logical I/O
- Write an assembly language routine to debounce switches
- Background control of a pedestrian traffic light
10/30: Summary for second examination
- This time can also be used to catch up
- Recap system architecture
- Recap relationship among components
- Recap relationship with the outside world
-
- Pure code
- Re-entrancy vs. serial reusability
- Coding techniques
-
- IEEE standard representation
- How floating-point arithmetic operations are carried out
- What is "roundoff" error?
Homework
Use the parallel port for asynchronous serial communication
- Establish the correct timing and bit patterns
- Communicate between machines
11/6:
Second examination,
covering material through week 9
- I/O
- Interrupts
- Concurrency
11/8: Floating point numbers (continued)
- Code to unpack, normalize, and pack floating-point numbers
- Representing A/D and D/A samples in floating-point
-
- Closely-coupled processors
- Bus states
- System size
Homework
Measure a resistance using the parallel port only
- Determine the accuracy of the measurement
- Explore hysteresis effects
-
- Coding of floating-point operations
- CPU bus usage information
- CPU instruction queue information
-
11/17: Memory management (continued)
Homework
On/off control
- Using asymmetric waveforms for speed and position control
- Line following robot
11/20: Memory management (continued)
- Associative memory
- Caching
11/22: Case study
- The control problem
- Sensing position and velocity
11/24: Thanksgiving break, no lecture
Homework
Encoding/Decoding
- Determine motion from a shaft encoder
- Single-knob control of frequency and volume
11/27: Case study (continued)
- Use of compensation to obtain desirable characteristics
11/29: Case study (continued)
- How the computer determines compensation
12/1: Case study (continued)
- Simulating the real world
Homework
Analog control
- Response using position feedback only
- Compensation using acceleration and velocity feedback
- Use floating point to compute control inputs
12/4: Mystery lecture
- This time can also be used for course evaluation
12/6: Mystery lecture
- This time can also be used to catch up
- Possible topic might be other architectures
12/8: Mystery lecture
- Possible topics might be student questions
Homework
Creative Exercise
- Describe a control problem of your own choosing
- Explain how it can be solved by one of our lab systems
- Indicate the functionality of the necessary software
- Estimate how long it would take to solve the problem as stated
12/11: Where have we been this semester?
- Recap system architecture
- Recap interactions with the environment
- Recap memory and coprocessor issues
12/13: Where have we been this semester?
- Free-ranging discussion of computers as components
Monday December 18, 11:30 AM - 2:30 PM