OpenCores
no use no use 1/1 no use no use
PCI Core without Wishbone Interface?
by Unknown on Aug 1, 2004
Not available!
Is it easy to modify this PCI Bridge core to not bridge to a wishbone
interface? I want to connect my project directly into the PCI bus
without worrying about creating the bus controller, and I don't want
to pay Xilinx $2000 to use their IP for only 1 project for a year;
thats out rageous.

To me it is a total waste of space on the chip if you go
PCI->Wishbone->End Device, after all you need two wishbone bus
interfaces back to back.

If anyone has any tips for modifying the PCI bridge core to do what
I'm looking for, I'd really like to hear your suggestions!

Thanks

Dan
PCI Core without Wishbone Interface?
by Unknown on Aug 2, 2004
Not available!
Me too actually!

I am working on just using the pci controller myself so if anyone has any
useful tips now that i am starting, please do tell.

Thank you

On Sun, 1 Aug 2004, Daniel R Guisinger wrote:

Is it easy to modify this PCI Bridge core to not bridge to a wishbone interface? I want to connect my project directly into the PCI bus without worrying about creating the bus controller, and I don't want to pay Xilinx $2000 to use their IP for only 1 project for a year; thats out rageous. To me it is a total waste of space on the chip if you go PCI->Wishbone->End Device, after all you need two wishbone bus interfaces back to back. If anyone has any tips for modifying the PCI bridge core to do what I'm looking for, I'd really like to hear your suggestions! Thanks Dan _______________________________________________ http://www.opencores.org/mailman/listinfo/pci


PCI Core without Wishbone Interface?
by AustinFranklin on Aug 2, 2004
AustinFranklin
Posts: 17
Joined: Sep 12, 2008
Last seen: Jan 26, 2021
Dan,

I don't want
to pay Xilinx $2000 to use their IP for only 1 project for a year;
thats out rageous.


$2000 is More than reasonable for a PCI core, in fact, it's peanuts,
especially given how much development work went into it. If you were a
developer of PCI cards, and used their PCI core that took hundreds of
manhours of development time to implement, in a product that you sold a
thousand of and made $300,000 for, the cost of the core insignificant. It's
not their fault or responsibility that you only want to use it for one
project that is not (I gather from what you've said) of any commercial
value. What incentive do they have to simply "give" it to you? They give a
LOT of IP away. Aren't the development tools for most of their parts
readily available for free on the web?

If it is not worth the $2k to you (and I certainly understand that, if you
are simply wanting to use it for a personal project), of course, that's
fine...but, so you get a prospective as to how much work it is to develop a
PCI core (and you are fortunate that there are now MANY examples out there
that you could copy from, when the Xilinx PCI core was first PCI core
developed, there were NO other examples to copy, it had to be done from
scratch), I suggest you consider spending the time to develop one of your
own...which would probably take you about 1/20th the time it took to develop
the Xilinx PCI core in the first place. That might give you a better idea
of how much work goes into developing such a thing, and it certainly would,
IMO, be a very beneficial educational experience if you want to design FPGA
code as a profession.

Now, as far as modifying the OpenCores PCI core to not use the Wishbone
interface, I suggest you simply download a copy of the core, and look at it.
Also helpful is the PCI spec, as it has the PCI protocol defined in it.
Between those two, you could figure out rather easily how much work it is to
do what you want (which is undefined from your post). BUT...keep in mind,
that ANY PCI core is going to have to have a back end interface, so whether
it's Wishbone or one of your own definition, it HAS to have one. The
back-end has to say when it's taken data, and when data is available to be
taken, and where the data comes from and goes to.

My suggestion would be to simply use the Wishbone interface. It will
probably be far less work in the long run.

Regards,

Austin


PCI Core without Wishbone Interface?
by Unknown on Aug 2, 2004
Not available!
I wasn't seeking someone to respond like a complete ass and treat me like a little kid. I said $2000 PER PROJECT PER YEAR, yes, Xilinx charges a recurring fee license, is out rageous. If it were a matter of throwing Xilinx a 1-time $2000 fee I'd probably do it. And yes I do pay for subscriptions, I pay for MSDN. But you know what, thats because I want updates. I'm free to use it from Microsoft as long as I want without paying more as long as I'm satisfied with the version I already own. So I have plenty of ground to stand on when I say I disagree with Xilinx's licenses. At that rate one could easily pay to have someone custom code it within a matter of 2-3 years subscription. And yes, I have the PCI specs, and I have read through the PCI bridge source; however the core is quite large, knowing what needs to be changed once Wishbone is pulled off is difficult at first glance. So back to the original question, is there any kind person out there looking to have a constructive conversation on how to remove the wishbone interface from the PCI Core and what steps are needed to make it work once WB has been removed? -Dan ----- Original Message ----- From: Austin Franklinaustin@d...> To: Date: Mon Aug 2 04:03:59 CEST 2004 Subject: [pci] PCI Core without Wishbone Interface?
Dan,

> I don't want
> to pay Xilinx $2000 to use their IP for only 1 project for a

year;
> thats out rageous.

$2000 is More than reasonable for a PCI core, in fact, it's
peanuts,
especially given how much development work went into it. If you
were a
developer of PCI cards, and used their PCI core that took hundreds
of
manhours of development time to implement, in a product that you
sold a
thousand of and made $300,000 for, the cost of the core
insignificant. It's
not their fault or responsibility that you only want to use it for
one
project that is not (I gather from what you've said) of any
commercial
value. What incentive do they have to simply "give" it to
you? They give a
LOT of IP away. Aren't the development tools for most of their
parts
readily available for free on the web?
If it is not worth the $2k to you (and I certainly understand that,
if you
are simply wanting to use it for a personal project), of course,
that's
fine...but, so you get a prospective as to how much work it is to
develop a
PCI core (and you are fortunate that there are now MANY examples
out there
that you could copy from, when the Xilinx PCI core was first PCI
core
developed, there were NO other examples to copy, it had to be done
from
scratch), I suggest you consider spending the time to develop one
of your
own...which would probably take you about 1/20th the time it took
to develop
the Xilinx PCI core in the first place. That might give you a
better idea
of how much work goes into developing such a thing, and it
certainly would,
IMO, be a very beneficial educational experience if you want to
design FPGA
code as a profession.
Now, as far as modifying the OpenCores PCI core to not use the
Wishbone
interface, I suggest you simply download a copy of the core, and
look at it.
Also helpful is the PCI spec, as it has the PCI protocol defined in
it.
Between those two, you could figure out rather easily how much work
it is to
do what you want (which is undefined from your post). BUT...keep in
mind,
that ANY PCI core is going to have to have a back end interface, so
whether
it's Wishbone or one of your own definition, it HAS to have one.
The
back-end has to say when it's taken data, and when data is
available to be
taken, and where the data comes from and goes to.
My suggestion would be to simply use the Wishbone interface. It
will
probably be far less work in the long run.
Regards,
Austin



PCI Core without Wishbone Interface?
by Unknown on Aug 2, 2004
Not available!
I don't need to waste my time giving advice to some ungrateful sod, when I
could be doing work that I get paid quite well for, or I could be spending
time with my family. It's behavior like yours that makes me not want to
bother. So, do your self a favor and don't behave so inappropriately. I
was hardly being disrespectful to you, and certainly didn't deserve your
entirely disrespectful reply.

Then don't reply AT ALL. Both your replies are totally insulting and have no
place on a list like this.

John
PCI Core without Wishbone Interface?
by AustinFranklin on Aug 2, 2004
AustinFranklin
Posts: 17
Joined: Sep 12, 2008
Last seen: Jan 26, 2021
Dan,

I wasn't seeking someone to respond like a complete ass and treat me
like a little kid.


If you took my reply as treating you like a little kid, I was not, and it's
not me whose being the "complete ass" here. It was treating you like
someone who, along with asking a question about the Wishbone core, IMO,
unreasonably "complained" about the price of buying a piece of, IMO,
reasonably inexpensive IP. This, to me, means you don't understand what is
involved in creating and supporting such a thing, and I was suggesting that
if you wanted to do FPGA work as a professions (it appears that FPGA coding
is not your profession, please correct me if I am wrong) you would benefit
from a better understanding, and suggesting a way for you to achieve that.
If that is not your goal, that's of course fine, then my suggestion doesn't
apply.

I don't need to waste my time giving advice to some ungrateful sod, when I
could be doing work that I get paid quite well for, or I could be spending
time with my family. It's behavior like yours that makes me not want to
bother. So, do your self a favor and don't behave so inappropriately. I
was hardly being disrespectful to you, and certainly didn't deserve your
entirely disrespectful reply.

I said $2000 PER PROJECT PER YEAR, yes, Xilinx charges a recurring fee
license, is out rageous.


That's your opinion, and I disagreed. I'm entitled to disagree, like it or
not. Someone can disagree with you and that doesn't necessitate your above
comment.

If it were a matter of throwing Xilinx a 1-time
$2000 fee I'd probably do it.


They have BOTH one use licenses and unlimited use licenses:

"There are site- and project-based versions of the license that vary only in
the scope of usage of the core. The site version permits unlimited use of
the core within a specific company site, while the project version limits
use to within a single project (which may include more than one site)."

It appears to me that you buy the one use license, and you can use it for
that one project ad-infinitum.

Also, you might consider looking into the PCI eval kits from Avnet and other
sources, and it comes with the core, and they are reasonably cheap. The
core is in the form of a netlist and a constraints file. As long as the
technology is the same, the core should be able to be re-used in another
part, with a new constraints file. But, the obvious thing is to just buy a
board that you can make good recurring use of for your projects, as changing
the constraints file (placement and pinout) may not make timing in a new
implementation.

So back to the original question, is there any kind person out there
looking to have a constructive conversation on how to remove the
wishbone interface from the PCI Core and what steps are needed to
make it work once WB has been removed?


Believe me, I was being kind, and I DID give you a constructive suggestion,
and did answer your question. I suggest you go back and see what I said.

You also failed to mention what you needed...target, burst, master etc., and
what your back end needs to interface to. Without that, it is difficult to
ascertain what would work for you.

There is nothing wrong with asking (and I did not begrudge you that at all),
but you did more than simply ask this question, and you know that.

Austin


PCI Core without Wishbone Interface?
by Unknown on Aug 2, 2004
Not available!
Austin, Then we can agree to disagree. I'm not looking for a fight. I wasn't trying to be a jerk right back; however felt you unfairly targetted me in the first one just because you and I disagree on what is a fair price to pay for something. I actually am working on a Verilog project right now for FPGA that does pipelined codec conversion (G.726, GSM, etc); so whether you beleive it or not, I do know how complicated it is to get timing correct... one end of my design connects to a T1 controller with both a PCM Highway and a Intel style bus, both of which I've had to design and test against published transactional timing diagrams. My point on the Xilinx license is this: They sell hundreds of licenses a year easily. The one project license is $2000, the unlimited license is $7000. That I don't disagree with. But that is still a one year license. Each year you have to renew, I talked to their rep. I disagree with forcing someone to renew a license, even if all they are doing is continuing to produce a previous year's work. That is my major disagreement. I don't like hidden fees. What will it cost to make a project complete? With Xilinx its a moving number based on how long you plan on producing it. Say I have a need for a 2.1 compliant card, and never needed an upgrade to 2.2. Where is the justification for paying for a continous update when things worked fine before. But enough with arguing over what is just and injust as far as licenses go, on to what this whole thread was about because I'm sure we'd both like to put this behind us. In regards to your question, its for a PCI card, so it needs to be both target and master (target for configuration mainly). It needs mastering and burst capabilities to transfer from a 512K onboard cache to system memory. The back end bus is actually all custom, thats why I'm not in need of a wishbone interface; i'm not connecting to a previously designed core. Everything here is custom designed, and space on the 400K gate is becoming a luxury. Therefore, it makes more sense to tie into the PCI bus without worrying about two wishbone controllers (well, 4 really if you double up masters and slaves). I guess really what its doing is besides for configuration registers, its transfering data back and forth between the on-board buffer memory and system memory. Not a complicated design, it needs to generate a system interrupt at 1KHz (we are plugging into an open source PBX system called Asterisk which uses the interrupts for timing conferencing as well as knowing when a frame of data has been transfered) Sorry about the earlier remarks, I didn't take your previous comment as you expected and lashed back at you. -Dan ----- Original Message ----- From: Austin Franklinaustin@d...> To: Date: Mon Aug 2 07:08:57 CEST 2004 Subject: [pci] PCI Core without Wishbone Interface?
Dan,

> I wasn't seeking someone to respond like a complete ass and

treat me
> like a little kid.

If you took my reply as treating you like a little kid, I was not,
and it's
not me whose being the "complete ass" here. It was
treating you like
someone who, along with asking a question about the Wishbone core,
IMO,
unreasonably "complained" about the price of buying a
piece of, IMO,
reasonably inexpensive IP. This, to me, means you don't understand
what is
involved in creating and supporting such a thing, and I was
suggesting that
if you wanted to do FPGA work as a professions (it appears that
FPGA coding
is not your profession, please correct me if I am wrong) you would
benefit
from a better understanding, and suggesting a way for you to
achieve that.
If that is not your goal, that's of course fine, then my suggestion
doesn't
apply.
I don't need to waste my time giving advice to some ungrateful sod,
when I
could be doing work that I get paid quite well for, or I could be
spending
time with my family. It's behavior like yours that makes me not
want to
bother. So, do your self a favor and don't behave so
inappropriately. I
was hardly being disrespectful to you, and certainly didn't deserve
your
entirely disrespectful reply.
> I said $2000 PER PROJECT PER YEAR, yes, Xilinx charges a

recurring fee
> license, is out rageous.

That's your opinion, and I disagreed. I'm entitled to disagree,
like it or
not. Someone can disagree with you and that doesn't necessitate
your above
comment.
> If it were a matter of throwing Xilinx a 1-time
> $2000 fee I'd probably do it.

They have BOTH one use licenses and unlimited use licenses:
"There are site- and project-based versions of the license
that vary only in
the scope of usage of the core. The site version permits unlimited
use of
the core within a specific company site, while the project version
limits
use to within a single project (which may include more than one
site)."
It appears to me that you buy the one use license, and you can use
it for
that one project ad-infinitum.
Also, you might consider looking into the PCI eval kits from Avnet
and other
sources, and it comes with the core, and they are reasonably cheap.
The
core is in the form of a netlist and a constraints file. As long as
the
technology is the same, the core should be able to be re-used in
another
part, with a new constraints file. But, the obvious thing is to
just buy a
board that you can make good recurring use of for your projects, as
changing
the constraints file (placement and pinout) may not make timing in
a new
implementation.
> So back to the original question, is there any kind person out

there
> looking to have a constructive conversation on how to remove

the
> wishbone interface from the PCI Core and what steps are needed

to
> make it work once WB has been removed?

Believe me, I was being kind, and I DID give you a constructive
suggestion,
and did answer your question. I suggest you go back and see what I
said.
You also failed to mention what you needed...target, burst, master
etc., and
what your back end needs to interface to. Without that, it is
difficult to
ascertain what would work for you.
There is nothing wrong with asking (and I did not begrudge you that
at all),
but you did more than simply ask this question, and you know that.
Austin



PCI Core without Wishbone Interface?
by AustinFranklin on Aug 2, 2004
AustinFranklin
Posts: 17
Joined: Sep 12, 2008
Last seen: Jan 26, 2021
Dan,

My point on the Xilinx license is this: They sell hundreds of
licenses a year easily.
The one project license is $2000, the unlimited license is $7000.
That I don't disagree
with. But that is still a one year license. Each year you have
to renew, I talked to
their rep.


I believe that your information is in error. I believe that once you buy a
version of the core, for your one project use, you have unlimited use of
that core, and only your ACCESS to the core on the Xilinx web site is
"terminated" after one year, not your ability to use what you already have.
I *may* be wrong, and I will find out.

In regards to your question, its for a PCI card, so it needs to
be both target and
master (target for configuration mainly).


As a note, though target is basically the same as configuration, there are
differences. You may also need the target to program the DMA (see below).

It needs mastering and
burst capabilities to
transfer from a 512K onboard cache to system memory.


Most PCI cores (including the Xilinx one), though they provide master
capability, they do not provide the DMA. The DMA is typically "custom", so
keep in mind, you may have to provide that logic as well.

I guess really what its doing is besides
for configuration
registers, its transfering data back and forth between the
on-board buffer memory
and system memory.


What OS you are using may influence your DMA architecture. I have typically
made scatter/gather DMA engines (the PLX-9080 offers a rather good DMA
architecture IMO), with the DMA linked list table kept in on-board memory,
and that increases speed significantly. NT typically only gives you 4k
transfers at a time, so for 512k, you would need 128 entries.

Also, what is your data rate? Do you need to run 33 or 66, and 32 or 64
bits? Keep in mind, the timing requirements for 66MHz PCI are difficult,
and you will need a rather fast speed grade. What technology FPGA are you
considering? Sounds like a Virtex 400?

Sorry about the earlier remarks, I didn't take your previous
comment as you
expected and lashed back at you.


Apology accepted.

Regards,

Austin


PCI Core without Wishbone Interface?
by Unknown on Aug 2, 2004
Not available!

Most PCI cores (including the Xilinx one), though they provide
master
capability, they do not provide the DMA. The DMA is typically
"custom", so
keep in mind, you may have to provide that logic as well.


Ok, great to know.

What OS you are using may influence your DMA architecture. I have
typically
made scatter/gather DMA engines (the PLX-9080 offers a rather good
DMA
architecture IMO), with the DMA linked list table kept in on-board
memory,
and that increases speed significantly. NT typically only gives you
4k
transfers at a time, so for 512k, you would need 128 entries.


Ok, yeah, we were targetting Linux primarly, but wanted to be able to operate on
Windows as well. Our competitor's board doesn't do the codec work and transmits in
4-dword blocks (seems inefficient to me, *shrug*) using bus mastering and bursting.

Also, what is your data rate? Do you need to run 33 or 66, and 32
or 64
bits? Keep in mind, the timing requirements for 66MHz PCI are
difficult,
and you will need a rather fast speed grade. What technology FPGA
are you
considering? Sounds like a Virtex 400?



We are targetting a Spartan 3 - 400 on a 33MHz bus. Part of the memory is actually
being used for internal buffers, the buffer that transfers will probably more likely be
128K tops....64K down and 64K up. The total transfer per second in each direction is
16.384mbps (bits).

PCI Core without Wishbone Interface?
by AustinFranklin on Aug 2, 2004
AustinFranklin
Posts: 17
Joined: Sep 12, 2008
Last seen: Jan 26, 2021
Hi Dan,

> Ok, yeah, we were targetting Linux primarly, but wanted to be able to

operate on
> Windows as well.


I don't now what the DMA driver requirements are for Linux, with respect to
amount of contiguous memory the driver can acquire. If you (or anyone else)
knows, I'd like to hear about it. As I mentioned, for Windows, you are only
guaranteed 4k blocks, so you need to accommodate this in your DMA, and keep
in mind the physical memory to logical memory mapping. Given your data rate
you stated below, it sounds to me like your driver could reprogram a very
simple DMA for each 4k block (signaled by using an interrupt, to do the
reprogramming of the address/length), instead of making a linked-list
scatter/gather DMA, which is quite a bit more work. Just watch out for
buffer copying in a driver, it *really* slows things up. You want to move
the data as little as possible.

Is there a driver available for the OpenCore PCI core? Also, is there any
DMA support for it well? The DMA is really the critical thing for the
driver IMO.

We are targetting a Spartan 3 - 400 on a 33MHz bus.


Spartan 3 does not work with 5V I/O without using something like
QuickSwitches, and for a 3.3V bus, you need to do some things, and there is
a rather extensive Xilinx application note on this. I'd suggest using a
3.0V (yes, 3.0V) regulator for the VCCO on the banks that are on the PCI
bus...all this is covered in the application work.

Part of the
memory is actually
being used for internal buffers, the buffer that transfers will
probably more likely be
128K tops....64K down and 64K up. The total transfer per second
in each direction is
16.384mbps (bits).


Quite slow, obviously. You could just about get away with a good target
burst implementation, but on an x86 machine, you are at the mercy of the
system PCI bridge, as to how it implements the transfer...as the x86 it self
will only do a 4 qword xfer as a burst, and the bridge may simply execute
that as four PCI target accesses, instead of combine them into one burst,
and you really have little control over that...though there are some
"switches" (not literally, but programmable, in the system PCI bridge chip
that turn this on/off on *some* chip sets) that you can get at, I'd not
recommend messing with that though. But given your data rate of 2M
bytes/second, using a target is certainly an option IMO, though a bit
buss-hoggy, so keep that in mind, as I don't know what else you have going
on simultaneously. Unless you need to do 2M in EACH direction
simultaneously, then, obviously, it's 4M bytes/second...still possibly
do-able with a decent target implementation.

I'm currently doing a superset of what you have outlined, with two 128M
buffers on a PCI-X 133 64 bit bus, except that my data comes from a hard
disk, so I have to keep that bus bandwidth in mind as well...though
typically, PCI-X busses are on different PCI busses, so the disk controller
shouldn't effect my card's PCI bus bandwidth, but it could effect the system
memory bandwidth. I have to transfer from disk to memory, then from memory
to the card, hopefully, using the same memory, as to avoid any buffer
copying. I've really got no choice but to use a scatter/gather DMA, and
keep the DMA table in on-board memory. For the two 128M buffers, that would
take 2 x 128M x 8 bytes/entry (4 address, 4 length) or around 256k bytes per
128M buffer scatter/gather table for 4k buffers.

I hope I've answered some of your questions (or future questions) on a PCI
interface, and given you some *useful* advice. I would be interested to
know how it works out for you.

Regards,

Austin


no use no use 1/1 no use no use
© copyright 1999-2025 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.