Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Just A Question #14

Open
mikef656 opened this issue Jul 3, 2021 · 10 comments
Open

Just A Question #14

mikef656 opened this issue Jul 3, 2021 · 10 comments

Comments

@mikef656
Copy link

mikef656 commented Jul 3, 2021

Hi Alex,
Thanks for the great IP.
Can you explain concept of the frame WRT AXI-S, and how you use it?
Thanks
Mike

@alexforencich
Copy link
Owner

A frame is just a block of data that is transferred across multiple cycles. Useful if you're moving things like Ethernet frames over AXI stream.

@mikef656
Copy link
Author

mikef656 commented Jul 3, 2021 via email

@alexforencich
Copy link
Owner

There isn't a standard way of reporting bad frames in AXI stream. What I usually do is use tuser[0] to mark bad frames, asserted coincident with tlast.

@mikef656
Copy link
Author

mikef656 commented Jul 4, 2021 via email

@alexforencich
Copy link
Owner

Yep. The FIFOs, in frame mode, can look at any bit of tuser for the bad frame indication. And yes, the response is to revert the write pointer back to the start of the frame to remove the frame from the FIFO. Note that this is only possible in frame FIFO mode where the complete frame is spooled in the FIFO before it is released.

@mikef656
Copy link
Author

mikef656 commented Jul 4, 2021 via email

@alexforencich
Copy link
Owner

In frame FIFO mode, the write pointer is only transferred to the read side when once the entire frame is in the FIFO.

@mikef656
Copy link
Author

mikef656 commented Jul 4, 2021

So in frame FIFO mode, the acts a a full packet accumulation buffer. Nice.

@mikef656
Copy link
Author

mikef656 commented Jul 4, 2021

Another Question on axi_register module:
Does it register the both valid ready?

@alexforencich
Copy link
Owner

Yes. An additional benefit to frame FIFO mode is that each packet is guaranteed to be delivered without any gaps (tvalid = 0 before tlast = 1), which is useful when feeding Ethernet MACs and similar that cannot tolerate gaps.

The axis_register module will register both the tvalid and tready signals, if it is not bypassed. There are 3 different REG_TYPE values, 0 means bypassed, 1 means a single register slice with 50% throughput, 2 means a full skid buffer with 100% throughput. Both the single register slice and the skid buffer will put a flip flop in the tready path (incidentally, the presence of this register is what limits the single register slice to 50% throughput).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants