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

📄 ch15.6.htm

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

<HTML>

<HEAD>

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



<TITLE> 15.6&nbsp;FPGA Partitioning</TITLE></HEAD><!--#include file="top.html"--><!--#include file="header.html"-->



<DIV>

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

<H1 CLASS="Heading1">

<A NAME="pgfId=81329">

 </A>

15.6&nbsp;<A NAME="41758">

 </A>

FPGA Partitioning</H1>

<P CLASS="BodyAfterHead">

<A NAME="pgfId=32623">

 </A>

In <A HREF="CH15.3.htm#41516" CLASS="XRef">

Section&nbsp;15.3</A>

 we saw how many different issues have to be considered when partitioning a complex system into custom ASICs. There are no commercial tools that can help us with all of these issues&#8212;a spreadsheet is the best tool in this case. Things are a little easier if we limit ourselves to partitioning a group of logic cells into FPGAs&#8212;and restrict the FPGAs to be all of the same type.</P>

<DIV>

<H2 CLASS="Heading2">

<A NAME="pgfId=87963">

 </A>

15.6.1&nbsp;ATM Simulator</H2>

<P CLASS="BodyAfterHead">

<A NAME="pgfId=175713">

 </A>

In this section we shall examine a hardware simulator for <A NAME="marker=175712">

 </A>

Asynchronous Transfer Mode (<A NAME="marker=175714">

 </A>

ATM<A NAME="marker=183703">

 </A>

). ATM is a signaling protocol for many different types of traffic including constant bit rates (voice signals) as well as variable bit rates (compressed video). The ATM Connection Simulator is a card that is connected to a computer. Under computer control the card monitors and corrupts the ATM signals to simulate the effects of real networks. An example would be to test different video compression algorithms. Compressed video is very bursty (brief periods of very high activity), has very strict delay constraints, and is susceptible to errors. ATM is based on ATM cells (packets). Each ATM cell has 53 bytes: a 5-byte header and a 48-byte payload; <A HREF="CH15.6.htm#16959" CLASS="XRef">

Figure&nbsp;15.4</A>

 shows the format of the ATM packet. The ATM Connection Simulator looks at the entire header as an address.</P>

<TABLE>

<TR>

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

<P CLASS="TableFigure">

<A NAME="pgfId=175723">

 </A>

&nbsp;</P>

<DIV>

<IMG SRC="CH15-6.gif">

</DIV>

</TD>

</TR>

<TR>

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

<P CLASS="TableFigureTitle">

<A NAME="pgfId=175726">

 </A>

FIGURE&nbsp;15.4&nbsp;<A NAME="16959">

 </A>

The asynchronous transfer mode (ATM) cell format. The ATM protocol uses 53-byte cells or packets of information with a data payload and header information for routing and error control.</P>

</TD>

</TR>

</TABLE>

<P CLASS="Body">

<A NAME="pgfId=90079">

 </A>

<A HREF="CH15.6.htm#11762" CLASS="XRef">

Figure&nbsp;15.5</A>

 shows the system block diagram of the ATM simulator designed by Craig Fujikami at the University of Hawaii. Now produced by AdTech, the simulator emulates the characteristics of a single connection in an ATM network and models ATM traffic policing, ATM cell delays, and ATM cell errors. The simulator is partitioned into the three major blocks, shown in <A HREF="CH15.6.htm#11762" CLASS="XRef">

Figure&nbsp;15.5</A>

, and connected to an IBM-compatible PC through an Intel 80186 controller board together with an interface board. These three blocks are</P>

<TABLE>

<TR>

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

<P CLASS="TableFigure">

<A NAME="pgfId=87980">

 </A>

&nbsp;</P>

<DIV>

<IMG SRC="CH15-7.gif">

</DIV>

</TD>

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

<P CLASS="TableFigureTitle">

<A NAME="pgfId=175776">

 </A>

FIGURE&nbsp;15.5&nbsp;<A NAME="11762">

 </A>

 An asynchronous transfer mode (ATM) connection simulator.</P>

</TD>

</TR>

</TABLE>

<UL>

<LI CLASS="BulletFirst">

<A NAME="pgfId=90300">

 </A>

The traffic policer, which regulates the input to the simulator.</LI>

<LI CLASS="BulletList">

<A NAME="pgfId=90110">

 </A>

The delay generator, which delays ATM cells, reorders ATM cells, and inserts ATM cells with valid ATM cell headers.</LI>

<LI CLASS="BulletLast">

<A NAME="pgfId=90311">

 </A>

The error generator, which produces bit errors and four random variables that are needed by the other two blocks.</LI>

</UL>

<P CLASS="Body">

<A NAME="pgfId=90136">

 </A>

The error generator performs the following operations on ATM cells:</P>

<OL>

<LI CLASS="NumberFirst">

<A NAME="pgfId=90137">

 </A>

Payload bit error ratio generation. The user specifies the Bernoulli probability, <SPAN CLASS="EquationVariables">

p</SPAN>

<SUB CLASS="Subscript">

BER</SUB>

, of the payload bit error ratio.</LI>

<LI CLASS="NumberList">

