Section 4.11  Multiplexers    163
input is 0, the output is disabled and the gate goes to a high-impedance state, regardless 
of the value in the normal input. The high-impedance state of a three-state gate provides 
a special feature not available in other gates. Because of this feature, a large number of 
three-state gate outputs can be connected with wires to form a common line without 
endangering loading effects. 
The construction of multiplexers with three-state buffers is demonstrated in  Fig.   4.30   . 
Figure 4.30(a) shows the construction of a two-to-one-line multiplexer with 2 three-state 
buffers and an inverter. The two outputs are connected together to form a single output 
line. (Note that this type of connection cannot be made with gates that do not have 
three-state outputs.) When the select input is 0, the upper buffer is enabled by its control 
input and the lower buffer is disabled. Output  Y  is then equal to input  A . When the select 
input is 1, the lower buffer is enabled and  Y  is equal to  B . 
The construction of a four-to-one-line multiplexer is shown in  Fig.   4.30(b)   . The out-
puts of 4 three-state buffers are connected together to form a single output line. The 
control inputs to the buffers determine which one of the four normal inputs    I
0
through 
Normal input A
OutputY=A if C= 1
High-impedance if C= 0
Control input C
FIGURE 4.29 
Graphic symbol for a three-state buffer       
I
0
I
1
I
2
I
3
Select
Enable
Y
A
B
Y
Select
(a) 2-to-1-line mux
(b) 4-to-1-line mux
0
1
2
3
2× 4
decoder
S
1
S
0
EN
FIGURE 4.30 
Multiplexers with three-state gates       
How to convert pdf to powerpoint - C# Create PDF from PowerPoint Library to convert pptx, ppt to PDF in C#.net, ASP.NET MVC, WinForms, WPF
Online C# Tutorial for Creating PDF from Microsoft PowerPoint Presentation
convert pdf to ppt online without email; how to add pdf to powerpoint
How to convert pdf to powerpoint - VB.NET Create PDF from PowerPoint Library to convert pptx, ppt to PDF in vb.net, ASP.NET MVC, WinForms, WPF
VB.NET Tutorial for Export PDF file from Microsoft Office PowerPoint
pdf to ppt converter; converting pdf to ppt
164    Chapter 4  Combinational Logic
I
3
will be connected to the output line. No more than one buffer may be in the active 
state at any given time. The connected buffers must be controlled so that only 1 three-
state buffer has access to the output while all other buffers are maintained in a high-
impedance state. One way to ensure that no more than one control input is active at any 
given time is to use a decoder, as shown in the diagram. When the enable input of the 
decoder is 0, all of its four outputs are 0 and the bus line is in a high-impedance state 
because all four buffers are disabled. When the enable input is active, one of the three-
state buffers will be active, depending on the binary value in the select inputs of the 
decoder. Careful investigation reveals that this circuit is another way of constructing a 
four-to-one-line multiplexer.   
4.12     HDL MODELS OF COMBINATIONAL 
CIRCUITS 
The Verilog HDL was introduced in Section 3.10. In the current section, we introduce 
additional features of Verilog, present more elaborate examples, and compare alternative 
descriptions of combinational circuits in Verilog. Sequential circuits are presented in 
Chapter 5. As mentioned previously, the module is the basic building block for modeling 
hardware with the Verilog HDL. The logic of a module can be described in any one (or a 
combination) of the following modeling styles: 
•   Gate-level modeling using instantiations of predefined and user-defined primitive 
gates.  
•   Dataflow modeling using continuous assignment statements with the keyword 
assign .  
•   Behavioral modeling using procedural assignment statements with the keyword 
always .   
Gate-level (structural) modeling describes a circuit by specifying its gates and how they 
are connected with each other. Dataflow modeling is used mostly for describing the 
Boolean equations of combinational logic. We’ll also consider here behavioral modeling 
that is used to describe combinational and sequential circuits at a higher level of abstrac-
tion. Combinational logic can be designed with truth tables, Boolean equations, and 
schematics; Verilog has a construct corresponding to each of these “classical” approaches 
to design: user-defined primitives, continuous assignments, and primitives, as shown in 
Fig.   4.31   . There is one other modeling style, called switch-level modeling. It is sometimes 
used in the simulation of MOS transistor circuit models, but not in logic synthesis. We 
will not consider switch-level modeling. 
Gate-Level Modeling 
Gate-level modeling was introduced in Section 3.10 with a simple example. In this type 
of representation, a circuit is specified by its logic gates and their interconnections. Gate-
level modeling provides a textual description of a schematic diagram. The Verilog HDL 
Online Convert PowerPoint to PDF file. Best free online export
Download Free Trial. Convert a PPTX/PPT File to PDF. Then just wait until the conversion from Powerpoint to PDF is complete and download the file.
converting pdf to powerpoint; converting pdf to ppt online
C# PDF Convert to Jpeg SDK: Convert PDF to JPEG images in C#.net
C# PDF - Convert PDF to JPEG in C#.NET. C#.NET PDF to JPEG Converting & Conversion Control. Convert PDF to JPEG Using C#.NET. Add necessary references:
how to convert pdf to ppt for; pdf to ppt converter online
Section 4.12  HDL Models of Combinational Circuits    165
includes 12 basic gates as predefined primitives. Four of these primitive gates are of the 
three-state type. The other eight are the same as the ones listed in Section 2.8. They are 
all declared with the lowercase keywords  and, nand, or, nor, xor, xnor, not and  buf . 
Primitives such as  and  are  n -input primitives. They can have any number of scalar inputs 
(e.g., a three-input  and  primitive). The  buf  and  not  primitives are  n -output primitives. 
Asingle input can drive multiple output lines distinguished by their identifiers. 
The Verilog language includes a functional description of each type of gate, too. The 
logic of each gate is based on a four-valued system. When the gates are simulated, 
thesimulator assigns one value to the output of each gate at any instant. In addition to 
the two logic values of 0 and 1, there are two other values:  unknown  and  high impedance . 
An unknown value is denoted by  x  and a high impedance by  . An unknown value is 
assigned during simulation when the logic value of a signal is ambiguous—for instance, 
if it cannot be determined whether its value is 0 or 1 (e.g., a flip-flop without a reset 
condition). A high-impedance condition occurs at the output of three-state gates that 
are not enabled or if a wire is inadvertently left unconnected. The four-valued logic truth 
tables for the  and, or, xor and  not  primitives are shown in  Table   4.9   . The truth table for 
the other four gates is the same, except that the outputs are complemented. Note that 
for the  and  gate, the output is 1 only when both inputs are 1 and the output is 0 if any 
input is 0. Otherwise, if one input is  x  or  , the output is  . The output of the  or  gate is 0 
if both inputs are 0, is 1 if any input is 1, and is  x  otherwise. 
When a primitive gate is listed in a module, we say that it is  instantiated  in the module. 
In general, component instantiations are statements that reference lower level compo-
nents in the design, essentially creating unique copies (or  instances ) of those components 
in the higher level module. Thus, a module that uses a gate in its description is said to 
Boolean equation
C
o
n
t
i
n
u
o
u
s
a
s
s
i
g
n
m
e
n
t
P
r
i
m
i
t
i
v
e
(
g
a
t
e
)
U
s
e
r
-
d
e
f
i
n
e
d
p
r
i
m
i
t
i
v
e
Truth table
Schematic
Verilog model
(combinational logic)
FIGURE 4.31 
Relationship of Verilog constructs to truth tables, Boolean equations, and schematics       
VB.NET PDF Convert to Jpeg SDK: Convert PDF to JPEG images in vb.
Convert PDF to Image; Convert Word to PDF; Convert Excel to PDF; Convert PowerPoint to PDF; Convert Image to PDF; Convert Jpeg to PDF;
chart from pdf to powerpoint; add pdf to powerpoint
VB.NET PDF Convert to HTML SDK: Convert PDF to html files in vb.
Convert PDF to HTML. |. Home ›› XDoc.PDF ›› VB.NET PDF: PDF to HTML. Convert PDF to HTML in VB.NET Demo Code. Add necessary references:
convert pdf file into ppt; image from pdf to powerpoint
166    Chapter 4  Combinational Logic
instantiate  the gate. Think of instantiation as the HDL counterpart of placing and 
connecting parts on a circuit board. 
We now present two examples of gate-level modeling. Both examples use identifiers 
having multiple bit widths, called  vectors . The syntax specifying a vector includes within 
square brackets two numbers separated with a colon. The following Verilog statements 
specify two vectors: 
output  [0: 3] D;
wire  [7: 0] SUM;   
The first statement declares an output vector  D  with four bits, 0 through 3. The second 
declares a wire vector  SUM  with eight bits numbered 7 through 0. ( Note : The first (left-
most) number (array index) listed is always the most significant bit of the vector.) The 
individual bits are specified within square brackets, so  D[2]  specifies bit 2 of  D . It is also 
possible to address parts (contiguous bits) of vectors. For example,  SUM[2: 0]  specifies 
the three least significant bits of vector  SUM . 
HDL Example 4.1 shows the gate-level description of a two-to-four-line decoder. 
(See Fig.   4.19   .) This decoder has two data inputs  A  and  B  and an enable input  E . The 
four outputs are specified with the vector  D . The  wire  declaration is for internal connec-
tions. Three  not  gates produce the complement of the inputs, and four  nand  gates provide 
the outputs for  D . Remember that  the output is always listed first in the port list of a 
primitive , followed by the inputs. This example describes the decoder of  Fig.  4.19    and 
follows the procedures established in Section 3.10. Note that the keywords  not  and  nand  
are written only once and do not have to be repeated for each gate, but commas must 
be inserted at the end of each of the gates in the series, except for the last statement, 
which must be terminated with a semicolon. 
Table 4.9 
Truth Table for Predefined Primitive Gates 
and  0  1  x  z 
or 
 1  x  z 
 0  0  0 
 1  x  x 
 1  x  x 
 1  1  1 
 x  x  x 
 1  x  x 
 x  x  x 
 1  x  x 
