Section 4.12  HDL Models of Combinational Circuits    173
Dataflow HDL models describe combinational circuits by their  function  rather than 
by their gate structure. To show how dataflow descriptions facilitate digital design, con-
sider the 4-bit magnitude comparator described in HDL Example 4.5. The module 
specifies two 4-bit inputs  A  and  B  and three outputs. One output ( A_lt_B ) is logic 1 if 
A  is less than  B , a second output ( A_gt_B ) is logic 1 if  A  is greater than  B , and a third 
output ( A_eq_B ) is logic 1 if  A  is equal to  B . Note that equality (identity) is symbolized 
with two equals signs (= =) to distinguish the operation from that of the assignment 
operator (=). A Verilog HDL synthesis compiler can accept this module description as 
input, execute synthesis algorithms, and provide an output netlist and a schematic of a 
circuit equivalent to the one in  Fig.   4.17   , all without manual intervention! The designer 
need not draw the schematic. 
HDL Example 4.4 (Dataflow: Four-Bit Adder) 
// Dataflow description of four-bit adder
// Verilog 2001, 2005 module port syntax
module  binary_adder (
output  [3: 0] 
Sum,
output  
C_out,
input  [3: 0] 
A, B,
input  
C_in
);
assign  {C_out, Sum} = A + B + C_in;
endmodule   
HDL Example 4.5 (Dataflow: Four-Bit Comparator) 
// Dataflow description of a four-bit comparator //V2001, 2005 syntax
module  mag_compare
 output  
