SlideShare ist ein Scribd-Unternehmen logo
1 von 28
ENGR. RASHID FARID CHISHTI
LECTURER,DEE, FET, IIUI
CHISHTI@IIU.EDU.PK
WEEK 7
PORTS RULES, GATE DELAYS,
DATA FLOW MODELING
CARRY LOOK AHEAD ADDER
FPGA Based System Design
Sunday, May 17, 2015
1
www.iiu.edu.pk
 One can visualize a port as
consisting of two units
 one unit that is internal to
the module
 an other that is external to
the module.
 Inputs: Internally, input ports must always be of the type net. Externally, the
inputs can be connected to a variable which is a reg or a net.
 Outputs: Internally, output ports can be of the type reg or net. Externally,
outputs must always be connected to a net. They cannot be connected to a reg.
 Inouts: Internally, inout ports must always be of the type net. Externally, inout
ports must always be connected to a net.
 Width matching: port connections between two modules of different sizes can
be made. However, a warning is typically issued that the widths do not match.
www.iiu.edu.pk Sunday, May 17, 2015
Ports Connection Rules
2
 There are two methods of making connections between signals specified in the
module instantiation and the ports in a module definition. These two methods
cannot be mixed. These methods are a follows
 Connecting by ordered list: The signals to be connected must appear in the
module instantiation in the same order as the ports in the port list in the module
definition.
module top;
reg [3:0]A,B; reg C_IN; wire [3:0] SUM; wire C_OUT;
// Signals are connected to ports in order (by position)
fulladd4 fa_ordered(SUM, C_OUT, A, B, C_IN);
endmodule
module fulladd4 (sum, c_out, a, b, c_in);
output[3:0] sum; output c_cout;
input [3:0] a, b; input c_in;
<module internals>
endmodule
www.iiu.edu.pk Sunday, May 17, 2015
Unconnected Ports
3
 Connecting ports by name: Verilog provides the capability to connect external
signals to ports by the port names, rather than by position. You can specify the
port connections in any order as long as the port name in the module definition
correctly matches the external signal.
// Instantiate module fa_byname and connect signals to ports by name
fulladd4 fa_byname(.c_out(C_OUT), .sum(SUM), .b(B),
.c_in(C_IN), .a(A),);
Note that only those ports that are to be connected to external signals must be
specified in port connection by name. Unconnected ports can be dropped.
// Instantiate module fa_byname and connect signals to ports by name
fulladd4 fa_byname(.sum(SUM), .b(B), .c_in(C_IN),
.a(A),);
www.iiu.edu.pk Sunday, May 17, 2015
Unconnected Ports
4
 Gate delays allow the Verilog user to specify delays through the logic circuits.
There are three types of delays from the inputs to the output of a primitive gate.
 Rise delay: The rise delay is associated with a gate output transition to a 1 from
another value.
 Fall delay: The fall delay is associated with a gate output transition to a 0 from
another value.
 Turn-off delay: The turn-off delay is associated with a gate output transition to
the high impedance value (z) from another value. If the value changes to x, the
minimum of the three delays is considered.
and #(5) a1(out, i1, i2); // Delay of 5 for all transitions
and #(4,6) a2(out, i1, i2); // Rise = 4, Fall = 6
bufif0 #(3,4,5) b1 (out, in, control); // Rise = 3, Fall = 4, Turn-off = 5
www.iiu.edu.pk Sunday, May 17, 2015
Gate Delays
5
 Min/Typ/Max Values: For each type of delay—rise, fall, and turn-off—three
values, min, typ, and max, can be specified. Any one value can be chosen at the
start of the simulation. Min/typ/max values are used to model devices whose
delays vary within a minimum and maximum range because of the IC fabrication
process variations.
and #(4:5:6) a1(out, i1, i2); // all delays are min=4, typical=5, max=6
and #(3:4:5, 5:6:7) a2(out, i1, i2);
and #(2:3:4, 3:4:5, 4:5:6) a3(out, i1,i2);
www.iiu.edu.pk Sunday, May 17, 2015
Gate Delays
6
 For small circuits, the gate-level modeling approach works very well
 Verilog allows a circuit to be designed in terms of the data flow between registers
and how a design processes data rather than instantiation of individual gates.
 With gate densities on chips increasing rapidly, dataflow modeling has assumed
great importance.
 Currently, automated tools are used to create a gate-level circuit from a dataflow
design description. This process is called logic synthesis.
 In the digital design community, the term RTL (Register Transfer Level) design is
commonly used for a combination of dataflow modeling and behavioral
modeling.
 Continuous Assignments:
assign out = i1 & i2; // Continuous assign. out is a net. i1 and i2 are nets.
assign addr[15:0] = addr1_bits[15:0] ^ addr2_bits[15:0];
assign {c_out, sum[3:0]} = a[3:0] + b[3:0] + c_in;
// if right side changes the output is recalculated and assigned to the left variable
// Note: the variable on the left hand side will be a net. It can not be a reg.
// The variables on right hand side can be a net or a reg value.www.iiu.edu.pk Sunday, May 17, 2015
Continuous Assignment
7
 Implicit Continuous Assignment: Instead of declaring a net and then writing a
continuous assignment on the net, Verilog provides a shortcut by which a
continuous assignment can be placed on a net when it is declared.
 // Regular continuous assignment
wire out; assign out = in1 & in2;
// Same effect is achieved by an implicit continuous assignment
wire out = in1 & in2;
 Implicit Net Declaration: If a signal name is used to the left of the continuous
assignment, an implicit net declaration will be inferred for that signal name. If the
net is connected to a module port, the width of the inferred net is equal to the
width of the module port.
wire i1, i2; // Continuous assign. out is a net.
assign out = i1 & i2; // Note that out was not declared as a wire
// but an implicit wire declaration for out is done by the simulator
www.iiu.edu.pk Sunday, May 17, 2015
Continuous Assignment
8
 Three ways of specifying delays in continuous assignment statements are regular
assignment delay, implicit continuous assignment delay, and net declaration
delay.
 Regular Assignment Delay: Any change in values of in1 or in2 will result in a
delay of 10 time units before recomputation of the expression in1 & in2, and the
result will be assigned to out. An input pulse that is shorter than the delay of the
assignment statement does not propagate to the output.
assign #10 out = in1 & in2;
 Implicit Continuous Assignment Delay:
wire #10 out = in1 & in2;
 Net Declaration Delay: A delay can be specified on a net when it is declared
without putting a continuous assignment on the net.
wire # 10 out; assign out = in1 & in2;
www.iiu.edu.pk Sunday, May 17, 2015
Delays
9
www.iiu.edu.pk Sunday, May 17, 2015
Operator Types and Symbols
10
Operator
Type
Operator
Symbol
Operation
Performed
Number of
Operands
Arithmetic *
/
+
-
%
**
multiply
divide
add
subtract
modulus
power
(exponent)
two
two
two
two
two
two
Logical !
&&
||
logical
negation
logical and
logical or
one
two
two
Relational >
<
>=
<=
greater than
less than
greater than
or equal
less than or
equal
two
two
two
two
Operator
Type
Operator
Symbol
Operation
Performed
Number of
Operands
Equality ==
!=
===
!==
equality
inequality
case equality
case inequality
two
two
two
two
Bitwise ~
&
|
^
^~ or ~^
bitwise
negation
bitwise and
bitwise or
bitwise xor
bitwise xnor
one
two
two
two
two
Reduction &
~&
|
~|
^
^~ or ~^
reduction and
reduction nand
reduction or
reduction nor
reduction xor
reduction xnor
one
one
one
one
one
one
A = 4'b0011; B = 4'b0100;
// A and B are register vectors
D = 6; E = 4; F=2
// D and E are integers
A * B // Multiply A and B = 4'b1100
D / E // Divide D by E = 1.
// Truncates any fractional part.
A + B// Add A and B = 4'b0111
B - A // Subtract A from B. Evaluates to 4'b0001
F = E ** F; // E to the power F, yields 16. If any operand bit has a value x, then
in1 = 4'b101x; in2 = 4'b1010; // the result of the entire expression is x.
sum = in1 + in2; // sum will be evaluated to the value 4'bx
13 % 3 // Evaluates to 1 16 % 4 // Evaluates to 0
-7 % 2 // Evaluates to -1, takes sign of the first operand
7 % -2 // Evaluates to +1, takes sign of the first operand
www.iiu.edu.pk Sunday, May 17, 2015
Operator Types and Symbols
11
Operator
Type
Operator
Symbol
Operation
Performed
Number of
Operands
Shift >>
<<
>>>
<<<
Right shift
Left shift
Arithmetic
right shift
Arithmetic left
shift
Two
Two
Two
Two
Concatenation { } Concatenation Any number
Replication { { } } Replication Any number
Conditional ?: Conditional Three
 Logical operators always evaluate to a 1-bit value, 0 (false), 1 (true), or x
(ambiguous).
 Use of parentheses to group logical operations is highly recommended to improve
readability
A = 3; B = 0; A && B // Evaluates to 0. Equivalent to (logical-1 && logical-0)
A || B // Evaluates to 1. Equivalent to (logical-1 ||
logical-0)
!A // Evaluates to 0. Equivalent to not(logical-1)
!B // Evaluates to 1. Equivalent to not(logical-0)
A = 2'b0x; B = 2'b10;
A && B // Evaluates to x. Equivalent to (x && logical 1)
(a == 2) && (b == 3) // Evaluates to 1 if both a == 2 and b == 3 are true.
// Evaluates to 0 if either is false.
www.iiu.edu.pk Sunday, May 17, 2015
Logical Operators
12
 Relational operators are greater-than (>), less-than (<), greater-than-or-equal-to
(>=), and less-than-or-equal-to (<=).
 If relational operators are used in an expression, the expression returns a logical
value of 1 if the expression is true and 0 if the expression is false.
 If there are any unknown or z bits in the operands, the expression takes a value x.
 These operators function exactly as the corresponding operators in the C
programming language.
A = 4, B = 3
X = 4'b1010, Y = 4'b1101, Z = 4'b1xxx;
A <= B // Evaluates to a logical 0
A > B // Evaluates to a logical 1
Y >= X // Evaluates to a logical 1
Y < Z // Evaluates to an x
www.iiu.edu.pk Sunday, May 17, 2015
Relational Operators
13
 The logical equality operators (==, !=) will yield an x if either operand has x or z
in its bits.
 The equality operators ( ===, !== ) compare both operands bit by bit and compare
all bits, including x and z. The result is 1 if the operands match exactly, including
x and z bits. The result is 0 if the operands do not match exactly.
 Case equality operators never result in an x.
A = 4, B = 3, X = 4'b1010, Y = 4'b1101, Z = 4'b1xxz, M = 4'b1xxz, N = 4'b1xxx
A == B // Results in logical 0 X != Y // Results in logical 1
X == Z // Results in x Z === M // Results in logical 1
Z === N // Results in logical 0 M !== N // Results in logical 1
www.iiu.edu.pk Sunday, May 17, 2015
Relational Operators
14
Expression Description Possible Logical Value
a == b a equal to b, result unknown if x or z in a or b 0, 1, x
a != b a not equal to b, result unknown if x or z in a or b 0, 1, x
a === b a equal to b, including x and z 0, 1
a !== b a not equal to b, including x and z 0, 1
 Bitwise operators perform a bit-by-bit operation on two operands. They take each
bit in one operand and perform the operation with the corresponding bit in the
other operand.
 If one operand is shorter than the other, it will be bit-extended with zeros to
match the length of the longer operand.
 A z is treated as an x in a bitwise operation.
X = 4'b1010, Y = 4'b1101, Z = 4'b10x1
~X // Negation. Result is 4'b0101
X & Y // Bitwise and. Result is 4'b1000
X | Y // Bitwise or. Result is 4'b1111
X ^ Y // Bitwise xor. Result is 4'b0111
X ^~ Y // Bitwise xnor. Result is 4'b1000
X & Z // Result is 4'b10x0
X = 4'b1010, Y = 4'b0000
X | Y // bitwise operation. Result is 4'b1010
X || Y // logical operation. Equivalent to 1 || 0. Result is 1.
www.iiu.edu.pk Sunday, May 17, 2015
Bitwise Operators
15
 Reduction operators are and (&), nand (~&), or (|), nor (~|), xor (^), and xnor (~^,
^~).
 Reduction operators take only one operand. Reduction operators perform a
bitwise operation on a single vector operand and yield a 1-bit result.
 Reduction operators work bit by bit from right to left. Reduction nand, reduction
nor, and reduction xnor are computed by inverting the result of the reduction and,
reduction or, and reduction xor, respectively.
X = 4'b1010
&X // Equivalent to 1 & 0 & 1 & 0. Results in 1'b0
|X // Equivalent to 1 | 0 | 1 | 0. Results in 1'b1
^X // Equivalent to 1 ^ 0 ^ 1 ^ 0. Results in 1'b0
//A reduction xor or xnor can be used for even or odd parity generation of vector.
www.iiu.edu.pk Sunday, May 17, 2015
Reduction Operators
16
 Shift operators are right shift ( >>), left shift (<<), arithmetic right shift (>>>),
and arithmetic left shift (<<<).
 Regular shift operators shift a vector operand to the right or the left by a specified
number of bits. The operands are the vector and the number of bits to shift.
 When the bits are shifted, the vacant bit positions are filled with zeros.
 Shift operations do not wrap around.
 Arithmetic shift operators use the context of the expression to determine the value
with which to fill the vacated bits.
X = 4'b1100
Y = X >> 1; // Y is 4'b0110. Shift right 1 bit. 0 filled in MSB position.
Y = X << 1; // Y is 4'b1000. Shift left 1 bit. 0 filled in LSB position.
Y = X << 2; // Y is 4'b0000. Shift left 2 bits.
integer a, b; // Signed data types
a= -10; // 1111_1111_1111_0110 in binary
b = a >>>3 ; // Results in -2 decimal
www.iiu.edu.pk Sunday, May 17, 2015
Shift Operators
17
 The concatenation operator ( {, } ) provides a mechanism to append multiple
operands. The operands must be sized.
 Unsized operands are not allowed because the size of each operand must be
known for computation of the size of the result.
 Concatenations are expressed as operands within braces, with commas separating
the operands. Operands can be scalar nets or registers, vector nets or registers, bit-
select, part-select, or sized constants.
A = 1'b1, B = 2'b00, C = 2'b10, D = 3'b110
Y = {B , C} // Result Y is 4'b0010
Y = {A , B , C , D , 3'b001} // Result Y is 11'b 1_00_10_110_001
Y = {A , B[0], C[1]} // Result Y is 3'b101
www.iiu.edu.pk Sunday, May 17, 2015
Concatenation Operators
18
 Repetitive concatenation of the same number can be expressed by using a
replication constant.
 A replication constant specifies how many times to replicate the number inside
the brackets ( { } ).
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} } // Result Y is 4'b1111
Y = { 4{A} , 2{B} } // Result Y is 8'b11110000
Y = { 4{A} , 2{B} , C } // Result Y is 8'b1111000010
www.iiu.edu.pk Sunday, May 17, 2015
Replication Operators
19
 The conditional operator(?:) takes three operands.