<A NAME="pgfId=90139">

 </A>

Random-variable generation for ATM cell loss, misinsertion, reordering, and deletion. </LI>

</OL>

<P CLASS="Body">

<A NAME="pgfId=90148">

 </A>

The delay generator delays, misinserts, and reorders the target ATM cells. Finally, the traffic policer performs the following operations:</P>

<OL>

<LI CLASS="NumberList">

<A NAME="pgfId=90160">

 </A>

Performs header screening and remapping. </LI>

<LI CLASS="NumberList">

<A NAME="pgfId=90332">

 </A>

Checks ATM cell conformance.</LI>

<LI CLASS="NumberList">

<A NAME="pgfId=90175">

 </A>

Deletes selected ATM cells.</LI>

</OL>

<P CLASS="Body">

<A NAME="pgfId=111153">

 </A>

<A HREF="CH15.6.htm#22781" CLASS="XRef">

Table&nbsp;15.7</A>

 shows the partitioning of the ATM board into 12 Lattice Logic FPGAs (ispLSI&nbsp;1048) corresponding to the 12 blocks shown in <A HREF="CH15.6.htm#11762" CLASS="XRef">

Figure&nbsp;15.5</A>

. The Lattice Logic ispLSI&nbsp;1048 has 48 GLBs (generic logic blocks) on each chip. This system was partitioned by hand&#8212;with difficulty. Tools for automatic partitioning of systems like this will become increasingly important. In <A HREF="CH15.6.htm#31500" CLASS="XRef">

Section&nbsp;15.6.2</A>

 we shall briefly look at some examples of such tools, before examining the partitioning methods that are used in <A HREF="CH15.7.htm#29058" CLASS="XRef">

Section&nbsp;15.7</A>

. </P>

<TABLE>

<TR>

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

<P CLASS="TableTitle">

<A NAME="pgfId=144138">

 </A>

TABLE&nbsp;15.7&nbsp;<A NAME="22781">

 </A>

Partitioning of the ATM board using Lattice Logic ispLSI 1048 FPGAs. Each FPGA contains 48 generic logic blocks (GLBs).</P>

</TD>

</TR>

<TR>

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

<P CLASS="TableFirst">

<A NAME="pgfId=144146">

 </A>

Chip #</P>

</TD>

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

<P CLASS="TableLeft">

<A NAME="pgfId=144148">

 </A>

<SPAN CLASS="TableHeads">

Size</SPAN>

</P>

</TD>

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

<P CLASS="TableFirst">

<A NAME="pgfId=144278">

 </A>

Chip #</P>

</TD>

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

<P CLASS="TableFirst">

<A NAME="pgfId=175806">

 </A>

&nbsp;</P>

</TD>

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

<P CLASS="TableLeft">

<A NAME="pgfId=144280">

 </A>

&nbsp;</P>

</TD>

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

<P CLASS="TableLeft">

<A NAME="pgfId=185346">

 </A>

<SPAN CLASS="TableHeads">

Size</SPAN>

</P>

</TD>

</TR>

<TR>

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

<P CLASS="Table">

<A NAME="pgfId=144154">

 </A>

1</P>

</TD>

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

<P CLASS="TableLeft">

<A NAME="pgfId=144156">

 </A>

42 GLBs</P>

</TD>

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

<P CLASS="Table">

<A NAME="pgfId=144282">

 </A>

7</P>

</TD>

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

<P CLASS="Table">

<A NAME="pgfId=175808">

 </A>

&nbsp;</P>

</TD>

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

<P CLASS="Table">

<A NAME="pgfId=175824">

 </A>

&nbsp;</P>

</TD>

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

<P CLASS="TableLeft">

<A NAME="pgfId=144284">

 </A>

36 GLBs</P>

</TD>

</TR>

<TR>

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

<P CLASS="Table">

<A NAME="pgfId=144162">

 </A>

2</P>

</TD>

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

<P CLASS="TableLeft">

<A NAME="pgfId=144164">

 </A>

64 k-bit <SPAN CLASS="Symbol">

&#165;</SPAN>

 8 SRAM</P>

</TD>

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

<P CLASS="Table">

<A NAME="pgfId=144286">

 </A>

8</P>

</TD>

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

<P CLASS="Table">

<A NAME="pgfId=175810">

 </A>

&nbsp;</P>

</TD>

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

<P CLASS="Table">

<A NAME="pgfId=175826">

 </A>

&nbsp;</P>

</TD>

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

<P CLASS="TableLeft">

<A NAME="pgfId=144288">

 </A>

22 GLBs</P>

</TD>

</TR>

<TR>

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

<P CLASS="Table">

<A NAME="pgfId=144170">

 </A>

3</P>

</TD>

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

<P CLASS="TableLeft">

<A NAME="pgfId=144172">

 </A>

38 GLBs</P>

</TD>

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

<P CLASS="Table">

<A NAME="pgfId=144290">

 </A>

9</P>

</TD>

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

<P CLASS="Table">

<A NAME="pgfId=175812">

 </A>

&nbsp;</P>

</TD>

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

<P CLASS="Table">

