Programmable Devices
CPLDs, FPGAs, SoC FPGAs, Configuration, and Transceivers
20704 Discussions

High speed 16b paralell bus to DSP

Altera_Forum
Honored Contributor II
1,653 Views

Hello, i am quite new with FPGA, and need ideas how to solve my problem. 

 

I have 128 points CCD, and i control detector as well as ADC from FPGA. FPGA connects to DSP processor by standard SRAM bus (DATA[15..0], CS#, RD#,WR#,ACK). CCD sensor is sampled at 30MHz, and i need to read data to DSP to do complex math with it. Original idea was to use FIFO, but DSP don't have correct interface ( to be more precise, it does not have CLK ) 

 

Any idea how to make it work ? Bus must have as low latency possible ( since it should push 480Mbps) 

 

Data acquisition module was developed inside schematic/diagram programming, since i have little knowledge in VHDL. 

 

Any suggestion would be appreciated
0 Kudos
10 Replies
Altera_Forum
Honored Contributor II
514 Views

 

--- Quote Start ---  

Hello, i am quite new with FPGA, and need ideas how to solve my problem. 

 

I have 128 points CCD, and i control detector as well as ADC from FPGA. FPGA connects to DSP processor by standard SRAM bus (DATA[15..0], CS#, RD#,WR#,ACK). CCD sensor is sampled at 30MHz, and i need to read data to DSP to do complex math with it. Original idea was to use FIFO, but DSP don't have correct interface ( to be more precise, it does not have CLK ) 

 

Any idea how to make it work ? Bus must have as low latency possible ( since it should push 480Mbps) 

 

Data acquisition module was developed inside schematic/diagram programming, since i have little knowledge in VHDL. 

 

Any suggestion would be appreciated 

--- Quote End ---  

 

 

What DSP are you using and which Altera FPGA?
0 Kudos
Altera_Forum
Honored Contributor II
514 Views

ADSP-21489 a bit oerclocked to match project needs (5MB SRAM, 600MHz clk) 

Altera Cyclone 4 EP4CE6F17C6 

 

Idea for now is this, will run trial with dsp and see how it goes (project attached, note that adc have 7 cycles delay, whats why i keeping fifo disabled )
0 Kudos
Altera_Forum
Honored Contributor II
514 Views

 

--- Quote Start ---  

ADSP-21489 a bit oerclocked to match project needs (5MB SRAM, 600MHz clk) 

Altera Cyclone 4 EP4CE6F17C6 

 

Idea for now is this, will run trial with dsp and see how it goes (project attached, note that adc have 7 cycles delay, whats why i keeping fifo disabled ) 

--- Quote End ---  

 

 

It looks to me that the SDCLK pin could be active for the AMI SRAM interface too, internally it is used as the timing basis for the transfers. In case you have connected it you could try finding whether you could use one of the two edges to drive the rdclk of your fifo. Then it will run at 33 Ms/s or so. In case you haven't you will have to catch the read pulse with a high-speed internal clock (233 MHz or so). The AMI would then have to run a minimum of 4 clocks (adding 1 Waitstate) to extend the read pulse over two clocks, giving you the chance to catch it and present the output data in time. That would bring the transfer rate down to 25 Ms/s.
0 Kudos
Altera_Forum
Honored Contributor II
514 Views

Hi, DSP does have SDCLK for memory interface, but in order to get 30MHz read cycle, i have to overclock DSP. As a result, SDCLK is more than 250MHz and it is CMOS output, so i get only noise on that pin ( very small amplitude sinus wave, i try to use that as my clk, idea was to use counter with reset, when CS is low, counter should start count edges on SDCLK, and when is grater than 2 or 3 (since i have minimum 3 wait cycles as default in DSP) it should create rising edge, but in reality not. At low speed, like SDCLK is 100MHz or less, it would work. But that would defeat purpose of using DSP in first place, since DSP don't have fast io, but have mind blowing fast dsp instruction execution speed.  

 

https://www.alteraforum.com/forum/attachment.php?attachmentid=8745  

 

At least detector readout runs without a glitch with trigger input 

 

Since i am doing single point DFT inside DSP, i know that it should be possible to do inside FPGA, but that is too advanced for me right now. I could create NIOS 2f Core, but that is too slow
0 Kudos
Altera_Forum
Honored Contributor II
514 Views

Have you considered using the SHARC PDAP port?

0 Kudos
Altera_Forum
Honored Contributor II
514 Views

DSP have very slow IO, even flag toggle only give 20-40MHz, while STM32F407 running at 168MHz can give 84MHz toggle speed. 

Other reason is that not only i just started to work with FPGA, same apply to ADSP-21489. very lite help can find in my university regarding dsp programming, no sample code since compiler cost 10K$, and i only could do programming to boot flash so no debugging, that means programming also not that simple ( troubleshooting )  

 

Test show that AMI interface is capable >30MHz (free running) so i will try to use that. If you know more about PDAP port let me know, since i made development kit with all pins connected to header, so i can switch from AMI to PDAP if that could help me 

https://www.youtube.com/watch?v=k3q4ygsygna
0 Kudos
Altera_Forum
Honored Contributor II
514 Views

 

--- Quote Start ---  

Have you considered using the SHARC PDAP port? 

--- Quote End ---  

 

 

Well, it looks like PDAP is not that slow after all, it is capable 1Gbps, at 18bits, but again, not that easy, it only support SLAVE configuration, i have no idea how to make it work, since i need to get data and know which ADC readout which CCD pixel i will try to do more research on PDAP
0 Kudos
Altera_Forum
Honored Contributor II
514 Views

PDAP is basically a FIFO, which is what I thought you were looking for? It ought to be quite simple to interface to from the FPGA. 

 

i.e. I think your application is even more simple than this: 

http://www.analog.com/static/imported-files/application_notes/ee254v01.pdf 

 

Regarding tool costs etc. since this is an Altera forum, I will only say that Altera tools are very reasonably priced and the devices (e.g. Cyclone V with ARM) are very capable. There would have to be a compelling reason to include the DSP in the design.
0 Kudos
Altera_Forum
Honored Contributor II
514 Views

FIFO is only 6 word long. And i can't relay on fifo to store data, better way would be menage it from DSP in master configuration.  

 

Somehow starting work with fpga was less expensive whan work with arm cortex m4. But it's much more complex , but with that comes the performance
0 Kudos
Altera_Forum
Honored Contributor II
514 Views

 

--- Quote Start ---  

FIFO is only 6 word long. And i can't relay on fifo to store data, better way would be menage it from DSP in master configuration. 

--- Quote End ---  

 

 

I believe Analog Devices intends that you use the DMA controller to manage FIFO. Yes, doing it with software would be tricky. 

 

If you truly want to hold off the FPGA, see the section on interprocessor synchronization in the appnote I linked to.
0 Kudos
Reply