DSPRelated.com
Forums

Large (>64KB) PCI transfers with C6415 DSP

Started by jfbuggen March 6, 2002
Hello,

Does anyone has an idea on how I could transfer large
blocks of data (>64KB) through the PCI interface of a C6415 DSP
using the DSP MASTER mode ?

If I split the transfer in 64KB blocks, it will require some
processing by the DSP-CPU (interrupt servicing and PCI interface
config) after each block. This would take a lot of the processing
time of the DSP, leaving less time for my DSP application.

Do you have a solution ?

Thanks

J-F




JF Buggen-

Why can you not use host master mode? You can still initiate via DSP, by
triggering a host interrupt or external host logic -- the host driver or logic
can read memory locations in the DSP code to determine the transfer parameters.

Jeff Brower
DSP sw/hw engineer
Signalogic

On Wed, 06 Mar 2002, "jfbuggen" <> wrote:
>Hello,
>
>Does anyone has an idea on how I could transfer large
>blocks of data (>64KB) through the PCI interface of a C6415 DSP
>using the DSP MASTER mode ?
>
>If I split the transfer in 64KB blocks, it will require some
>processing by the DSP-CPU (interrupt servicing and PCI interface
>config) after each block. This would take a lot of the processing
>time of the DSP, leaving less time for my DSP application.
>
>Do you have a solution ?
>
>Thanks
>
>J-F




Hi Jeff,

In fact, we have developped a PCI card with the C6415 on it, to be
put on a PC motherboard. At the PC side, there's no device able
to perform burst transfers (so host-master mode).
(more info on this at http://www.pcisig.com/reflector/msg01281.html )
Non-bursting host master transfers would be very inefficient.

So, I think that the DSP MASTER mode is required for large transfers.
Even if the host (PC) configures the DSPMA, PCIMA and PCIMC
registers, I think that the end of the transfer will only be
detected by the DSP (through DSPINT), not by the host. We need
thus an interrupt handler at the DSP side to signal the end of
transfer to the host (f.e through INTA). Then, the host (PC)
could configure the next transfer.

What I'm trying to do is to perform this without the interrupt
to the DSP. Is it possible to signal the end of a DSP MASTER
transfer to the host automatically ?

Thanks a lot for your help

J-F --- In c6x@y..., Jeff Brower <jbrower@s...> wrote:
> JF Buggen-
>
> Why can you not use host master mode? You can still initiate via
DSP, by
> triggering a host interrupt or external host logic -- the host
driver or logic
> can read memory locations in the DSP code to determine the transfer
parameters.
>
> Jeff Brower
> DSP sw/hw engineer
> Signalogic
>
> On Wed, 06 Mar 2002, "jfbuggen" <jfbuggen@h...> wrote:
> >Hello,
> >
> >Does anyone has an idea on how I could transfer large
> >blocks of data (>64KB) through the PCI interface of a C6415 DSP
> >using the DSP MASTER mode ?
> >
> >If I split the transfer in 64KB blocks, it will require some
> >processing by the DSP-CPU (interrupt servicing and PCI interface
> >config) after each block. This would take a lot of the processing
> >time of the DSP, leaving less time for my DSP application.
> >
> >Do you have a solution ?
> >
> >Thanks
> >
> >J-F


Eli-

>Did you tried to do it by your self ?

Not yet. We are using C6203 which has X-Bus interface (similar to PCI), and
host master mode works better for large transfers.

Jeff Brower
DSP sw/hw enginer
Signalogic

>-----Original Message-----
>From: Jeff Brower [mailto:]
>Sent: Wednesday, March 06, 2002 7:06 PM
>To: JF Buggen
>Cc:
>Subject: Re: [c6x] Large (>64KB) PCI transfers with C6415 DSP >JF Buggen-
>
>Why can you not use host master mode? You can still initiate via DSP,
>by
>triggering a host interrupt or external host logic -- the host driver or
>logic
>can read memory locations in the DSP code to determine the transfer
>parameters.
>
>Jeff Brower
>DSP sw/hw engineer
>Signalogic
>
>On Wed, 06 Mar 2002, "jfbuggen" <> wrote:
>>Hello,
>>
>>Does anyone has an idea on how I could transfer large
>>blocks of data (>64KB) through the PCI interface of a C6415 DSP
>>using the DSP MASTER mode ?
>>
>>If I split the transfer in 64KB blocks, it will require some
>>processing by the DSP-CPU (interrupt servicing and PCI interface
>>config) after each block. This would take a lot of the processing
>>time of the DSP, leaving less time for my DSP application.
>>
>>Do you have a solution ?
>>
>>Thanks
>>
>>J-F



JF-

Well I'm not sure about burst host-transfer issues inside a PC, so I will avoid
that for the time being.

But I can make some suggestion on how to detect end-of-transfer. One
possibility would be a counter in external logic that would detect transfers,
increment the count, and assert the correct PCI signal and/or host interrupt
when the count went to zero. You could write the external count register at the

same time your write the PCIMC register in your transfer setup code. Maybe this

way the DSP does not have to do anything that requires processing at
end-of-transfer.

If writing to external logic (i.e. putting in async. C64xx mem space) is a
design or board cost problem, then another option is to put a sync pattern or
"end of burst pattern" in your data (at the end of every block) and have the
external logic detect this and then do its thing.

Jeff Brower
DSP sw/hw engineer
Signalogic On Thu, 07 Mar 2002, "jfbuggen" <> wrote:
>Hi Jeff,
>
>In fact, we have developped a PCI card with the C6415 on it, to be
>put on a PC motherboard. At the PC side, there's no device able
>to perform burst transfers (so host-master mode).
>(more info on this at http://www.pcisig.com/reflector/msg01281.html )
>Non-bursting host master transfers would be very inefficient.
>
>So, I think that the DSP MASTER mode is required for large transfers.
>Even if the host (PC) configures the DSPMA, PCIMA and PCIMC
>registers, I think that the end of the transfer will only be
>detected by the DSP (through DSPINT), not by the host. We need
>thus an interrupt handler at the DSP side to signal the end of
>transfer to the host (f.e through INTA). Then, the host (PC)
>could configure the next transfer.
>
>What I'm trying to do is to perform this without the interrupt
>to the DSP. Is it possible to signal the end of a DSP MASTER
>transfer to the host automatically ?
>
>Thanks a lot for your help
>
>J-F >--- In c6x@y..., Jeff Brower <jbrower@s...> wrote:
>> JF Buggen-
>>
>> Why can you not use host master mode? You can still initiate via
>DSP, by
>> triggering a host interrupt or external host logic -- the host
>driver or logic
>> can read memory locations in the DSP code to determine the transfer
>parameters.
>>
>> Jeff Brower
>> DSP sw/hw engineer
>> Signalogic
>>
>> On Wed, 06 Mar 2002, "jfbuggen" <jfbuggen@h...> wrote:
>> >Hello,
>> >
>> >Does anyone has an idea on how I could transfer large
>> >blocks of data (>64KB) through the PCI interface of a C6415 DSP
>> >using the DSP MASTER mode ?
>> >
>> >If I split the transfer in 64KB blocks, it will require some
>> >processing by the DSP-CPU (interrupt servicing and PCI interface
>> >config) after each block. This would take a lot of the processing
>> >time of the DSP, leaving less time for my DSP application.
>> >
>> >Do you have a solution ?
>> >
>> >Thanks
>> >
>> >J-F