cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
patocarr
Teacher
Teacher
4,617 Views
Registered: ‎01-28-2008

Straddled case - trn_rrem_n behavior in H2 header?

Jump to solution

Hi folks,

 

  I'm having an issue decoding the documentation for the PCIE Virtex-6 core in 128-bit mode. I can't seem to find the status of the trn_rrem_n bits when receiving the 2nd header in a straddled TRL.

 

  Let's say I receive the following TRL, 32-bit MWr:

 

  -- -- H0 H1   rsof_n=0 reof_n=1 rrem_n=2'b1x

  H2 D0 -- --   rsof_n=? reof_n=0 rrem_n=2'b10

 

  What will be the value of trn_rsof_n in this case? The documentation doesn't seem to explain this case.

 

  Will H2 also count as start of frame and keep trn_rsof_n asserted one more cycle?

 

Thanks in advance,

-Pat

 

Give kudos if helpful. Accept as solution if it solves your problem.
https://tuxengineering.com/blog

0 Kudos
1 Solution

Accepted Solutions
jayer
Xilinx Employee
Xilinx Employee
5,590 Views
Registered: ‎08-07-2007

Hi,

 

If you received for instance..

 

Dn-1 Dn H0 H1 meaning you received the last two Dwords of a previous packet and the header for a new packet you would get:

 

trn_rsof_n =0

trn_reof_n =0

trn_rrem_n[1] = 1

trn_rrem_n[1] = 0

 

If it was a case where the previous packet only had 1 DW left such as:

 

Dn - H0 H1

 

then

 

trn_rsof_n =0

trn_reof_n =0

trn_rrem_n[1] = 1

trn_rrem_n[1] = 1

 

The example you gave of:

 

H2 D0 H0 H1 does not seem to make sense or I am misunderstanding what you are giving as an example. Reason is the header starts at the highest order byte of the straddled half meaning the 4 bytes of the H0 will either be in the 127:96 position or 63:31 position.

 

Regards

John

 

View solution in original post

0 Kudos
3 Replies
patocarr
Teacher
Teacher
4,616 Views
Registered: ‎01-28-2008

Replying to myself. Looking at xapp1052, it seems that trn_rsof_n deasserts for H2 in straddled case. If the same second 128-bit word had another header, ie. H2D0H0H1, then trn_rsof_n will stay asserted.

 

Please confirm.

 

TIA,

-Pat

 

Give kudos if helpful. Accept as solution if it solves your problem.
https://tuxengineering.com/blog

0 Kudos
jayer
Xilinx Employee
Xilinx Employee
5,591 Views
Registered: ‎08-07-2007

Hi,

 

If you received for instance..

 

Dn-1 Dn H0 H1 meaning you received the last two Dwords of a previous packet and the header for a new packet you would get:

 

trn_rsof_n =0

trn_reof_n =0

trn_rrem_n[1] = 1

trn_rrem_n[1] = 0

 

If it was a case where the previous packet only had 1 DW left such as:

 

Dn - H0 H1

 

then

 

trn_rsof_n =0

trn_reof_n =0

trn_rrem_n[1] = 1

trn_rrem_n[1] = 1

 

The example you gave of:

 

H2 D0 H0 H1 does not seem to make sense or I am misunderstanding what you are giving as an example. Reason is the header starts at the highest order byte of the straddled half meaning the 4 bytes of the H0 will either be in the 127:96 position or 63:31 position.

 

Regards

John

 

View solution in original post

0 Kudos
patocarr
Teacher
Teacher
4,599 Views
Registered: ‎01-28-2008

Hi John,

 

  I confused the issue by adding another example that wasn't tied to the first case. I added it to highlight the case that trn_rsof_n will stay asserted indicating a new header is present. "Header" in this case is H0H1, not H2 in the high dword.

 

  In my first example:

 

 -- -- H0 H1   1st

 H2 D0 -- --   2nd

 

  Please confirm trn_rsof_n state in the 2nd 128-bit word. I believe it will be deasserted, and will assert only if another header (ie. H0H1) shows up in the same beat. Of course trn_rrem_n will be different in that case.

 

Thanks for the quick response,

-Pat

 

Give kudos if helpful. Accept as solution if it solves your problem.
https://tuxengineering.com/blog

0 Kudos