FPGA Intellectual Property
PCI Express*, Networking and Connectivity, Memory Interfaces, DSP IP, and Video IP
6385 Discussions

Multiple questions: writing to PCIe TXS port with 64-bit addressing (Cyclone10GX)

NWein
Novice
925 Views

I'm attempting to do DMA writes to the TXS port, with 64-bit addressing enabled.  A SignalTap trace shows the bus transfers working fine, but data is not appearing in main memory (at least, not where we expect it.)

 

1) I have 64-bit addressing enabled.  My understanding is that this means the address translation table is ignored.  Which is to say, the address I'm providing is being used as-is by on the PCIe bus.  Is this correct?

2) In the PCIe core configuration/Avalon-MM Settings (in Platform Designer) I have "Address width of accessible PCIe memory space" set to 33 bits.  This sets the width of the txs_address to 33.  Is this a byte or a word address?  I have assumed this must be a word address, so that there are three additional bits being appended to create the byte address.  However, I am unnerved when I click on TXS in Platfom designer, and it shows me this:

NWein_0-1628541817320.png

If it really thinks it's 8-bits per symbol, then it would be looking for a byte address, and that would certainly explain why the data isn't going where we expect.  But I don't think it would make any sense to be expecting a byte address on a 64-bit interface.  Not sure what to believe here.

 

 

0 Kudos
1 Solution
SengKok_L_Intel
Moderator
902 Views

Hi,


  1. Yes, you are right. No translator is needed for 64 bit addressing.
  2. The TXS port, it is using byte addressing. If you set the address to 33, the memory size that you can access is 2^33 bytes. From the Platform designer, you will see the address range is from 0x0 to 0x1_ffff_ffff when the addressing width is 33 bits.

     

      Regards -SK


View solution in original post

4 Replies
SengKok_L_Intel
Moderator
903 Views

Hi,


  1. Yes, you are right. No translator is needed for 64 bit addressing.
  2. The TXS port, it is using byte addressing. If you set the address to 33, the memory size that you can access is 2^33 bytes. From the Platform designer, you will see the address range is from 0x0 to 0x1_ffff_ffff when the addressing width is 33 bits.

     

      Regards -SK


NWein
Novice
871 Views

When I supply a byte address, it works as expected.

It might be a good idea to state this more explicitly in the documentation (it just says "address").  Having a byte address there runs contrary to my expectations.

0 Kudos
SengKok_L_Intel
Moderator
855 Views

This is glad to see your design is working fine now., and thank you for the feedback.


0 Kudos
SengKok_L_Intel
Moderator
830 Views

If further support is needed in this thread, please post a response within 15 days. After 15 days, this thread will be transitioned to community support. The community users will be able to help you with your follow-up questions. 


0 Kudos
Reply