Nios® V/II Embedded Design Suite (EDS)
Support for Embedded Development Tools, Processors (SoCs and Nios® V/II processor), Embedded Development Suites (EDSs), Boot and Configuration, Operating Systems, C and C++

How to control DMA core?

Altera_Forum
Honored Contributor II
1,474 Views

I am doing a project which need to use PCI core. Since I am not going to use the NiosII, so DMA become my option. 

 

My question is: how can I control the DMA to read the data from PCI and write it to DDR2? or how can I read the data from DDR2 and write it to PCI? Or probably I don't need to control the DMA at all? I need to give the source adderss and destination address to the DMA, right? 

 

Correct me if my idea is wrong. 

 

Any opinions are welcomed. 

 

Thanks.
0 Kudos
3 Replies
Altera_Forum
Honored Contributor II
308 Views

 

--- Quote Start ---  

originally posted by ohaltera@Jan 17 2007, 08:46 PM 

i am doing a project which need to use pci core. since i am not going to use the niosii, so dma become my option. 

 

my question is: how can i control the dma to read the data from pci and write it to ddr2? or how can i read the data from ddr2 and write it to pci? or probably i don't need to control the dma at all? i need to give the source adderss and destination address to the dma, right? 

 

correct me if my idea is wrong. 

 

any opinions are welcomed. 

 

thanks. 

<div align='right'><{post_snapback}> (index.php?act=findpost&pid=20665) 

--- quote end ---  

 

--- Quote End ---  

 

 

First, how do you plan to control the DMA engine? From the PCI bus? 

Second, I gather you want the board to master both PCI reads and Memory writes or are you just trying to access memory from the PCI bus? 

 

Mike
0 Kudos
Altera_Forum
Honored Contributor II
308 Views

<div class='quotetop'>QUOTE </div> 

--- Quote Start ---  

First, how do you plan to control the DMA engine? From the PCI bus?[/b] 

--- Quote End ---  

 

 

Can I control the DMA in both way? Either from the PCI bus or from an user ip core in the inside of the FPGA? What do I need to do? In either way, how can I set the source/destination address and the interrupt to the DMA? 

 

If I want to control the DMA from inside, I shoul connect the User IP core to the DMA&#39;s "control slave port", is that right? 

 

<div class='quotetop'>QUOTE </div> 

--- Quote Start ---  

Second, I gather you want the board to master both PCI reads and Memory writes or are you just trying to access memory from the PCI bus?[/b] 

--- Quote End ---  

 

 

Yes I want to set the PCI as a master device, so is the memory controller. 

 

Thanks for your reply, Mike.
0 Kudos
Altera_Forum
Honored Contributor II
308 Views

 

--- Quote Start ---  

originally posted by ohaltera@Jan 18 2007, 01:59 AM 

<div class='quotetop'>quote  

--- quote end ---  

 

--- quote start ---  

first, how do you plan to control the dma engine? from the pci bus? 

--- Quote End ---  

 

 

Can I control the DMA in both way? Either from the PCI bus or from an user ip core in the inside of the FPGA? What do I need to do? In either way, how can I set the source/destination address and the interrupt to the DMA? 

 

If I want to control the DMA from inside, I shoul connect the User IP core to the DMA&#39;s "control slave port", is that right? 

 

<div class='quotetop'>QUOTE </div> 

--- Quote Start ---  

Second, I gather you want the board to master both PCI reads and Memory writes or are you just trying to access memory from the PCI bus?[/b] 

--- Quote End ---  

 

 

Yes I want to set the PCI as a master device, so is the memory controller. 

 

Thanks for your reply, Mike. 

<div align='right'><{post_snapback}> (index.php?act=findpost&pid=20677)</div> 

[/b] 

--- Quote End ---  

 

 

I do not believe the Avalon PCI core will allow the Avalon DMA core to generate a PCI interrupt? In any case, the PCI core is much more expensive than the NiosII core so complicating the design by trying to connect directly to the PCI alone is kind of asking for trouble. 

 

That being said... If you can get the DMA engine&#39;s IRQ to trigger a PCI interrupt then the design will require a PCI Core, a SDRAM (memory controller) Core, and the DMA controller Core all connected on the Avalon bus via SOPC Builder. 

 

Using the Altera DMA, PCI, and SDRAM core documentation should allow you to program up the DMA controller via the PCI bus since the PCI Core from Altera can be a Master / Slave device. 

 

Mike
0 Kudos
Reply