<A NAME="pgfId=175828">

 </A>

&nbsp;</P>

</TD>

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

<P CLASS="TableLeft">

<A NAME="pgfId=144292">

 </A>

256 k-bit <SPAN CLASS="Symbol">

&#165;</SPAN>

 16 SRAM</P>

</TD>

</TR>

<TR>

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

<P CLASS="Table">

<A NAME="pgfId=144178">

 </A>

4</P>

</TD>

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

<P CLASS="TableLeft">

<A NAME="pgfId=144180">

 </A>

38 GLBs</P>

</TD>

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

<P CLASS="Table">

<A NAME="pgfId=144294">

 </A>

10</P>

</TD>

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

<P CLASS="Table">

<A NAME="pgfId=175814">

 </A>

&nbsp;</P>

</TD>

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

<P CLASS="Table">

<A NAME="pgfId=175830">

 </A>

&nbsp;</P>

</TD>

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

<P CLASS="TableLeft">

<A NAME="pgfId=144296">

 </A>

43 GLBs</P>

</TD>

</TR>

<TR>

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

<P CLASS="Table">

<A NAME="pgfId=144186">

 </A>

5</P>

</TD>

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

<P CLASS="TableLeft">

<A NAME="pgfId=144188">

 </A>

42 GLBs</P>

</TD>

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

<P CLASS="Table">

<A NAME="pgfId=144298">

 </A>

11</P>

</TD>

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

<P CLASS="Table">

<A NAME="pgfId=175816">

 </A>

&nbsp;</P>

</TD>

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

<P CLASS="Table">

<A NAME="pgfId=175832">

 </A>

&nbsp;</P>

</TD>

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

<P CLASS="TableLeft">

<A NAME="pgfId=144300">

 </A>

40 GLBs</P>

</TD>

</TR>

<TR>

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

<P CLASS="TableLast">

<A NAME="pgfId=144250">

 </A>

6</P>

</TD>

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

<P CLASS="TableLeft">

<A NAME="pgfId=144252">

 </A>

64 k-bit <SPAN CLASS="Symbol">

&#165;</SPAN>

 16 SRAM</P>

</TD>

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

<P CLASS="TableLast">

<A NAME="pgfId=144302">

 </A>

12</P>

</TD>

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

<P CLASS="TableLast">

<A NAME="pgfId=175818">

 </A>

&nbsp;</P>

</TD>

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

<P CLASS="TableLast">

<A NAME="pgfId=175834">

 </A>

&nbsp;</P>

</TD>

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

<P CLASS="TableLeft">

<A NAME="pgfId=144304">

 </A>

30 GLBs</P>

</TD>

</TR>

</TABLE>

</DIV>

<DIV>

<H2 CLASS="Heading2">

<A NAME="pgfId=32661">

 </A>

15.6.2&nbsp;<A NAME="31500">

 </A>

Automatic Partitioning with FPGAs</H2>

<P CLASS="BodyAfterHead">

<A NAME="pgfId=87959">

 </A>

Some vendors of programmable ASICs provide partitioning software. For example, Altera uses its own software system for design. You can perform design entry using an HDL, schematic entry, or using the Altera hardware design language (AHDL)&#8212;similar to PALASM or ABEL. In AHDL you can direct the partitioner to automatically partition logic into chips within the same family, using the <A NAME="marker=147253">

 </A>

AUTO keyword:</P>

<P CLASS="ComputerOneLine">

<A NAME="pgfId=32662">

 </A>

DEVICE top_level IS AUTO; % the partitioner assign logic</P>

<P CLASS="Body">

<A NAME="pgfId=32663">

 </A>

You can use the <SPAN CLASS="BodyComputer">

CLIQUE</SPAN>

<A NAME="marker=32730">

 </A>

 keyword to keep logic together (this is not quite the same as a clique in a graph&#8212;more on this in <A HREF="CH15.7.htm#20759" CLASS="XRef">

Section&nbsp;15.7.3</A>

):</P>

<P CLASS="ComputerFirst">

<A NAME="pgfId=32664">

 </A>

CLIQUE fast_logic</P>

<P CLASS="Computer">

<A NAME="pgfId=32668">

 </A>

BEGIN</P>

<P CLASS="Computer">

<A NAME="pgfId=32669">

 </A>

	|shift_register: MACRO; % keep this in one device</P>

<P CLASS="ComputerLast">

<A NAME="pgfId=32670">

 </A>

END;</P>

<P CLASS="BodyAfterHead">

<A NAME="pgfId=32697">

 </A>

An additional option, to reserve space on a device, is very useful for making last minute additions or changes.</P>

</DIV>

<HR><P>[&nbsp;<A HREF="CH15.htm">Chapter&nbsp;start</A>&nbsp;]&nbsp;[&nbsp;<A HREF="CH15.5.htm">Previous&nbsp;page</A>&nbsp;]&nbsp;[&nbsp;<A HREF="CH15.7.htm">Next&nbsp;page</A>&nbsp;]</P></BODY>



<!--#include file="Copyright.html"--><!--#include file="footer.html"-->

⌨️ 快捷键说明

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