The Student's Guide to VHDL

Peter J. Ashenden


Errata

If you detect an error, I would be pleased to hear about it. You can send email to me at petera@cs.adelaide.edu.au. I will add errata to this list and acknowledge you as the finder. However, before sending an erratum, please check to make sure it's not already on the list.

Thanks.


Errata for the first printing

You can tell which printing of the book you have by looking at the copyright page overleaf from the title page.  Below the line "Printed in the United States of America" is a line with one or more double-digit and single-digit numbers.  The rightmost double-digit number is the year of printing, and the rightmost single-digit number is the printing number.  For example, the line
02   01   00   99   98     5   4   3   2   1
indicates the first printing (in 1998).


From: Graham Minchin <gtminch@tartarus.uwa.edu.au>

On page 43, Figure 2-4: the line from "record types" to "constrained array types" should be from "array types" to "constrained array types."


From: Neil Boroky at The University of Adelaide

In Figure 5-10 on page 120: the labelling of the fourth and fifth delta cycles should be "0 + 3 delta" and "0 + 4 delta" respectively.


From: John A. Rupf, Ph.D. <jrupf@spsu.edu>

On page 34: In the EBNF syntax rules for floating_type_definition and physical_type_definition, replace the character "~" with the symbol "<="' (the "is defined to be" symbol).

On page 35: In the type definition for length, the correct number of um per mil is 25.4.  However, VHDL requires the multiple in a secondary units definition to be an integer.  Thus we cannot change 254 um to 25.4 um in this context.  Instead, change the type declaration to the following:

    type length is range 0 to 1E9
      units
        um;               -- primary unit: micron
        mm = 1000 um;     -- metric units
        m = 1000 mm;
        inch = 25400 um;  -- imperial units
        foot = 12 inch;
      end units length;

Also, in the examples of physical literals at the bottom of page 35, delete "450 mil", and insert "2 foot" at the end of the line.


From: Todd Salter <ra1700@email.sps.mot.com>

In Exercise 11 on page 79: The problem statement requires you to develop a model with an input of an enumeration type.  This requires an entity declaration with an input port of the enumeration type.  The only way an enumeration type can be made visible at the point of a port declaration is to declare the enumeration type in a package.  However, packages are not introduced until a later chapter.

To avoid this difficulty, change the problem statement as follows:

Develop a model for a floating-point arithmetic unit with data inputs x and y, data output z and function code inputs f1 and f0 of type bit.  Function codes f1 = '0' and f0 = '0' produce addition; f1 = '0' and f0 = '1' produce subtraction of y from x; f1 = '1' and f0 = '0' produce multiplication; and f1 = '1' and f0 = '1' produce division of x by y.

In the solution to Exercise 3 on page 294: The exit statement should exit from all of the nested loops.  Label the outermost loop with the label "search_loop", and change the exit statement to refer to this label.  The corrected code is:

    ...
    search_loop : for side in 0 to 1 loop
        for track in 0 to 79 loop
            for sector in 0 to 17 loop
                if ... then
                    ...
                    exit search_loop;
                ...