Usage: condition_expr ? true_expr : false_expr ;
 The condition expression (condition_expr) is first evaluated. If the result is true
(logical 1), then the true_expr is evaluated. If the result is false (logical 0), then
the false_expr is evaluated.
 If the result is x (ambiguous), then both true_expr and false_expr are evaluated
and their results are compared, bit by bit, to return for each bit position an x if the
bits are different and the value of the bits if they are the same.
// model functionality of a tristate buffer
assign addr_bus = drive_enable ? addr_out : 36'bz;
// model functionality of a 2-to-1 mux
assign out = control ? in1 : in0;
// 4-to-1 multiplexer with n, m, y, x as the inputs and out as the output signal.
assign out = (A == 3) ? ( control ? x : y ): ( control ? m : n) ;
www.iiu.edu.pk Sunday, May 17, 2015
Conditional Operators
20
// Module 4-to-1 multiplexer using data flow. Conditional operator.
module multiplexer4_to_1 (out, i0, i1, i2, i3, s1, s0);
output out; input i0, i1, i2, i3, s1, s0;
// Use nested conditional operator
assign out = s1 ? ( s0 ? i3 : i2) : (s0 ? i1 : i0) ;
endmodule
// Define a 4-bit full adder by using dataflow statements.
module fulladd4(sum, c_out, a, b, c_in);
output [3:0] sum; output c_out;
input[3:0] a, b; input c_in;
// Specify the function of a full adder
assign {c_out, sum} = a + b + c_in;
endmodule
www.iiu.edu.pk Sunday, May 17, 2015
Data Flow Examples
21
www.iiu.edu.pk Sunday, May 17, 2015
Ripple Carrey Adder
22
A 4-bit ripple carry adder showing “worst-case” carry
propagation delays.
Consider the full adder
 The outputs, C1,S0, in terms of P0 ,G0 ,C0 , are:
S0 = P0 ⊕ C0 …(1)
C1 = G0 + P0.C0 …(2)
 If you look at equation (2),
G0 = X0.Y0 is a carry generate signal
P0 = X0 ⊕ Y0 is a carry propagate signal
www.iiu.edu.pk Sunday, May 17, 2015
Carrey Look Ahead Adder
23
X0
Y0
S 0
C 1
C0
P0
G0
where intermediatewhere intermediate
signals are labelled assignals are labelled as
PP00, G, G00, and defined as:, and defined as:
PP00 = X= X00 ⊕⊕ YY00
GG00 = X= X00 ∙ Y∙ Y00
 For 4-bit ripple-carry adder, the equations to obtain four carry
signals are:
C1 = G0 + P0.C0
C2 = G1 + P1.C1
C3 = G2 + P2.C2
C4 = G3 + P3.C3
4-level circuit for C2 = G1 + P1.C1
These formula are deeply nested, as shown here for C2:
Nested formula/gates cause ripple-carry propagation delay.
Can reduce delay by expanding and flattening the formula for
carries. For example, C2 = G1 + P1.C1 = G1 + P1.(G0 + P0C0 )
= G1 + P1.G0 + P1.P0.C0
www.iiu.edu.pk Sunday, May 17, 2015
Carrey Look Ahead Adder
24
C0
P0
C1
G0
P1
G1
C2
 Other carry signals can also be similarly flattened.
C3 = G2 + P2C2 = G2 + P2(G1 + P1G0 + P1P0C0)
= G2 + P2G1 + P2P1G0 + P2P1P0C0
C4 = G3 + P3C3
= G3 + P3(G2 + P2G1 + P2P1G0 + P2P1P0C0)
= G3 + P3G2 + P3P2G1 + P3P2P1G0 + P3P2P1P0C0
www.iiu.edu.pk Sunday, May 17, 2015
Carrey Look Ahead Adder
25
C0
P0
P1
G0
P1
G1
C2
C0
P0
C1
G0
P1
G1
C2
carray look-ahead generator
4-bit adder with carry look-ahead
www.iiu.edu.pk Sunday, May 17, 2015
Carrey Look Ahead Adder
26
module fulladd4(sum, c_out, a, b, c_in);
// Inputs and outputs
output [3:0] sum;
output c_out;
input [3:0] a,b;
input c_in;
// Internal wires
wire p0,g0, p1,g1, p2,g2, p3,g3;
wire c4, c3, c2, c1;
// compute the p(carry propagation) for each stage
assign p0 = a[0] ^ b[0],
p1 = a[1] ^ b[1],
p2 = a[2] ^ b[2],
p3 = a[3] ^ b[3];
// compute the g (carry generator) for each stage
assign g0 = a[0] & b[0],
g1 = a[1] & b[1],
g2 = a[2] & b[2],
g3 = a[3] & b[3];
www.iiu.edu.pk Sunday, May 17, 2015
Carrey Look Ahead Adder
27
// compute the carry for each stage Note that c_in is
// equivalent c0 in the arithmetic equation for carry
// look-ahead computation
assign c1 = g0 | (p0 & c_in),
c2 = g1 | (p1 & g0) | (p1 & p0 & c_in);
assign c3 = g2 | (p2 & g1) |
(p2 & p1 & g0) |
(p2 & p1 & p0 & c_in);
assign c4 = g3 | (p3 & g2) | (p3 & p2 & g1) |
(p3 & p2 & p1 & g0) |
(p3 & p2 & p1 & p0 & c_in);
// Compute Sum
assign sum[0] = p0 ^ c_in,
sum[1] = p1 ^ c1,
sum[2] = p2 ^ c2,
sum[3] = p3 ^ c3;
assign c_out = c4; // Assign carry output
endmodule
www.iiu.edu.pk Sunday, May 17, 2015
Carrey Look Ahead Adder
28

Weitere ähnliche Inhalte

Was ist angesagt?

Verilog tutorial
Verilog tutorialVerilog tutorial
Verilog tutorial
Abhiraj Bohra
 

Was ist angesagt? (20)

C++ for beginners
C++ for beginnersC++ for beginners
C++ for beginners
 
Introduction to HDLs
Introduction to HDLsIntroduction to HDLs
Introduction to HDLs
 
Comparison instructions, AB, Siemens and AB CCW
Comparison instructions, AB, Siemens and AB CCWComparison instructions, AB, Siemens and AB CCW
Comparison instructions, AB, Siemens and AB CCW
 
C programming session6
C programming  session6C programming  session6
C programming session6
 
Compiler unit 2&3
Compiler unit 2&3Compiler unit 2&3
Compiler unit 2&3
 
Verilog Tutorial - Verilog HDL Tutorial with Examples
Verilog Tutorial - Verilog HDL Tutorial with ExamplesVerilog Tutorial - Verilog HDL Tutorial with Examples
Verilog Tutorial - Verilog HDL Tutorial with Examples
 
C programming session8
C programming  session8C programming  session8
C programming session8
 
Verilog HDL- 2
Verilog HDL- 2Verilog HDL- 2
Verilog HDL- 2
 
Assignment9
Assignment9Assignment9
Assignment9
 
verilog
verilogverilog
verilog
 
C programming session7
C programming  session7C programming  session7
C programming session7
 
Unit3 cspc
Unit3 cspcUnit3 cspc
Unit3 cspc
 
Handout#08
Handout#08Handout#08
Handout#08
 
Assignment11
Assignment11Assignment11
Assignment11
 
Handout#10
Handout#10Handout#10
Handout#10
 
Verilog hdl
Verilog hdlVerilog hdl
Verilog hdl
 
Kroening et al, v2c a verilog to c translator
Kroening et al, v2c   a verilog to c translatorKroening et al, v2c   a verilog to c translator
Kroening et al, v2c a verilog to c translator
 
