EE 4743/6743 Digital System Design



Policy/Syllabus

  1. Policy/Syllabus

Teaching Philosophy

This is an upper level course, and thus is taught in a different style than what I use in a lower level course. READ THIS -- it will give you a clue as to what to expect in this class.

Email List

If you have not been receiving messages from the class email list (reese-class1@erc), then IT IS VERY IMPORTANT that you get on this list! You do this via two ways:

This list is where the TA and myself announce corrections to lab assignments, problems/workarounds in the software, etc. You will cost yourself a lot of hours if you do not subscribe to this list and read the messages that are sent to it.

Altera Maxplus Student Edition Software

You can get the Altera Student edition software from the CDROM that I hand out in class or via the ZIP file available from /home/reese/altera_student/maxplus2.zip (on either the ERC machines or the ECE machines). I cannot make this file available via this WWW page because it cannot be made publicy available. Use FTP to download the maxplus2.zip file (12.7 Mb) from /home/reese/altera_student. Be sure you use binary mode in downloading the file.

Once you unzip the file 'maxplus2.zip', execute the file 'install.exe' from the 'Pc/Maxplus2/' directory double clicking on it from an explorer window. If you have the CDROM, execute 'PC/Maxplus2/install.exe' directly from the CDROM.

Installing the Patch

After installation, you will also need to download the patch. You can RIGHT CLICK HERE to save it to disk; be sure to save it to the SAME directory as where you installed Maxplus2 (i.e, c:\maxplus2). Once you have saved this file, use a DOS window to execute it with the command "univers.exe -o". You can also get this patch from the WWW page referenced to during the installation process.

First Time execution

When you run maxplus2 for the first time, a license agreement will pop up in a small window. You MUST click inside of this window, and use the 'PG DN' key to page all the way down to the bottom of the agreement. At this point, you should be able to click on the "Yes" button to accept the license agreement. A window will also pop up with the software guard ID (will look like S0002XXXXX). You will need to go to THIS PAGE , enter the software guard, and fill out the form. Your authorization code will be emailed back to you very quickly; you can copy this authorization code into the appropriate window in the Maxplus2 software (will be displayed when you startup Maxplus2). After you enter the authorization code, the software should work ok. Save YOUR authorization email message from Altera somewhere safe!!! If you have installation problems, I would like to see this message FIRST before I help you.

If you used the 'maxplus2.zip' file, after installation you can delete the 'Pc/...' directory tree that was created after unzipping.

Altera Maxplus Professional Edition Software

Once you install the software, the first time you execute it you will see message about a missing or corrupted license file. Use the Options -> License file menu choice to set the path to the license file server. Use that path given in class. WARNING -- Maxplus2 will take about 3-4 minutes to start because it has to download licenses.

Labs

  1. Lab 1 (Microsoft Word document)
    Lab 1 (HTML)
  2. Lab 2 (HTML): Intro to VHDL - Saturating Adder (print this lab out in landscape mode)
  3. Lab 3 (HTML): Intro to Altera LPMs
  4. Lab 4 (HTML): Blend Equation
  5. Lab 5 (HTML): Timing
  6. Lab 6 (HTML): Pipelining
  7. Lab 7 (HTML): FSMs (Matrix Multiply)
  8. Lab 8 (HTML): Matrix Multiply Revisited
  9. Class Project

Homeworks

  1. Homework #1 (HTML)
    Homework #1 (Microsoft Word)
  2. Homework #2 (HTML)
    Homework #2 (Microsoft Word)
  3. Homework #3 (HTML)
    Homework #3 (Microsoft Word)

Any files referenced in the labs can be directly copied or ftp'ed from "~reese/EE4743/labs/" on leto.ece.msstate.edu. Some students have had trouble accessing these from the HTML hyperlinks.

Lecture Supplements

  1. Fixed Point arithmetic, Saturating adders
  2. FPGA Families Summaries.
    You should also look at the data sheets.
  3. Test #1 Review (HTML)
    Test #1 (Microsoft Word)
  4. FPGA Timing Models
    You should also look at the data sheets.
  5. Introduction to Pipelining
  6. Altera Timing Model Details
  7. Postscript file for FIR filter FSM example
  8. Datapath Design, Part I
  9. Datapath Design, Part II
  10. RAM Zeroing Operation Example, zip file, Implementation 1. This is an implementation of the example given in the Datapath design notes, Part I. This implementation uses mostly LPMs.
  11. RAM Zeroing Operation Example, zip file, Implementation 2. This is an implementation of the example given in the Datapath design notes, Part I. This implementation uses mostly VHDL.
  12. RAM Zeroing Operation Example, zip file, Implementation 3. This is an implementation of the example given in the Datapath design notes, Part I. This illustrates the use of structural VHDL to replace the top-level schematic of the second implementation. Uses two VHDL files.
  13. RAM Zeroing Operation Example, zip file, Implementation 4. . This is an implementation of the example given in the Datapath design notes, Part I. This illustrates simply declaring the RAM component instantiation into the same VHDL file that contains the FSM code and other datapath components. This shows that you can mix component instantiations in with RTL code.
  14. Test #2 Review (HTML)
    Test #2 (Microsoft Word)

