📄 ch13.3.htm
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML EXPERIMENTAL 970324//EN">
<HTML>
<HEAD>
<META NAME="GENERATOR" CONTENT="Adobe FrameMaker 5.5/HTML Export Filter">
<TITLE> 13.3 Logic Systems</TITLE></HEAD><!--#include file="top.html"--><!--#include file="header.html"-->
<DIV>
<P>[ <A HREF="CH13.htm">Chapter start</A> ] [ <A HREF="CH13.2.htm">Previous page</A> ] [ <A HREF="CH13.4.htm">Next page</A> ]</P><!--#include file="AmazonAsic.html"--><HR></DIV>
<H1 CLASS="Heading1">
<A NAME="pgfId=2465">
</A>
13.3 <A NAME="22098">
</A>
Logic Systems</H1>
<P CLASS="BodyAfterHead">
<A NAME="pgfId=2493">
</A>
Digital signals are actually analog voltage (or current) levels that vary continuously as they change. <A NAME="marker=81163">
</A>
<SPAN CLASS="Definition">
Digital simulation</SPAN>
assumes that digital signals may only take on a set of <SPAN CLASS="Definition">
logic values</SPAN>
<A NAME="marker=117606">
</A>
(or <SPAN CLASS="Definition">
logic states</SPAN>
<A NAME="marker=117598">
</A>
—here we will consider the two terms equivalent) from a <A NAME="marker=2491">
</A>
<SPAN CLASS="Definition">
logic system</SPAN>
. A logic system must be chosen carefully. Too many values will make the simulation complicated and slow. With too few values the simulation may not accurately reflect the hardware performance.</P>
<P CLASS="Body">
<A NAME="pgfId=2561">
</A>
A <SPAN CLASS="Definition">
two-value logic system</SPAN>
<A NAME="marker=117584">
</A>
(or <A NAME="marker=117573">
</A>
two-state logic system) has a logic value <SPAN CLASS="BodyComputer">
'0'</SPAN>
corresponding to a <A NAME="marker=29590">
</A>
<SPAN CLASS="Definition">
logic level</SPAN>
'zero' and a logic value <SPAN CLASS="BodyComputer">
'1'</SPAN>
corresponding to a logic level 'one'. However, when the power to a system is initially turned on, we do not immediately know whether the logic value of a flip-flop output is <SPAN CLASS="BodyComputer">
'1'</SPAN>
or <SPAN CLASS="BodyComputer">
'0'</SPAN>
(it will be one or the other, but we do not know which). To model this situation we introduce a logic value <SPAN CLASS="BodyComputer">
'X'</SPAN>
, with an unknown logic level, or <A NAME="marker=7328">
</A>
<SPAN CLASS="Definition">
unknown</SPAN>
. An unknown can <SPAN CLASS="Definition">
propagate </SPAN>
<A NAME="marker=86003">
</A>
through a circuit. For example, if the inputs to a two-input NAND gate are logic values <SPAN CLASS="BodyComputer">
'1'</SPAN>
and <SPAN CLASS="BodyComputer">
'X'</SPAN>
, the output is logic value <SPAN CLASS="BodyComputer">
'X'</SPAN>
or unknown. Next, in order to model a three-state bus, we need a <A NAME="marker=2583">
</A>
<SPAN CLASS="Definition">
high-impedance state</SPAN>
. A high-impedance state may have a logic level of 'zero' or 'one', but it is not being driven—we say it is floating. This will occur if none of the gates connected to a three-state bus is driving the bus. A <SPAN CLASS="Definition">
four-value logic system</SPAN>
<A NAME="marker=80199">
</A>
is shown in <A HREF="CH13.3.htm#27210" CLASS="XRef">
Table 13.2</A>
.</P>
<TABLE>
<TR>
<TD ROWSPAN="1" COLSPAN="3">
<P CLASS="TableTitle">
<A NAME="pgfId=363">
</A>
TABLE 13.2 <A NAME="27210">
</A>
A four-value logic system.</P>
</TD>
</TR>
<TR>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="Table">
<A NAME="pgfId=375">
</A>
<SPAN CLASS="TableHeads">
Logic state</SPAN>
</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableLeft">
<A NAME="pgfId=377">
</A>
<SPAN CLASS="TableHeads">
Logic level</SPAN>
</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableLeft">
<A NAME="pgfId=379">
</A>
<SPAN CLASS="TableHeads">
Logic value</SPAN>
</P>
</TD>
</TR>
<TR>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="Table">
<A NAME="pgfId=393">
</A>
<SPAN CLASS="BodyComputer">
0</SPAN>
</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableLeft">
<A NAME="pgfId=395">
</A>
zero</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableLeft">
<A NAME="pgfId=397">
</A>
zero</P>
</TD>
</TR>
<TR>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="Table">
<A NAME="pgfId=405">
</A>
<SPAN CLASS="BodyComputer">
1</SPAN>
</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableLeft">
<A NAME="pgfId=407">
</A>
one</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableLeft">
<A NAME="pgfId=409">
</A>
one</P>
</TD>
</TR>
<TR>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="Table">
<A NAME="pgfId=417">
</A>
<SPAN CLASS="BodyComputer">
X</SPAN>
</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableLeft">
<A NAME="pgfId=419">
</A>
zero or one</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableLeft">
<A NAME="pgfId=421">
</A>
unknown</P>
</TD>
</TR>
<TR>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableLast">
<A NAME="pgfId=429">
</A>
<SPAN CLASS="BodyComputer">
Z</SPAN>
</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableLeft">
<A NAME="pgfId=431">
</A>
zero, one, or neither</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableLeft">
<A NAME="pgfId=433">
</A>
high impedance</P>
</TD>
</TR>
</TABLE>
<DIV>
<H2 CLASS="Heading2">
<A NAME="pgfId=2596">
</A>
13.3.1 <A NAME="40510">
</A>
Signal Resolution</H2>
<P CLASS="BodyAfterHead">
<A NAME="pgfId=117254">
</A>
What happens if multiple <A NAME="marker=117327">
</A>
drivers try to drive different logic values onto a bus? <A HREF="CH13.3.htm#16654" CLASS="XRef">
Table 13.3</A>
shows a <A NAME="marker=117259">
</A>
<SPAN CLASS="Definition">
signal-resolution function </SPAN>
for a four-value logic system that will predict the result.</P>
<TABLE>
<TR>
<TD ROWSPAN="1" COLSPAN="5">
<P CLASS="TableTitle">
<A NAME="pgfId=117264">
</A>
TABLE 13.3 <A NAME="16654">
</A>
A resolution function R {A, B} that predicts the result of two drivers simultaneously attempting to drive signals with values A and B onto a bus.</P>
</TD>
</TR>
<TR>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="Table">
<A NAME="pgfId=117274">
</A>
<SPAN CLASS="TableHeads">
R {A, B}</SPAN>
</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="Table">
<A NAME="pgfId=117276">
</A>
<SPAN CLASS="TableHeads">
B = 0</SPAN>
</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="Table">
<A NAME="pgfId=117278">
</A>
<SPAN CLASS="TableHeads">
B = 1</SPAN>
</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="Table">
<A NAME="pgfId=117280">
</A>
<SPAN CLASS="TableHeads">
B = X</SPAN>
</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="Table">
<A NAME="pgfId=117282">
</A>
<SPAN CLASS="TableHeads">
B = Z</SPAN>
</P>
</TD>
</TR>
<TR>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="Table">
<A NAME="pgfId=117284">
</A>
<SPAN CLASS="TableHeads">
A = 0</SPAN>
</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="Table">
<A NAME="pgfId=117286">
</A>
<SPAN CLASS="BodyComputer">
0</SPAN>
</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="Table">
<A NAME="pgfId=117288">
</A>
<SPAN CLASS="BodyComputer">
X</SPAN>
</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="Table">
<A NAME="pgfId=117290">
</A>
<SPAN CLASS="BodyComputer">
X</SPAN>
</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="Table">
<A NAME="pgfId=117292">
</A>
<SPAN CLASS="BodyComputer">
0</SPAN>
</P>
</TD>
</TR>
<TR>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="Table">
<A NAME="pgfId=117294">
</A>
<SPAN CLASS="TableHeads">
A = 1</SPAN>
</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="Table">
<A NAME="pgfId=117296">
</A>
<SPAN CLASS="BodyComputer">
X</SPAN>
</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="Table">
<A NAME="pgfId=117298">
</A>
<SPAN CLASS="BodyComputer">
1</SPAN>
</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="Table">
<A NAME="pgfId=117300">
</A>
<SPAN CLASS="BodyComputer">
X</SPAN>
</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="Table">
<A NAME="pgfId=117302">
</A>
<SPAN CLASS="BodyComputer">
1</SPAN>
</P>
</TD>
</TR>
<TR>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="Table">
<A NAME="pgfId=117304">
</A>
<SPAN CLASS="TableHeads">
A = X</SPAN>
</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="Table">
<A NAME="pgfId=117306">
</A>
<SPAN CLASS="BodyComputer">
X</SPAN>
</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="Table">
<A NAME="pgfId=117308">
</A>
<SPAN CLASS="BodyComputer">
X</SPAN>
</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="Table">
<A NAME="pgfId=117310">
</A>
<SPAN CLASS="BodyComputer">
X</SPAN>
</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="Table">
<A NAME="pgfId=117312">
</A>
<SPAN CLASS="BodyComputer">
X</SPAN>
</P>
</TD>
</TR>
<TR>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="Table">
<A NAME="pgfId=117314">
</A>
<SPAN CLASS="TableHeads">
A = Z</SPAN>
</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="Table">
<A NAME="pgfId=117316">
</A>
<SPAN CLASS="BodyComputer">
0</SPAN>
</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="Table">
<A NAME="pgfId=117318">
</A>
<SPAN CLASS="BodyComputer">
1</SPAN>
</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="Table">
<A NAME="pgfId=117320">
</A>
<SPAN CLASS="BodyComputer">
X</SPAN>
</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="Table">
<A NAME="pgfId=117322">
</A>
<SPAN CLASS="BodyComputer">
Z</SPAN>
</P>
</TD>
</TR>
</TABLE>
<P CLASS="Body">
<A NAME="pgfId=131432">
</A>
A <A NAME="marker=131429">
</A>
resolution function, R {A, B}, must be <A NAME="marker=131431">
</A>
<SPAN CLASS="Definition">
commutative</SPAN>
and <A NAME="marker=131433">
</A>
<SPAN CLASS="Definition">
associative</SPAN>
. That is, </P>
<TABLE>
<TR>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableEqnLeft">
<A NAME="pgfId=131449">
</A>
R {A, B} = R {B, A} and R {R {A, B}, C} = R {A, R {B, C}}.</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableEqnNumber">
<A NAME="pgfId=131451">
</A>
(13.4)</P>
</TD>
</TR>
</TABLE>
<P CLASS="EquationNumbered">
<A NAME="pgfId=131435">
</A>
<A NAME="20641">
</A>
R {A, B} = R {B, A} and R {R {A, B}, C} = R {A, R {B, C}}.(13.4)</P>
<P CLASS="BodyAfterHead">
<A NAME="pgfId=2629">
</A>
Equation <A HREF="CH13.3.htm#20641" CLASS="XRef">
13.4</A>
ensures that, if we have three (or more) signals to resolve, it does not matter in which order we resolve them. Suppose we have four drivers on a bus driving values <SPAN CLASS="BodyComputer">
'0'</SPAN>
, <SPAN CLASS="BodyComputer">
'1'</SPAN>
, <SPAN CLASS="BodyComputer">
'X'</SPAN>
, and <SPAN CLASS="BodyComputer">
'Z'</SPAN>
. If we use <A HREF="CH13.3.htm#16654" CLASS="XRef">
Table 13.3</A>
three times to resolve these signals, the answer is always <SPAN CLASS="BodyComputer">
'X'</SPAN>
whatever order we use.</P>
</DIV>
<DIV>
<H2 CLASS="Heading2">
<A NAME="pgfId=2633">
</A>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -