This list is for discussion of the design and implementation of field-programmable gate array based processors and integrated systems. It is also for discussion and community support of the XSOC Project (see http://www.fpgacpu.org/xsoc).
|
Hi All, Recently I have been able to see that lot of Software applications are ported on to the FPGA's. Very Recent discussions on Task Scheduler Implementations were also quite Intersting. What I was wondering is, R there are Implementations of the TCP/IP Implementation over a Single FPGA, for mutilple connections. How the Dynmaic memory allocation which is the primary requirement for the Protocol stacks can be Implemented on the FPGA's. Any Innovative Ideas or Some Good Links shall be apperciated. Regards, Anand. |
|
|
|
> What I was wondering is, R there are Implementations of the TCP/IP > Implementation over a Single FPGA, for mutilple connections. The simplest thing to do is run a software TCP/IP stack on a compact FPGA CPU core. By the way at ESC I saw TCP/IP running on uCLinux on Altera Nios with a CS8900A ethernet MAC. I also note that a compact FPGA CPU core with integral DMA (e.g. xr16) may be hybridized into the data shovel aspect of an ethernet MAC. (Flexibly shovel the incoming bits to/from buffers, etc.) Indeed, one enhanced FPGA CPU might (time multiplexed or otherwise) manage several physical links. You can also build hardware implementations of the TCP/IP protocol itself. There are several such implementations in custom VLSI. For FPGA approaches, see e.g. Smith et al's XCoNet, http://www-ee.eng.hawaii.edu/~msmith/XCoNET/XCoNET.htm BlueArc SiliconServer: http://www.bluearc.com/, http://www.bluearc.com/news/downloads/datasheets/server_wp.pdf. "The SiliconServer runs all normal TCP/IP functionality in state machine logic with a few exceptions that are currently dealt with by software running on the systems attached processor (e.g. ICMP traffic, fragmented traffic reassembly)." And related things: FPXKSM: http://www.fpgacpu.org/log/nov01.html#011106. > How the Dynmaic memory allocation which is the primary requirement > for the Protocol stacks can be Implemented on the FPGA's. How dynamic must it be? Can you predetermine (constrain) no. of buffers, no. of connections, MTU issues, size of tables, etc.? Jan Gray, Gray Research LLC |
|
Jan, Thanks for the Responce. Certainly Embedding the CPU core for Implementing the stack would be simplest of all.But the Performance Improvements cannot be considerable. But Yes, I agree that the main CPU can offloaded from the processing burden. But rather I am looking for real Hardware Implementation of the full stack. I am trying to gain some understanding of fact that how would one approach such a complex control flow Intensive problem for Implementation in Hardware. I checked the links but could not get any more details. Issue of Dynamic memory allocation is to manage a common packet buffer among multiple conncetions. Based on the fact that data traffic on each of the link will be different. Remaining parameters that u have menstioned can be fixed for a Implementation. Eitherway thanks once again. Regards, Anand. On Sat, 06 Apr 2002 Jan Gray wrote : > > What I was wondering is, R there are Implementations of the >TCP/IP > > Implementation over a Single FPGA, for mutilple connections. > >The simplest thing to do is run a software TCP/IP stack on a >compact >FPGA CPU core. > >By the way at ESC I saw TCP/IP running on uCLinux on Altera Nios >with a >CS8900A ethernet MAC. > >I also note that a compact FPGA CPU core with integral DMA (e.g. >xr16) >may be hybridized into the data shovel aspect of an ethernet >MAC. >(Flexibly shovel the incoming bits to/from buffers, etc.) >Indeed, one >enhanced FPGA CPU might (time multiplexed or otherwise) manage >several >physical links. > >You can also build hardware implementations of the TCP/IP >protocol >itself. There are several such implementations in custom VLSI. >For >FPGA approaches, see e.g. > >Smith et al's XCoNet, >http://www-ee.eng.hawaii.edu/~msmith/XCoNET/XCoNET.htm > >BlueArc SiliconServer: http://www.bluearc.com/, >http://www.bluearc.com/news/downloads/datasheets/server_wp.pdf. >"The >SiliconServer runs all normal TCP/IP functionality in state >machine >logic with a few exceptions that are currently dealt with by >software >running on the systems attached processor (e.g. ICMP traffic, >fragmented >traffic reassembly)." > >And related things: >FPXKSM: http://www.fpgacpu.org/log/nov01.html#011106. > > > How the Dynmaic memory allocation which is the primary >requirement > > for the Protocol stacks can be Implemented on the FPGA's. > >How dynamic must it be? Can you predetermine (constrain) no. >of >buffers, no. of connections, MTU issues, size of tables, etc.? > >Jan Gray, Gray Research LLC >To post a message, send it to: >To unsubscribe, send a blank message to: |
|
|
|
On 5 Apr 2002, Anand Gopal Shirahatti wrote: > What I was wondering is, R there are Implementations of the TCP/IP > Implementation over a Single FPGA, for mutilple connections. I think an embedded CPU core would be the easiest way to do it. If you had some reason for avoiding this, though, it might be a very good application for microcode. jake |
|
> Certainly Embedding the CPU core for Implementing the stack would be > simplest of all.But the Performance Improvements cannot be > considerable. Why not? Your "CPU core" can be custom-tailored to the job at hand. > But rather I am looking for real Hardware Implementation of the > full stack. It's a complex problem, so it's going to need one or more fairly complex state machines. You can call them state machines, microcoded controllers, or CPUs, but it all amounts to the same thing. Complex state machines implemented in "real hardware" are equivalent to microcoded controllers, although the names perhaps imply different implementation styles. You might think of a one-hot state machine as being different than a microcoded controller, but all you've done is to distribute the microcode into the state decode logic. > I am trying to gain some understanding of fact that > how would one approach such a complex control flow Intensive > problem for Implementation in Hardware. Step one: define your state machines. That's necessary no matter what kind of hardware you're going to design. |
|
Dear all, I have embedded an TCP/IP stack into an ASIC design. The best partitioning of HW/SW (from my experience) is to embed the MAC-functionality in order to off-load the CPU. This means that at a 'packet-level' the SW controls the MAC. nearly all internet connected devices have this partitioning( from Microsoft to Linux-systems to most embedded systems) use this partitioing. This is done the most efficient way by using 'scatter-gather' DMA-support by the HW, mainly because the packet-header at the MAC-level also have a 'linked-list' defined which can be used by the scatter-gather DMA engine. The interface to the Enthernet-PHY is an interface which is standardized by the IEEE-spec. (called something similar like "MII" if I remember correclty) ....there is no FPGA-vendor out there that sells FPGA's which include an Ethernet-PHY on-board The maximum latency requirements between the packets (inter-packet-delay) are quite hard-to-meer without any buffering near to the MAC-block. Note that this depends on SDRAM-load caused by other memory-agents. Hence a buffer-size of 16kbyte for Transmit and 16kbyte for receive are not extravagant. There is little use of a HW-only implementation of the complete stack because I can't think any real-life application which doesn't use SW in *processing* the data that comes the intra/internet. Hence, because there is a CPU anyway available, it can also do low-life issues like TCP-processing. Quickest route to heaven: * buy an ARM-kit from Altera/Atmel. * download the TCP/IP software from the ARM-website. * take a look at the available MAC-cores (free-cores.org, Alcatel etc. etc.) and design your own. * integrate & simulate 'till your dead. Amen! Martijn Emons Eric Smith wrote: >>Certainly Embedding the CPU core for Implementing the stack would be >>simplest of all.But the Performance Improvements cannot be >>considerable. >> > >Why not? Your "CPU core" can be custom-tailored to the job at hand. > >>But rather I am looking for real Hardware Implementation of the >>full stack. >> > >It's a complex problem, so it's going to need one or more fairly >complex state machines. You can call them state machines, microcoded >controllers, or CPUs, but it all amounts to the same thing. > >Complex state machines implemented in "real hardware" are equivalent >to microcoded controllers, although the names perhaps imply different >implementation styles. You might think of a one-hot state machine >as being different than a microcoded controller, but all you've done >is to distribute the microcode into the state decode logic. > >>I am trying to gain some understanding of fact that >>how would one approach such a complex control flow Intensive >>problem for Implementation in Hardware. >> > >Step one: define your state machines. That's necessary no matter >what kind of hardware you're going to design. > > >To post a message, send it to: >To unsubscribe, send a blank message to: >_____________________________________________________________________________________________ >This inbound message from KPN has been checked for all known viruses by KPN IV-Scan, powered by MessageLabs. >For further information visit: http://www.veiliginternet.nl >_____________________________________________________________________________________________ -- Kind regards, Martijn Emons - Designer Consultant - Arcobel ASIC Design Centre B.V. Hambakenwetering 1 5231 DD 's-Hertogenbosch, The Netherlands. tel.: +31 73 64 60 100 fax : +31 73 64 60 115 _____________________________________________________________________________________________ This outbound message from KPN has been checked for all known viruses by KPN IV-Scan, powered by MessageLabs. For further information visit: http://www.veiliginternet.nl _____________________________________________________________________________________________ |
|
|
|
Look at www.uspto.gov and find patent number 6,226,680 by Boucher, et al. This describes in great detail how the Alacritech TCP/IP Offload Engine (TOE) works. You should be aware that there is are is a huge amount of patent-filing going on with TOE technology and almost anything you do will ultimately require royalties to some big NIC company. You can also look at iReady's approach in patent 6,034,963. Each of these patents will give you links to other related patents. One thing, though, if your embedded CPU is fast enough, with a little bit of hardware like a checksum generator you can probably attain wire-speed with a conventional network stack unless maybe you are doing 10 GbE or something. I guess this is the plan a lot of people have with the new Virtex II Pro chips -- you can dedicate one or more of the PowerPC cores to handling your network stack(s) with maybe a little bit of SDRAM hanging off the side for buffering. Gary Watson Nexsan Technologies -----Original Message----- From: Anand Gopal Shirahatti [mailto:] Sent: Sunday, April 07, 2002 7:54 PM To: Subject: Re: RE: [fpga-cpu] TCP/IP on FPGA Jan, Thanks for the Responce. Certainly Embedding the CPU core for Implementing the stack would be simplest of all.But the Performance Improvements cannot be considerable. But Yes, I agree that the main CPU can offloaded from the processing burden. But rather I am looking for real Hardware Implementation of the full stack. I am trying to gain some understanding of fact that how would one approach such a complex control flow Intensive problem for Implementation in Hardware. I checked the links but could not get any more details. Issue of Dynamic memory allocation is to manage a common packet buffer among multiple conncetions. Based on the fact that data traffic on each of the link will be different. Remaining parameters that u have menstioned can be fixed for a Implementation. Eitherway thanks once again. Regards, Anand. |
|
Dear all, I'm about to design an acquisition card based on the PCI bus. There are two different ways to implement the bus interface : - using a dedicated chip such as 9052 (PLX tech.) - using a FPGA I'm now looking for information about the way to interface PCI with a FPGA. Can somebody give me some tips on that subject? Thanks by advance Anthony Leroyer |
|
Hi all, has anyone used one of these? Id like to email them direct if so. Im having a few problems; kind of wish Id bought an Xsess board instead. THanks, Vincent ----------------------------------------------------------- + Vincent Crabtree, Researcher, Optical Engineering Group + + Loughborough University, United Kingdom + + Email: + + http://www.lboro.ac.uk/departments/el/research/optics/ + +---------------------------------------------------------+ ---------- --- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.338 / Virus Database: 189 - Release Date: 3/14/02 [Non-text portions of this message have been removed] |
|
Hi, I Thank all of u who Took some Intrest towards this Problem. Some of my explnations to Issues been put forth are as follows: >You should be aware that there is are is a huge amount > of >patent-filing going on with TOE technology and almost > anything >you do will >ultimately require royalties to some big NIC company. 1. Gary, I Guess u probably warned me at right time. I Never Thot about it at all. Still I am not sure How serious are these Patent Stuff...Eitherway I am not planning for any Commercial Prodcut Either. 2. What I am actually trying out is an Experimental Methodology to capture the Absolute Hardware Implementation of the TCP/IP Specifications. 3. Though I am using the BSD's stack as reference. >Why not? Your "CPU core" can be custom-tailored to >the job at hand. 4. Eric, I Guess I am not sure How well the CPU custom tailored will suit. As the considerable Effort needs to imparted to build the Instruction set model that addresses the problem very well and then Equal Efforts in Building the Hardware. After that still the problem isn't over, As I shall not have any Compiler to target the code to this platform may be I need to build one...Since Mannual mapping of such an complex algoritham to a custom hardware seems Impossible. This is Considerable Effort, May be I can't Afford. Yes, this is very Long term solution..Good Commercial Devlopment platfrom !! 5. Also the paradigm of CPU's which to the maximum address the Issue of the parallelism at the Operation level. But this problem requires the Parallelism at the "Control flow" level. So though the Mulitple CPU cores address the same Issue, But I am not quite Intersted since that is not my goal and Integration doesn't seem my cup of Tea either. >Step one: define your state machines. That's >necessary no >matter >what kind of hardware you're going to design. 6. Probably as Eric has said, the Step One to approach the problem is to atleast come out with the Block level design and then Define the state machines required and there Interaction since Single Won't do. Then probably if required simple micro-codes without much specific or fiexd micro-instructions format may be the good solution, what I thot at this point. Anyway shall keep the Group Informed. Please do send me any further links or Ideas. Thanks. Regards, Anand. |