cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
11,634 Views
Registered: ‎12-18-2010

n00b question about cores vs VHDL for ethernet

Jump to solution

forgive my ignorance but I'm a n00b to FPGA coming from a software background.

 

Just like 5000 other n00b posters on this form, I want to use the ethernet capabilities of my spartan-3e. Nobody online actually has a ready-made copy/paste solution for this, and that's ok by me. I'll do the work and figure it out. I've already done a lot of the homework, but I'm confused about one thing in general...

 

I'm aware that there are two fundamental ways to use the ethernet controller: using the free IP core that xilinx's IDE offers, or writing VHDL/verilog myself and correctly banging out an MII interface. The latter method is a royal pain apparently because you have to calculate checksums and otherwise manipulate TCP/UDP packets at about the lowest level possible...

 

My question is this: My application requires packets to be processed with the lowest amount of overhead possible. I don't even want to have to wait one extra clock cycle if I don't have to. My understand was that any *core* that you put on an FPGA is effectively a "soft-core" processor, in other words, the robust functionality from these various IP cores exists because the FPGA is programmed with VHDL instructions that simulate, say, an 8086 CPU  that basically run a program written in C or assembly for this virtual 8086, since it's a lot easier to use these languages than VHDL. Is that correct ? If so, does that mean I would expect my overall network performance to be slower than if I wrote the processing myself in straight-vhdl ?

 

If not, then can a "core" coexist with a straight VHDL program, the same way as I would link to an external symbol in C ? Or does the core consume the whole chip ?

 

Thank you for taking the time to respond to a n00b. I appreciate it.

 

-n00b

0 Kudos
1 Solution

Accepted Solutions
bassman59
Historian
Historian
13,093 Views
Registered: ‎02-25-2008

 


@xilinx_temp_9099 wrote:

forgive my ignorance but I'm a n00b to FPGA coming from a software background.

 


 

The short answer is that hardware design and software design are completely different disciplines. FPGA design is digital hardware design. The fact that it uses a "language" as the design-entry method (it's a "hardware description language") doesn't mean that it's still not hardware design. This forum, as well as comp.arch.fpga, is full of postings from software people who think they can just translate their code into something that runs on an FPGA. Whether this delusion comes from their thesis advisors (who oughta be lined up against the wall and smacked), or from the FPGA vendors' own advertising, or from the patently absurd notion that "Verilog is like C," I don't know, but it's crazy.

 

So when someone says, "can I do an FPGA implementation of a TCP/IP stack," the grizzled hardware veterans have to laugh, because a TCP/IP stack is something that gets best implemented in a standard sequential-execution processor. And these grizzled hardware veterans would ask, "so, what's the memory footprint of this TCP/IP stack," and figure out what embedded processor would work best for the specific implementation, and go from there.

 

This is all not to say that some programmers can become quite good FPGA design engineers. And it's also not to say that FPGA guys can become quite good application-level programmers. But the two skill sets have little in common.

 

Good luck.

----------------------------Yes, I do this for a living.

View solution in original post

46 Replies
eteam00
Professor
Professor
11,495 Views
Registered: ‎07-21-2009

You are not the first person to ask these questions.  It's definitely worth your time to search the Community for "IP stack", and you will find some very useful information in very short order.

 

- Bob Elkind

SIGNATURE:
README for newbies is here: http://forums.xilinx.com/t5/New-Users-Forum/README-first-Help-for-new-users/td-p/219369

Summary:
1. Read the manual or user guide. Have you read the manual? Can you find the manual?
2. Search the forums (and search the web) for similar topics.
3. Do not post the same question on multiple forums.
4. Do not post a new topic or question on someone else's thread, start a new thread!
5. Students: Copying code is not the same as learning to design.
6 "It does not work" is not a question which can be answered. Provide useful details (with webpage, datasheet links, please).
7. You are not charged extra fees for comments in your code.
8. I am not paid for forum posts. If I write a good post, then I have been good for nothing.
0 Kudos
11,492 Views
Registered: ‎12-18-2010

Thanks, that led me to info that I already knew: xilinx tools are notoriously buggy, xilinx has poor customer support, and that I could use an ethernet core to make the PHY work. 

 

Nothing there said whether you can use your own VHDL code along with a core. See, the more general a question, like mine, the harder it is to search for. I'm aware there are ethernet cores, but as my question said, I need the quickest solution.

 

I found a solution (from a non-xilinx provider - opencores ) that required using the "mig" ram tool, but when I tried running it for the model of my board, it refused to finish correctly and give me my UCF and other files. This is probably due to another xilinx software bug and is quite a shame. Think of all the money they could have saved developing that spiffy "evaluation" board if they only soldered on the components that could actually work with their tools !

 

Do you have any other suggestions that could waste some more of my time telling me things I already know ? Or downloading gigabytes of bloated java code that doesn't work ? Or is there another expensive "evaluation" board I can buy that has even more components that don't work on it ? Maybe I just need to upgrade ?

Tags (1)
0 Kudos
eteam00
Professor
Professor
11,485 Views
Registered: ‎07-21-2009

Gee, you sure know how to win friends, don't you?  Are you having a miserable day, or what?

 

If you had taken some of your valuable time to read recent posts, you might have learned a thing or two.

 

Specifically:

1.  MIG generates memory controllers, not a MAC, and not a TCP/IP "stack" in hardware.

 

2.  You can try to implement a packet handler in a hard-wired controller, but it will be tedious as all get out and you'll be an old, mean, crotchety guy when you're done.   Hmmm... sounds like you've already tried this.

 

3.  Search suggestions, look them up:

"ip stack"

"ethernet lite"

"lwip stack"

"treck stack"

 

4.  When you've convinced yourself you don't really want to design an TCP/IP engine in HW, it's time to shop around for a processor to run a conventional TCP/IP stack.   The likely choices are MicroBlaze and PPC.  If you like SPARC, there's also Leon.  I'm sure you can search these items and find nothing useful, but it will keep you busy for an hour or two, and that's worth it all by itself.

 

5.  I hope you write your own TCP/IP stack.  That should keep you busy and off these boards for months.

 

And by the way, I don't work for Xilinx, so you can't blame Xilinx for having compromised my principles in trying to help you.

 

Good luck.

 

- Bob Elkind

SIGNATURE:
README for newbies is here: http://forums.xilinx.com/t5/New-Users-Forum/README-first-Help-for-new-users/td-p/219369

Summary:
1. Read the manual or user guide. Have you read the manual? Can you find the manual?
2. Search the forums (and search the web) for similar topics.
3. Do not post the same question on multiple forums.
4. Do not post a new topic or question on someone else's thread, start a new thread!
5. Students: Copying code is not the same as learning to design.
6 "It does not work" is not a question which can be answered. Provide useful details (with webpage, datasheet links, please).
7. You are not charged extra fees for comments in your code.
8. I am not paid for forum posts. If I write a good post, then I have been good for nothing.
0 Kudos
eteam00
Professor
Professor
11,462 Views
Registered: ‎07-21-2009

Thanks, that led me to info that I already knew: xilinx tools are notoriously buggy, xilinx has poor customer support, and that I could use an ethernet core to make the PHY work.

Since it is in the middle of the night on a weekend, here in the USA, I will take this opportunity to deliver user xilinx_temp_9099 a sorely needed dose of reality.

 

1.  If you want to limit yourself to bug-free tools, you've come to the wrong place, and you are being dishonest with yourself and to this forum.  It takes gobs of time and money to eliminate all the bugs in any complex set of software.  I sincerely doubt that you are willing to wait as long as it would take to achieve "bug-free" condition -- I know I wouldn't.  There are tradeoffs to be made between "bug free and feature rich", "gotta have it now", and cost.  This is true in the silicon, it's true in your designs (as well as mine), and it's true in the design tools software.

 

Yeah, I want bug-free tools -- we all do.  But many of us (myself included) are unwilling to wait around for the time it would take, and many of us (myself included) would be unwilling to pay what a "bug-free" effort would cost.  That goes for the Xilinx customers (and Altera customers), and it also goes for OUR customers.

 

2.  Sometimes what we want isn't "bug-free", but "no surprises".  Bug-free for any complex product is practically unattainable and most certainly commercially non-viable (give or take the space program, and even there we have risks and history which prove my point).  Instead, we settle for a mature product where the bugs are known and documented, and the weak spots of the design tools are also well known.

 

Today, if you're risk averse, there's Spartan 3 generation (instead of Spartan 6) and ISE 11 (instead of ISE 12) and Windows XP 32-bit (instead of Win7 64bit).  Your choice.  If life on the leading and bleeding edge is wearing you down, then ease off on the technology gas-pedal.

 

3.  Let's talk about Xilinx support.  First, general principles.

 

Let's keep in mind that constantly changing software and silicon means that the Xilinx apps folks are never, ever going to be "caught up" with the latest products, software, and applications.  It's not possible, so it's not worth debating the point.

 

If you want the most complete tech support, then stick to mature products where the support folks and the knowledge base has had time to catch up to the tools and the silicon (see point #2 above).  Let others blaze the trails and take the arrows.

 

4.  Let's talk about Xilinx support.  The people.

 

If you want to make the best use of Xilinx tech support on the latest tools and products, you need to be smart.  You learn as much as you can on your own and you learn as much as you can from others.

 

When you seek advice and guidance from the Xilinx support folks, don't poison the well with whining, impatience, ranting, and being close-minded.  People will eventually tune you out, and that's pretty much true in life (not just in the world of FPGAs).  Patience, mutual respect, clear communications, willingness to contribute effort, and a sense of humour will get you far (and not just in the world of FPGAs).  And humility.  Humility helps a whole lot.  We all make mistakes, we all have bad days.  Sometimes you need to forgive or apologize and move on.

 

And don't forget to say "thanks" for the help.  It always helps when your effort is appreciated.

 

5.  Xilinx support: using the forums.  These forums.

 

These forums are a good example of a public discussion space where you can learn from others' experiences and expertise.  Some of the answers you want may not be handed to you on a silver platter, but there's a whole lot of information available, and there are tools (search, for one) for sifting through the pile.

 

You can also discern which features are not "fully baked" yet.  These include silicon with new errata and new speed files, features where the user guides and documentation are still being filled in and updated, and where forum questions don't have quick and concise answers.  Use the forums to figure out which applications and features involve more design risk than you are willing to accept, and stay away from those areas (getting back to point #2, again).

 

Another good use for the forums is to help figure out who, out of all the Xilinx support folks, are the most knowledgeable in your problem area.

 

That's probably enough bloviating on my part.  When xilinx_temp_9099 showed up with a rant and a rave and a chip on his shoulder, that got me going.  He may not feel better after reading this, but I sure feel better getting this off my chest.

 

- Bob Elkind

 

SIGNATURE:
README for newbies is here: http://forums.xilinx.com/t5/New-Users-Forum/README-first-Help-for-new-users/td-p/219369

Summary:
1. Read the manual or user guide. Have you read the manual? Can you find the manual?
2. Search the forums (and search the web) for similar topics.
3. Do not post the same question on multiple forums.
4. Do not post a new topic or question on someone else's thread, start a new thread!
5. Students: Copying code is not the same as learning to design.
6 "It does not work" is not a question which can be answered. Provide useful details (with webpage, datasheet links, please).
7. You are not charged extra fees for comments in your code.
8. I am not paid for forum posts. If I write a good post, then I have been good for nothing.
11,453 Views
Registered: ‎12-18-2010

you're right, my response was out-of-line, particularly for a volunteer who took the time to help. Please accept my apologies.

 

The first time I searched I did get the inkling that a full-featured stack in VHDL was going to be out of the question, particularly with my skill level. So that pretty much means I will be using a core.

 

As to the defect rate in their tools, it sounds like you're making the "open-source" type of argument that we should just be thankful for what we have, except that these tools aren't open-source. Xilinx has a market capitalization of $7bn. I paid a couple hundred dollars for my starter kit and software tools and those dollars I sent were not defective, so I think it's reasonable to expect their product to not be either.

 

It only makes the situation worse when you look at how much content protection they pack with their product. What if they put half the effort into software quality that they did into content protection ? So instead we all pay for their content protection by having to use a "no-surprises" buggy product. All I'm saying is that it doesn't have to be this way. And FWIW I'm using v 10.1 of their tools with over 2gb of patches and "updates" applied.

0 Kudos
11,450 Views
Registered: ‎12-18-2010

 


eteam00 wrote: and a chip on his shoulder, 

 


Indeed, I showed up to the Xilinx FPGA forum with a chip on my shoulder. :smileyhappy:

 

0 Kudos
awillen
Mentor
Mentor
11,433 Views
Registered: ‎11-29-2007

Adrian: Ooh, ooh, Mr. Elkind, ooh, Mr. Elkind! *snaps fingers*

Mr. Elkind: *hesitates* Yes, what is it, Adrian?

Adrian: I've got something to add!

Mr. Elkind: *sighs* [to himself] I'm going to regret this... Go ahead!

Adrian: xilinx_temp_9099, you have shown that you're much too inexperienced with the whole subject matter as that you could reliably discern a geniune software bug from your own incompetence. As a rule of thumb, at your stage of learning, it's a lot more likely that you're the problem than that the tools are the problem.

 

 

And to answer one of your non-rant questions: if you're an "FPGA n00b", then there's no way that you'll be able to make a more performant TCP/IP stack by writing it from scratch. Plus you'll work a lot of bugs into it (in case you should ever finish).

 

 

Adrian



Please google your question before asking it.
If someone answers your question, mark the post with "Accept as solution". If you see a particularly good and informative post, consider giving it Kudos (the star on the left).
eteam00
Professor
Professor
11,431 Views
Registered: ‎07-21-2009

Adrian, that was quite droll.  I like it.  This is a side of you we've not yet seen.

 

I should add droll wit to my list of character attributes required of all FPGA designers.

 

- Bob Elkind

SIGNATURE:
README for newbies is here: http://forums.xilinx.com/t5/New-Users-Forum/README-first-Help-for-new-users/td-p/219369

Summary:
1. Read the manual or user guide. Have you read the manual? Can you find the manual?
2. Search the forums (and search the web) for similar topics.
3. Do not post the same question on multiple forums.
4. Do not post a new topic or question on someone else's thread, start a new thread!
5. Students: Copying code is not the same as learning to design.
6 "It does not work" is not a question which can be answered. Provide useful details (with webpage, datasheet links, please).
7. You are not charged extra fees for comments in your code.
8. I am not paid for forum posts. If I write a good post, then I have been good for nothing.
0 Kudos
awillen
Mentor
Mentor
11,427 Views
Registered: ‎11-29-2007

 


Adrian, that was quite droll.  I like it.  This is a side of you we've not yet seen.

That's just because I usually try to keep it on a professional level around here. However, the German beer ("Karlsberg Weizen", in this case) seems to have loosened my inhibitions :smileywink:

 

 

 


I should add droll wit to my list of character attributes required of all FPGA designers.

 

I agree! With FPGA design, it's the same as with teaching at schools: after a couple of years, you're gonna take one of the following roads:

  • burn out
  • develop sarcasm or a strong sense of humor
  • develop a strong tendency to sadism

 

Adrian



Please google your question before asking it.
If someone answers your question, mark the post with "Accept as solution". If you see a particularly good and informative post, consider giving it Kudos (the star on the left).
10,089 Views
Registered: ‎12-18-2010

Thanks guys. So I'm the problem because I'm inexperienced and don't know what I'm doing.

 

But there is one thing I am experienced with, which is figuring things out and using online forums. If you compare this xilinx forum with any other tech/DIY forums, you will see just how elitist your attitudes are. I asked a simple performance question (which was never answered ) and was told to go search the forum, by someone who clearly knew the answer already. I have searched google many times to figure this out and have not found a complete solution. If I had said "how do I make diode 6 light up in VHDL" I can see telling the person to do the ground work themselves, but telling me to search the forum when I clearly said I knew about the ethernet core and about a vhdl solution ( which is on fpga4fun, which by its name probably has alot fewer elitists contributing there ) shows that the "volunteer" poster enjoys assigning work to people more than helping them.

 

I bought a VHDL book thinking I would install xilinx's tools and start writing designs and eventually advance up to the MII phy, and asked my question because this wasn't becoming clear whether or not it can be done. Then I was told "keep searching". Let me give you an example on how to answer my question in a non-arrogrant way, just in case someone else is wondering the same thing:

 

"<username>: Getting the complete ethernet stack running in VHDL from scratch is much more advanced than it appears. It is particuarly hard to get the states correct as you move up levels from the physical layer through the link and network layers. You, as a n00b will probably not be able to write yours from scratch so just focus on getting your design operable using xilinx's IP core solution".

 

Here's a forum you can search to see other non-arrogant posters helping each other out at various levels with hardware/software development:

 

http://www.avrfreaks.net/index.php?name=PNphpBB2&file=index

 

Search for "n00b" and observe how people work together ( kind of like the gates of an FPGA design =) ) instead of badger each other. Notice also that the avr-gcc toolchain...works! it doesn't segfault, run out of ram and shutdown, require gigabytes of useless updates, or spew unintelligible error messages. And, the best part, it's free. Before you accuse me of not knowing the difference between an AVR and and FPGA, I guess I have to prove that I do in fact know the difference, and I'm using this as an example of a functional online community.

 

 

 

Tags (1)
0 Kudos
eteam00
Professor
Professor
10,068 Views
Registered: ‎07-21-2009

Thanks guys. So I'm the problem because I'm inexperienced and don't know what I'm doing.

Not necessarily, but you certainly have a bad attitude.

I asked a simple performance question (which was never answered ) and was told to go search the forum, by someone who clearly knew the answer already.

If you are referring to me, you are mistaken. I'm not a MAC designer, and I don't write TCP/IP code.  But I knew that MAC core is a frequent discussion topic and I knew that implementing a full TCP/IP stack in hardware rather than SW is a daunting task, so I advised you to search the forums to evaluate your options for yourself.

 

If you expected me to search the forums on your behalf and then present you with a distilled list of interesting topics links, your expectations were too high.  As a non-expert, and being uncertain of the precise scope of your interest and inclinations and needs and abilities, it seemed prudent to simply nudge you in the right direction.  Your response to this was less than cordial.

 

It appears from your postings that you found the information for which you were seeking, either in these forums or on a different site.  The advice you received on another forum is a conclusion which I would think you should make on your own, rather than accept someone else's judgement.  If you consider this to evidence an elitist attitude on my part, I think you've fundamentally misread me.  If you conclude from my writings that I discourage arrogance, presumption, and boorish behaviour -- then you (at least in part) understand me well enough.

 

- Bob Elkind

SIGNATURE:
README for newbies is here: http://forums.xilinx.com/t5/New-Users-Forum/README-first-Help-for-new-users/td-p/219369

Summary:
1. Read the manual or user guide. Have you read the manual? Can you find the manual?
2. Search the forums (and search the web) for similar topics.
3. Do not post the same question on multiple forums.
4. Do not post a new topic or question on someone else's thread, start a new thread!
5. Students: Copying code is not the same as learning to design.
6 "It does not work" is not a question which can be answered. Provide useful details (with webpage, datasheet links, please).
7. You are not charged extra fees for comments in your code.
8. I am not paid for forum posts. If I write a good post, then I have been good for nothing.
10,057 Views
Registered: ‎07-15-2008

Droll Wit yay :smileyhappy:

 

Well this has to be the funniest thread I’ve read in ages, thanks for making me smile....

 

9099, do understand that you just insulted the most helpful, possibly the kindest people on the forum.

Personally I read your request for help, and thought “oh another programmer” and turned the page.

 

It’s hard to explain this to you without insulting you so I won’t bother.......

 

 

Bobster

0 Kudos
eteam00
Professor
Professor
10,044 Views
Registered: ‎07-21-2009

the most helpful, possibly the kindest people on the forum

On behalf of my colleagues, you failed to mention our rugged good looks and keen fashion sense.

 

- Bob Elkind

SIGNATURE:
README for newbies is here: http://forums.xilinx.com/t5/New-Users-Forum/README-first-Help-for-new-users/td-p/219369

Summary:
1. Read the manual or user guide. Have you read the manual? Can you find the manual?
2. Search the forums (and search the web) for similar topics.
3. Do not post the same question on multiple forums.
4. Do not post a new topic or question on someone else's thread, start a new thread!
5. Students: Copying code is not the same as learning to design.
6 "It does not work" is not a question which can be answered. Provide useful details (with webpage, datasheet links, please).
7. You are not charged extra fees for comments in your code.
8. I am not paid for forum posts. If I write a good post, then I have been good for nothing.
0 Kudos
bassman59
Historian
Historian
13,094 Views
Registered: ‎02-25-2008

 


@xilinx_temp_9099 wrote:

forgive my ignorance but I'm a n00b to FPGA coming from a software background.

 


 

The short answer is that hardware design and software design are completely different disciplines. FPGA design is digital hardware design. The fact that it uses a "language" as the design-entry method (it's a "hardware description language") doesn't mean that it's still not hardware design. This forum, as well as comp.arch.fpga, is full of postings from software people who think they can just translate their code into something that runs on an FPGA. Whether this delusion comes from their thesis advisors (who oughta be lined up against the wall and smacked), or from the FPGA vendors' own advertising, or from the patently absurd notion that "Verilog is like C," I don't know, but it's crazy.

 

So when someone says, "can I do an FPGA implementation of a TCP/IP stack," the grizzled hardware veterans have to laugh, because a TCP/IP stack is something that gets best implemented in a standard sequential-execution processor. And these grizzled hardware veterans would ask, "so, what's the memory footprint of this TCP/IP stack," and figure out what embedded processor would work best for the specific implementation, and go from there.

 

This is all not to say that some programmers can become quite good FPGA design engineers. And it's also not to say that FPGA guys can become quite good application-level programmers. But the two skill sets have little in common.

 

Good luck.

----------------------------Yes, I do this for a living.

View solution in original post

bassman59
Historian
Historian
10,020 Views
Registered: ‎02-25-2008

 


@xilinx_temp_9099 wrote:

Here's a forum you can search to see other non-arrogant posters helping each other out at various levels with hardware/software development:

 

http://www.avrfreaks.net/index.php?name=PNphpBB2&file=index

 


 

avrfreaks is mostly about people who want to do things with small microcontrollers. Most of these applications are fairly simple. The design-entry options are either assembly language or C. It seems like most hobbyists implement the same sort of projects. And that's fine. Microcontrollers are easy enough for the hobbyist who has a programming background, and if he can buy a small starter kit with LEDs or an LCD or some other peripherals, it's easy enough to get started. (Of course there's always the Windows programmer who can't get into the mindset of limited code space and everything else that goes along with embedded microcontroller development.)

 

Now put yourself in our shoes. Imagine that there's a support forum and the majority of posters ask questions that can be boiled down to, "gimme code." And what's worse is that the person asking for code has no idea about really what goes into a particular "IP core." To these drive-by newbies, a USB slave interface core is no more or less complicated than an SPI interface. They always preface their request by saying, "I'm a n00b," which is code for, "I have a homework assignment due next week and I shouldn't even be in an engineering program."

 

FPGA design is a lot more wide open. We use them to implement all of the logic required to run image sensors. Others may use the exact same devices (certainly with different peripherals) to implement digital-audio mixers and processors. To us, the FPGA is just a better way to do digital design. No wirewrapping boards full of 74xx or CMOS 4000-series logic devices. We don't do this as a hobby. It's our job.

 

Good luck.

----------------------------Yes, I do this for a living.
10,009 Views
Registered: ‎12-18-2010

Bassman,

 

Thank you for your straight-to-the-point reply. I think you did a perfect job summarizing this situation and why it boiled over. I'm somewhat ashamed of my response and letting it escalate into what it did, but I think this forum deserved a swift kick in the butt. I've been researching this for a few months now, and I can say that the xilinx forum lags way behind others on the net.

 

Being honest and calling myself a n00b obviously makes experts look away and refuse to help. I'm glad my question gave them the opportunity of refusal so they could prop their egoes up with the hefty exaltation that they desperately need. All I can say is at least I was honest and explained my situation.

 

I have read messages here before as well with kids wanting help on their homework and it is unfortunate that some of them don't seem willing to work. All I can say is that there is a difference between a n00b who is trying to learn and enjoy his love of technology and a kid that is trying to cheat / avoid studying.

 

I want to add this point to the hardware vs software philosophies: if you go into a C++ user help forum and ask a question equal in relative difficulty to mine, you will be amazed as to how helpful people are. Calling yourself a n00b actually encourages replies and patience, in general. My mistake was assuming people who are involved in this field have the same passion for learning and sharing technology. If you go in there and ask for an example of a multi-threaded program, of a network socket example, or an STL container example, most people will happily hand it over without the strict abritrary rule that they understand exactly what it does first.  In software, it's ok to not know what code does, read it, and then understand it. I didn't see any reason why people here would resent this practice.

 

We see basic technological concepts as commodities. We don't care who wrote them or how long it took, once the goal has been established and the code is open source, we share it. This in turn allows us to advance technology, not sit and wait until some VP 3 layers of management up assigns the hw group a new project. It seems the VHDL hardware attitude is decades behind what I'm accustomed to. To me, TCP/IP, a 30-year-old technology, is a commodity, and I'm still dumbfounded as to why there's not a working example that I can slap onto my board. That is also my impetus for railing against the crap software that it came with, but I've already established that.

 

That does NOT mean I'm unwilling to learn. I got a VHDL book and have full intentions of figuring out what I need to. I just don't see why I should have to learn something that has been commoditized. I want to extend a functionality that already exists, not redo something that has been done over and over again. Clearly enough people are interested in getting tcp/ip to work that someone should just post the design files so someone can just plug-and-play, but your collective pride is keeping you from doing that. I don't respect that decision, but there's nothing I can do about it.

 

Have fun guys. Thanks for the insight into life as a hardware engineer.

 

 

 

 

0 Kudos
bassman59
Historian
Historian
9,998 Views
Registered: ‎02-25-2008

 


@xilinx_temp_9099 wrote:
To me, TCP/IP, a 30-year-old technology, is a commodity, and I'm still dumbfounded as to why there's not a working example that I can slap onto my board.
See, you've fallen into the trap. The reason that there's no "working example of TCP/IP" -- in hardware, which is my assumption about what you want -- is because it doesn't exist. To do a TCP/IP stack in hardware would require a significant amount of resources, which means a very costly FPGA, and there is absolutely no reason to do it when you can buy a five dollar microcontroller that will run rings around a theoretical hardware implementation.

 

 


 Clearly enough people are interested in getting tcp/ip to work that someone should just post the design files so someone can just plug-and-play, but your collective pride is keeping you from doing that. I don't respect that decision, but there's nothing I can do about it.

 

 

 Imagine that I came up with a pretty clever interface design that replaces three external chips that are somewhat expensive. Imagine further that I developed it on company time, for a product that we sell. Even if I wanted to give this core away, I can't, as my employer owns it. Of course, if it gives us a competitive advantage, then naturally I would not want to let others use it. This is not "collective pride." This is about trying to keep one step ahead of competition, so we can stay in business and all of that.

 

If the open-hardware guys want to give away their work, that's great and I have no problem with it. But if you make a living by coming up with clever solutions to problems, then it's reasonable not to give away the store.

 

 


Have fun guys. Thanks for the insight into life as a hardware engineer.

 

 


 

Here's another insight into life as a hardware engineer. You've already railed on the gigabytes of patches to the Xilinx tools. But think about this: software is easily patched, and these patches are easily obtained. These patches don't cost anyone anything, except maybe for server space on the vendor end and bandwidth at both ends. (OK, so maybe a software vendor charges a yearly maintenance fee, so the patches aren't free.)

 

If you screw up a PCB layout, the costs start to add up right away. If you catch the mistake before PCB fab, no harm no foul.

 

If you catch the mistake when your first-article boards don't start up or work right, then you've wasted the number of bare boards that were fabbed (perhaps some deadbugging can make them useful), plus the components stuffed on them (it's not worth it to reclaim most parts from a stuffed board), plus the cost incurred in actually having the boards stuffed. Raw multilayer boards in prototype quantities can cost hundred of dollars each. (I am not kidding.)

 

Now assume that the design has passed prototype tests and is approved for production. Hundreds of boards are built and stuffed. Sure, per-piece costs go down but it's still a very large chunk of change to lay out. Boards come back from assembly, tests are run, something is wrong. Could be anything: an error in a stuffing guide meant that polarized caps are installed backwards. If you're lucky, those mistakes can be tracked down and fixed, at some cost.

 

Now further assume that the products pass inhouse testing and hundreds of units ship out to eager customers. But something insidious was lurking. Maybe some leaky caps. Maybe the heatsinking on a particular part wasn't adequate and as a result it's failing. Lots of things can go wrong. But now that the product is in the hands of the customer, you've got a warranty repair issue on your hands, meaning RMAs, new boards go out as replacements, bad will with the customer, all sorts of stuff that can't simply be fixed by downloading a newer version of the software.

 

So forgive the poor hardware guys who have to get things right before the product goes out the door to the customer. And pity the poor hardware guys who have to meet cost targets that simply don't exist with pure software products. And jeebus help the poor hardware guys who have significant capital needs to get the product into production and out to customers.

 

Yeah, the life of the software developer is a nice day in the park compared to that of a hardware guy.

 

Good luck.

----------------------------Yes, I do this for a living.
awillen
Mentor
Mentor
9,993 Views
Registered: ‎11-29-2007

Oh please, don't turn this into a question of open source vs. close source, that's just bull**bleep**. The reactions you got had nothing to do with "people not wanting to share their code" –  instead, they had to do with the fact that:

  1. you can count the regular, helpful contributors on your fingers
  2. there are a lot more people that ask questions without helping others
  3. many of those ask questions that a simple search or a look in the manual/data sheet would have answered
  4. you accused Bob of being lazy, he's among the most helpful and patient people around here (seriously – he keeps his temper and patience where others, including myself, have long before given up)
  5. you seem to see yourself as being on a mission to bring humility to all those arrogant snobs that dare to not work their butts off at a new member's whim

 

[...] but I think this forum deserved a swift kick in the butt

And you're the one to deliver it? See point 5 above.

 

Being honest and calling myself a n00b obviously makes experts look away and refuse to help.

Nope, being a douchebag is sufficient to achieve this effect.

 

I'm glad my question gave them the opportunity of refusal so they could prop their egoes up with the hefty exaltation that they desperately need.

Oh yes, thanks for that, I was already starved for my next ego push!

 

I want to add this point to the hardware vs software philosophies [...]

Yeah, right, because this is all about philosophies.

 

My mistake was assuming people who are involved in this field have the same passion for learning and sharing technology.

Some do, otherwise they wouldn't spend so much of their free time hanging around this forum, answering stupid and intelligent, simple and difficult questions.

 

If you go in there and ask for an example of a multi-threaded program, of a network socket example, or an STL container example, most people will happily hand it over.

As was pointed out before, a USB core is a little more complex and more effort to write than a network socket example.

 

In software, we generally have no problem with handing over code. I didn't see any reason why people here would have a problem either.

Well, maybe because their employers wouldn't like their employees giving away the USB cores they have been paid to develop.

 

We see basic technological concepts as commodities. We don't care who wrote them or how long it took, once the goal has been established and the code is open source, we share it. This in turn allows us to advance technology, not sit and wait until some VP 3 layers of management up assigns the hw group a new project. It seems the VHDL hardware attitude is decades behind what I'm accustomed to. To me, TCP/IP, a 30-year-old technology, is a commodity, and I'm still dumbfounded as to why there's not a working example that I can slap onto my board. That is also my impetus for railing against the crap software that it came with, but I've already established that.

That's so off-topic, I won't even bother commenting on it.

 

Clearly enough people are interested in getting tcp/ip to work that someone should just post the design files so someone can just plug-and-play, but your collective pride is keeping you from doing that.

Then stop bitching around and get to work! Write a good, usable, tested TCP/IP core, in whatever way you like, and share it! You're confusing open source with I want others to do the work, so I can leach off of it.

 

 

Aah, thank you for the long overdue trolling. This forum is too professional at times, and nothing gets the blood running like a heated, unobjective debate. Did you know that just 10 minutes of writing angry posts have the same health benefits as a 1 hour walk?

 

 

Adrian



Please google your question before asking it.
If someone answers your question, mark the post with "Accept as solution". If you see a particularly good and informative post, consider giving it Kudos (the star on the left).
eteam00
Professor
Professor
9,987 Views
Registered: ‎07-21-2009

I think you did a perfect job summarizing this situation and why it boiled over.

Actually, it boiled over because you were ungrateful, closed-minded, and insulting.

... I think this forum deserved a swift kick in the butt.

If you think I need a kick in the butt, then just say that.  I'm just one guy on this forum, I don't pretend to be anything more than just one guy on this forum.  This reality eluded you when you 'went off' on this entire forum community, after what was unarguably a very brief exchange between the two of us alone.  If I'm wrong on this, please point to where I'm mistaken.

 

Xilinx has allowed these forums to be pretty open.  If you want to join the party, so to speak, you are welcome to spend some time here and show us how you think a proper forum should be conducted.

I've been researching this for a few months now, and I can say that the xilinx forum lags way behind others on the net.

I repeat the invitation -- hang around and help bring us to the forefront.  I don't make the rules and I have no position of responsibility or authority here, so you don't need my permission or blessing.

Being honest and calling myself a n00b obviously makes experts look away and refuse to help.

You originally posted early Saturday afternoon, the weekend before Christmas holidays.  I responded that same evening with a suggestion which I genuinely thought to be useful to you.  I may not be an "expert", but I certainly didn't "look away".  How do you interpret what happened so differently?  Even after your first insulting remarks, I still made an effort to help you, n00b or not, civility somewhat wanting.

I'm glad my question gave them the opportunity of refusal so they could prop their egoes up with the hefty exaltation that they desperately need.

Your style of reconciliation and honesty is different than mine.

 

You come across as a bit of a jerk, so far.  If you're interested in hanging around, I'm more than willing to be proven wrong. Either way, you won't be stalked or harassed by me.

 

Thank you for the plain-spoken explanation of our exchanges.

 

Regards,

 

Bob Elkind

SIGNATURE:
README for newbies is here: http://forums.xilinx.com/t5/New-Users-Forum/README-first-Help-for-new-users/td-p/219369

Summary:
1. Read the manual or user guide. Have you read the manual? Can you find the manual?
2. Search the forums (and search the web) for similar topics.
3. Do not post the same question on multiple forums.
4. Do not post a new topic or question on someone else's thread, start a new thread!
5. Students: Copying code is not the same as learning to design.
6 "It does not work" is not a question which can be answered. Provide useful details (with webpage, datasheet links, please).
7. You are not charged extra fees for comments in your code.
8. I am not paid for forum posts. If I write a good post, then I have been good for nothing.
0 Kudos
9,306 Views
Registered: ‎12-18-2010

Bob, no I dont think you deserve a kick in the butt. And apparently I misunderstood you when I said that you "knew the answer anyway" when pointing me to the forum. I've come across this forum numerous times and seen tons of blank replies and dead-end threads, particularly with the spartan-3e which is a product I paid for and since it's marketed to developers, I would expect to see a plethora of *functional* easy-to-use open-source designs for it. There are indeed many designs on xilinx's page, but few of them work without crashing the toolchain, none of them work from one version of ISE/EDK to another, and they are incomplete or limited (i.e. TCP runs for 6 hours, or VGA limited to 256 colors, etc ). So the kick in the butt goes to the guy that said "Personally I read your request for help, and thought “oh another programmer” and turned the page." and all of the others with that attitude who don't give a hoot.

 

Bassman, I can definitely see how the stakes are high with hardware design. I have seen many boards, particularly in the early days of pcs, that had "aftermarket" paches done with wire wrap and can only wonder how much that must have cost the companies to have to rework those boards. I briefly interned as a hw tech in a startup and I know how costly it was to print new revs of boards. If I came in here and asked why some board I designed doesn't work, why I can't run some sensitive trace right next to an oscillator, or why my circuit doesn't work without a shield around the RF components, I would fully understand how people would be irritated and not want to do my job for me.

 

I will emphasize that I'm not building a board, at least not one that exists outside of my spartan. I know that VHDL creates signals and ports in and out of the board, but my board is finished and should theoretically work, is marketed in a way that suggests it works, and yet it doesnt. If I tried to solder a PHY and MII into the FPGA, then I would bear the burden of ensuring the design works. But someone already did that. The traces go to the PHY. I paid for the board and tools, somewhere in the broken toolchain is the core to make it work, and yet I'm still supposed to build it myself as if I were adding an entirely new hw component.

 

I absolutely will post the solution here, if and when I figure it out. I did find a tcp stack from queensland university. If I can get that design to work with the spartan-3e I will post teh whole directory here. Not that it matters to anyone, but I'm not really looking into designing a piece of hardware. I just want to use the FPGA to do something faster that existing software is very well capable of. If it can help people out and give them a place to start, I'm sure people will improve on it and some of them will repost their solutions. Just for the sheer number of people asking for TCP/IP, clearly this would be a great contribution. I will keep you posted.

 

 

0 Kudos
eteam00
Professor
Professor
9,294 Views
Registered: ‎07-21-2009

Bob, no I dont think you deserve a kick in the butt.

I agree, and I don't think the forum deserves a kick in the butt either.  I don't care if you rip on me.  You ripped on everyone, and that's what provoked my response.  That's a hotbutton for me.  You came here to visit, and 30 seconds later (figuratively speaking) you were tossing hand grenades.

So the kick in the butt goes to the guy that said "Personally I read your request for help, and thought “oh another programmer” and turned the page." and all of the others with that attitude who don't give a hoot.

By the time that was written and posted, you had already dug yourself a considerable hole -- and the fellow who wrote that comment is entirely blameless in this drama.

 

In the immortal words of Ed Masry [Erin Brokovich movie]:

Do they teach beauty queens to apologize? Because you suck at it!

Nothing said in this thread is going to shake your world.  Maybe this helps you to understand how I (and others) see you.  Maybe not.  You started off on the wrong foot, but there's nowhere to go but up from here (and please don't test this assertion!).  If you want to start over again, that's not a bad idea.  Most of us have short memories and attention spans (certainly applies to me).  But first, you'll need to stop digging.

 

- Bob Elkind

SIGNATURE:
README for newbies is here: http://forums.xilinx.com/t5/New-Users-Forum/README-first-Help-for-new-users/td-p/219369

Summary:
1. Read the manual or user guide. Have you read the manual? Can you find the manual?
2. Search the forums (and search the web) for similar topics.
3. Do not post the same question on multiple forums.
4. Do not post a new topic or question on someone else's thread, start a new thread!
5. Students: Copying code is not the same as learning to design.
6 "It does not work" is not a question which can be answered. Provide useful details (with webpage, datasheet links, please).
7. You are not charged extra fees for comments in your code.
8. I am not paid for forum posts. If I write a good post, then I have been good for nothing.
eteam00
Professor
Professor
9,286 Views
Registered: ‎07-21-2009

Did you know that just 10 minutes of writing angry posts have the same health benefits as a 1 hour walk?

Well, thank you for that, Adrian.  I think I'm fully caught up on my exercise through the middle of next Spring, at least!

Any chance you might know what could be the health benefits of reading angry posts?

 

- Bob Elkind

SIGNATURE:
README for newbies is here: http://forums.xilinx.com/t5/New-Users-Forum/README-first-Help-for-new-users/td-p/219369

Summary:
1. Read the manual or user guide. Have you read the manual? Can you find the manual?
2. Search the forums (and search the web) for similar topics.
3. Do not post the same question on multiple forums.
4. Do not post a new topic or question on someone else's thread, start a new thread!
5. Students: Copying code is not the same as learning to design.
6 "It does not work" is not a question which can be answered. Provide useful details (with webpage, datasheet links, please).
7. You are not charged extra fees for comments in your code.
8. I am not paid for forum posts. If I write a good post, then I have been good for nothing.
0 Kudos
barriet
Xilinx Employee
Xilinx Employee
9,267 Views
Registered: ‎08-13-2007

Well this has certainly been an interesting thread so far... ;)

 

