0% found this document useful (0 votes)
20 views30 pages

Verilog DataFlow Modeling

The document discusses Verilog dataflow modeling. It covers continuous assignments using assign, implicit continuous assignments, implicit net declarations, and differences between gate-level and dataflow modeling. It also discusses delays in dataflow modeling and expressions involving operands and operators.

Uploaded by

Allen Doughlas
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)
20 views30 pages

Verilog DataFlow Modeling

The document discusses Verilog dataflow modeling. It covers continuous assignments using assign, implicit continuous assignments, implicit net declarations, and differences between gate-level and dataflow modeling. It also discusses delays in dataflow modeling and expressions involving operands and operators.

Uploaded by

Allen Doughlas
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

EC303

Digital Logic Design

Verilog Dataflow Modeling


Outline
 Continuous Assignment
o The assign statement
o Implicit Continuous Assignment
o Implicit Net Declaration
 Gate Level Vs Data Flow Modeling
 Delays:
o Regular Assignment delay
o Implicit Continuous Assignment Delay
o Net Declaration Delay
 Expressions, Operands and Operators

2
Introduction
 Usages of gate-level modeling
o Small designs
o Netlist of gates, Logic Synthesis

 Next level up: Dataflow modeling


o Continuous assignment
 The assign keyword

module my_and(output out, input in1, in2);


assign out = in1 & in2;
endmodule

3
Rules for assign statement
 LHS data type:
o ONLY net (wire),
o scalar or vector net
o concatenations of scalar or vector net
o can not be scalar or vector reg
 Are always active [RHS evaluated and assign to LHS]
 RHS data type:
 register, net or function calls
 scalar or vector
 Delay values can be specified in terms of time units,
similar to specifying delay for gate

4
Rules for assign statement

5
Implicit continuous assignment

Implicit continuous assignment

6
Implicit Net declaration
Implicit net declaration

7
Gate Level vs. Dataflow Modeling
Gate Level Model
module mux4_to_1 (output
out,
input i0, i1, i2, i3, s1, s0);
wire s1n, s0n, y0, y1, y2, y3;
not (s1n, s1);
not (s0n, s0);

and (y0, i0, s1n, s0n); Dataflow Model


module mux4_to_1 (output out,
and (y1, i1, s1n, s0); input i0, i1, i2, i3, s1, s0);
and (y2, i2, s1, s0n);
assign out = (~s1 & ~s0 & i0)|
and (y3, i3, s1, s0); (~s1 & s0 & i1)|
( s1 & ~s0 & i2)|
or (out, y0, y1, y2, y3); ( s1 & s0 & i3);
endmodule endmodule

8
Delays
Specifying Delays at Dataflow Level
1. Regular Assignment Delay
assign #10 out = in1 & in2;

10
Specifying Delays at Dataflow Level

2. Implicit Continuous Assignment Delay


wire #10 out = in1 & in2;
//same as
wire out;
assign #10 out = in1 & in2;

3. Net Declaration Delay

11
Expression
Operands
Operators
Expression, Operands, Operators
 Expressions are constructs that combine
operators and operands to produce a result.

// Examples of expressions. Combines operands and operators


o a^b
o in1 | in2

14
Expression, Operands, Operators
It Can be
o constants, integers, real numbers, nets, registers,
times, bit-select (one bit of vector net or a vector
register), part-select (selected bits of the vector net
or register vector), and memories or function calls
integer count, final_count;
final_count = count + 1; //count is an integer operand
real a, b, c;
c = a - b; //a and b are real operands
reg [15:0] reg1, reg2;
reg [3:0] reg_out;
reg_out = reg1[3:0] ^ reg2[3:0]; //reg1[3:0] and reg2[3:0] are
//part-select register operands
reg ret_value;
ret_value = calculate_parity(A, B);//calculate_parity is a
//function type operand

15
Expression, Operands, Operators

 Operators act on the operands to produce desired


results.

 Examples:
o d1 && d2 // && is an operator on
operands d1 and d2
o !a[0] // ! is an operator on operand a[0]
o B >> 1 // >> is an operator on operands
B and 1

16
Operators
Operator Category Operators Symbol
Arithmetic * / + - % **
Logical ! && ||
Relational > < <= >=
Equality == != === !===
Bitwise ~ & | ^ ^~ ~^
Reduction (out is one bit) & ~& | ~| ^ ~^ OR ^~
Shift >> << >>> <<<
Concatenation {}
Replication {{}}
Conditional ?:
17
Arithmetic Operators

Any input is ‘x’

18
Logical and Relational Operators
 Logical Operators:
 Evaluate to 1-bit value
 ! && ||
 Operands: True:1, False:0, x or z => x
 Outcome: 0, 1, x
 Can take variable or expression as operand

19
Logical and Relational Operators

20
Logical and Relational Operators
 Relational Operators: [> < <= >=]
 Evaluate to logic 1 - If expression is True
 Evaluate to logic 0 - If expression is False
 “Unknown or z” value usually treated as x
(operand)

21
Equality Operators

// A = 4, B = 3
// X = 4'b1010, Y = 4'b1101

A == B - 0
X != Y - 1

22
Reduction Operators
// X = 4'b1010

&X => 1’b0

|X => 1’b1

^X => 1’b0

23
Bitwise/Logical/Reduction Operators
 Bitwise vs. Logical operators
 Reduction operators

24
Shift Operators
// X = 4'b1100

Y = X >> 1;
Y = X << 1;
Y = X << 2;

25
Concatenation Operator
Provides mechanism to append multiple
operands

// A = 1'b1, B = 2'b00,
// C = 2'b10, D = 3'b110

Y = {B , C} Y = 4'b0010
Y = {A , B , C , D , 3'b001} Y = 11'b100……01
Y = {A , B[0], C[1]} Y = 3'b101

26
Replication Operator
reg A;
reg [1:0] B, C;
reg [2:0] D;
A = 1'b1; B = 2'b00; C = 2'b10; D = 3'b110;
Y = { 4{A} }
Y = { 4{A} , 2{B} }
Y = { 4{A} , 2{B} , C }

27
Conditional Operator

Port/Const/Vari = Condition ? True_Value : False_Value;

assign addr_bus = drive_enable ? addr_out : 36'bz;


assign out = control ? in1 : in0;
assign out = (A == 3) ? (control ? x : y ):(control ? m : n) ;

28
Operators Precedence

29
Operations that are not legal on Reals
A real is not treated as a vector of bits, several
operators that work on bits and vectors of bits
are not legal for use with reals

30
Examples - MUX

31

You might also like