Computer Organization

Lab 1: Use a Hard or Soft Processor System on Intel® FPGAs

Learn how programs written in an assembly language can be executed on an Intel® FPGA using the Altera Monitor Program software to compile, load, and run the application programs.

  • Load a computer system onto an FPGA device.
  • Set up a software development project.
  • Use a simple application program to explore features of the Altera Monitor Program.

Download (Arm) Download (Nios II)

Lab 2: Logic Instructions

Explore various ways to use logic instructions.

  • Practice manipulating bitstreams using load, move, compare, branch, shift, and mathematical logic instructions.
  • Implement a search-and-count assembly language program and convert it to a subroutine.
  • Present the results on the seven-segment displays of an FPGA development kit.

Download (Arm) Download (Nios II)

Lab 3: Subroutines and Stacks

This lab covers the concepts of parameter passing, stacks, and recursion.

  • Write a loop to compute a summation, and then add recursion. Use the stack to save the state of the subroutine each time it recurses.
  • Sort a list of 32-bit numbers into descending order.
  • Write a program that computes the nth number in the Fibonacci sequence.

Download (Arm) Download (Nios II)

Lab 4: Input and Output in an Embedded System

Investigate the use of devices that provide input and output capabilities for a processor.

  • Program a two-digit decimal counter on the seven-segment display.
  • Implement polling to stop and start the counter when any push-button key is pressed.
  • Add a hardware timer to the program.

Download (Arm) Download (Nios II)

Lab 5: Use Interrupts with Assembly Code

Further explore the use of interrupts in programs that interact with input and output devices.

  • Write subroutines to set up timer and key interrupts.
  • Modify the interrupt service routine to vary the speed of the timer.
  • Implement a private timer as a third source of interrupts.

Download (ARM) Download (Nios II)

Lab 6: Use C Code with an FPGA Processor

Practice using C code on the FPGA hard or soft processor.

  • Write C language programs that accomplish the same tasks as earlier labs.
  • Compare the size of the machine code for assembly versus C language.
  • Analyze the trade-offs in development ease versus system performance.

Download (Arm) Download (Nios II)

Lab 7: Use Interrupts with C Code

Repeat Lab 5 tasks using C code rather than assembly-language code.

  • Write subroutines to set up timer and key interrupts.
  • Modify the interrupt service routine to vary the speed of the timer.
  • Implement a private timer as a third source of interrupts.

Download (Arm) Download (Nios II)

Lab 8: Introduction to Graphics and Animation

Explore how to display images and perform animation on a VGA terminal.

  • Study the pixel buffer architecture of the VGA controller.
  • Write a C program that implements the Bresenham line-drawing algorithm.
  • Add physics to the program so that the animation moves and “bounces” off the edge of the display.
  • Create a classic screen saver animation with multiple lines moving in random directions.
  • Enhance the animation to vary the speed of movement, number of rectangles, and lines between the rectangles.

Download (Arm) Download (Nios II)