The subject of IP stacks is a seemingly frequent one. Here's a recent thread if you hadn't seen it:

http://forums.xilinx.com/t5/Connectivity/TCP-IP-directions/m-p/111782

 

 

There are also quite a few projects or examples which use the common Xilinx/Digilent Spartan-3E Starter Kit (S3ESK):

http://www.xilinx.com/products/boards/s3estarter/reference_designs.htm
http://whoyouvotefor.info/ethernet.html (Ethernet Open Core integration on Spartan 3E Starter Kit)
http://www.frank-buss.de/vhdl/spartan3e.html
http://www.fpga.synth.net/pmwiki/pmwiki.php?n=Main.HomePage
http://www.ccm.ece.vt.edu/twiki/bin/view/Main/Spartan3Radio
http://read.pudn.com/downloads150/doc/project/646959/24128_Howto%20setup%20uClinux%20for%20the%20Spartan%203E%20Starter%20kit_artikel.pdf (Howto setup uClinux for the Spartan 3E Starter Kit)
http://www.skippari.net/projects/?p=187 (Spartan 3E starter kit logic analyzer) 

I'm sure there's quite a few more out there - that's just what I handy in my notes from looking before.

 

bt

0 Kudos
bhfletcher
Voyager
Voyager
9,256 Views
Registered: ‎10-01-2007

In addition to what bt has shared, Avnet also creates a number of example designs which might prove useful.  Unfortunately, I'm not sure that these show up with the search engines.  I see we have a TCP/IP design using MicroBlaze, the Ethernet Lite MAC, and the lwip stack for the Spartan-3E Starter Kit:

  http://www.em.avnet.com/xlxs3estarterkit --> Support Files & Downloads --> S3500E Network Performance Example Emaclite

 

Unfortunately, our design is out-of-date.  This kit has been around for several years, and we have not been actively updating the designs for this kit, so you'll see the latest one is based on EDK 9.2.

 

If you would like to see something more recent with v12 software, then you could look at the examples available for the Spartan-6 LX16 Evaluation Kit or the Spartan-6 LX150T Development boards.  These are also examples using MicroBlaze on the FPGA with a MAC core and a software stack.

  http://www.em.avnet.com/spartan6lx16-evl --> Support Files & Downloads

  http://www.em.avnet.com/spartan6lx150t-dev --> Support Files & Downloads

 

In general, you can browse what Avnet has to offer by going to www.em.avnet.com/drc --> Xilinx

 

Bryan

 

bassman59
Historian
Historian
9,240 Views
Registered: ‎02-25-2008

 


@xilinx_temp_9099 wrote:

Bob, no I dont think you deserve a kick in the butt. And apparently I misunderstood you when I said that you "knew the answer anyway" when pointing me to the forum. I've come across this forum numerous times and seen tons of blank replies and dead-end threads, particularly with the spartan-3e which is a product I paid for and since it's marketed to developers, I would expect to see a plethora of *functional* easy-to-use open-source designs for it.

 


 