A_lt_B, A_eq_B, A_gt_B,
input  [3: 0] 
A, B
);
assign  A_lt_B = (A < B);
assign  A_gt_B = (A > B);
assign  A_eq_B = (A = = B);
endmodule   
The next example uses the conditional operator ( ? : ). This operator takes three 
operands: 
condition ? true-expression : false-expression;   
The condition is evaluated. If the result is logic 1, the true expression is evaluated and 
used to assign a value to the left-hand side of an assignment statement. If the result is 
Converter 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
converting pdf to powerpoint slides; and paste pdf to powerpoint
Converter 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
convert pdf into ppt online; how to convert pdf into powerpoint slides
174    Chapter 4  Combinational Logic
logic 0, the false expression is evaluated. The two conditions together are equivalent to 
an if–else condition. HDL Example 4.6 describes a two-to-one-line multiplexer using 
the conditional operator. The continuous assignment 
assign OUT = select ? A : B;   
specifies the condition that    OUT = A    if    select = 1,    else    OUT = B    if    select = 0.     
HDL Example 4.6 (Dataflow: Two-to-One Multiplexer) 
// Dataflow description of two-to-one-line multiplexer
module  mux_2x1_df(m_out, A, B, select);
output 
m_out;
input  
A, B;
input  
select;
assign  m_out = (select)? A : B;
endmodule   
Behavioral Modeling 
Behavioral modeling represents digital circuits at a functional and algorithmic level. It 
is used mostly to describe sequential circuits, but can also be used to describe combina-
tional circuits. Here, we give two simple combinational circuit examples to introduce the 
subject. Behavioral modeling is presented in more detail in Section 5.6, after the study 
of sequential circuits. 
Behavioral descriptions use the keyword  always , followed by an optional event con-
trol expression and a list of procedural assignment statements. The event control expres-
sion specifies when the statements will execute. The target output of a procedural 
assignment statement must be of the  reg  data type. Contrary to the  wire  data type, 
whereby the target output of an assignment may be continuously updated, a  reg  data 
type retains its value until a new value is assigned. 
HDL Example 4.7 shows the behavioral description of a two-to-one-line multiplexer. 
(Compare it with HDL Example 4.6.) Since variable  m_out  is a target output, it must 
be declared as  reg  data (in addition to the  output  declaration). The procedural assign-
ment statements inside the  always  block are executed every time there is a change in 
any of the variables listed after the @ symbol. (Note that there is no semicolon (;) at the 
end of the  always  statement.) In this case, these variables are the input variables  A ,  B , 
and  select.  The statements execute if  A, B , or  select  changes value. Note that the keyword 
or , instead of the bitwise logical OR operator “|”, is used between variables. The condi-
tional statement  if–else  provides a decision based upon the value of the  select  input. The 
if  statement can be written without the equality symbol: 
if (select) OUT = A;   
The statement implies that  select  is checked for logic 1. 
C#: How to Use SDK to Convert Document and Image Using XDoc.
You may use our converter SDK to easily convert PDF, Word, Excel, PowerPoint, Tiff, and Dicom files to raster images like Jpeg, Png, Bmp and Gif.
add pdf to powerpoint slide; convert pdf into powerpoint online
C# PDF Convert: How to Convert MS PPT to Adobe PDF Document
Microsoft PowerPoint to PDF. |. Home ›› XDoc.Converter ›› C# Converter: PowerPoint to PDF. You maybe interested: PDF in C#,
how to change pdf to powerpoint format; convert pdf file to powerpoint
Section 4.12  HDL Models of Combinational Circuits    175
HDL Example 4.8 describes the function of a four-to-one-line multiplexer. The  select  
input is defined as a two-bit vector, and output  y  is declared to have type  reg . The  always  
statement, in this example, has a sequential block enclosed between the keywords  case  
and  endcase . The block is executed whenever any of the inputs listed after the  @  symbol 
changes in value. The  case  statement is a multiway conditional branch construct. When-
ever  in_0, in_1, in_2, in_3  or  select  change, the case expression ( select ) is evaluated and 
its value compared, from top to bottom, with the values in the list of statements that 
follow, the so-called  case  items. The statement associated with the first  case  item that 
matches the  case  expression is executed. In the absence of a match, no statement is 
executed. Since  select  is a two-bit number, it can be equal to 00, 01, 10, or 11. The  case  
items have an implied priority because the list is evaluated from top to bottom. 
The list is called a  sensitivity list  (Verilog 2001, 2005) and is equivalent to the  event 
control expression  (Verilog 1995) formed by “ORing” the signals. Combinational logic 
is reactive—when an input changes an output may change.  
HDL Example 4.7 (Behavioral: Two-to-One Line Multiplexer) 
// Behavioral description of two-to-one-line multiplexer
module  mux_2x1_beh (m_out, A, B, select);
output  
m_out;
input  
A, B, select;
reg  
m_out;
always   
@(A or B or select)
if  (select == 1) m_out = A;
else  m_out 5 B;
endmodule   
HDL Example 4.8 (Behavioral: Four-to-One Line Multiplexer) 
// Behavioral description of four-to-one line multiplexer
// Verilog 2001, 2005 port syntax
module  mux_4x1_beh
 output reg  m_out,
input  
in_0, in_1, in_2, in_3,
input  [1: 0] select
);
always  @ (in_0, in_1, in_2, in_3, select) 
// Verilog 2001, 2005 syntax
case  (select)
2’b00: 
m_out = in_0;
2’b01: 
m_out = in_1;
2’b10: 
m_out = in_2;
2’b11: 
m_out = in_3;
endcase 
endmodule   
XDoc.Converter for .NET, Support Documents and Images Conversion
file converter SDK supports various commonly used document and image file formats, including Microsoft Office (2003 and 2007) Word, Excel, PowerPoint, PDF, Tiff
how to add pdf to powerpoint slide; pdf to powerpoint
Online Convert PowerPoint to PDF file. Best free online export
Online Powerpoint to PDF Converter. Download Free Trial. Convert a PPTX/PPT File to PDF. Just upload your file by clicking on the blue
table from pdf to powerpoint; how to convert pdf to powerpoint on
176    Chapter 4  Combinational Logic
Binary numbers in Verilog are specified and interpreted with the letter  b  preceded 
by a prime. The size of the number is written first and then its value. Thus,    2′b01    speci-
fies a two-bit binary number whose value is 01. Numbers are stored as a bit pattern in 
memory, but they can be referenced in decimal, octal, or hexadecimal formats with the 
letters    d o,    and    h
,    respectively. For example, 4′HA = 4′d10 = 4′b1010 and have the 
same internal representation in a simulator. If the base of the number is not specified, 
its interpretation defaults to decimal. If the size of the number is not specified, the 
system assumes that the size of the number is at least 32 bits; if a host simulator has a 
larger word length—say, 64 bits—the language will use that value to store unsized 
numbers. The integer data type (keyword integer) is stored in a 32-bit representation. 
The underscore (_) may be inserted in a number to improve readability of the code 
(e.g.,    16′b0101_1110_0101_0011   ). It has no other effect. 
The  case  construct has two important variations:  casex  and  casez . The first will treat 
as don’t-cares any bits of the  case  expression or the  case  item that have logic value  x  or 
. The  casez  construct treats as don’t-cares only the logic value  z , for the purpose of 
detecting a match between the  case  expression and a  case  item. 
The list of case items need not be complete. If the list of  case  items does not include 
all possible bit patterns of the  case  expression, no match can be detected. Unlisted  case  
items, i.e., bit patterns that are not explicitly decoded can be treated by using the  default  
keyword as the last item in the list of  case  items. The associated statement will execute 
when no other match is found. This feature is useful, for example, when there are more 
possible state codes in a sequential machine than are actually used. Having a  default  
case item lets the designer map all of the unused states to a desired next state without 
having to elaborate each individual state, rather than allowing the synthesis tool to 
arbitrarily assign the next state. 
The examples of behavioral descriptions of combinational circuits shown here are 
simple ones. Behavioral modeling and procedural assignment statements require knowl-
edge of sequential circuits and are covered in more detail in Section 5.6.  
Writing a Simple Test Bench 
A test bench is an HDL program used for describing and applying a stimulus to an HDL 
model of a circuit in order to test it and observe its response during simulation. Test 
benches can be quite complex and lengthy and may take longer to develop than the 
design that is tested. The results of a test are only as good as the test bench that is used 
to test a circuit. Care must be taken to write stimuli that will test a circuit thoroughly, 
exercising all of the operating features that are specified. However, the test benches 
considered here are relatively simple, since the circuits we want to test implement only 
combinational logic. The examples are presented to demonstrate some basic features of 
HDL stimulus modules.  Chapter   8    considers test benches in greater depth. 
In addition to employing the  always  statement, test benches use the  initial  statement 
to provide a stimulus to the circuit being tested. We use the term “ always  statement” 
loosely. Actually,  always  is a Verilog language construct specifying  how  the associated 
statement is to execute (subject to the event control expression). The  always  statement 
RasterEdge XDoc.PowerPoint for .NET - SDK for PowerPoint Document
Able to view and edit PowerPoint rapidly. Convert. Convert PowerPoint to PDF. Convert PowerPoint to HTML5. Convert PowerPoint to Tiff. Convert PowerPoint to Jpeg
convert pdf into powerpoint; pdf to powerpoint converter online
C# WinForms Viewer: Load, View, Convert, Annotate and Edit
View PDF in WPF; C#.NET: View Word in WPF; C#.NET: View Excel in WPF; C#.NET: View PowerPoint in WPF; C#.NET: View Tiff in WPF. XDoc.Converter for C#; XDoc.PDF
image from pdf to ppt; change pdf to powerpoint on
Section 4.12  HDL Models of Combinational Circuits    177
executes repeatedly in a loop. The  initial  statement executes only once, starting from 
simulation time 0, and may continue with any operations that are delayed by a given 
number of time units, as specified by the symbol #. For example, consider the  initial  
block 
initial 
begin 
A = 0; B = 0;
#10 A = 1;
#20 A = 0; B = 1;
end    
The block is enclosed between the keywords  begin  and  end . At time 0,  A  and  B  are set 
to 0. Ten time units later,  A  is changed to 1. Twenty time units after that (at    t = 30   ),  A is 
changed to 0 and  B  to 1. Inputs specified by a three-bit truth table can be generated with 
the  initial  block:  
initial 
begin 
=
3’b000;
repeat  (7)
#10 D 
=
+
3’b001;
end    
When the simulator runs, the three-bit vector  D  is initialized to 000 at    time = 0.    The 
keyword  repeat  specifies a looping statement:  D  is incremented by 1 seven times, once 
every 10 time units. The result is a sequence of binary numbers from 000 to 111. 
A stimulus module has the following form:  
module  test_module_name;
// Declare local  reg  and  wire  identifiers.
// Instantiate the design module under test.
// Specify a stopwatch, using $finish to terminate the simulation.
// Generate stimulus, using initial and always statements.
// Display the output response (text or graphics (or both)).
endmodule    
A test module is written like any other module, but it typically has no inputs or outputs. 
The signals that are applied as inputs to the design module for simulation are declared 
in the stimulus module as local  reg  data type. The outputs of the design module that are 
displayed for testing are declared in the stimulus module as local  wire  data type. The 
module under test is then instantiated, using the local identifiers in its port list. 
Figure  4.34    clarifies this relationship. The stimulus module generates inputs for the 
design module by declaring local identifiers  t_A  and  t_B  as  reg  type and checks the 
output of the design unit with the  wire  identifier  t_C . The local identifiers are then used 
to instantiate the design module being tested. The simulator associates the (actual) local 
identifiers within the test bench,  t_A, t_B , and  t_C,  with the formal identifiers of the 
C# powerpoint - Convert PowerPoint to PDF in C#.NET
RasterEdge Visual C# .NET PowerPoint to PDF converter library control (XDoc.PowerPoint) is a mature and effective PowerPoint document converting utility.
copying image from pdf to powerpoint; how to convert pdf to ppt using
VB.NET PDF Converter Library SDK to convert PDF to other file
editing if they integrate this VB.NET PDF converter control with for converting MicroSoft Office Word, Excel and PowerPoint document to PDF file in VB
convert pdf to powerpoint with; images from pdf to powerpoint
178    Chapter 4  Combinational Logic
module ( A, B, C ). The association shown here is based on  position  in the port list, which 
is adequate for the examples that we will consider. The reader should note, however, 
that Verilog  provides a more flexible  name association  mechanism for connecting ports 
in larger circuits.  
The response to the stimulus generated by the  initial  and  al ways blocks will 
appear in text format as standard output and as waveforms (timing diagrams) in 
simulators having graphical output capability. Numerical outputs are displayed by 
using Verilog  system tasks . These are built-in system functions that are recognized 
by keywords that begin with the symbol  $ . Some of the system tasks that are useful 
for display are 
$display —display a one-time value of variables or strings with an end-of-line return,  
$write —same as  $display , but without going to next line,  
$monitor —display variables whenever a value changes during a simulation run,  
$time —display the simulation time,  
$finish —terminate the simulation.   
The syntax for  $display, $write, and $monitor  is of the form 
Task-name (format specification, argumentlist);   
The format specification uses the symbol % to specify the radix of the numbers that are 
displayed and may have a string enclosed in quotes (″). The base may be binary, decimal, 
hexadecimal, or octal, identified with the symbols %b, %d, %h, and %o, respectively 
(%B, %D, %H, and %O are valid too). For example, the statement 
$display ("%d %b %b", C, A, B);   
specifies the display of  C  in decimal and of  A  and  B  in binary. Note that there are no 
commas in the format specification, that the format specification and argument list 
modulet_circuit;
reg t_A, t_B;
wire t_C;
// Stimulus generators for
// t_A and t_B go here
initial# stop_time $finish;
endmodule
modulecircuit ( C , A, B )
input
A, B;
output
C;
// Description goes here
endmodule
parameterstop_time= 1000 ;
circuit M ( t_C,  t_A, t_B );
FIGURE 4.34 
Interaction between stimulus and design modules       
Section 4.12  HDL Models of Combinational Circuits    179
are separated by a comma, and that the argument list has commas between the 
variables. An example that specifies a string enclosed in quotes may look like the 
statement 
$display ("time = %0d A = %b", $time, A, B);   
and will produce the display 
time = 3 A = 10 B = 1   
where (time = ), (A = ), and (B = ) are part of the string to be displayed. The format 
specifiers %0d, %b, and %b specify the base for  $time ,  A , and  B , respectively. In display-
ing time values, it is better to use the format %0d instead of %d. This provides a display 
of the significant digits without the leading spaces that %d will include. (%d will display 
about 10 leading spaces because time is calculated as a 32-bit number.) 
An example of a stimulus module is shown in HDL Example 4.9. The circuit to be 
tested is the two-to-one-line multiplexer described in Example 4.6. The module 
t_mux_2x1_df  has no ports. The inputs for the mux are declared with a  reg  keyword and 
the outputs with a  wire  keyword. The mux is instantiated with the local variables. The 
initial  block specifies a sequence of binary values to be applied during the simulation. 
The output response is checked with the  $monitor  system task. Every time a variable in 
its argument changes value, the simulator displays the inputs, output, and time. The result 
of the simulation is listed under the simulation log in the example. It shows that 
m_out = A    when    select = 1    and    m_out = B    when    select = 0    verifying the operation of 
the multiplexer.  
HDL Example 4.9 (Test Bench) 
// Test bench with stimulus for mux_2x1_df
module  t_mux_2x1_df;
wire  
t_mux_out;
reg  
t_A, t_B;
reg  
t_select;
parameter  stop_time = 50;
mux_2x1_df M1 (t_mux_out, t_A, t_B, t_select); 
// Instantiation of circuit to be tested
initial  # stop_time $finish;
initial   begin  
// Stimulus generator
t_select = 1; t_A = 0; t_B = 1;
#10 t_A = 1; t_B = 0;
#10 t_select = 0;
#10 t_A = 0; t_B = 1;
end 
initial begin  
// Response monitor
//  $display  (″ time Select A B m_out ″);
//  $monitor  ( $time ,, ″ %b %b %b %b ″,  t_select, t_A, t_B, t_m_out);
180    Chapter 4  Combinational Logic
Logic simulation is a fast and accurate method of verifying that a model of a 
combinational circuit is correct. There are two types of verification: functional and 
timing. In  functional  verification, we study the circuit logical operation indepen-
dently of timing considerations. This can be done by deriving the truth table of the 
combinational circuit. In  timing  verification, we study the circuit’s operation by 
including the effect of delays through the gates. This can be done by observing the 
waveforms at the outputs of the gates when they respond to a given input. An exam-
ple of a circuit with gate delays was presented in Section 3.10 in HDL  Example   3.3   . 
We next show an HDL example that produces the truth table of a combinational 
circuit. A $monitor  system task displays the output caused by the given stimulus. 
Acommented alternative statement having a  $displ ay task would create a header 
that could be used with a  $monitor  statement to eliminate the repetition of names 
on each line of output. 
The analysis of combinational circuits was covered in Section 4.3. A multilevel 
circuit of a full adder was analyzed, and its truth table was derived by inspection. The 
gate-level description of this circuit is shown in HDL Example 4.10. The circuit has 
three inputs, two outputs, and nine gates. The description of the circuit follows the 
interconnections between the gates according to the schematic diagram of  Fig.   4.2   . 
Thestimulus for the circuit is listed in the second module. The inputs for simulating 
the circuit are specified with a three-bit  reg  vector  D .  D[2]  is equivalent to input  A , 
D[1]  to input  B , and  D[0]  to input  C . The outputs of the circuit    F
1
and    F
2
are declared 
as wire. The complement of  F2  is named  F2_b  to illustrate a common industry practice 
for designating the complement of a signal (instead of appending  _not ). This  procedure 
$monitor  (″ time = ″,  $time ,, ″ select = %b A = %b B = %b OUT = %b ″,
t_select, t_A, t_B, t_mux_out);
end 
endmodule 
// Dataflow description of two-to-one-line multiplexer
// from Example 4.6
module  mux_2x1_df (m_out, A, B, select);
output  
m_out;
input  
A, B;
input  
select;
assign  m_out = (select)? A : B;
endmodule 
Simulation log:
select = 1 A = 0 B = 1 OUT = 0 time = 0
select = 1 A = 1 B = 0 OUT = 1 time = 10
select = 0 A = 1 B = 0 OUT = 0 time = 20
select = 0 A = 0 B = 1 OUT = 1 time = 30  
Section 4.12  HDL Models of Combinational Circuits    181
follows the steps outlined in  Fig.   4.34   . The  repeat  loop provides the seven binary num-
bers after 000 for the truth table. The result of the simulation generates the output 
truth table displayed with the example. The truth table listed shows that the circuit is 
a full adder. 
HDL Example 4.10 (Gate-Level Circuit) 
// Gate-level description of circuit of  Fig.   4.2   
module  Circuit_of_Fig_4_2 (A, B, C, F1, F2);
input  A, B, C;
output   F1, F2;
wire  T1, T2, T3, F2_b, E1, E2, E3;
or  g1 (T1, A, B, C);
and  g2 (T2, A, B, C);
and  g3 (E1, A, B);
and  g4 (E2, A, C);
and  g5 (E3, B, C);
or  g6 (F2, E1, E2, E3);
not   g7 (F2_b, F2);
and  g8 (T3, T1, F2_b);
or  g9 (F1, T2, T3);
endmodule 
// Stimulus to analyze the circuit
module  test_circuit;
reg  [2: 0] D;
wire  F1, F2;
Circuit_of_Fig_4_2 (D[2], D[1], D[0], F1, F2);
initial 
begin 
D = 3’b000;
repeat  (7) #10 D = D 1 1’b1;
end 
initial 
$monitor  (″ ABC = %b F1 = %b F2 =%b ″, D, F1, F2);
endmodule 
Simulation log:  ABC = 000 F1 = 0 F2 =0
ABC = 001 F1 = 1 F2 =0 ABC = 010 F1 = 1 F2 =0
ABC = 011 F1 = 0 F2 =1 ABC = 100 F1 = 1 F2 =0
ABC = 101 F1 = 0 F2 =1 ABC = 110 F1 = 0 F2 =1
ABC = 111 F1 = 1 F2 =1  
182    Chapter 4  Combinational Logic
PROBLEMS 
(Answers to problems marked with * appear at the end of the text. Where appropriate, a logic 
design and its related HDL modeling problem are cross-referenced.) 
 
