Altera_Forum
Honored Contributor
10 years agoHPS Address Space and HPS2FPGA axi bridge
Hi,
I am using the Arrow C5 SoC Kit. This kit has 1GB of ddr3 connected on both the FPGA side and the HPS side. I am trying to make the 1GB on the FPGA side visible in the HPS. I have created a QSYS system that instantiates the DDR3 SDRAM Controller with UniPHY which has an address range of 0x0000_0000 to 0x3FFF_FFFF. I have instantiated a Hard processor System with a 32 bit data width HPS2FPGA bridge and a 32 bit LWHPS2FPGA bridge. I have connected the ddr3 controller to the h2f_axi_master. see attached image qsys. The documentation for the HPS Technical Reference Manual and some examples/tutorials state that the start address of the h2f_axi_master is 0xC000_0000. Using the table for address space relationship on the MPU (see attached) and the table for common address space regions (see attached) the h2f_axi_master is using the FPGA Slaves Region which starts at address 0xC000_0000 to 0xFC00_0000 which is 960MB. Everything from 0xFC00_0000 up is used for peripherals etc. My Questions: 1) The MPU has an address space range of 4GB, how can I change where the start address for the h2f_axi_master starts so I can access the full range of the DDR3 and hopefully add some other interfaces on. 2) in qsys if I string anything else onto the h2f_axi_master bus it starts to complain about addresses being out of range. How can I change this? It seems strange to me that if there is actually only 960MB of accessible space and im sticking 1GB on the bus, shouldn't QSYS kick up an error? 3) There is over 2GB of "SDRAM Window" address space on the MPU I don't understand how to access this or make it visible to a bus. 4) I have looked at the address span extender component but it doesn't make much sense to me when I add it to the QSYS. If I was to use the address span extender how would I access the memory space on my HPS. At the moment I open a fd and mmap the virtual address space with an offset and a span. Will the address space extender still start at 0xC000_0000? Any help would be really great!! Thanks James