Those open-source designs that target the (aging) Spartan 3E starter kit would have to be developed by people interested in creating open-source designs that target that board. Open source is, at its core, all about scratching an itch. For whatever reason, "The community" hasn't contributed many designs for this board. I realize that this doesn't meet your expectations. This is not Xilinx' fault, nor is it the fault of the regulars on this forum. It's just the way that it is.

 

BTW, I have that board, and I use it to run that nifty logic analyzer linked to in timpe's post. Beats the heck out of digging out and finding bench space for the HP1661.

----------------------------Yes, I do this for a living.
0 Kudos
9,232 Views
Registered: ‎12-18-2010

Thanks guys. I will look into those links and whenever I get somewhere with this I will post whatever I have. The queensland IP stack looks promising so I will try working with that first.

 

Bassman, If there were another eval board with a 1gbe or 100gbe that I knew for sure worked and was under $500 I would buy it, but I dont want it to turn into another fiasco like this one did.

 

To the hardcore hardware engineers among you that resent a n00b wanting free code: I'm sure none of you ever use the free reference designs or examples that are included in a hardware vendor's datasheet. That would be cheating. :smileyhappy:

 

Merry Christmas everyone.

 

0 Kudos
bassman59
Historian
Historian
9,226 Views
Registered: ‎02-25-2008

 


