0% found this document useful (0 votes)
2 views

Verilog_Control_Structures_and_Operators

Uploaded by

maathirah
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
2 views

Verilog_Control_Structures_and_Operators

Uploaded by

maathirah
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 4

Verilog Control Structures and Operators

1. If-Else Statement

Description: Used for conditional execution of statements. It executes one block if the condition is true, and another if it

is false.

Syntax:

if (condition)

statement1;

else

statement2;

Example:

always @(*) begin

if (a > b)

result = a;

else

result = b;

end

Explanation: If 'a' is greater than 'b', 'result' is assigned 'a'; otherwise, 'result' is 'b'.

2. Case Statement

Description: Used for multi-way branching based on the value of an expression. It's more efficient than multiple if-else

statements.

Syntax:

case (expression)

value1: statement1;

value2: statement2;
default: statement_default;

endcase

Example:

always @(*) begin

case (opcode)

4'b0000: operation = "ADD";

4'b0001: operation = "SUB";

4'b0010: operation = "MUL";

default: operation = "NOP"; // No operation

endcase

Explanation: The 'operation' is set based on the 'opcode' value.

3. Casex and Casez Statements

Casex: Treats 'x' and 'z' as don't-care conditions in the case expression and case items.

Casez: Treats only 'z' (high-impedance) bits as don't-care conditions.

Syntax:

casex (expression)

4'b1xx0: action1; // 'x' bits are don't-care

default: action_default;

endcase

casez (expression)

4'b1z00: action2; // 'z' bits are don't-care

default: action_default;

endcase
Example for Casex:

casex (input_signal)

4'b1xx1: result = 1; // Matches 1001, 1011, 1101, 1111

default: result = 0;

endcase

Example for Casez:

casez (input_signal)

4'b1z01: result = 1; // Matches 1001, 1z01, 1Z01

default: result = 0;

endcase

Explanation: 'casex' and 'casez' are used for pattern matching where some bits can be ignored.

4. For Loop

Description: Used for iterative tasks, like generating repeated structures or performing operations a fixed number of

times.

Syntax:

for (initialization; condition; increment) begin

// Statements to execute

end

Example:

always @(*) begin

for (i = 0; i < 8; i = i + 1) begin

result[i] = a[i] & b[i]; // Perform bitwise AND for each bit

end
end

Explanation: This loop performs a bitwise AND operation on each bit of two 8-bit vectors.

5. Verilog Operators

Types of Operators:

- Arithmetic Operators: +, -, *, /, % (addition, subtraction, multiplication, division, modulus)

- Logical Operators: &&, ||, ! (logical AND, OR, NOT)

- Bitwise Operators: &, |, ^, ~, ^~ or ~^ (bitwise AND, OR, XOR, NOT, XNOR)

- Relational Operators: ==, !=, <, <=, >, >= (comparison)

- Shift Operators: <<, >> (left shift, right shift)

- Reduction Operators: &, |, ^, ~&, ~|, ~^ or ^~ (reduces a vector to a single bit using bitwise operations)

- Concatenation Operator: {} (combines multiple bits or vectors into one)

- Conditional Operator: ? : (ternary operator, used for conditional assignments)

Examples:

- Arithmetic: result = a + b; // Addition

- Logical: if (a && b) out = 1;

- Bitwise: result = a & b; // Bitwise AND

- Relational: if (a == b) equal_flag = 1;

- Shift: result = a << 2; // Left shift by 2 bits

- Conditional: max = (a > b) ? a : b; // If a > b, max = a; else max = b

Explanation: Verilog operators perform various operations, from arithmetic to bitwise manipulation. The conditional

operator (? :) is useful for compact conditional expressions.

You might also like