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

PCIe BAR offset

Honored Contributor II



I use DMA chaining app generated by MegaWizard. 

Inside I use  

find_mem_bar(bar_table, 6'b000001, 28, rc_slave_bar), 

which finds my first BAR (that is BAR0 256 MBytes, addr: 10000000, Non-Prefetchable). 


Having found the BAR, I try this: 

ebfm_barwr_imm(bar_table, rc_slave_bar, 17'h1FFFC, 32'hDEAD_BEEF, 4, 0), 

where DEAD_BEEF is my data, 4 is length, 0 is tclass, 17'h1FFFC is offset. 


Well, it works, but I can't use 1FFFF offset size - it won't send anything. I think that's because only 1FFFC can be divided by 4, by why is that so? What do I do if I need offset that is not dividable by 4? 


If the offset can not be divided by 8 (but can be by 4), sop and eop come simultaneously, and there is some mess in the wave (like with 1FFFC). Why? 

Does it mean that I can only use offsets that are aligned like this?
0 Kudos
0 Replies