⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ch05.6.htm

📁 介绍asci设计的一本书
💻 HTM
📖 第 1 页 / 共 4 页
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML EXPERIMENTAL 970324//EN">

<HTML>

<HEAD>

<META NAME="GENERATOR" CONTENT="Adobe FrameMaker 5.5/HTML Export Filter">



<TITLE> 5.6&nbsp;Problems</TITLE></HEAD><!--#include file="top.html"--><!--#include file="header.html"-->



<DIV>

<P>[&nbsp;<A HREF="CH05.htm">Chapter&nbsp;start</A>&nbsp;]&nbsp;[&nbsp;<A HREF="CH05.5.htm">Previous&nbsp;page</A>&nbsp;]&nbsp;[&nbsp;<A HREF="CH05.7.htm">Next&nbsp;page</A>&nbsp;]</P><!--#include file="AmazonAsic.html"--><HR></DIV>

<H1 CLASS="Heading1">

<A NAME="pgfId=50606">

 </A>

5.6&nbsp;<A NAME="18527">

 </A>

Problems</H1>

<P CLASS="Exercise">

<A NAME="pgfId=94419">

 </A>

* = Difficult, ** = Very difficult, *** = Extremely difficult</P>

<P CLASS="ExerciseHead">

<A NAME="pgfId=25806">

 </A>

5.1&nbsp;<A NAME="40596">

 </A>

(Using the ACT&nbsp;1 Logic Module, 30 min.) Consider the Actel ACT&nbsp;1 Logic Module shown in <A HREF="CH05.1.htm#17629" CLASS="XRef">

Figure&nbsp;5.1</A>

. Show how to implement: <SPAN CLASS="Bold">

(a)</SPAN>

&nbsp;a three-input NOR gate, <SPAN CLASS="Bold">

(b)</SPAN>

&nbsp;a three-input majority function gate, <SPAN CLASS="Bold">

(c)</SPAN>

&nbsp;a 2:1 MUX, <SPAN CLASS="Bold">

(d)</SPAN>

&nbsp;a half adder, <SPAN CLASS="Bold">

(e)</SPAN>

&nbsp;a three-input XOR gate, and <SPAN CLASS="Bold">

(f)</SPAN>

&nbsp;a four-input MUX.</P>

<P CLASS="ExerciseHead">

<A NAME="pgfId=55193">

 </A>

5.2&nbsp;(Worst-case and best-case timing, 10 min.) Seasoned digital CMOS designers do not worry too much when their designs stop working when they get too hot or when they reduce the supply voltage, but an ASIC that stops working either when increasing the supply voltage above normal or when it gets cold causes panic. Why?</P>

<P CLASS="ExerciseHead">

<A NAME="pgfId=44998">

 </A>

5.3&nbsp;(Typical to worst-case variation, 10 min.) The 1994 Actel data book (p.&nbsp;1-5) remarks that: &#8220;the total derating factor from typical to worst-case for a standard ACT&nbsp;1 array is only 1.19:1, compared to 2:1 for a masked gate array.&#8221;</P>

<UL>

<LI CLASS="ExercisePartFirst">

<A NAME="pgfId=91398">

 </A>

a.&nbsp;Can you explain why this is when the basic ACT&nbsp;1 CMOS process is identical to a CMOS process for masked gate arrays? </LI>

<LI CLASS="ExercisePart">

<A NAME="pgfId=94409">

 </A>

b.&nbsp;There is a price to pay for the reduced spread in timing delays from typical to worst-case in an ACT&nbsp;1 array. What is this disadvantage of the ACT&nbsp;1 array over a masked gate array?</LI>

</UL>

<P CLASS="ExerciseHead">

<A NAME="pgfId=94411">

 </A>

5.4&nbsp;<A NAME="27936">

 </A>

(ACT&nbsp;2/3 sequential element, 30 min.). Show how the Actel ACT&nbsp;2 and ACT&nbsp;3 sequential element of <A HREF="CH05.1.htm#10467" CLASS="XRef">

Figure&nbsp;5.4</A>

 (used in the S-Module) can be wired to implement: </P>

<UL>

<LI CLASS="ExercisePartFirst">

<A NAME="pgfId=91404">

 </A>

a.&nbsp;a positive-edge&#8211;triggered flip-flop with clear, </LI>

<LI CLASS="ExercisePart">

<A NAME="pgfId=91405">

 </A>

b.&nbsp;a negative-edge&#8211;triggered flip-flop with clear, </LI>

<LI CLASS="ExercisePart">

<A NAME="pgfId=91406">

 </A>

c.&nbsp;a transparent-high latch, </LI>

<LI CLASS="ExercisePart">

<A NAME="pgfId=91407">

 </A>

d.&nbsp;a transparent-low latch, and </LI>

<LI CLASS="ExercisePart">

<A NAME="pgfId=91408">

 </A>

e.&nbsp;how it can be made totally transparent.</LI>

</UL>

<P CLASS="ExerciseHead">

<A NAME="pgfId=34696">

 </A>

5.5&nbsp;(*ACT&nbsp;1 logic functions, 40 min.+)</P>

<UL>

<LI CLASS="ExercisePartFirst">

<A NAME="pgfId=91423">

 </A>

a.&nbsp;How many different combinational functions of four logic variables are there? </LI>

<LI CLASS="ExercisePart">

<A NAME="pgfId=91424">

 </A>

b.&nbsp;of <SPAN CLASS="EquationVariables">

n</SPAN>

 variables? <SPAN CLASS="Emphasis">

Hint:</SPAN>

 Consider the truth table. </LI>

<LI CLASS="ExercisePart">

<A NAME="pgfId=91425">

 </A>

c.&nbsp;The ACT&nbsp;1 module can implement 213 of the 256 functions with three variables. How many of the 43 three-input functions that it cannot implement can you find? </LI>

<LI CLASS="ExercisePart">

<A NAME="pgfId=91428">

 </A>

d.&nbsp;(harder) Show that if you have access to both the true and complement form of the input variables you can implement all 256 logic functions of three variables with the ACT&nbsp;1 Logic Module.</LI>

</UL>

<P CLASS="ExerciseHead">

<A NAME="pgfId=48813">

 </A>

5.6&nbsp;(Actel and Xilinx, 10 min.) The Actel Logic Modules (ACT&nbsp;1, ACT&nbsp;2, and ACT&nbsp;3) have eight inputs and can implement most three-input logic functions and a few logic functions with four input variables. In contrast, the Xilinx XC5200 CLB, for example, has only four inputs but can implement all logic functions with four or fewer variables. Why would Actel choose these logic cell designs and how can they be competitive with the Xilinx FPGA (which they are)?</P>

<P CLASS="ExerciseHead">

<A NAME="pgfId=49459">

 </A>

5.7&nbsp;(Actel address decoders, 10 min.) The maximum number of inputs that the ACT&nbsp;1 Logic Module can handle is four. The ACT&nbsp;2/ACT&nbsp;3 C-module increases this to five. </P>

<UL>

<LI CLASS="ExercisePartFirst">

<A NAME="pgfId=91429">

 </A>

a.&nbsp;How many ACT&nbsp;1 Logic Modules do you need to implement a 32-bit wide <A NAME="marker=49481">

 </A>

address decoder (a 32-input AND gate)? </LI>

<LI CLASS="ExercisePart">

<A NAME="pgfId=91430">

 </A>

b.&nbsp;How many ACT&nbsp;2/ACT&nbsp;3 C-modules do you need? </LI>

</UL>

<P CLASS="ExerciseHead">

<A NAME="pgfId=31056">

 </A>

5.8&nbsp;(Altera shared logic expanders, 30 min.) Consider an Altera MAX 5000 logic array with three product-term lines. You cannot directly implement the function Z = A &#183; B &#183; C + A &#183; B' &#183; C' + A' &#183; B &#183; C' + A' &#183; B' &#183; C with a programmable array logic macrocell that has only three product-term lines, since Z has four product terms. </P>

<UL>

<LI CLASS="ExercisePartFirst">

<A NAME="pgfId=91431">

 </A>

a.&nbsp;How many Boolean functions of three variables are there that cannot be implemented with a programmable array logic macrocell that has only three product terms? <SPAN CLASS="Emphasis">

Hint:</SPAN>

 Use a Karnaugh map to consider how many Boolean functions of three variables have more than three product terms in their sum-of-products representation. </LI>

<LI CLASS="ExercisePart">

<A NAME="pgfId=91432">

 </A>

b.&nbsp;Show how to use shared logic expanders that feed terms back into the product-term array to implement the function Z  using a macrocell with three product terms.</LI>

<LI CLASS="ExercisePart">

<A NAME="pgfId=91433">

 </A>

c.&nbsp;How many shared expander lines do you need to add to be able to implement all the Boolean functions of three variables? </LI>

<LI CLASS="ExercisePart">

<A NAME="pgfId=91434">

 </A>

d.&nbsp;What is the largest number of product terms that you need to implement a Boolean function with <SPAN CLASS="EquationVariables">

n</SPAN>

 variables?</LI>

</UL>

<P CLASS="ExerciseHead">

<A NAME="pgfId=35501">

 </A>

5.9&nbsp;(Splitting the XC3000 CLB, 20 min.) In <A HREF="CH05.2.htm#23590" CLASS="XRef">

Section&nbsp;5.2.1</A>

 we noted &#8220;You can split the (XC3000) 32-bit LUT in half, using one of the seven input variables to switch between the F and G outputs. This technique can implement some functions of six and seven variables.&#8221; </P>

<UL>

<LI CLASS="ExercisePartFirst">

<A NAME="pgfId=91458">

 </A>

a.&nbsp;Show which functions of six and seven variables can, and </LI>

<LI CLASS="ExercisePart">

<A NAME="pgfId=91459">

 </A>

b.&nbsp;which functions cannot, be implemented using this method.</LI>

</UL>

<P CLASS="ExerciseHead">

<A NAME="pgfId=35513">

 </A>

5.10&nbsp;(Programmable inversion, 20 min.) <A HREF="CH05.4.htm#24387" CLASS="XRef">

Section&nbsp;5.4</A>

 described how the Altera MAX series logic cells can use programmable inversion to reduce the number of product terms needed to implement a function. Give another example of a function of four variables that requires four product terms. Is there a way to tell how many product terms a function may require?</P>

<P CLASS="ExerciseHead">

<A NAME="pgfId=40360">

 </A>

5.11&nbsp;(Table look-up mapping, 20 min.) Consider a four-input LUT (used in the CLB in the Xilinx XC2000, the first generation of Xilinx FPGAs, and in the XC5200 LE). This CLB can implement any Boolean function of four variables. Consider the function</P>

<P CLASS="EquationNumbered">

<A NAME="pgfId=40362">

 </A>

