Hi Nitish, To try and answer your first question without adding confusion --
If you send a UFix64_0 value into the 10GbE block, you will need to interpret it on the other end via an appropriate 64-bit byte swap if your CPU is little-endian. If you send a 64-bit input into the 10GbE block where the most significant 32 bits are the value A, and the least significant bits are value B, you should interpret the 64-bits on your little endian CPU as the struct typedef struct pkt { uint32_t A; uint32_t B; } pkt; where each of the A and B will need byteswapping before you use them. To answer your second question -- Yes, you can absolutely flip the endianness on the FPGA prior to transmission so you don't have to byteswap on your CPU. You can either do this with a bus-expand + bus-create blocks, using the first to split your words into bytes, and then flipping them before concatenating. The Xilinx "bitbasher" block would also be good for this, using the Verilog (for a 64-bit input): out = {in[7:0], in[15:8], in[23:16], in[31:24], in[39:32], in[47:40], in[55:48], in[63:48]} If your 64 bit data streams are not made up of 64-bit integers (eg, they are pairs of 32-bit integers) then you should flip the 4 bytes of each value individually, but leave the ordering of the two values within the 64 bits unchanged. Hopefully that makes sense.... Jack On Tue, 18 Aug 2020 at 13:28, Nitish Ragoomundun < nitish.ragoomun...@gmail.com> wrote: > > Hello, > > We are setting up the digital back-end of a low-frequency telescope > consisting of SNAP boards and GPUs. The SNAP boards packetize the data and > send to the GPU processing nodes via 10 GbE links. We are currently > programming the packetizer/depacketizer. > I have a few questions about the 10gbe yellow blocks and endianness. We > observed from the tutorials that the data stored in bram is big-endian. I > would like to know how the data is handled by the 10gbe and in what form is > it sent over the network. > Our depacketizers run on Intel processors, which are little-endian. We are > aware that network byte order is big-endian, but we noticed that integer > data can be sent from one Intel machine to another via network without ever > calling ntohl( ) or htonl( ) and the data was preserved. So, we would like > to know if we need to correct the endianness when receiving the data from > the SNAP. > > If we need to perform this correction, is there a way we could possibly > correct the endianness on the FPGA itself before input to the 10gbe block? > > Thanks, > Nitish > > -- > You received this message because you are subscribed to the Google Groups " > casper@lists.berkeley.edu" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to casper+unsubscr...@lists.berkeley.edu. > To view this discussion on the web visit > https://groups.google.com/a/lists.berkeley.edu/d/msgid/casper/CAC6X4cOZhVBUvUfs1phQ2csuRnewowZkQ8PzjjBU62LUa0js%3Dw%40mail.gmail.com > <https://groups.google.com/a/lists.berkeley.edu/d/msgid/casper/CAC6X4cOZhVBUvUfs1phQ2csuRnewowZkQ8PzjjBU62LUa0js%3Dw%40mail.gmail.com?utm_medium=email&utm_source=footer> > . > -- You received this message because you are subscribed to the Google Groups "casper@lists.berkeley.edu" group. To unsubscribe from this group and stop receiving emails from it, send an email to casper+unsubscr...@lists.berkeley.edu. To view this discussion on the web visit https://groups.google.com/a/lists.berkeley.edu/d/msgid/casper/CAG1GKSkaEebTXH0X6xiDt6DLHiEy7WUW5xb%3D7w%2BYUJHB3GB7-w%40mail.gmail.com.