RE: New project...PCI based servo control board




GEEZ... I no sooner get my last message and you have it designed...:)  I
don't have time for a detailed response now (I need to do some real work
today..:), but with a quick read I can say I pretty much agree with your
thinking.  I'd like to consider a serial expansion bus..... But ribbon cable
is pretty cheap (if not robust).  Your price targets look reasonable to
me... Usual caveats apply..:)

Thanks for brain cycles... I will reflect / reply more on this more tonight.

-Craig




Craig wrote:

> Hi John,
>
> Sounds like we are thinking along the same lines...
> And yes, I'm certainly open to collaboration.

Great!

> At this stage, I'm envisioning a single PCI card,
> with an architecture that is very tightly coupled
> to the primary CPU. That's why I've mostly considered
> the PCI bus, despite the complexity and cost drawbacks.

> Most definitely FPGA based, because I'm sure we won't
> get it "right" the first time, at least with regard to feature set.

FPGA is the cheapest and smallest solution.  I'm
somewhat concerned about long term availability.
For this type of application, the design lifetime
could be many years.  I don't want to design around
a part that will go obsolete in a year or two.  I
think that can be avoided if we choose the right FPGA,
and the other advantages of FPGAs are too much to
pass up.

> Actually, I guess I'm thinking that if we can get the
> initial board design completed with just a basic set
> of functions implemented, it could "grow" over time to support more 
> advanced features.

Good plan.

> Initially I was thinking of primarily including the functionality of 
> the Servo to Go ISA board, with stepper support being something for 
> the future.

I'm strongly in favor of providing pulse outputs from
the very beginning.  Using Geckos, pulses can drive
either servo or stepper motors.  And pulse outputs are
a purely digital, FPGA friendly solution, unlike D/A converters.  To meet
the full range of applications, we'll need both.

If I understand EMC correctly, the update rate for the
servo loop is 1KHz.  At that frequency, perhaps an all
digital (FPGA) system could make 20KHz or higher PWM
waveforms that are filtered to generate the analog
outputs. Then no D/A converters would be needed.  A
chunk of FPGA gates could be either a pulse generator
for steppers, or a PWM generator for analog output.
Only the output signal conditioning would need to
change.

> As you probably know, the PCI bus (and associated drivers) are fairly 
> complex, at least if one wants to do a full implementation.  Even 32 
> bit, 33MHz target only VHDL code for a FPGA instantiation is pretty 
> pricey, but I'm working on some options.

I know only enough about PCI to know that I can't possibly
do a PCI design on my own.  PnP and everything else are
way beyond me.

On the other hand, my strengths are in the area of the
control hardware - D/A converters, digital I/O, pulse generators, encoder
counters, etc., plus the interface between TTL or CMOS logic levels and the
real world. Noise, isolation, voltage swings, etc.  Digital inputs should be
isolated and I personally prefer to run 24V thru the switches instead of 5V.
Outputs need to be relays, either solid state or electro-mechanical.
Encoders need input buffers, power supplies, and filtering.  And so on....

> If we can afford a large enough FPGA, there will be plenty
> of room for stepper pulse generators and GP I/O.  As you pointed out, 
> there a large number of trade offs to be made with regard to how many 
> features we try to include on single board, but that's the fun of a 
> project like this.

> I think it's fair to say I'm pretty firmly in the "single board" camp, 
> as I really want a solution that is tightly coupled to the 
> motherboard. But having said that.. I guess we could consider 
> "daughter" cards....:)

The signal conditioning stuff will probably force a
two board solution.  Relays switching 120V don't belong
inside a PC, and there isn't enough space on the back of
a single PC slot for all the I/O wiring if everything is inside.  Maybe the
bus interface, FPGA, etc., should be on the PC card, with a cable (50 pin
ribbon or D-shell?) coming out of the PC to an interface card with opto-
isolators for digital input, relays or solid state relays for digital
output, and terminal blocks for the analog and pulse outputs and encoder
inputs?

The more I think about it, the more I think there are
really THREE parts to the project.  (Although they may
still wind up on only two boards.)

The central part is the basic control hardware.  This
is a mixture of D/A converters, counters, output registers
and input ports.  Except for the D/A converters, it's pure digital and would
fit in a decent FPGA, and even the converters are only a chip or two (or use
PWM and eliminate the converters).  It would definitely fit inside the PC.
With a largish FPGA, we could provide lots of inputs, outputs, counters, and
so on, at very low cost per channel.

On one side of the control hardware is the bus interface.
You are strongly in favor of PCI, for some very good
reasons.    There are also reasons to favor other
interfaces, and I think it would be really nice if the interface was
sufficiently divided from the actual control hardware that different
interfaces could be used.

Finally, on the other side of the control hardware is the interface to the
machine.  This doesn't belong inside the PC case, for a number of reasons.
It's also where a large part of the cost is hidden.  The cost to provide 8,
16, or even more TTL level digital inputs or outputs is very low. But
connecting those TTL signals to the outside world is more expensive.
Opto-isolators and the associated caps, resistors, and terminal blocks add
up quickly.  Using OPTO-22 type I/O blocks is easier, but even more
expensive. For outputs, the OPTO-22 blocks make more sense, but simple
electromechanical relay may still be cheaper if you can accept their
limitations.

I'd like to propose a two board system.  Board #1 contains
the bus interface and FPGA based hardware.  There could be
ISA and PCI versions that plug into a PC, and/or ethernet
or parallel port versions that mount outside the PC and
require external power supplies.  The common denominator
for all versions would be the connector to board #2.
Board #1 is a high tech board, with one or more fine
pitch FPGA chips, and possibly a fast, wide, complex
bus interface.  I would expect that people would want to
buy it already assembled.  Hopefully the price would be
under $200 for the PCI version, $150 for the ISA or
parallel port version, and maybe $200-250 for the ethernet version.  I'm
basing these prices on Jon's price for the universal stepper controller.
This board would have a bigger FPGA (which are getting cheaper as time goes
by), but would be smaller and not have the terminal blocks or I/O circuits.

The connector to the I/O board would be a 60 pin ribbon
cable or some other high pin count connection.  With 60
pins, board #1 could provide a mix similar to this:

power and ground - 2 or 3 ground pins, +5V, +12V, -12V
total 5-6 pins

6-8 axis outputs - 2 pins per output - either step and direction, or PWM
analog, determined by the FPGA program total 12-16 pins.

6-8 axis encoder inputs - 2 pins per input - either quadrature for real
encoders, or step/dir for open loop systems, determined by the FPGA program.
total 12-16 pins

24 digital I/O lines - 1 pin per line, input or output determined by FPGA
program total 24 pins

Board #2 is the interface board.  I see this as a low-tech design that
anyone could build.  The user would buy a bare board and stuff it to suit
their needs.  It would have space for the signal conditioning and terminal
blocks for all the functions on the 60 pin cable, but the user would build
it to suit their exact needs.  There might even be 2 versions of the PC
board - one limited to say 4 axis and 16 digital I/O, for a smaller, cheaper
bare board.  The other design would be for hexapod folks, with all 8
channels supported.  The bare board would probably cost $50-100, depending
on quantity.  The parts cost would depend on exactly how much I/O you need.

Comments?  Suggestions?  Flames?

John Kasunich












Date Index | Thread Index | Back to archive index | Back to Mailing List Page

Problems or questions? Contact