Xcell Journal: The authoritative journal for programmable ... - Xilinx
Xcell Journal: The authoritative journal for programmable ... - Xilinx
Xcell Journal: The authoritative journal for programmable ... - Xilinx
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
System Communications<br />
Developing applications to run in FPGAs<br />
has become easier, in part because of the<br />
advances made in design flows, tools, and<br />
general awareness of how to program<br />
FPGAs. Tools such as <strong>Xilinx</strong> ® System<br />
Generator and other high-level implementation<br />
methodologies enable developers to<br />
quickly translate their algorithms from<br />
math-level functions into working FPGA<br />
algorithm blocks.<br />
Once developed, connecting these<br />
algorithm blocks together is a complex<br />
and error-prone task. Even more complex<br />
is the connection of algorithms in multiple<br />
FPGA applications and the communication<br />
with external interfaces and<br />
backplanes.<br />
This interconnectivity inside, the area<br />
outside and between FPGAs is termed “system<br />
communications” and can consume<br />
the vast majority of design time in many<br />
applications, distracting developers from<br />
their key expertise in the application being<br />
implemented. High-level algorithm design<br />
tools do not generally make provisions <strong>for</strong><br />
implementation of system communications,<br />
so although the algorithm implementation<br />
has been made easier, system<br />
communications remains complex, error<br />
prone, and time consuming.<br />
DIMEtalk: <strong>The</strong> Concept<br />
Looking at the needs of FPGA application<br />
developers, we established key requirements<br />
<strong>for</strong> a system communications tool:<br />
• Scalability, catering to designs of all<br />
sizes and designs distributed across<br />
multiple FPGAs<br />
• Flexibility, tailored to the needs of the<br />
application<br />
• Easy algorithm interfacing, complementing<br />
algorithm implementation<br />
• Easy implementation, ideally through a<br />
software tool<br />
• Resource-friendly, minimizing hardware<br />
resource requirements<br />
Looking beyond the FPGA world, the<br />
majority of data communications take<br />
place across some <strong>for</strong>m of data network.<br />
Data networks are appealing because of the<br />
flexibility and scalability they provide.<br />
When we developed the early DIMEtalk<br />
tool at Nallatech, we intended it to be primarily<br />
network-based <strong>for</strong> these reasons.<br />
So in essence, DIMEtalk is networkbased<br />
and meets identified needs by<br />
providing:<br />
• A high-level software tool to enable users<br />
to develop communication networks<br />
• An intelligent packet-based network –<br />
routing tables automatically defined by<br />
software<br />
• Easy user node interfaces – block<br />
RAM, FIFO, memory map<br />
• Automatic FPGA-synthesizable code to<br />
represent the network<br />
• “Small footprint” network elements <strong>for</strong><br />
efficient use of resources within <strong>Xilinx</strong><br />
FPGAs<br />
Physical Communications Infrastructure<br />
We had to define the physical infrastructure<br />
of the tool – the network elements that<br />
would exist within the FPGA. We analyzed<br />
a number of data networking standards to<br />
assess their viability <strong>for</strong> use within FPGAs,<br />
but existing standards lacked the required<br />
flexibility and resource efficiency. For this<br />
reason, we developed a dedicated simplified<br />
network protocol and network infra-<br />
DIMEtalk Router<br />
DIMEtalk PCI Edge<br />
DIMEtalk Memory Node<br />
PCI Express Endpoint<br />
10G Ethernet MAC<br />
1G Ethernet MAC<br />
RapidIO Logical and Transport<br />
RapidIO PHY<br />
FPGA Slice Resource Requirements<br />
structure. <strong>The</strong> network elements used in<br />
DIMEtalk are as follows:<br />
• “Routers” direct data around the<br />
network<br />
• “Nodes” are the user interface to the<br />
network and can be connected to user<br />
application designs<br />
• “Bridges” move data between physical<br />
devices across a defined physical media<br />
(<strong>for</strong> example, between FPGAs)<br />
• “Edges” are used <strong>for</strong> protocol conversion<br />
to another data transfer standard<br />
(such as PCI, VME, or USB on<br />
Nallatech systems)<br />
From a users’ perspective, nodes within<br />
the network are the most important; these<br />
are the points within the network where<br />
you connect your algorithm blocks. <strong>The</strong><br />
available interfaces are block RAM, FIFO,<br />
and memory map-based, which makes<br />
developing compatible interfaces within<br />
algorithm blocks and connecting these to<br />
the network easy.<br />
In runtime, packet-based transfers are<br />
used across the network, enabling the transfer<br />
of data between nodes within FPGAs and<br />
also to backplane interfaces and host systems.<br />
Because of the highly optimized<br />
network protocol and low overhead implementation<br />
used in DIMEtalk, the efficiency<br />
of data transfers is as high as 97%.<br />
0 500 1000 1500 2000 2500 3000 3500 4000 4500<br />
FPGA Slices<br />
Figure 1 – DIMEtalk network element resource usage comparison<br />
Winter 2004 <strong>Xcell</strong> <strong>Journal</strong> 105