Introduction To VHDL
Introduction To VHDL
Case Sensitivity
VHDL is not case sensitive. This means that the two statements shown below have the exact
same meaning (don’t worry about what the statement actually means though).
Identifiers
An identifier refers to the name given to various items in VHDL. Examples of identifiers in
higher-level languages include variable names and function names. Examples of identifiers in
VHDL include variable names, signal names and port names (all of which will be discussed
soon). Listed below are the hard and soft rules (i.e. you must follow them or you should follow
them), regarding VHDL identifiers.
Identifiers should be self-describing. In other words,
the text you apply to identifiers should provide
information as to the use and purpose of the item the
identifier represents. Identifiers can be as long as you
want (contain many characters).
Most of the points deal with the readability and understandability of the VHDL code. Each port
name is unique and has an associated mode and data type. This is a requirement. The VHDL
compiler allows several port names to be included on a single line. Port names are separated by
commas. Always strive for readability.
VHDL Standard Libraries
The VHDL language as many other computer languages, has gone through a long and intense
evolution. Among the most important standardization steps we can mention are the release of
the IEEE Standard 1164 package as well as some child standards that further extended the
functionality of the language.
Architecture
The VHDL entity declaration, introduced before, describes the interface or the external
representation of the circuit. The architecture describes what the circuit actually does. In other
words, the VHDL architecture describes the internal implementation of the associated entity. As you
can probably imagine, describing the external interface to a circuit is generally much easier than
describing how the circuit is intended to operate. This statement becomes even more important as
the circuits you are describing become more complex.
Concurrent Statements
At the heart of most programming languages are the statements that form a majority of the
associated source code. These statements represent finite quantities of actions to be taken. A
statement in an algorithmic programming language such as C or Java represents an action to be
taken by the processor. Once the processor finishes one action, it moves onto the next action
specified somewhere in the associated source code.
VHDL programming is significantly different. Whereas a processor steps one by one through a set of
statements, VHDL has the ability to execute a virtually unlimited number of statements at the same
time and in a concurrent manner (in other words, in parallel). Once again, the key thing to remember
here is that we are designing hardware. Parallelism, or things happening concurrently, in the context
of hardware is a much more straightforward concept than it is in the world of software.
As a consequence of the concurrent nature of VHDL statements, the three chunks of
code appearing below are 100% equivalent to the code shown
Signal Assignment Operator “<=”
Algorithmic programming languages always have some type of assignment operator. In C or Java, this
is the well-known “=” sign. In these languages, the assignment operator signifies a transfer of data
from the right-hand side of the operator to the left-hand side. VHDL uses two consecutive characters
to represent the assignment operator: “<=”. This combination was chosen because it is different from
the assignment operators in most other common algorithmic programming languages. The operator is
officially known as a signal assignment operator to highlight its true purpose. The signal assignment
operator specifies a relationship between signals. In other words, the signal on the left-hand side of
the signal assignment operator is dependent upon the signals on the right-hand side of the operator.
Syntax: