Section 8.11  Race‐Free Design (Software Race Conditions)    423
mismatch, because the behavioral model was presumed to be correct. There are various 
potential sources of mismatch between the results of a simulation, but we will consider 
one that typically happens in HDL‐based design methodology. Three realities contribute 
to the potential problem: (1) a physical feedback path exists between a datapath unit and 
a control unit whose inputs include status signals fed back from the datapath unit; 
(2)blocked procedural assignments execute immediately, and behavioral models simu-
late with 0 propagation delays, effectively creating immediate changes in the outputs of 
combinational logic when its inputs change (i.e., changes in the inputs and the outputs 
are scheduled in the same time step of the simulation); and (3) the order in which a 
simulator executes multiple blocked assignments to the same variable at a given time 
step of the simulation is indeterminate (i.e., unpredictable). 
R2 holds number of 1s 
(b)
Computations are
done
Name
120
180
240
300
clock
reset_b
Start
Zero
E
state[1: 0]
state[1]
state[0]
Ready
Load_regs
Shift_left
Incr_R2
data[7: 0]
R1[7: 0]
E
R2[3: 0]
count[3: 0]
1
2
2
f8
2
ff
3
3
1
3
2
f0
3
4
1
4
2
e0
3
5
1
5
2
c0
3
6
1
6
80
2
3
7
1
7
8
8
00
aa
0
R1 is empty of
1s
Machine returns to
S_idle
Figure 8.24
(Continued)              
Convert pdf into ppt - 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 powerpoint online no email; how to add pdf to powerpoint slide
Convert pdf into ppt - 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
how to change pdf file to powerpoint; convert pdf to ppt online without email
424    Chapter 8  Design at the Register Transfer Level
Now consider a sequential machine with an HDL model in which all assignments 
are made with the blocked assignment operator. At a clock pulse, the register opera-
tions in the datapath, the state transitions in the controller, the updates of the next 
state and output logic of the controller, and the updates to the status signals in the 
datapath are all scheduled to occur at the same time step of the simulation. Which 
executes first? Suppose that when a clock pulse occurs, the state of the controller 
changes before the register operations execute. The change in the state could change 
the outputs of the control unit. The new values of the outputs would be used by the 
datapath when it finally executes its assignments at that same clock pulse. The result 
might not be the same as it would have been if the datapath had executed its assign-
ments before the control unit updated its state and outputs. Conversely, suppose that 
when the clock pulse occurs, the datapath unit executes its operations and updates its 
status signals first. The updated status signals could cause a change in the value of the 
next state of the controller, which would be used to update the state. The result could 
differ from that which would result if the state had been updated before the edge‐
sensitive operations in the datapath executed. In either case, the timing of register 
transfer operations and state transitions in the different representations of the system 
might not match.  Failing to detect a mismatch can have disastrous consequences for 
the user of the design. Finding the source of the mismatch can be very time‐consuming 
and costly. It is better to  avoid the mismatch  by following a strict discipline in your 
design . Fortunately, there is a solution to this dilemma. 
A designer can eliminate the  software race conditions  just described by observing 
the rule of modeling combinational logic with blocked assignments and modeling 
state transitions and edge‐sensitive register operations with nonblocking assign-
ments. A software race cannot happen if nonblocking operators are used as shown 
in all of the examples in this text, because the sampling mechanism of the nonblock-
ing operator breaks the feedback path between a state transition or edge‐sensitive 
datapath operation and the combinational logic that forms the next state or inputs 
to the registers in the datapath unit. The mechanism does this because simulators 
evaluate the expressions on the right‐hand side of their nonblocking assignment 
statements before any blocked assignments are made. Thus, the nonblocking assign-
ments cannot be affected by the results of the blocked assignments. This matches the 
hardware reality. Always use the blocking operator to model combinational logic, 
and use the nonblocking operator to model edge‐sensitive register operations and 
state transitions. 
It also might appear that the physical structure of a datapath and the controller 
together create a physical (i.e., hardware), race condition, because the status signals are 
fed back to the controller and the outputs of the controller are fed forward to the 
datapath. However, timing analysis can verify that a change in the output of the control-
ler will not propagate through the datapath logic and then through the input logic of 
the controller in time to have an effect on the output of the controller until the next 
clock pulse. The state cannot update until the next edge of the clock, even though the 
status signals update the value of the next state. The flip‐flop cuts the feedback path 
Online Convert PowerPoint to PDF file. Best free online export
Convert a PPTX/PPT File to PDF. Just upload your file by clicking on the blue button or drag-and-drop your pptx or ppt file into the drop area.
convert pdf file to powerpoint presentation; changing pdf to powerpoint file
How to C#: Convert PDF, Excel, PPT to Word
How to C#: Convert PDF, Excel, PPT to Word. PDF, MS-Excel, MS-PPT to Word Conversion Overview. By integrating XDoc.Word SDK into your C#.NET project, PDF, MS
converting pdf to powerpoint online; how to add pdf to powerpoint presentation
Section 8.12  Latch‐Free Design (Why Waste Silicon?)    425
between clock cycles. In practice, timing analysis verifies that the circuit will operate at 
the specified clock frequency, or it identifies signal paths whose propagation delays are 
problematic. Remember, the design must implement the correct logic and operate at 
the speed prescribed by the clock.  
8.12     LATCH‐FREE DESIGN (WHY WASTE 
SILICON?) 
Continuous assignments model combinational logic implicitly. A feedback‐free continu-
ous assignment will synthesize to combinational logic, and the input–output relationship 
of the logic is automatically sensitive to all of the inputs of the circuit. In simulation, the 
simulator monitors the right‐hand sides of all continuous assignments, detects a change 
in any of the referenced variables, and updates the left‐hand side of an affected assign-
ment statement. Unlike a continuous assignment, a cyclic behavior is not necessarily 
completely sensitive to all of the variables that are referenced by its assignment state-
ments. If a level‐sensitive cyclic behavior is used to describe combinational logic, it is 
essential that the sensitivity list include every variable that is referenced on the right‐hand 
side of an assignment statement in the behavior. If the list is incomplete, the logic 
described by the behavior will be synthesized with latches at the outputs of the logic. This 
implementation wastes silicon area and may have a mismatch between the simulation of 
the behavioral model and the synthesized circuit. These difficulties can be avoided by 
ensuring that the sensitivity list is complete, but, in large circuits, it is easy to fail to include 
every referenced variable in the sensitivity list of a level‐sensitive cyclic behavior. 
Consequently, Verilog 2001 included a new operator to reduce the risk of accidentally 
synthesizing latches. 
In Verilog 2001, the tokens @ and * can be combined as @* or @(*) and are used 
without a sensitivity list to indicate that execution of the associated statement is sensi-
tive to every variable that is referenced on the right‐hand side of an assignment state-
ment in the logic. In effect, the operator @* indicates that the logic is to be interpreted 
HDL Example 8.9  
The following level-sensitive cyclic behavior will synthesize a two-channel multiplexer:
module  mux_2_V2001 ( output reg  [31: 0] y,  input  [31: 0] a, b,  input  sel);
always @* 
y = sel ? a: b;
endmodule   
The cyclic behavior has an implicit sensitivity list consisting of  a, b and  sel .  
How to C#: Convert Word, Excel and PPT to PDF
How to C#: Convert Word, Excel and PPT to PDF. MS Office to PDF Conversion Overview. By integrating XDoc.PDF SDK into your C#.NET project, Microsoft Office
image from pdf to powerpoint; convert pdf slides to powerpoint
C# TIFF: Learn to Convert MS Word, Excel, and PPT to TIFF Image
C# TIFF - Conversion from Word, Excel, PPT to TIFF. In order to convert Microsoft Word, Excel, and PowerPoint to quiet easy to integrate this SDK into your C#
pdf to powerpoint slide; add pdf to powerpoint presentation
426    Chapter 8  Design at the Register Transfer Level
and synthesized as level‐sensitive combinational logic; the logic has an implicit  sensitivity 
list composed of all of the variables that are referenced by the procedural assignments. 
Using the @* operator will prevent accidental synthesis of latches.     
8.13    OTHER LANGUAGE FEATURES 
The examples in this text have used only those features of the Verilog HDL that are 
appropriate for an introductory course in logic design. Verilog 2001 contains features 
that are very useful to designers, but which are not considered here. Among them are 
multidimensional arrays, variable part selects, array bit and part selects, signed reg, net, 
and port declarations, and local parameters. These enhancements are treated in more 
advanced texts using Verilog 2001 and Verilog 2005.   
PROBLEMS 
Answers to problems marked with * appear at the end of the book. 
 
8.1*   Explain in words and write HDL statements for the operations specified by the following 
register transfer notation: 
(a)      R2
d
R2 +1,R1
d
R     
(b)      R3
d
R3 -1     
(c)   If    (S
1
= 1)    then    (R0
d
R1)    else if    (S
2
=1)    then    (R0
d
R2)        
 
8.2   A logic circuit with active‐low synchronous reset has two control inputs x and y. If  x  is 1 
and  y  is 0, register  R  is incremented by 1 and control goes to a second state. If  x  is 0 and  y  
is 1, register  R  is cleared to zero and control goes from the initial state to a third state. 
Otherwise, control stays in the initial state. Draw (1) a block diagram showing the control-
ler, datapath unit (with internal registers), and signals, and (2) the portion of an ASMD 
chart starting from an initial state.   
 
8.3   Draw the ASMD charts for the following state transitions: 
(a)   If    x= 1,    control goes from state    S
1
to state    S
2
; if  x  = 0, generate a conditional opera-
tion    6= +2    and go from    S
1
to    S
2
 
(b)   If  x  = 1, control goes from    S
1
to    S
2
and then to    S
3
;    if  x  = 0, control goes from    S
1
to    S
3
.     
(c)   Start from state    S
1
;    then if  xy  = 11, go to    S
2
;    if  xy  = 01 go to    S
3
;    and if  xy  = 10, go to    S
1
;    
otherwise, go to    S
3
.        
 
8.4   Show the eight exit paths in an ASM block emanating from the decision boxes that check 
the eight possible binary values of three control variables  x,   y and  z .   
 
8.5   Explain how the ASM and ASMD charts differ from a conventional flowchart. Using 
Fig.  8.5    as an illustration, show the difference in interpretation. Explain the difference 
between and ASM chart and an ASMD chart. In your own words, discuss the use and merit 
of using an ASMD chart.   
 
8.6   Construct a block diagram and an ASMD chart for a digital system that counts the number 
of people in a room. The one door through which people enter the room has a photocell 
that changes a signal x from 1 to 0 while the light is interrupted. They leave the room from 
VB.NET PowerPoint: Convert & Render PPT into PDF Document
directly encode converted image source into PDF document file converted image source to PDF format, RasterEdge VB other encoding APIs to convert rendered image
how to change pdf to powerpoint; convert pdf to powerpoint with
VB.NET PowerPoint: Process & Manipulate PPT (.pptx) Slide(s)
to split one PPT (.pptx) document file into smaller sub control add-on can do PPT creating, loading powerful & profession imaging controls, PDF document, image
how to convert pdf into powerpoint slides; how to convert pdf to ppt for
Problems    427
a second door with a similar photocell that changes a signal y from 1 to 0 while the light 
is interrupted. The datapath circuit consists of an up–down counter with a display that 
shows how many people are in the room.   
 
8.7*   Draw a block diagram and an ASMD chart for a circuit with two eight‐bit registers  RA  
and  RB  that receive two unsigned binary numbers. The circuit performs the subtraction 
operation 
RA
d
RA -RB
Use the method for subtraction described in Section 1.5, and set a borrow flip‐flop to 1 if 
the answer is negative. Write and verify an HDL model of the circuit.   
 
8.8*   Design a digital circuit with three 16‐bit registers  AR,   BR,  and  CR  that perform the 
following operations: 
(a)   Transfer two 16‐bit signed numbers (in 2’s‐complement representation) to  AR  and  BR .  
(b)   If the number in  AR  is negative, divide the number in  AR  by 2 and transfer the result 
to register  CR .  
(c)   If the number in  AR  is positive but nonzero, multiply the number in  BR  by 2 and 
transfer the result to register  CR .  
(d)   If the number in  AR  is zero, clear register  CR  to 0.  
(e)   Write and verify a behavioral model of the circuit.     
 
8.9*   Design the controller whose state diagram is given by  Fig.   8.11   (a). Use one flip‐flop per 
state (a one‐hot assignment). Write, simulate, verify, and compare RTL and structural 
models of the controller.   
 
8.10   The state diagram of a control unit is shown in Fig.  P8.10 . It has four states and two 
inputs x and  y . Draw the equivalent ASM chart. Write and verify a Verilog model of the 
controller.   
 FIGURE P8.10  
Control state diagram for Problems 8.10 and 8.11       
00
11
10
01
x= 1
x= 0
y= 1
x= 1
y= 0
x= 0
x= 1
x= 0, y= 0
x= 1, y= 1
y= 1
y= 0
x= 0
 
8.11*   Design the controller whose state diagram is shown in Fig. P8.10. Use  D  flip‐flops.   
 
8.12   Design the four‐bit counter with synchronous clear specified in  Fig.   8.10   . Repeat for 
asynchronous clear.   
C# PDF Convert: How to Convert MS PPT to Adobe PDF Document
NET Read: PDF Image Extract; VB.NET Write: Insert text into PDF; ConvertResult. FILE_TYPE_UNSUPPORT: Console.WriteLine("Fail: can not convert to PDF, file type
converter pdf to powerpoint; drag and drop pdf into powerpoint
VB.NET PowerPoint: Read & Scan Barcode Image from PPT Slide
VB.NET PPT PDF-417 barcode scanning SDK to detect PDF-417 barcode Allow VB.NET developers to output PPT ISSN barcode scanning result into data string.
images from pdf to powerpoint; convert pdf pages into powerpoint slides
428    Chapter 8  Design at the Register Transfer Level
 
8.13   Simulate  Design_Example_STR  (see HDL Example 8.4), and verify that its behavior 
matches that of the RTL description. Obtain state information by displaying  G0  and  G1  
as a concatenated vector for the state.    
 
8.14   What, if any, are the consequences of the machine in  Design_Example_RTL  (see HDL 
Example 8.2) entering an unused state?   
 
8.15    Simulate Design_Example_RTL  in HDL Example 8.2, and verify that it recovers from an 
unexpected reset condition during its operation, i.e., a “running reset” or a “reset on‐the‐fly.”   
 
8.16*   Develop a block diagram and an ASMD chart for a digital circuit that multiplies two binary 
numbers by the repeated‐addition method. For example, to multiply 5 * 4, the digital system 
evaluates the product by adding the multiplicand four times: 5 + 5 + 5 + 5 = 20. Design the 
circuit. Let the multiplicand be in register  BR,  the multiplier in register  AR,  and the product 
in register  PR . An adder circuit adds the contents of  BR  to  PR . Azero‐detection signal indi-
cates whether  AR  is 0. Write and verify a Verilog behavioral model of the circuit.   
 
8.17*   Prove that the multiplication of two n‐bit numbers gives a product of length less than or 
equal to 2 n  bits.   
 
8.18*   In  Fig.   8.14   , the  Q  register holds the multiplier and the  B  register holds the multiplicand. 
Assume that each number consists of 16 bits. 
(a)   How many bits can be expected in the product, and where is it available?  
(b)   How many bits are in the  P  counter, and what is the binary number loaded into it 
initially?  
(c)   Design the circuit that checks for zero in the  P  counter.     
 
8.19   List the contents of registers  C, A, Q and  P  in a manner similar to  Table   8.5    during the 
process of multiplying the two numbers 11011 (multiplicand) and 10111 (multiplier).   
 
8.20*   Determine the time it takes to process the multiplication operation in the binary multi-
plier described in Section 8.8. Assume that the  Q  register has n bits and the clock cycle is 
t  ns.   
 
8.21   Design the control circuit of the binary multiplier specified by the state diagram of  Fig.  8.16   , 
using multiplexers, a decoder, and a register.   
 
8.22   Figure  P8.22  shows an alternative ASMD chart for a sequential binary multiplier. Write and 
verify an RTL model of the system. Compare this design with that described by the ASMD 
chart in  Fig.   8.15   (b).   
 
8.23   Figure  P8.23  shows an alternative ASMD chart for a sequential binary multiplier. Write 
and verify an RTL model of the system. Compare this design with that described by the 
ASMD chart in  Fig.   8.15   (b).    
 
8.24   The HDL description of a sequential binary multiplier given in HDL Example 8.5 
encapsulates the descriptions of the controller and the datapath in a single Verilog 
module. Write and verify a model that encapsulates the controller and datapath in 
separate modules.   
 
8.25   The sequential binary multiplier described by the ASMD chart in  Fig.   8.15    does not consider 
whether the multiplicand or the shifted multiplier is 0. Therefore, it executes for a fixed 
number of clock cycles, independently of the data. 
(a)   Develop an ASMD chart for a more efficient multiplier that will terminate execution 
as soon as either word is found to be zero.  
Problems    429
 FIGURE P8.22  
ASMD chart for Problem 8.22       
A<= 0
C<= 0
B<=Multiplicand
Q<=Multiplier
P<=m_size
P<= P - 1
Decrement counter
{C, A}<= A + B
{C, A, Q}<={C, A, Q}>>1
17-bit register shifts to the
right by one bit
Add multiplicand 
to shifted sum
S_idle
Ready
S_loaded
Decr_P
Zero
reset
Start
1
Q[0]
S_sum
S_shifted
1
1
Add_regs
Load_regs
Shift_regs
Shift_regs
(b)   Write an HDL description of the circuit. The controller and datapath are to be encap-
sulated in separate Verilog modules.  
(c)   Write a test plan and a test bench, and verify the circuit.      
 
8.26   Modify the ASMD chart of the sequential binary multiplier shown in  Fig.   8.15    to add and 
shift in the same clock cycle. Write and verify an RTL description of the system.   
 
8.27   The second test bench given in HDL Example 8.6 generates a product for all possible 
values of the multiplicand and multiplier. Verifying that each result is correct would not 
be practical, so modify the test bench to include a statement that forms the expected 
430    Chapter 8  Design at the Register Transfer Level
product. Write additional statements to compare the result produced by the RTL descrip-
tion with the expected result. Your simulation is to produce an error signal indicating the 
result of the comparison. Repeat for the structural model of the multiplier.   
 
8.28   Write the HDL structural description of the multiplier designed in Section 8.8. Use the 
block diagram of  Fig.   8.14   (a) and the control circuit of  Fig.   8.18   . Simulate the design and 
verify its functionality by using the test bench of HDL Example 8.6.   
 
8.29   An incomplete ASMD chart for a finite state machine is shown in  Fig.   P8.29   . The register 
operations are not specified, because we are interested only in designing the control logic. 
(a)   Draw the equivalent state diagram.  
(b)   Design the control unit with one flip‐flop per state.  
(c)   List the state table for the control unit.  
 FIGURE P8.23  
ASMD chart for Problem 8.23       
A<= 0
C<= 0
B<=Multiplicand
Q<=Multiplier
P<=m_size
{C, A, Q}<={C, A, Q}>>1
17-bit register shifts to the
right by one bit
Add multiplicand
to shifted sum
{C, A}<= A + B
Decrement counter
P<= P -1
S_idle
Ready
S_load
Load_regs
Zero
reset
Start
1
Q[0]
S_decr
decr_P
S_shift 
Shift_regs
1
1
Add_regs
Load_regs
Problems    431
(d)   Design the control unit with three  D  flip‐flops, a decoder, and gates.  
(e)   Derive a table showing the multiplexer input conditions for the control unit.  
(f)   Design the control unit with three multiplexers, a register with three flip‐flops, and a 
3 * 8 decoder.  
(g)   Using the results of (f), write and verify a structural model of the controller.  
(h)   Write and verify an RTL description of the controller.      
 FIGURE P8.29  
ASMD chart for Problem 8.29       
y
E
x
000
001
010
100
110
111
101
011
F
0
0
1
0
1
1
0
1
S_0
S_1
S_2
S_3
S_4
S_6
S_7
S_5
432    Chapter 8  Design at the Register Transfer Level
 
8.30*   What is the value of  E  in each HDL block, assuming that  RA  = 1? 
(a)   RA = RA - 1;  
(b)   RA <= RA - 1; 
if  (RA == 0) E = 1;  
if  (RA == 0) E <= 1; 
else  E = 0;    
else  E <= 0;      
 
8.31*   Using the Verilog HDL operators listed in  Table   8.2   , assume that    A= 4′b0110, 
= 4′b0010,    and    =4′b0000    and evaluate the result of the following operations: 
A * B; A + B; A - B; ~C; A & B; A | B; A ^ B; & A; ~|C; A || B; A && C; |A; A < B; A > B; 
A != B;   
 
8.32   Consider the following always block: 
always @  ( posedge  CLK) 
if  (S1) R1 <= R1 + R2; 
else if  (S2) R1 <= R1 + 1; 
else  R1 <= R1;  
Using a four‐bit counter with parallel load for  R1  (as in Fig. 6.15) and a four‐bit adder, 
draw a block diagram showing the connections of components and control signals for a 
possible synthesis of the block.   
8.33   The multilevel case statement is often translated by a logic synthesizer into hardware 
multiplexers. How would you translate the following  case  block into hardware (assume 
registers of eight bits each)? 
case  (state) 
S0: R4 = R0; 
S1: R4 = R1; 
S2: R4 = R2; 
S3: R4 = R3; 
endcase     
 
8.34   The design of a circuit that counts the number of ones in a register is carried out in Section 
8.10. The block diagram for the circuit is shown in  Fig.   8.22   (a), a complete ASMD chart 
for the circuit appears in  Fig.   8.22   (c), and structural HDL models of the datapath and 
controller are given in HDL Example 8.8. Using the operations and signal names indi-
cated on the ASMD chart, 
(a)   Write  Datapath_BEH an RTL description of the datapath unit of the ones counter. 
Write a test plan specifying the functionality that will be tested, and write a test bench 
to implement the plan. Execute the test plan to verify the functionality of the datapath 
unit, and produce annotated simulation results relating the test plan to the waveforms 
produced in a simulation.  
(b)   Write  Controller_BEH an RTL description of the control unit of the ones counter. 
Write a test plan specifying the functionality that will be tested, and write a test bench 
to implement the plan. Execute the test plan to verify the functionality of the control 
unit, and produce annotated simulation results relating the test plan to the waveforms 
produced in a simulation.  
(c)    Write Count_Ones_BEH_BEH a top‐level module encapsulating and integrating 
Controller_BEH  and  Datapath_BEH . Write a test plan and a test bench, and verify 
the description. Produce annotated simulation results relating the test plan to the 
waveforms produced in a simulation.  
Documents you may be interested
Documents you may be interested