From: Marc Jet on
rickman wrote:
> I would love to ditch the FPGA
> and go 100% software, but there is one interface that makes that
> impossible I think. The app configuration data (not FPGA
> configuration) comes over a serial port that has timing requirements
> for read that you can't meet with software.

In the past I have found that more often than not, software can be
very powerful when it's combined with a little bit of hardware.

For example, a single 74-type gate chip can convert a micro without
SPI interface into a working SPI slave. It requires 100% dedication
of the software into the job, and dedicating a few I/O pins as well.

Of course, wonders can't be done with these tricks. But you can get
gate latency out of software loops, and possibly also reduce the
software IO bandwidth.

Post more about your specific problem (here or in comp.arch.embedded)
if you think that there's not too much missing to reach the timing
goal.
From: Nico Coesel on
Rob Gaddi <rgaddi(a)technologyhighland.com> wrote:

>On 5/29/2010 5:22 PM, Symon wrote:
>> On 5/29/2010 9:57 AM, Michael Kellett wrote:
>>> "Symon"<symon_brewer(a)hotmail.com> wrote in message
>>> news:htpkq7$435$1(a)news.eternal-september.org...
>>>> You can't meet the SI requirements of modern sub-ns rise time silicon's
>>>> I/O in 'easy to solder' packages. It's because of the loop area.
>>>>
>>>> BGAs "are harder to probe" made me laugh! I bet you still have a logic
>>>> analyser!
>>> in 100
>>> pin TQFP would be very nice.
>>> But I accept that the number I might buy wouldn't make the supplier very
>>> rich.
>>>
>>> Michael Kellett
>>>
>> Hi Michael,
>>
>> Lighten up? About FPGA design? OK, I'll try! Anyway, it made me laugh,
>> how light do you want? And then you talk about serious work. Talk about
>> bringing the mood down! :-)
>>
>> Anyway, I have a 'scope too. I use it a fair bit, but not as much as
>> LTSpice. I don't have a logic analyser. I have used Chipscope as a last
>> resort, but a simulator like ModelSIM is my preferred tool for catching
>> logic bugs. My spectrum analyser is far more useful than a logic
>> analyser could be.
>>
>> Here's the skinny. You're correct that TQFPs are easier to hand solder
>> than BGAs. Also, they are easier to probe. That's just as well because
>> the SI of a TQFP because of the leads' loop area is poor enough that you
>>
>> Anyway, I don't know your specific circumstances, and I'm sure you have
>> excellent reasons for choosing the parts you do. I would just like to
>> point out that there are some jolly good incentives for ditching leaded
>> parts, and that some investment in decent simulation tools and a toaster
>> oven is the way forward!
>>
>> Cheers, Syms.
>>
>
>The logic analyzer's not because you don't understand what your FPGA is
>doing. The logic analyzer's because you don't understand what the
>complex ASSP your FPGA is hooked up to is doing, because the data sheet
>is both 800 pages long and woefully incomplete. And so you take your
>best guess at how it behaves, throw together a simulation model of it,
>and crank out your logic, but then you put it on the copper and use the
>LA to find out that you vastly misunderstood the bus interface because
>the translation from Japanese to English by way of Sanskrit wasn't clear.
>
>Simulate, but verify.

My idea. Simulation doesn't catch mistakes and/or shortcomings in
models. I do a lot of verification using a LA and many times I find
potential problems even though the system (software + hardware) seems
to be working fine.

Besides, SI is not an issue for all designs. A TQFP package is OK for
many mainstream applications.

--
Failure does not prove something is impossible, failure simply
indicates you are not using the right tools...
nico(a)nctdevpuntnl (punt=.)
--------------------------------------------------------------
From: Symon on
On 6/1/2010 4:58 PM, Rob Gaddi wrote:
>
> The logic analyzer's not because you don't understand what your FPGA is
> doing. The logic analyzer's because you don't understand what the
> complex ASSP your FPGA is hooked up to is doing, because the data sheet
> is both 800 pages long and woefully incomplete. And so you take your
> best guess at how it behaves, throw together a simulation model of it,
> and crank out your logic, but then you put it on the copper and use the
> LA to find out that you vastly misunderstood the bus interface because
> the translation from Japanese to English by way of Sanskrit wasn't clear.
>
> Simulate, but verify.
>

Instead of using chipscope in an FPGA, you layout the board with a
connector for your LA? You probe these signals, possibly differential,
going at 100's of MHz, maybe GHz? Doesn't that mean that your SI is
compromised by having to provide physical access to the signals, so you
have more chance of failure?

Crikey.

Why doesn't borrowing a demo board from your ASSP vendor not solve your
interface debugging problems?

Cheers, Syms.
From: rickman on
On Jun 1, 1:26 pm, Marc Jet <jetm...(a)hotmail.com> wrote:
> rickman wrote:
> > I would love to ditch the FPGA
> > and go 100% software, but there is one interface that makes that
> > impossible I think. The app configuration data (not FPGA
> > configuration) comes over a serial port that has timing requirements
> > for read that you can't meet with software.
>
> In the past I have found that more often than not, software can be
> very powerful when it's combined with a little bit of hardware.
>
> For example, a single 74-type gate chip can convert a micro without
> SPI interface into a working SPI slave. It requires 100% dedication
> of the software into the job, and dedicating a few I/O pins as well.
>
> Of course, wonders can't be done with these tricks. But you can get
> gate latency out of software loops, and possibly also reduce the
> software IO bandwidth.
>
> Post more about your specific problem (here or in comp.arch.embedded)
> if you think that there's not too much missing to reach the timing
> goal.

Sure, I don't mind sharing. I am pretty sure I've explored the
solution space though. This interface has two parallel data bits as
input which are used for data and address. There is a separate single
output for data output. A strobe provides the clock and a command
signal indicates the last clock of the transaction into the
peripheral. The transaction consists of N 2 bit "chunks" of data
followed by M 2 bit "chunks" of address and a single "chunk" of
command. During the command "chunk" the two data bits indicate if the
transaction is a read or a write. After the command "chunk" all
following strobes clock read data out on the output bit, both for
reads and writes. A read transaction does not require the data
phase. The number of "chunks" used for the address for a write is
implied by the peripheral.

The timing problem is that the data in is on the rising edge and the
data out is also on the rising edge with the master accepting on the
falling edge. The first output bit is actually during the command
cycle. So the first output bit has to be presented in less than a
clock cycle from the command flag being asserted and less than 30 ns
from the rising edge of the clock in the command "chunk". In the FPGA
I use the address to drive a mux to select the data for read and
output the lsb directly because of the short timing. The rest of the
addressed register is loaded into an output register to be shifted
out.

The software would have about 100 ns from the last address "chunk"
being clocked, 60 ns from the command flag going high and much less
than 30 ns from the command being clocked to driving the first output
bit. I doubt it can be done at 62.5 MIPs.

Rick
From: -jg on
On Jun 2, 7:25 am, rickman <gnu...(a)gmail.com> wrote:
>
> The software would have about 100 ns from the last address "chunk"
> being clocked, 60 ns from the command flag going high and much less
> than 30 ns from the command being clocked to driving the first output
> bit.  I doubt it can be done at 62.5 MIPs.

What's the data rate ?

We have done a number of systems, where a smallish CPLD takes the ns-
level stuff, and dual-edge etc and converts it into a more micro-
compatible form.

Sometimes that has been parallel, and sometimes SPI/SSC

-jg