Topic Coverage by Week

  1. Week 1: Intro to Maxplus2
  2. Week 2: VHDL Combinational Logic Introduction
  3. Week 3: Saturating arithmetic, begin talking about Implementation technologies (Full Custom, Standard Cells, Gate Arrays, FPGAs, CPLDs, PLDs).
  4. Week 4: FPGA Families
  5. Week 5: FPGA Families, Timing, Test #1
  6. Week 6: FPGA Timing Models, start VHDL for Sequential Logic
  7. Week 7: FSMs in VHDL
  8. Week 8: FSM/Datapath Design in VHDL

Data Sheets

Sample Tests

Misc

To read PDF documents on the Sun systems, do "swsetup acrobat", then do "acroread documentname".

VHDL Examples

Click HERE for the VHDL examples from the notes. These have checked to work with Altera Maxplus2.

UP1 Board

Using the Altera UP1 Board

  1. Make sure that the jumpers on the board are set correctly. Look at this document for an explanation of the jumpers. Look at pages 5,6 at the description of the jumper settings and make sure that you can program the Flex10K device.
  2. Connect power to your board, and the byteblaster cable to the parallel port and to your board.
  3. Start Maxplus2, and click on the ByteBlaster icon or the "Programmer" choice under the Max+plusII menu. If the Hardware setup window does not appear, then access this via "Options -> Hardware Setup". Choose ByteBlaster, and make sure that LPT1 port is selected. Close the Hardware setup menu.
  4. Under the "JTAG" menu, make sure that "Multi-Device Jtag Chain" is checked. Then under the "JTAG" menu, execute the "Multi-Device JTAG Chain Setup". When this menu pops up, click on "Select Programming File" and browse to the .SOF file that you want to download. Click on "Add", then exit by clicking on "Ok". There should be only ONE programming file selected.
  5. In the "Programmer" popup menu, click on "Configure", and you should see the download completion bar progress from 0% to 100%. Your design is now downloaded.
  6. If you are running NT, you must install the ByteBlaster driver. Access the Multimedia icon under the Control Panel, and add an "Unknown device"; point the installation program at the maxplus2/drivers directory. Choose the "ByteBlaster" when the popup menu appears, and the installation will complete. You will need to reboot.

Maxplus Oddities, Error Messages

This is a list of oddities/errata/weird_stuff that you need to be aware of when using the Maxplus software:

  1. .TDF file extension: When you edit a text file using Maxplus, the default extension is ".TDF". Do NOT use this for a VHDL code - the default compiler invoked on a ".TDF" is not the VHDL compiler. Use a ".vhd" file extension for VHDL files.
  2. If you get an error message about 'tri-state outputs' during compilation, this means that you have two outputs tied together (probably have mistakenly named two busses the same name ).
  3. Student Edition Installation under Win98: Many people have installed the Student Edition under Win98 with no problems. However, the following problem occurred on a Pentium 130Mhz, 32Mb RAM system running Win98 - everytime the installation procedure was attempted, a system error occurred that would terminate the installation. Many different things were tried, including shutting down all starup programs, copying the "Pc/Maxplus2 directory tree to the C: drive before installation, etc. We finally got it work by first copying the "Pc/" directory on the Maxplus CDROM to drive C:, booting in Safe Mode, and then doing the installation (Safe mode does not have a CDROM driver so that is why the "Pc/" directory had to be copied first). After the installation completed, the machine was booted normally and all worked ok.
  4. Student Edition, "Partitioner Error" Under the Student edition, if a design won't fit (i.e. a 16-bit multiplier in a Max7000 part), then you will occasionally get a 'Internal Partitioner Error' instead of a 'Design does not Fit' message. Try mapping the design to a Flex10K family part.
  5. Student Edition, Synthesis Problem with Finite State Machines, Conditional outputs in Processes. These two files, fsmbad.vhd and fsmgood.vhd illustrate a synthesis problem with the student edition V7.21 (the problem does not occur in the Professional edition). The lecture notes use the style that is shown in the 'bad' example, so be SURE to use the style in the 'good' example if you are using the Student edition. This is actually a symptom of a larger problem as shown by test_bad.vhd and test_good.vhd . In the student edition V7.21, if you have a conditional output in an 'if' statement inside of a CASE statement, the output will have a latch synthesized on it if the 'if' statement does not have an 'else' clause EVEN if the output is previously assigned a default value. The professional edition generates the correct logic (no latch). BE CAREFUL OF THIS!!!! This bug is tough to spot!! Try to avoid conditional outputs inside of case statementts if you are using Student V7.21 or put them in concurrent statements outside of the process.

    Here are two more examples that correspond to the FSM defined in the Datapath notes . The first file is the recommended method for writing FSMs if you are using the Student edition V7.21. The second file follows the style discussed in the notes, and works fine with the professional edition.

  6. Student Edition, Compare operation. This is from James Hamblen, Professor at Ga Tech. The only big VHDL problem issue that I have come across deals with '<' or>' compare ops. It does not select signed correctly and seems to always use unsigned compare operations (i.e. it ignores your signed library statement). This is fixed only in the latest pro version.