Integer Constants
Formal Definition
The integer constants are used to specify numbers.
Simplified Syntax
sign size 'base number
Description
Integer constants can be specified as unsized numbers (Example 1) or
as sized numbers (Example 2). Sign, size and base are optional and
they can be separated by white spaces. If none are used, then a
number is positive and a decimal. Size should be a positive constant
value (decimal number) and it specifies number of bits used for the
integer. The base format should contain two characters: apostrophe
(') and a base identifier. The base identifier and apostrophe cannot
be separated by any white space. Legal base specifications are d and
D for decimal numbers, h and H for hexadecimal numbers, o and O for
octal numbers, b and B for binary numbers.
Decimal numbers can contain only digits and underscores (_). Binary
numbers can contain only 0, 1, unknown values (x and X),
high-impedance values (z and Z) and underscores. Each character in a
binary number has 1 bit. Octal numbers can be specified using 0, 1,
2, 3, 4, 5, 6, 7, unknown values (x and X), high-impedance values (z
and Z) and underscores. Each character in an octal number has a 3 bit
equivalent. Legal characters for hexadecimal numbers are unknown
values (x and X), high-impedance values (z and Z), digits (0, 1, 2,
3, 4, 5, 6, 7, 8, 9), letters (a, A, b, B, c, C, d, D, e, E, f, F)
and underscores. Each character in a hexadecimal number has a 4 bit equivalent.
Decimal numbers without the base format and size specified are
treated as signed integers, but decimal numbers with base format are
treated as unsigned integers (see Arithmetic expressions with
registers and integers for more details).
If a specified number is bigger than a specified size constant, then
the most significant bits of numbers will be truncated. If number is
smaller than the size constant, then it will be padded to the left
with zeros. If the most significant bit of a specified number has an
unknown (x) or high-impedance (z) value, then that value will be used
to pad to the left (Example 3).
Underscore character (_) is ignored and can be used to enhance
readability. It cannot be the first character in number.
The question mark (?) can be used in specifying numbers with
high-impedance value (z) and is very useful in case statements.
Examples
Example 1
15
'h f
'o 17
'd 15
'b 1111
'b 1_1_1_1
All the above numbers are equal. The first number is a decimal number
without the base specified, the second one is a hexadecimal number,
the third is an octal number, the fourth is a decimal number with
base specified, and the fifth and sixth are binary numbers.
Example 2
-5'b1_1011
10 'd 20
8'h z
6'o 71
Examples of sized integers.
Example 3
8'b0 is equal to 8'b00000000
8'b1 is equal to 8'b00000001
8'bz is equal to 8'bzzzzzzzz
8'bx is equal to 8'bxxxxxxxx
Examples of padding to the left.
Important Notes
|