Z = (A &#183; (B + C)) + (B &#183; D) + (E &#183; F &#183; G &#183; H &#183; I) .(5.27)</P>

<P CLASS="Exercise">

<A NAME="pgfId=40370">

 </A>

We can use four CLBs to implement Z as follows:</P>

<P CLASS="EquationAlign">

<A NAME="pgfId=40371">

 </A>

	CLB1: Z = Z1 + (B &#183; D) + Z3 ,</P>

<P CLASS="EquationAlign">

<A NAME="pgfId=40372">

 </A>

	 CLB2: Z1 = A &#183; (B + C) ,</P>

<P CLASS="EquationAlign">

<A NAME="pgfId=40373">

 </A>

	CLB3: Z3 = E &#183; F &#183; G &#183; Z5 ,</P>

<P CLASS="EqnNmbrdAlign">

<A NAME="pgfId=40374">

 </A>

	CLB4: Z5 = H &#183; I .(5.28)</P>

<P CLASS="Exercise">

<A NAME="pgfId=83372">

 </A>

What is the length of the critical path? Find a better assignment in terms of area and critical path.</P>

<P CLASS="ExerciseHead">

<A NAME="pgfId=40381">

 </A>

5.12&nbsp;<A NAME="41822">

 </A>

(Multiplexer mapping, 10 min.) Consider the function:</P>

<P CLASS="EquationNumbered">

<A NAME="pgfId=40576">

 </A>

F = (A &#183; B) + (B' &#183; C) + D .(5.29)</P>

<P CLASS="Exercise">

<A NAME="pgfId=43875">

 </A>

Use Shannon&#8217;s expansion theorem to expand F <SPAN CLASS="Emphasis">

wrt</SPAN>

 B:</P>

<P CLASS="EquationNumbered">

<A NAME="pgfId=43876">

 </A>

F = B &#183; F1 + B' &#183; F2 .(5.30)</P>

<P CLASS="Exercise">

<A NAME="pgfId=43877">

 </A>

In other words express F in terms of B, B', F1, and F2 (<SPAN CLASS="Emphasis">

Hint:</SPAN>

 F1 is a function of A and D only, F2 is a function of C and D only). Now expand F1 <SPAN CLASS="Emphasis">

wrt</SPAN>

 A, and F2 <SPAN CLASS="Emphasis">

wrt</SPAN>

 C. Using your answer, implement F using a single ACT&nbsp;1 Logic Module.</P>

<P CLASS="ExerciseHead">

<A NAME="pgfId=48375">

 </A>

5.13&nbsp;(*Xilinx hazards, 10 min.) Explain why the outputs of the Xilinx CLBs are hazard-free for input changes in only one variable. Is this important?</P>

<P CLASS="ExerciseHead">

<A NAME="pgfId=48455">

 </A>

5.14&nbsp;(**Actel S-Modules, 10 min.) Notice that CLR is tied to the input corresponding to B0 of the C-module in the ACT&nbsp;2 S-Module but the CLR input is separate from the B0 input in the ACT&nbsp;3 version. Why?</P>

<P CLASS="ExerciseHead">

<A NAME="pgfId=48835">

 </A>

5.15&nbsp;(**Timing estimates, 60  min.) Using data book values for an FPGA architecture that you choose, and explaining your calculations carefully, estimate the (worst-case commercial) delay for the following functions: <SPAN CLASS="Bold">

(a)</SPAN>

&nbsp;16-bit address decoder, <SPAN CLASS="Bold">

(b)</SPAN>

&nbsp;8-bit ripple-carry adder, <SPAN CLASS="Bold">

(c)</SPAN>

&nbsp;8-bit ripple-carry counter. Give your answers in terms of the data book symbols, and using actual parameters, for a speed grade that you specify, give an example calculation with the delay in ns.</P>

<P CLASS="ExerciseHead">

<A NAME="pgfId=62488">

 </A>

5.16&nbsp;(Actel logic. 30 min.) <A HREF="CH05.6.htm#20354" CLASS="XRef">

Table&nbsp;5.10</A>

 shows how to use the Actel ACT&nbsp;1 Logic Module to implement some of the 16 functions of two input variables. Complete this table. </P>

<TABLE>

<TR>

<TD ROWSPAN="1" COLSPAN="13">

<P CLASS="TableTitle">

<A NAME="pgfId=88581">

 </A>

TABLE&nbsp;5.10&nbsp;<A NAME="20354">

 </A>

Boolean functions using the ACT&nbsp;1 Logic Module (Problem 5.16).</P>

</TD>

</TR>

<TR>

<TD ROWSPAN="2" COLSPAN="2">

<P CLASS="TableFirst">

<A NAME="pgfId=88607">

 </A>

<SPAN CLASS="TableHeads">

Function, F</SPAN>

</P>

</TD>

<TD ROWSPAN="2" COLSPAN="1">

<P CLASS="TableFirst">

<A NAME="pgfId=88611">

 </A>

<SPAN CLASS="TableHeads">

F</SPAN>

 <SPAN CLASS="TableHeads">

=</SPAN>

</P>

</TD>

<TD ROWSPAN="2" COLSPAN="1">

<P CLASS="TableFirst">

<A NAME="pgfId=88613">

 </A>

<SPAN CLASS="TableHeads">

Canonical form</SPAN>

</P>

</TD>

<TD ROWSPAN="2" COLSPAN="1">

<P CLASS="TableFirst">

<A NAME="pgfId=88615">

 </A>

<SPAN CLASS="TableHeads">

Minterms</SPAN>

</P>

</TD>

<TD ROWSPAN="1" COLSPAN="3">

<P CLASS="TableFirst">

<A NAME="pgfId=88617">

 </A>

<SPAN CLASS="TableHeads">

M1</SPAN>

</P>

</TD>

<TD ROWSPAN="1" COLSPAN="3">

<P CLASS="TableFirst">

<A NAME="pgfId=88623">

 </A>

<SPAN CLASS="TableHeads">

M2</SPAN>

</P>

</TD>

<TD ROWSPAN="1" COLSPAN="2">

<P CLASS="TableFirst">

<A NAME="pgfId=88629">

 </A>

<SPAN CLASS="TableHeads">

OR1</SPAN>

</P>

</TD>

</TR>

<TR>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="TableFirst">

<A NAME="pgfId=88643">

 </A>

<SPAN CLASS="TableHeads">

A0</SPAN>

</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="TableFirst">

<A NAME="pgfId=88645">

 </A>

<SPAN CLASS="TableHeads">

A1</SPAN>

</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="TableFirst">

<A NAME="pgfId=88647">

 </A>

<SPAN CLASS="TableHeads">

SA</SPAN>

</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="TableFirst">

<A NAME="pgfId=88649">

 </A>

<SPAN CLASS="TableHeads">

B0</SPAN>

</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="TableFirst">

<A NAME="pgfId=88651">

 </A>

<SPAN CLASS="TableHeads">

B1</SPAN>

</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="TableFirst">

<A NAME="pgfId=88653">

 </A>

<SPAN CLASS="TableHeads">

SB</SPAN>

</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="TableFirst">

<A NAME="pgfId=88655">

 </A>

S0</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="TableFirst">

<A NAME="pgfId=88657">

 </A>

S1</P>

</TD>

</TR>

<TR>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="TableLeft">

<A NAME="pgfId=88659">

 </A>

 1</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="TableLeft">

<A NAME="pgfId=88661">

 </A>

0</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="Table">

<A NAME="pgfId=88663">

 </A>

0</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="Table">

<A NAME="pgfId=88665">

 </A>

0</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="Table">

<A NAME="pgfId=88667">

 </A>

&#8212;</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="Table">

<A NAME="pgfId=88669">

 </A>

0</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="Table">

<A NAME="pgfId=88671">

 </A>

0</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="Table">

<A NAME="pgfId=88673">

 </A>

0</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="Table">

<A NAME="pgfId=88675">

 </A>

&nbsp;</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="Table">

<A NAME="pgfId=88677">

 </A>

&nbsp;</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="Table">

<A NAME="pgfId=88679">

 </A>

&nbsp;</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="Table">

<A NAME="pgfId=88681">

 </A>

&nbsp;</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="Table">

<A NAME="pgfId=88683">

 </A>

&nbsp;</P>

</TD>

</TR>

<TR>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="TableLeft">

<A NAME="pgfId=88685">

 </A>

 2</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="TableLeft">

<A NAME="pgfId=88687">

 </A>

AND(A, B)</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="Table">

<A NAME="pgfId=88689">

 </A>

A &#183; B</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="Table">

<A NAME="pgfId=88691">

 </A>

A &#183; B</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="Table">

<A NAME="pgfId=88693">

 </A>

3</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="Table">

<A NAME="pgfId=88695">

 </A>

0</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="Table">

<A NAME="pgfId=88697">

 </A>

B</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="Table">

<A NAME="pgfId=88699">

 </A>

A</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="Table">

<A NAME="pgfId=88701">

 </A>

&nbsp;</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="Table">

<A NAME="pgfId=88703">

 </A>

&nbsp;</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="Table">

<A NAME="pgfId=88705">

 </A>

&nbsp;</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="Table">

<A NAME="pgfId=88707">

 </A>

&nbsp;</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="Table">

<A NAME="pgfId=88709">

 </A>

&nbsp;</P>

</TD>

</TR>

<TR>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="TableLeft">

<A NAME="pgfId=88711">

 </A>

 3</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="TableLeft">

<A NAME="pgfId=88713">

 </A>

AND1-1(A, B)</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="Table">

<A NAME="pgfId=88715">

 </A>

A &#183; B'</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="Table">

<A NAME="pgfId=88717">

 </A>

A &#183; B'</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="Table">

<A NAME="pgfId=88719">

 </A>

2</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="Table">

<A NAME="pgfId=88721">

 </A>

A</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="Table">

<A NAME="pgfId=88723">

 </A>

0</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="Table">

<A NAME="pgfId=88725">

 </A>

B</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -