Port Types
The port types can be, input, output and inout.
Data Types
There are two types of data in Verilog, one is called net and the other is called reg. A reg declaration is used to store some temporary data and a net is used to connect blocks and processes.
Net
Net declarations can be wire , tri, supply0 and supply1.
wire | represents a node or connection |
tri | represents a tri-state node |
supply0 | represents the logic 0 |
supply1 | represents the logic 1 |
Reg
Reg declarations can be reg , integer, time and realtime. A variable of type reg can be designated only by a procedure statement, task, or function. A variable of type reg cannot be the output of a port or an assign statement.
Data Input Output Rules
If you have a variable of type net, it can be declared as input, output, or inout. A variable of type reg can only be declared of type output.
Assign Values
In Verilog numbers can be assigned with size or not. If it is not declared the size it defaults to 32 bits. Also you must choose the base of the number and the options are decimal, hexadecimal, octal and binary. If not specified the base it defaults to the decimal base.
Examples:
122 - Unsized number with no base, so it is a 32 bit wide number with the value 122 in the decimal base.
3’b010 - 3 bit wide with the value 010 in base two or 2 in decimal base.
8’hAA- 8 bit wide with the value AA in the hexadecimal base.
6’o77 - 6 bit wide with the value 77 in the octal base.
‘b010 - 32 bit wide with the value 2 in the decimal base.
‘d2 - Same as before.
Negative Numbers
Negative numbers are stored as compliment two and the minus sign must be included before the specification of size.
Example:
- 10’d5 10 bit number stored as complement two of 5.
10’d-5 Illegal representation.
Special Number Characters
Character | Function | Example |
_ | used for readability | 16’h15_ab_cd_ef |
x or X | specify unknown bits | 16’h15abx |
z or Z | specify high impedance value | 16’hz |
References
Verilog HDL Basics - Altera