xor  0  1  x  z 
not  input  output     
 1  x  x 
1     
 0  x  x 
0     
 x  x  x 
x     
 x  x  x 
x     
C# powerpoint - Convert PowerPoint to PDF in C#.NET
C# PowerPoint - Convert PowerPoint to PDF in C#.NET. C# Demo: Convert PowerPoint to PDF Document. Add references: RasterEdge.Imaging.Basic.dll.
convert pdf to powerpoint presentation; how to convert pdf file to powerpoint presentation
C# PDF Convert to HTML SDK: Convert PDF to html files in C#.net
Convert PDF to HTML. |. C#.NET PDF SDK - Convert PDF to HTML in C#.NET. How to Use C# .NET XDoc.PDF SDK to Convert PDF to HTML Webpage in C# .NET Program.
pdf to powerpoint conversion; add pdf to powerpoint presentation
Section 4.12  HDL Models of Combinational Circuits    167
HDL Example 4.1 (Two-to-Four-Line Decoder) 
// Gate-level description of two-to-four-line decoder
// Refer to  Fig.   4.19    with symbol  E  replaced by  enable , for clarity.
module  decoder_2x4_gates (D, A, B, enable);
output  
[0: 3] 
D;
input  
A, B;
input  
enable;
wire  
A_not,B_not, enable_not;
not
G1  (A_not, A),
G2  (B_not, B),
G3  (enable_not, enable);
nand
G4  (D[0], A_not, B_not, enable_not),
G5  (D[1], A_not, B, enable_not),
G6  (D[2], A, B_not, enable_not),
G7  (D[3], A, B, enable_not);
endmodule 
Two or more modules can be combined to build a hierarchical description of a design. 
There are two basic types of design methodologies: top down and bottom up. In a 
top-down  design, the top-level block is defined and then the subblocks necessary to 
build the top-level block are identified. In a  bottom-up  design, the building blocks are 
first identified and then combined to build the top-level block. Take, for example, the 
binary adder of  Fig.   4.9   . It can be considered as a top-block component built with four 
full-adder blocks, while each full adder is built with two half-adder blocks. In a top-down 
design, the four-bit adder is defined first, and then the two adders are described. In a 
bottom-up design, the half adder is defined, then each full adder is constructed, and then 
the four-bit adder is built from the full adders. 
A bottom-up hierarchical description of a four-bit adder is shown in HDL 
Example4.2. The half adder is defined by instantiating primitive gates. The next mod-
ule describes the full adder by instantiating and connecting two half adders. The third 
module describes the four-bit adder by instantiating and connecting four full adders. 
Note that the first character of an identifier cannot be a number, but can be an under-
score, so the module name  _4bitadder  is valid. An alternative name that is meaningful, 
but does not require a leading underscore, is  adder_4_bit . The instantiation is done by 
using the name of the module that is instantiated together with a new (or the same) 
set of port names. For example, the half adder  HA1  inside the full adder module is 
instantiated with ports  S1 ,  C1 ,  x,  and  y . This produces a half adder with outputs  S1  and 
C1  and inputs  x  and  y . 
VB.NET PDF Convert to Word SDK: Convert PDF to Word library in vb.
VB.NET PDF - Convert PDF to MS Office Word in VB.NET. VB.NET Tutorial for How to Convert PDF to Word (.docx) Document in VB.NET. Best
pdf to ppt; pdf to powerpoint converter
VB.NET PDF Convert to Tiff SDK: Convert PDF to tiff images in vb.
VB.NET PDF - Convert PDF to TIFF Using VB in VB.NET. Free VB.NET Guide to Render and Convert PDF Document to TIFF in Visual Basic Class.
convert pdf file to ppt online; changing pdf to powerpoint file
168    Chapter 4  Combinational Logic
HDL Example 4.2 (Ripple-Carry Adder) 
// Gate-level description of four-bit ripple carry adder
// Description of half adder ( Fig.   4.5b   )
//  module  half_adder (S, C, x, y); 
// Verilog 1995 syntax
//  output  S, C;
//  input  x, y;
module  half_adder ( output  S, C,  input  x, y); 
// Verilog 2001, 2005 syntax
// Instantiate primitive gates
xor  (S, x, y);
and  (C, x, y);
endmodule 
// Description of full adder ( Fig.   4.8   ) 
// Verilog 1995 syntax
//  module  full_adder (S, C, x, y, z);
//  output  
S, C;
//  input  
x, y, z;
module  full_adder ( output  S, C,  input  x, y, z); 
// Verilog 2001, 2005 syntax
wire S1, C1, C2;
// Instantiate half adders
half_adder HA1 (S1, C1, x, y);
half_adder HA2 (S, C2, S1, z);
or G1 (C, C2, C1);
endmodule 
// Description of four-bit adder ( Fig.   4.9   ) 
// Verilog 1995 syntax
//  module  ripple_carry_4_bit_adder (Sum, C4, A, B, C0);
//  output   [3: 0] Sum;
//  output   
C4;
// input  [3: 0] A, B;
//  input   
C0;
// Alternative Verilog 2001, 2005 syntax:
module  ripple_carry_4_bit_adder (  output  [3: 0] Sum,  output  C4,  
input  [3: 0] A, B,  input  C0);
wire 
C1, C2, C3; 
// Intermediate carries
// Instantiate chain of full adders
full_adder 
FA0 (Sum[0], C1, A[0], B[0], C0),
FA1 (Sum[1], C2, A[1], B[1], C1),
FA2 (Sum[2], C3, A[2], B[2], C2),
FA3 (Sum[3], C4, A[3], B[3], C3);
endmodule    
HDL Example 4.2 illustrates Verilog 2001, 2005 syntax, which eliminates extra typing 
of identifiers declaring the mode (e.g.,  output ), type ( reg ), and declaration of a vector range 
(e.g., [3: 0]) of a port. The first version of the standard (1995) uses separate statements for 
these declarations. 
Section 4.12  HDL Models of Combinational Circuits    169
Note that modules can be instantiated (nested) within other modules, but module 
declarations cannot be nested; that is, a module definition (declaration) cannot be placed 
within another module declaration. In other words, a module definition cannot be 
inserted into the text between the  module  and  endmodule  keywords of another module. 
The only way one module definition can be incorporated into another module is by 
instantiating it. Instantiating modules within other modules creates a hierarchical 
decomposition of a design. A description of a module is said to be a  structural  descrip-
tion if it is composed of instantiations of other modules. Note also that instance names 
must be specified when defined modules are instantiated (such as  FA0  for the first full 
adder in the third module), but using a name is optional when instantiating primitive 
gates. Module  ripple_carry_4_bit_adder  is composed of instantiated and interconnected 
full adders, each of which is itself composed of half adders and some  glue logic . The top 
level, or parent module, of the design hierarchy is the module  ripple_carry_4_ bit_adder. 
Four copies of  full_adder  are its child modules, etc.  C0  is an input of the cell forming the 
least significant bit of the chain, and  C4  is the output of the cell forming the most 
significant bit.  
Three-State Gates 
As mentioned in Section 4.11, a three-state gate has a control input that can place the 
gate into a high-impedance state. The high-impedance state is symbolized by  z  in Verilog. 
There are four types of three-state gates, as shown in  Fig.   4.32   . The  bufif1  gate behaves 
like a normal buffer if    control= 1.    The output goes to a high-impedance state  z  when 
control = 0.    The  bufif0  gate behaves in a similar fashion, except that the high-impedance  
state occurs when    control= 1.    The two  notif  gates operate in a similar manner, except 
that the output is the complement of the input when the gate is not in a high-impedance 
state. The gates are instantiated with the statement 
gatename1output,input,control2;   
in
out
control
bufif1
in
out
control
bufif0
in
out
control
notif1
in
out
control
notif0
FIGURE 4.32 
Three-state gates       
170    Chapter 4  Combinational Logic
The gate name can be that of any 1 of the 4 three-state gates. In simulation, the output 
can result in 0, 1,  x , or  z . Two examples of gate instantiation are 
bufif1  (OUT, A, control);
notif0  (Y, B, enable);   
In the first example, input  A  is transferred to  OUT  when    control =1.     OUT  goes to  z  
when    control =0.    In the second example, output    z    when    enable = 1    and output 
B    when    enable = 0.    
The outputs of three-state gates can be connected together to form a common output 
line. To identify such a connection, Verilog HDL uses the keyword  tri  (for tristate) to 
indicate that the output has multiple drivers. As an example, consider the two-to-one-
line multiplexer with three-state gates shown in  Fig.   4.33   . 
A
B
m_out
select
FIGURE 4.33 
Two-to-one-line multiplexer with three-state buffers       
The HDL description must use a  tri  data type for the output:
//  Mux  with three-state output
module  mux_tri (m_out, A, B, select);
output  m_out;
input  A, B, select;
tri  
m_out;
bufif1  (m_out, A, select);
bufif0  (m_out, B, select);
endmodule   
The 2 three-state buffers have the same output. In order to show that they have a com-
mon connection, it is necessary to declare  m_out  with the keyword  tri.  
Keywords  wire  and  tri  are examples of a set of data types called  nets , which represent 
connections between hardware elements. In simulation, their value is determined by a 
continuous assignment statement or by the device whose output they represent. The word 
net  is not a keyword, but represents a class of data types, such as  wir e , wor, wand, tri, 
supply1, and supply0.  The  wire  declaration is used most frequently. In fact, if an identifier 
is used, but not declared, the language specifies that it will be interpreted (by default) as 
 wire . The net  wor  models the hardware implementation of the wired-OR configuration 