4.1   Consider the combinational circuit shown in  Fig.   P4.1   . (HDL—see Problem 4.49.) 
A
B
C
D
T
1
T
3
T
4
F
1
F
2
T
2
FIGURE P4.1        
(a)*    Derive the Boolean expressions for    T
1
through    T
4
.    Evaluate the outputs    F
1
and    F
2
as a function of the four inputs.  
(b)   List the truth table with 16 binary combinations of the four input variables. Then list 
the binary values for    T
1
through    T
4
and outputs    F
1
and    F
2
in the table.  
(c)   Plot the output Boolean functions obtained in part (b) on maps and show that the 
simplified Boolean expressions are equivalent to the ones obtained in part (a).     
 
4.2*   Obtain the simplified Boolean expressions for output  F  and  G  in terms of the input 
variables in the circuit of  Fig.   P4.2   . 
F
G
A
B
C
D
FIGURE P4.2          
 
4.3   For the circuit shown in  Fig.   4.26    (Section 4.11), 
(a)   Write the Boolean functions for the four outputs in terms of the input variables.  
(b)*    If the circuit is described in a truth table, how many rows and columns would there 
be in the table?     
 
4.4   Design a combinational circuit with three inputs and one output. 
(a)*    The output is 1 when the binary value of the inputs is less than 3. The output is 0 otherwise.  
(b)   The output is 1 when the binary value of the inputs is an even number.     
Documents you may be interested
Documents you may be interested