@xilinx_temp_9099 wrote:

Thanks guys. I will look into those links and whenever I get somewhere with this I will post whatever I have. The queensland IP stack looks promising so I will try working with that first.

 

Bassman, If there were another eval board with a 1gbe or 100gbe that I knew for sure worked and was under $500 I would buy it, but I dont want it to turn into another fiasco like this one did.

 


 

 

You're not going to find a board that supports gigabit ethernet for under a grand, as it likely has a Virtex-family FPGA and those aren't cheap. As for whether it supports what you want to do ... can't help you for reasons I've stated.

 

 

 


To the hardcore hardware engineers among you that resent a n00b wanting free code: I'm sure none of you ever use the free reference designs or examples that are included in a hardware vendor's datasheet. That would be cheating. :smileyhappy:

 

 


 

If you opened up the Core Generator, you'll see that Xilinx does indeed provide a wealth of free cores that you can use. Things like memory interfaces, UARTs, SPI and I2C interfaces, lots and lots of stuff. Whether they are useful for production designs is an exercise that's unfortunately left up to the engineer (short answer: generally, no, they are not useful for production designs).

 

But even though Xilinx provides a lot of examples, they cannot possibly provide code that solves everyone's problems. After all, that is the job of the design engineer -- to solve problems. And you're still missing the point: you have a problem that nobody else has shown interest in solving (or if they have solved it, they keep it proprietary for reasons already discussed). So, if you want the problem solved, be an engineer and do it. And, after doing it, if you're so inclined, publish it on OpenCores or wherever.

 

Good luck.

----------------------------Yes, I do this for a living.
0 Kudos
awillen
Mentor
Mentor
9,211 Views
Registered: ‎11-29-2007

 


Bassman, If there were another eval board with a 1gbe or 100gbe that I knew for sure worked and was under $500 I would buy it, but I dont want it to turn into another fiasco like this one did.

 

Is the board you're currently using not working? If it is defect, then you should return it.

 

 

Adrian



Please google your question before asking it.
If someone answers your question, mark the post with "Accept as solution". If you see a particularly good and informative post, consider giving it Kudos (the star on the left).
0 Kudos
awillen
Mentor
Mentor
9,208 Views
Registered: ‎11-29-2007

 


Whether they are useful for production designs is an exercise that's unfortunately left up to the engineer (short answer: generally, no, they are not useful for production designs).

I'm curious: why not?

 



Please google your question before asking it.
If someone answers your question, mark the post with "Accept as solution". If you see a particularly good and informative post, consider giving it Kudos (the star on the left).
0 Kudos