(emitter-coupled logic). The  wand  models the wired-AND configuration (open-collector 
technology; see  Fig.   3.26   ). The nets  supply1  and  supply0  represent power supply and 
ground, respectively. They are used to hardwire an input of a device to either 1 or 0.  
Section 4.12  HDL Models of Combinational Circuits    171
Dataflow Modeling 
Dataflow modeling of combinational logic uses a number of operators that act on binary 
operands to produce a binary result. Verilog HDL provides about 30 different operators. 
Table   4.10    lists some of these operators, their symbols, and the operation that they per-
form. (A complete list of operators supported by Verilog 2001, 2005 can be found in 
Table   8.1    in Section 8.2.) It is necessary to distinguish between arithmetic and logic 
operations, so different symbols are used for each. The plus symbol    1+2    indicates the 
arithmetic operation of addition; the bitwise logic AND operation (conjunction) uses 
the symbol &. There are special symbols for bitwise logical OR (disjunction), NOT, and 
XOR. The equality symbol uses two equals signs (without spaces between them) to 
distinguish it from the equals sign used with the  assign  statement. The bitwise operators 
operate bit by bit on a pair of vector operands to produce a vector result. The concat-
enation operator provides a mechanism for appending multiple operands. For example, 
two operands with two bits each can be concatenated to form an operand with four bits. 
The conditional operator acts like a multiplexer and is explained later, in conjunction 
with HDL Example 4.6. 
It should be noted that a bitwise operator (e.g., 
&
) and its corresponding logical 
operator (e.g., ! ) may produce different results, depending on their operand. If the 
operands are scalar the results will be identical; if the operands are vectors the result 
will not necessarily match. For example, 
(1010) is (0101), and !(1010) is 0. A binary 
value is considered to be logically true if it is not 0. In general, use the bitwise opera-
tors to describe arithmetic operations and the logical operators to describe logical 
operations. 
Dataflow modeling uses continuous assignments and the keyword assign. A continu-
ous assignment is a statement that assigns a value to a net. The data type family  net  is 
used in Verilog HDL to represent a physical connection between circuit elements. A net 
Table 4.10 
Some Verilog HDL Operators 
Symbol 
Operation 
Symbol
Operation 
binary addition 
binary subtraction 
bitwise AND 
&&
logical AND 
∣ 
bitwise OR 
||
logical OR 
bitwise XOR 
∼ 
bitwise NOT 
!
logical NOT 
= = 
equality 
greater than 
less than 
{} 
concatenation 
?: 
conditional 
172    Chapter 4  Combinational Logic
is declared explicitly by a net keyword (e.g.,  wire ) or by declaring an identifier to be an 
input port. The logic value associated with a net is determined by what the net is con-
nected to. If the net is connected to an output of a gate, the net is said to be  driven  by 
the gate, and the logic value of the net is determined by the logic values of the inputs to 
the gate and the truth table of the gate. If the identifier of a net is the left-hand side of 
a continuous assignment statement or a procedural assignment statement, the value 
assigned to the net is specified by a Boolean expression that uses operands and opera-
tors. As an example, assuming that the variables were declared, a two-to-one-line mul-
tiplexer with scalar data inputs  A  and  B , select input  S , and output  Y  is described with 
the continuous assignment 
assign Y = (A && S) || (B && S) 
The relationship between  Y ,  A ,  B , and  S  is declared by the keyword  assign , followed by 
the target output  Y  and an equals sign. Following the equals sign is a Boolean expres-
sion. In hardware terms, this assignment would be equivalent to connecting the output 
of the OR gate to wire  Y . 
The next two examples show the dataflow models of the two previous gate-level 
examples. The dataflow description of a two-to-four-line decoder with active-low output 
enable and inverted output is shown in HDL Example 4.3. The circuit is defined with 
four continuous assignment statements using Boolean expressions, one for each output. 
The dataflow description of the four-bit adder is shown in HDL Example 4.4. The addi-
tion logic is described by a single statement using the operators of addition and concat-
enation. The plus symbol (+) specifies the binary addition of the four bits of  A  with the 
four bits of  B  and the one bit of  C _ in . The target output is the  concatenation  of the 
output carry  C _ out  and the four bits of  Sum . Concatenation of operands is expressed 
within braces and a comma separating the operands. Thus,  {C_out, Sum}  represents the 
five-bit result of the addition operation.  
HDL Example 4.3 (Dataflow: Two-to-Four Line Decoder) 
// Dataflow description of two-to-four-line decoder
// See  Fig.   4.19   . Note: The figure uses symbol E, but the
// Verilog model uses enable to clearly indicate functionality.
module  decoder_2x4_df ( 
// Verilog 2001, 2005 syntax
output [0: 3] 
D,
input  
A, B,
enable
);
assign  D[0] = !((!A) && (!B) && (!enable)), 
D[1] = !(*!A) && B && (!enable)),  
D[2] = !(A && B && (!enable)  
D[3] = !(A && B && (!enable))   
endmodule 
Documents you may be interested
Documents you may be interested