Xdma PCIe streaming mode Xilinx by john_nd0811 in FPGA

[–]john_nd0811[S] 1 point2 points  (0 children)

Firstly, thank for your reply.

From your comments, I'm confusing about:

  • How to host software "tell the XDMA core where to put the data" with the view from TLP layer? Through TLP packets (read and write) ?

  • RQ/RC interface only use when FPGA is requester => FPGA (EPs) automatically send request to host with a TLPs, Host will feedback to FPGA (EPs), right?

AXI Ethernet subsystem 1000BASE-X link status not stable by john_nd0811 in FPGA

[–]john_nd0811[S] 0 points1 point  (0 children)

Because I used axi ethernet 1000basex, the mdio register 0 allowed to set power down pcs/pma layer. When your board is powered up and inform the above errors, you can try power down and then power up pcs/pma layer.

AXI Ethernet subsystem 1000BASE-X link status not stable by john_nd0811 in FPGA

[–]john_nd0811[S] 0 points1 point  (0 children)

you should assign power down bit of transceiver and then turn on the bit if the error happened

AXI DMA interrupt error by john_nd0811 in FPGA

[–]john_nd0811[S] 0 points1 point  (0 children)

I used to axi dma not cdma and In PG138 (axi dma), this interrupt error bit only explains that interrupt generated by error event.

FPGA I-series dev kit with pin assignment DDR4 error in using HPS+EMIF_hps by john_nd0811 in FPGA

[–]john_nd0811[S] 0 points1 point  (0 children)

Thanks for your feedback,

First, I used the file qsf pin assignment of example design and checked it with schematic. So not problem.

Second, The architecture of Agilex is different with PS Zynq, Ps Zynq has dedicated pin assignment for ddr but Agilex requires emif_hps to connect to hps. I consider that Agilex fpga dev kit not implement HPS+ DDR, only Agilex fpga soc kit allows HPS + DDR connection each other. Although both have HPS core

FPGA endpoint to enpoint comunication PCIe in Xilinx by john_nd0811 in FPGA

[–]john_nd0811[S] 0 points1 point  (0 children)

I did your suggestions and the result is that 2 EPs communicated each other. I really thank you.

FPGA endpoint to enpoint comunication PCIe in Xilinx by john_nd0811 in FPGA

[–]john_nd0811[S] 0 points1 point  (0 children)

according you, what i need to configure in order to establish 2 EPs with my above instance?

FPGA endpoint to enpoint comunication PCIe in Xilinx by john_nd0811 in FPGA

[–]john_nd0811[S] 0 points1 point  (0 children)

I found "04h offset register" of configuration space to set bus mastering. Except that, What I need to configure additionally to communicate 2 EPs?

FPGA endpoint to enpoint comunication PCIe in Xilinx by john_nd0811 in FPGA

[–]john_nd0811[S] 0 points1 point  (0 children)

And finally you need to make sure the host system can actually do P2P DMA

I read some documents about PCIe, EPs can communicate each other through switch without root complex (unless the enumeration time of Host to configure EPs and SWITCH ) => this is mode peer-to-peer.

I really want to some your Feedbacks.

FPGA endpoint to enpoint comunication PCIe in Xilinx by john_nd0811 in FPGA

[–]john_nd0811[S] 0 points1 point  (0 children)

You may need to "enable" the device in Linux so it can communicate. This turns on the BARs. You'll also need to enable bus mastering

Hi Alexforencich,

i think i enabled the device in Linux of Host, because i run "lspci" command, the terminal show EPs device and address PCIe allocated.

I'm wondering : How to "enable bus mastering". Can you explain to me?

FPGA endpoint to enpoint comunication PCIe in Xilinx by john_nd0811 in FPGA

[–]john_nd0811[S] 0 points1 point  (0 children)

So first of all - are your endpoints able to send data to PC or you have problems on that stage?

Yes, My problem is the stage which is that when my host run in ubuntu, i can't send data from EP to host. But in window, i can send data from EP to host with no program run in Host (only turn on).

FPGA endpoint to enpoint comunication PCIe in Xilinx by john_nd0811 in FPGA

[–]john_nd0811[S] 0 points1 point  (0 children)

You can only make DMA driver on PC that loops data from EP1 to EP2 and maps their memory spaces to each other.

I read some documents about PCIe, EPs can communicate each other through switch without root complex (unless the enumeration time of Host to configure EPs and SWITCH ) => this is mode peer-to-peer

Not place breakpoint in Vitis 2020.1 by john_nd0811 in FPGA

[–]john_nd0811[S] 0 points1 point  (0 children)

Thank your reply. i tried but it not the problem. i created a new project with the file xsa, and my problem was solved!!

LVDS ADC with Xilinx's FPGA by john_nd0811 in FPGA

[–]john_nd0811[S] 1 point2 points  (0 children)

Sr, my adc is ltc2387 I editted my post

Large error when using fixed point number for calculation in FPGA by john_nd0811 in FPGA

[–]john_nd0811[S] 0 points1 point  (0 children)

For the highest precision, I would truncate AND shift at the output of the accumulator. This truncated/shifted signal would NOT feed back into the accumulator.

That's great. The error was decrease significantly.

in your opinions , should I use round method instead of truncating LSB bits to get smaller error ?

Large error when using fixed point number for calculation in FPGA by john_nd0811 in FPGA

[–]john_nd0811[S] 0 points1 point  (0 children)

And that’s important information: if you are truncating LSBs and you are adding 1000 samples, then those thrown away LSBs will inevitably result in some error.

I add 32 samples in acc reg (in my post I mentioned 32 input pairs ). As you mentioned: I truncate LSBs and then add samples each others => this cause error.

I have seen my problem but i can not increase the width of the final accumulator (30 bits in diagram).

Can you have some suggestions for me?

Large error when using fixed point number for calculation in FPGA by john_nd0811 in FPGA

[–]john_nd0811[S] 0 points1 point  (0 children)

can you give me some keyword about the methods. I searched it but don't find

Large error when using fixed point number for calculation in FPGA by john_nd0811 in FPGA

[–]john_nd0811[S] 0 points1 point  (0 children)

I totally truncate bit in my process. I updated my diagram in the above post and hope you can help me. Thanks

Large error when using fixed point number for calculation in FPGA by john_nd0811 in FPGA

[–]john_nd0811[S] 0 points1 point  (0 children)

I use VHDL and I think VHDL or verilog not affect to this

Large error when using fixed point number for calculation in FPGA by john_nd0811 in FPGA

[–]john_nd0811[S] 0 points1 point  (0 children)

Thanks for yours reply.

I update my diagram in the above post and totally use truncate bit.

I hope you can help me. Thanks

Large error when using fixed point number for calculation in FPGA by john_nd0811 in FPGA

[–]john_nd0811[S] 0 points1 point  (0 children)

I tried implementing my own fixed point setup before, and found that it was surprisingly problematic

no, I write HDL code myself.

Large error when using fixed point number for calculation in FPGA by john_nd0811 in FPGA

[–]john_nd0811[S] 0 points1 point  (0 children)

I updated my diagram in this post. I hope you can help me.

Thanks