Intermediate code generation (Compiler Design)
Intermediate code generation (Compiler Design)   Intermediate code generation (Compiler Design)
Intermediate code generation (Compiler Design)
 
C programming session8
C programming  session8C programming  session8
C programming session8
 
Verilog tutorial
Verilog tutorialVerilog tutorial
Verilog tutorial
 

Ähnlich wie Fpga 07-port-rules-gate-delay-data-flow-carry-look-ahead-adder

The Role Of Software And Hardware As A Common Part Of The...
The Role Of Software And Hardware As A Common Part Of The...The Role Of Software And Hardware As A Common Part Of The...
The Role Of Software And Hardware As A Common Part Of The...
Sheena Crouch
 
1.5 Legal Labels in Verilog areSystem Verilog extends it and al.pdf
1.5 Legal Labels in Verilog areSystem Verilog extends it and al.pdf1.5 Legal Labels in Verilog areSystem Verilog extends it and al.pdf
1.5 Legal Labels in Verilog areSystem Verilog extends it and al.pdf
ankit482504
 

Ähnlich wie Fpga 07-port-rules-gate-delay-data-flow-carry-look-ahead-adder (20)

Fpga 05-verilog-programming
Fpga 05-verilog-programmingFpga 05-verilog-programming
Fpga 05-verilog-programming
 
Verilog
VerilogVerilog
Verilog
 
Multiple Valued Logic for Synthesis and Simulation of Digital Circuits
Multiple Valued Logic for Synthesis and Simulation of Digital CircuitsMultiple Valued Logic for Synthesis and Simulation of Digital Circuits
Multiple Valued Logic for Synthesis and Simulation of Digital Circuits
 
Advanced Digital Design With The Verilog HDL
Advanced Digital Design With The Verilog HDLAdvanced Digital Design With The Verilog HDL
Advanced Digital Design With The Verilog HDL
 
IRJET- Braille Oriented Classroom
IRJET-  	  Braille Oriented ClassroomIRJET-  	  Braille Oriented Classroom
IRJET- Braille Oriented Classroom
 
VIT_Workshop.ppt
VIT_Workshop.pptVIT_Workshop.ppt
VIT_Workshop.ppt
 
SKEL 4273 CAD with HDL Topic 2
SKEL 4273 CAD with HDL Topic 2SKEL 4273 CAD with HDL Topic 2
SKEL 4273 CAD with HDL Topic 2
 
ECET 330 Massive Success--snaptutorial.com
ECET 330 Massive Success--snaptutorial.comECET 330 Massive Success--snaptutorial.com
ECET 330 Massive Success--snaptutorial.com
 
Ecet 330 Success Begins / snaptutorial.com
Ecet 330 Success Begins / snaptutorial.comEcet 330 Success Begins / snaptutorial.com
Ecet 330 Success Begins / snaptutorial.com
 
Ecet 330 Enthusiastic Study / snaptutorial.com
Ecet 330 Enthusiastic Study / snaptutorial.comEcet 330 Enthusiastic Study / snaptutorial.com
Ecet 330 Enthusiastic Study / snaptutorial.com
 
ECET 330 Technology levels--snaptutorial.com
ECET 330 Technology levels--snaptutorial.comECET 330 Technology levels--snaptutorial.com
ECET 330 Technology levels--snaptutorial.com
 
Coding style for good synthesis
Coding style for good synthesisCoding style for good synthesis
Coding style for good synthesis
 
DOUBLE PRECISION FLOATING POINT CORE IN VERILOG
DOUBLE PRECISION FLOATING POINT CORE IN VERILOGDOUBLE PRECISION FLOATING POINT CORE IN VERILOG
DOUBLE PRECISION FLOATING POINT CORE IN VERILOG
 
VLSI
VLSIVLSI
VLSI
 
The Role Of Software And Hardware As A Common Part Of The...
The Role Of Software And Hardware As A Common Part Of The...The Role Of Software And Hardware As A Common Part Of The...
The Role Of Software And Hardware As A Common Part Of The...
 
An Implementation and Comparison of IO Expander on Zed Board and Spartan 3E f...
An Implementation and Comparison of IO Expander on Zed Board and Spartan 3E f...An Implementation and Comparison of IO Expander on Zed Board and Spartan 3E f...
An Implementation and Comparison of IO Expander on Zed Board and Spartan 3E f...
 
Advanced atpg based on fan, testability measures and fault reduction
Advanced atpg based on fan, testability measures and fault reductionAdvanced atpg based on fan, testability measures and fault reduction
Advanced atpg based on fan, testability measures and fault reduction
 
1.5 Legal Labels in Verilog areSystem Verilog extends it and al.pdf
1.5 Legal Labels in Verilog areSystem Verilog extends it and al.pdf1.5 Legal Labels in Verilog areSystem Verilog extends it and al.pdf
1.5 Legal Labels in Verilog areSystem Verilog extends it and al.pdf
 
Verilog Lecture2 thhts
Verilog Lecture2 thhtsVerilog Lecture2 thhts
Verilog Lecture2 thhts
 
IRJET - Comparison of Vedic, Wallac Tree and Array Multipliers
IRJET -  	  Comparison of Vedic, Wallac Tree and Array MultipliersIRJET -  	  Comparison of Vedic, Wallac Tree and Array Multipliers
IRJET - Comparison of Vedic, Wallac Tree and Array Multipliers
 

Mehr von Malik Tauqir Hasan

Fpga 11-sequence-detector-fir-iir-filter
Fpga 11-sequence-detector-fir-iir-filterFpga 11-sequence-detector-fir-iir-filter
Fpga 11-sequence-detector-fir-iir-filter
Malik Tauqir Hasan
 
Fpga 10-bcd-to-excess-3-converter-manchester-encoding
Fpga 10-bcd-to-excess-3-converter-manchester-encodingFpga 10-bcd-to-excess-3-converter-manchester-encoding
Fpga 10-bcd-to-excess-3-converter-manchester-encoding
Malik Tauqir Hasan
 
Fpga 09-behavioral-modeling-moore-machine
Fpga 09-behavioral-modeling-moore-machineFpga 09-behavioral-modeling-moore-machine
Fpga 09-behavioral-modeling-moore-machine
Malik Tauqir Hasan
 
Fpga 08-behavioral-modeling-mealy-machine
Fpga 08-behavioral-modeling-mealy-machineFpga 08-behavioral-modeling-mealy-machine
Fpga 08-behavioral-modeling-mealy-machine
Malik Tauqir Hasan
 
Fpga 06-data-types-system-tasks-compiler-directives
Fpga 06-data-types-system-tasks-compiler-directivesFpga 06-data-types-system-tasks-compiler-directives
Fpga 06-data-types-system-tasks-compiler-directives
Malik Tauqir Hasan
 

Mehr von Malik Tauqir Hasan (11)

Fpga 13-task-and-functions
Fpga 13-task-and-functionsFpga 13-task-and-functions
Fpga 13-task-and-functions
 
Fpga 12-event-control
Fpga 12-event-controlFpga 12-event-control
Fpga 12-event-control
 
Fpga 11-sequence-detector-fir-iir-filter
Fpga 11-sequence-detector-fir-iir-filterFpga 11-sequence-detector-fir-iir-filter
Fpga 11-sequence-detector-fir-iir-filter
 
Fpga 10-bcd-to-excess-3-converter-manchester-encoding
Fpga 10-bcd-to-excess-3-converter-manchester-encodingFpga 10-bcd-to-excess-3-converter-manchester-encoding
Fpga 10-bcd-to-excess-3-converter-manchester-encoding
 
Fpga 09-behavioral-modeling-moore-machine
Fpga 09-behavioral-modeling-moore-machineFpga 09-behavioral-modeling-moore-machine
Fpga 09-behavioral-modeling-moore-machine
 
Fpga 08-behavioral-modeling-mealy-machine
Fpga 08-behavioral-modeling-mealy-machineFpga 08-behavioral-modeling-mealy-machine
Fpga 08-behavioral-modeling-mealy-machine
 
Fpga 06-data-types-system-tasks-compiler-directives
Fpga 06-data-types-system-tasks-compiler-directivesFpga 06-data-types-system-tasks-compiler-directives
Fpga 06-data-types-system-tasks-compiler-directives
 
Fpga 04-verilog-programming
Fpga 04-verilog-programmingFpga 04-verilog-programming
Fpga 04-verilog-programming
 
Fpga 03-cpld-and-fpga
Fpga 03-cpld-and-fpgaFpga 03-cpld-and-fpga
Fpga 03-cpld-and-fpga
 
Fpga 02-memory-and-pl ds
Fpga 02-memory-and-pl dsFpga 02-memory-and-pl ds
Fpga 02-memory-and-pl ds
 
Fpga 01-digital-logic-design
Fpga 01-digital-logic-designFpga 01-digital-logic-design
Fpga 01-digital-logic-design
 

Kürzlich hochgeladen

CHEAP Call Girls in Ashok Nagar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Ashok Nagar  (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Ashok Nagar  (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Ashok Nagar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
Call Now ≽ 9953056974 ≼🔝 Call Girls In Yusuf Sarai ≼🔝 Delhi door step delevry≼🔝
Call Now ≽ 9953056974 ≼🔝 Call Girls In Yusuf Sarai ≼🔝 Delhi door step delevry≼🔝Call Now ≽ 9953056974 ≼🔝 Call Girls In Yusuf Sarai ≼🔝 Delhi door step delevry≼🔝
Call Now ≽ 9953056974 ≼🔝 Call Girls In Yusuf Sarai ≼🔝 Delhi door step delevry≼🔝
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
Call Girls In RT Nagar ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In RT Nagar ☎ 7737669865 🥵 Book Your One night StandCall Girls In RT Nagar ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In RT Nagar ☎ 7737669865 🥵 Book Your One night Stand
amitlee9823
 
一比一原版(nyu毕业证书)纽约大学毕业证学历认证靠谱办理
一比一原版(nyu毕业证书)纽约大学毕业证学历认证靠谱办理一比一原版(nyu毕业证书)纽约大学毕业证学历认证靠谱办理
一比一原版(nyu毕业证书)纽约大学毕业证学历认证靠谱办理
bbhul52a
 
怎样办理维多利亚大学毕业证(UVic毕业证书)成绩单留信认证
怎样办理维多利亚大学毕业证(UVic毕业证书)成绩单留信认证怎样办理维多利亚大学毕业证(UVic毕业证书)成绩单留信认证
怎样办理维多利亚大学毕业证(UVic毕业证书)成绩单留信认证
tufbav
 
Vip Mumbai Call Girls Kalyan Call On 9920725232 With Body to body massage wit...
Vip Mumbai Call Girls Kalyan Call On 9920725232 With Body to body massage wit...Vip Mumbai Call Girls Kalyan Call On 9920725232 With Body to body massage wit...
Vip Mumbai Call Girls Kalyan Call On 9920725232 With Body to body massage wit...
amitlee9823
 

Kürzlich hochgeladen (20)

CHEAP Call Girls in Ashok Nagar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Ashok Nagar  (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Ashok Nagar  (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Ashok Nagar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
Call Now ≽ 9953056974 ≼🔝 Call Girls In Yusuf Sarai ≼🔝 Delhi door step delevry≼🔝
Call Now ≽ 9953056974 ≼🔝 Call Girls In Yusuf Sarai ≼🔝 Delhi door step delevry≼🔝Call Now ≽ 9953056974 ≼🔝 Call Girls In Yusuf Sarai ≼🔝 Delhi door step delevry≼🔝
Call Now ≽ 9953056974 ≼🔝 Call Girls In Yusuf Sarai ≼🔝 Delhi door step delevry≼🔝
 
(ISHITA) Call Girls Service Aurangabad Call Now 8617697112 Aurangabad Escorts...
(ISHITA) Call Girls Service Aurangabad Call Now 8617697112 Aurangabad Escorts...(ISHITA) Call Girls Service Aurangabad Call Now 8617697112 Aurangabad Escorts...
(ISHITA) Call Girls Service Aurangabad Call Now 8617697112 Aurangabad Escorts...
 
Introduction-to-4x4-SRAM-Memory-Block.pptx
Introduction-to-4x4-SRAM-Memory-Block.pptxIntroduction-to-4x4-SRAM-Memory-Block.pptx
Introduction-to-4x4-SRAM-Memory-Block.pptx
 
NO1 Verified Amil Baba In Karachi Kala Jadu In Karachi Amil baba In Karachi A...
NO1 Verified Amil Baba In Karachi Kala Jadu In Karachi Amil baba In Karachi A...NO1 Verified Amil Baba In Karachi Kala Jadu In Karachi Amil baba In Karachi A...
NO1 Verified Amil Baba In Karachi Kala Jadu In Karachi Amil baba In Karachi A...
 
Develop Keyboard Skill.pptx er power point
Develop Keyboard Skill.pptx er power pointDevelop Keyboard Skill.pptx er power point
Develop Keyboard Skill.pptx er power point
 
Call Girls In RT Nagar ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In RT Nagar ☎ 7737669865 🥵 Book Your One night StandCall Girls In RT Nagar ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In RT Nagar ☎ 7737669865 🥵 Book Your One night Stand
 
Call Girls Kothrud Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Kothrud Call Me 7737669865 Budget Friendly No Advance BookingCall Girls Kothrud Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Kothrud Call Me 7737669865 Budget Friendly No Advance Booking
 
Book Paid Lohegaon Call Girls Pune 8250192130Low Budget Full Independent High...
Book Paid Lohegaon Call Girls Pune 8250192130Low Budget Full Independent High...Book Paid Lohegaon Call Girls Pune 8250192130Low Budget Full Independent High...
Book Paid Lohegaon Call Girls Pune 8250192130Low Budget Full Independent High...
 
一比一原版(nyu毕业证书)纽约大学毕业证学历认证靠谱办理
一比一原版(nyu毕业证书)纽约大学毕业证学历认证靠谱办理一比一原版(nyu毕业证书)纽约大学毕业证学历认证靠谱办理
一比一原版(nyu毕业证书)纽约大学毕业证学历认证靠谱办理
 
Top Rated Pune Call Girls Shirwal ⟟ 6297143586 ⟟ Call Me For Genuine Sex Ser...
Top Rated  Pune Call Girls Shirwal ⟟ 6297143586 ⟟ Call Me For Genuine Sex Ser...Top Rated  Pune Call Girls Shirwal ⟟ 6297143586 ⟟ Call Me For Genuine Sex Ser...
Top Rated Pune Call Girls Shirwal ⟟ 6297143586 ⟟ Call Me For Genuine Sex Ser...
 
(INDIRA) Call Girl Napur Call Now 8617697112 Napur Escorts 24x7
(INDIRA) Call Girl Napur Call Now 8617697112 Napur Escorts 24x7(INDIRA) Call Girl Napur Call Now 8617697112 Napur Escorts 24x7
(INDIRA) Call Girl Napur Call Now 8617697112 Napur Escorts 24x7
 
9004554577, Get Adorable Call Girls service. Book call girls & escort service...
9004554577, Get Adorable Call Girls service. Book call girls & escort service...9004554577, Get Adorable Call Girls service. Book call girls & escort service...
9004554577, Get Adorable Call Girls service. Book call girls & escort service...
 
怎样办理维多利亚大学毕业证(UVic毕业证书)成绩单留信认证
怎样办理维多利亚大学毕业证(UVic毕业证书)成绩单留信认证怎样办理维多利亚大学毕业证(UVic毕业证书)成绩单留信认证
怎样办理维多利亚大学毕业证(UVic毕业证书)成绩单留信认证
 
Call Girls Chikhali Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Chikhali Call Me 7737669865 Budget Friendly No Advance BookingCall Girls Chikhali Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Chikhali Call Me 7737669865 Budget Friendly No Advance Booking
 
Vip Mumbai Call Girls Kalyan Call On 9920725232 With Body to body massage wit...
Vip Mumbai Call Girls Kalyan Call On 9920725232 With Body to body massage wit...Vip Mumbai Call Girls Kalyan Call On 9920725232 With Body to body massage wit...
Vip Mumbai Call Girls Kalyan Call On 9920725232 With Body to body massage wit...
 
Get Premium Pimple Saudagar Call Girls (8005736733) 24x7 Rate 15999 with A/c ...
Get Premium Pimple Saudagar Call Girls (8005736733) 24x7 Rate 15999 with A/c ...Get Premium Pimple Saudagar Call Girls (8005736733) 24x7 Rate 15999 with A/c ...
Get Premium Pimple Saudagar Call Girls (8005736733) 24x7 Rate 15999 with A/c ...
 
VVIP Pune Call Girls Warje (7001035870) Pune Escorts Nearby with Complete Sat...
VVIP Pune Call Girls Warje (7001035870) Pune Escorts Nearby with Complete Sat...VVIP Pune Call Girls Warje (7001035870) Pune Escorts Nearby with Complete Sat...
VVIP Pune Call Girls Warje (7001035870) Pune Escorts Nearby with Complete Sat...
 
Top Rated Pune Call Girls Chakan ⟟ 6297143586 ⟟ Call Me For Genuine Sex Serv...
Top Rated  Pune Call Girls Chakan ⟟ 6297143586 ⟟ Call Me For Genuine Sex Serv...Top Rated  Pune Call Girls Chakan ⟟ 6297143586 ⟟ Call Me For Genuine Sex Serv...
Top Rated Pune Call Girls Chakan ⟟ 6297143586 ⟟ Call Me For Genuine Sex Serv...
 
Shikrapur Call Girls Most Awaited Fun 6297143586 High Profiles young Beautie...
Shikrapur Call Girls Most Awaited Fun  6297143586 High Profiles young Beautie...Shikrapur Call Girls Most Awaited Fun  6297143586 High Profiles young Beautie...
Shikrapur Call Girls Most Awaited Fun 6297143586 High Profiles young Beautie...
 

Fpga 07-port-rules-gate-delay-data-flow-carry-look-ahead-adder

  • 1. ENGR. RASHID FARID CHISHTI LECTURER,DEE, FET, IIUI CHISHTI@IIU.EDU.PK WEEK 7 PORTS RULES, GATE DELAYS, DATA FLOW MODELING CARRY LOOK AHEAD ADDER FPGA Based System Design Sunday, May 17, 2015 1 www.iiu.edu.pk
  • 2.  One can visualize a port as consisting of two units  one unit that is internal to the module  an other that is external to the module.  Inputs: Internally, input ports must always be of the type net. Externally, the inputs can be connected to a variable which is a reg or a net.  Outputs: Internally, output ports can be of the type reg or net. Externally, outputs must always be connected to a net. They cannot be connected to a reg.  Inouts: Internally, inout ports must always be of the type net. Externally, inout ports must always be connected to a net.  Width matching: port connections between two modules of different sizes can be made. However, a warning is typically issued that the widths do not match. www.iiu.edu.pk Sunday, May 17, 2015 Ports Connection Rules 2
  • 3.  There are two methods of making connections between signals specified in the module instantiation and the ports in a module definition. These two methods cannot be mixed. These methods are a follows  Connecting by ordered list: The signals to be connected must appear in the module instantiation in the same order as the ports in the port list in the module definition. module top; reg [3:0]A,B; reg C_IN; wire [3:0] SUM; wire C_OUT; // Signals are connected to ports in order (by position) fulladd4 fa_ordered(SUM, C_OUT, A, B, C_IN); endmodule module fulladd4 (sum, c_out, a, b, c_in); output[3:0] sum; output c_cout; input [3:0] a, b; input c_in; <module internals> endmodule www.iiu.edu.pk Sunday, May 17, 2015 Unconnected Ports 3
  • 4.  Connecting ports by name: Verilog provides the capability to connect external signals to ports by the port names, rather than by position. You can specify the port connections in any order as long as the port name in the module definition correctly matches the external signal. // Instantiate module fa_byname and connect signals to ports by name fulladd4 fa_byname(.c_out(C_OUT), .sum(SUM), .b(B), .c_in(C_IN), .a(A),); Note that only those ports that are to be connected to external signals must be specified in port connection by name. Unconnected ports can be dropped. // Instantiate module fa_byname and connect signals to ports by name fulladd4 fa_byname(.sum(SUM), .b(B), .c_in(C_IN), .a(A),); www.iiu.edu.pk Sunday, May 17, 2015 Unconnected Ports 4
  • 5.  Gate delays allow the Verilog user to specify delays through the logic circuits. There are three types of delays from the inputs to the output of a primitive gate.  Rise delay: The rise delay is associated with a gate output transition to a 1 from another value.  Fall delay: The fall delay is associated with a gate output transition to a 0 from another value.  Turn-off delay: The turn-off delay is associated with a gate output transition to the high impedance value (z) from another value. If the value changes to x, the minimum of the three delays is considered. and #(5) a1(out, i1, i2); // Delay of 5 for all transitions and #(4,6) a2(out, i1, i2); // Rise = 4, Fall = 6 bufif0 #(3,4,5) b1 (out, in, control); // Rise = 3, Fall = 4, Turn-off = 5 www.iiu.edu.pk Sunday, May 17, 2015 Gate Delays 5
  • 6.  Min/Typ/Max Values: For each type of delay—rise, fall, and turn-off—three values, min, typ, and max, can be specified. Any one value can be chosen at the start of the simulation. Min/typ/max values are used to model devices whose delays vary within a minimum and maximum range because of the IC fabrication process variations. and #(4:5:6) a1(out, i1, i2); // all delays are min=4, typical=5, max=6 and #(3:4:5, 5:6:7) a2(out, i1, i2); and #(2:3:4, 3:4:5, 4:5:6) a3(out, i1,i2); www.iiu.edu.pk Sunday, May 17, 2015 Gate Delays 6
  • 7.  For small circuits, the gate-level modeling approach works very well  Verilog allows a circuit to be designed in terms of the data flow between registers and how a design processes data rather than instantiation of individual gates.  With gate densities on chips increasing rapidly, dataflow modeling has assumed great importance.  Currently, automated tools are used to create a gate-level circuit from a dataflow design description. This process is called logic synthesis.  In the digital design community, the term RTL (Register Transfer Level) design is commonly used for a combination of dataflow modeling and behavioral modeling.  Continuous Assignments: assign out = i1 & i2; // Continuous assign. out is a net. i1 and i2 are nets. assign addr[15:0] = addr1_bits[15:0] ^ addr2_bits[15:0]; assign {c_out, sum[3:0]} = a[3:0] + b[3:0] + c_in; // if right side changes the output is recalculated and assigned to the left variable // Note: the variable on the left hand side will be a net. It can not be a reg. // The variables on right hand side can be a net or a reg value.www.iiu.edu.pk Sunday, May 17, 2015 Continuous Assignment 7
  • 8.  Implicit Continuous Assignment: Instead of declaring a net and then writing a continuous assignment on the net, Verilog provides a shortcut by which a continuous assignment can be placed on a net when it is declared.  // Regular continuous assignment wire out; assign out = in1 & in2; // Same effect is achieved by an implicit continuous assignment wire out = in1 & in2;  Implicit Net Declaration: If a signal name is used to the left of the continuous assignment, an implicit net declaration will be inferred for that signal name. If the net is connected to a module port, the width of the inferred net is equal to the width of the module port. wire i1, i2; // Continuous assign. out is a net. assign out = i1 & i2; // Note that out was not declared as a wire // but an implicit wire declaration for out is done by the simulator www.iiu.edu.pk Sunday, May 17, 2015 Continuous Assignment 8
  • 9.  Three ways of specifying delays in continuous assignment statements are regular assignment delay, implicit continuous assignment delay, and net declaration delay.  Regular Assignment Delay: Any change in values of in1 or in2 will result in a delay of 10 time units before recomputation of the expression in1 & in2, and the result will be assigned to out. An input pulse that is shorter than the delay of the assignment statement does not propagate to the output. assign #10 out = in1 & in2;  Implicit Continuous Assignment Delay: wire #10 out = in1 & in2;  Net Declaration Delay: A delay can be specified on a net when it is declared without putting a continuous assignment on the net. wire # 10 out; assign out = in1 & in2; www.iiu.edu.pk Sunday, May 17, 2015 Delays 9
  • 10. www.iiu.edu.pk Sunday, May 17, 2015 Operator Types and Symbols 10 Operator Type Operator Symbol Operation Performed Number of Operands Arithmetic * / + - % ** multiply divide add subtract modulus power (exponent) two two two two two two Logical ! && || logical negation logical and logical or one two two Relational > < >= <= greater than less than greater than or equal less than or equal two two two two Operator Type Operator Symbol Operation Performed Number of Operands Equality == != === !== equality inequality case equality case inequality two two two two Bitwise ~ & | ^ ^~ or ~^ bitwise negation bitwise and bitwise or bitwise xor bitwise xnor one two two two two Reduction & ~& | ~| ^ ^~ or ~^ reduction and reduction nand reduction or reduction nor reduction xor reduction xnor one one one one one one
  • 11. A = 4'b0011; B = 4'b0100; // A and B are register vectors D = 6; E = 4; F=2 // D and E are integers A * B // Multiply A and B = 4'b1100 D / E // Divide D by E = 1. // Truncates any fractional part. A + B// Add A and B = 4'b0111 B - A // Subtract A from B. Evaluates to 4'b0001 F = E ** F; // E to the power F, yields 16. If any operand bit has a value x, then in1 = 4'b101x; in2 = 4'b1010; // the result of the entire expression is x. sum = in1 + in2; // sum will be evaluated to the value 4'bx 13 % 3 // Evaluates to 1 16 % 4 // Evaluates to 0 -7 % 2 // Evaluates to -1, takes sign of the first operand 7 % -2 // Evaluates to +1, takes sign of the first operand www.iiu.edu.pk Sunday, May 17, 2015 Operator Types and Symbols 11 Operator Type Operator Symbol Operation Performed Number of Operands Shift >> << >>> <<< Right shift Left shift Arithmetic right shift Arithmetic left shift Two Two Two Two Concatenation { } Concatenation Any number Replication { { } } Replication Any number Conditional ?: Conditional Three
  • 12.  Logical operators always evaluate to a 1-bit value, 0 (false), 1 (true), or x (ambiguous).  Use of parentheses to group logical operations is highly recommended to improve readability A = 3; B = 0; A && B // Evaluates to 0. Equivalent to (logical-1 && logical-0) A || B // Evaluates to 1. Equivalent to (logical-1 || logical-0) !A // Evaluates to 0. Equivalent to not(logical-1) !B // Evaluates to 1. Equivalent to not(logical-0) A = 2'b0x; B = 2'b10; A && B // Evaluates to x. Equivalent to (x && logical 1) (a == 2) && (b == 3) // Evaluates to 1 if both a == 2 and b == 3 are true. // Evaluates to 0 if either is false. www.iiu.edu.pk Sunday, May 17, 2015 Logical Operators 12
  • 13.  Relational operators are greater-than (>), less-than (<), greater-than-or-equal-to (>=), and less-than-or-equal-to (<=).  If relational operators are used in an expression, the expression returns a logical value of 1 if the expression is true and 0 if the expression is false.  If there are any unknown or z bits in the operands, the expression takes a value x.  These operators function exactly as the corresponding operators in the C programming language. A = 4, B = 3 X = 4'b1010, Y = 4'b1101, Z = 4'b1xxx; A <= B // Evaluates to a logical 0 A > B // Evaluates to a logical 1 Y >= X // Evaluates to a logical 1 Y < Z // Evaluates to an x www.iiu.edu.pk Sunday, May 17, 2015 Relational Operators 13
  • 14.  The logical equality operators (==, !=) will yield an x if either operand has x or z in its bits.  The equality operators ( ===, !== ) compare both operands bit by bit and compare all bits, including x and z. The result is 1 if the operands match exactly, including x and z bits. The result is 0 if the operands do not match exactly.  Case equality operators never result in an x. A = 4, B = 3, X = 4'b1010, Y = 4'b1101, Z = 4'b1xxz, M = 4'b1xxz, N = 4'b1xxx A == B // Results in logical 0 X != Y // Results in logical 1 X == Z // Results in x Z === M // Results in logical 1 Z === N // Results in logical 0 M !== N // Results in logical 1 www.iiu.edu.pk Sunday, May 17, 2015 Relational Operators 14 Expression Description Possible Logical Value a == b a equal to b, result unknown if x or z in a or b 0, 1, x a != b a not equal to b, result unknown if x or z in a or b 0, 1, x a === b a equal to b, including x and z 0, 1 a !== b a not equal to b, including x and z 0, 1
  • 15.  Bitwise operators perform a bit-by-bit operation on two operands. They take each bit in one operand and perform the operation with the corresponding bit in the other operand.  If one operand is shorter than the other, it will be bit-extended with zeros to match the length of the longer operand.  A z is treated as an x in a bitwise operation. X = 4'b1010, Y = 4'b1101, Z = 4'b10x1 ~X // Negation. Result is 4'b0101 X & Y // Bitwise and. Result is 4'b1000 X | Y // Bitwise or. Result is 4'b1111 X ^ Y // Bitwise xor. Result is 4'b0111 X ^~ Y // Bitwise xnor. Result is 4'b1000 X & Z // Result is 4'b10x0 X = 4'b1010, Y = 4'b0000 X | Y // bitwise operation. Result is 4'b1010 X || Y // logical operation. Equivalent to 1 || 0. Result is 1. www.iiu.edu.pk Sunday, May 17, 2015 Bitwise Operators 15
  • 16.  Reduction operators are and (&), nand (~&), or (|), nor (~|), xor (^), and xnor (~^, ^~).  Reduction operators take only one operand. Reduction operators perform a bitwise operation on a single vector operand and yield a 1-bit result.  Reduction operators work bit by bit from right to left. Reduction nand, reduction nor, and reduction xnor are computed by inverting the result of the reduction and, reduction or, and reduction xor, respectively. X = 4'b1010 &X // Equivalent to 1 & 0 & 1 & 0. Results in 1'b0 |X // Equivalent to 1 | 0 | 1 | 0. Results in 1'b1 ^X // Equivalent to 1 ^ 0 ^ 1 ^ 0. Results in 1'b0 //A reduction xor or xnor can be used for even or odd parity generation of vector. www.iiu.edu.pk Sunday, May 17, 2015 Reduction Operators 16
  • 17.  Shift operators are right shift ( >>), left shift (<<), arithmetic right shift (>>>), and arithmetic left shift (<<<).  Regular shift operators shift a vector operand to the right or the left by a specified number of bits. The operands are the vector and the number of bits to shift.  When the bits are shifted, the vacant bit positions are filled with zeros.  Shift operations do not wrap around.  Arithmetic shift operators use the context of the expression to determine the value with which to fill the vacated bits. X = 4'b1100 Y = X >> 1; // Y is 4'b0110. Shift right 1 bit. 0 filled in MSB position. Y = X << 1; // Y is 4'b1000. Shift left 1 bit. 0 filled in LSB position. Y = X << 2; // Y is 4'b0000. Shift left 2 bits. integer a, b; // Signed data types a= -10; // 1111_1111_1111_0110 in binary b = a >>>3 ; // Results in -2 decimal www.iiu.edu.pk Sunday, May 17, 2015 Shift Operators 17
  • 18.  The concatenation operator ( {, } ) provides a mechanism to append multiple operands. The operands must be sized.  Unsized operands are not allowed because the size of each operand must be known for computation of the size of the result.  Concatenations are expressed as operands within braces, with commas separating the operands. Operands can be scalar nets or registers, vector nets or registers, bit- select, part-select, or sized constants. A = 1'b1, B = 2'b00, C = 2'b10, D = 3'b110 Y = {B , C} // Result Y is 4'b0010 Y = {A , B , C , D , 3'b001} // Result Y is 11'b 1_00_10_110_001 Y = {A , B[0], C[1]} // Result Y is 3'b101 www.iiu.edu.pk Sunday, May 17, 2015 Concatenation Operators 18
  • 19.  Repetitive concatenation of the same number can be expressed by using a replication constant.  A replication constant specifies how many times to replicate the number inside the brackets ( { } ). 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} } // Result Y is 4'b1111 Y = { 4{A} , 2{B} } // Result Y is 8'b11110000 Y = { 4{A} , 2{B} , C } // Result Y is 8'b1111000010 www.iiu.edu.pk Sunday, May 17, 2015 Replication Operators 19
  • 20.  The conditional operator(?:) takes three operands. Usage: condition_expr ? true_expr : false_expr ;  The condition expression (condition_expr) is first evaluated. If the result is true (logical 1), then the true_expr is evaluated. If the result is false (logical 0), then the false_expr is evaluated.  If the result is x (ambiguous), then both true_expr and false_expr are evaluated and their results are compared, bit by bit, to return for each bit position an x if the bits are different and the value of the bits if they are the same. // model functionality of a tristate buffer assign addr_bus = drive_enable ? addr_out : 36'bz; // model functionality of a 2-to-1 mux assign out = control ? in1 : in0; // 4-to-1 multiplexer with n, m, y, x as the inputs and out as the output signal. assign out = (A == 3) ? ( control ? x : y ): ( control ? m : n) ; www.iiu.edu.pk Sunday, May 17, 2015 Conditional Operators 20
  • 21. // Module 4-to-1 multiplexer using data flow. Conditional operator. module multiplexer4_to_1 (out, i0, i1, i2, i3, s1, s0); output out; input i0, i1, i2, i3, s1, s0; // Use nested conditional operator assign out = s1 ? ( s0 ? i3 : i2) : (s0 ? i1 : i0) ; endmodule // Define a 4-bit full adder by using dataflow statements. module fulladd4(sum, c_out, a, b, c_in); output [3:0] sum; output c_out; input[3:0] a, b; input c_in; // Specify the function of a full adder assign {c_out, sum} = a + b + c_in; endmodule www.iiu.edu.pk Sunday, May 17, 2015 Data Flow Examples 21
  • 22. www.iiu.edu.pk Sunday, May 17, 2015 Ripple Carrey Adder 22 A 4-bit ripple carry adder showing “worst-case” carry propagation delays.
  • 23. Consider the full adder  The outputs, C1,S0, in terms of P0 ,G0 ,C0 , are: S0 = P0 ⊕ C0 …(1) C1 = G0 + P0.C0 …(2)  If you look at equation (2), G0 = X0.Y0 is a carry generate signal P0 = X0 ⊕ Y0 is a carry propagate signal www.iiu.edu.pk Sunday, May 17, 2015 Carrey Look Ahead Adder 23 X0 Y0 S 0 C 1 C0 P0 G0 where intermediatewhere intermediate signals are labelled assignals are labelled as PP00, G, G00, and defined as:, and defined as: PP00 = X= X00 ⊕⊕ YY00 GG00 = X= X00 ∙ Y∙ Y00
  • 24.  For 4-bit ripple-carry adder, the equations to obtain four carry signals are: C1 = G0 + P0.C0 C2 = G1 + P1.C1 C3 = G2 + P2.C2 C4 = G3 + P3.C3 4-level circuit for C2 = G1 + P1.C1 These formula are deeply nested, as shown here for C2: Nested formula/gates cause ripple-carry propagation delay. Can reduce delay by expanding and flattening the formula for carries. For example, C2 = G1 + P1.C1 = G1 + P1.(G0 + P0C0 ) = G1 + P1.G0 + P1.P0.C0 www.iiu.edu.pk Sunday, May 17, 2015 Carrey Look Ahead Adder 24 C0 P0 C1 G0 P1 G1 C2
  • 25.  Other carry signals can also be similarly flattened. C3 = G2 + P2C2 = G2 + P2(G1 + P1G0 + P1P0C0) = G2 + P2G1 + P2P1G0 + P2P1P0C0 C4 = G3 + P3C3 = G3 + P3(G2 + P2G1 + P2P1G0 + P2P1P0C0) = G3 + P3G2 + P3P2G1 + P3P2P1G0 + P3P2P1P0C0 www.iiu.edu.pk Sunday, May 17, 2015 Carrey Look Ahead Adder 25 C0 P0 P1 G0 P1 G1 C2 C0 P0 C1 G0 P1 G1 C2
  • 26. carray look-ahead generator 4-bit adder with carry look-ahead www.iiu.edu.pk Sunday, May 17, 2015 Carrey Look Ahead Adder 26
  • 27. module fulladd4(sum, c_out, a, b, c_in); // Inputs and outputs output [3:0] sum; output c_out; input [3:0] a,b; input c_in; // Internal wires wire p0,g0, p1,g1, p2,g2, p3,g3; wire c4, c3, c2, c1; // compute the p(carry propagation) for each stage assign p0 = a[0] ^ b[0], p1 = a[1] ^ b[1], p2 = a[2] ^ b[2], p3 = a[3] ^ b[3]; // compute the g (carry generator) for each stage assign g0 = a[0] & b[0], g1 = a[1] & b[1], g2 = a[2] & b[2], g3 = a[3] & b[3]; www.iiu.edu.pk Sunday, May 17, 2015 Carrey Look Ahead Adder 27
  • 28. // compute the carry for each stage Note that c_in is // equivalent c0 in the arithmetic equation for carry // look-ahead computation assign c1 = g0 | (p0 & c_in), c2 = g1 | (p1 & g0) | (p1 & p0 & c_in); assign c3 = g2 | (p2 & g1) | (p2 & p1 & g0) | (p2 & p1 & p0 & c_in); assign c4 = g3 | (p3 & g2) | (p3 & p2 & g1) | (p3 & p2 & p1 & g0) | (p3 & p2 & p1 & p0 & c_in); // Compute Sum assign sum[0] = p0 ^ c_in, sum[1] = p1 ^ c1, sum[2] = p2 ^ c2, sum[3] = p3 ^ c3; assign c_out = c4; // Assign carry output endmodule www.iiu.edu.pk Sunday, May 17, 2015 Carrey Look Ahead Adder 28