AR# 40008


FIFO Generator v4.3 - Why is the programmable Full assert value not equal to the Full negate value?


It is stated in (UG 175) that the full assert value must be larger than the full negate value.

In my example, if the full assert value is 1024 than full negate value would be 1023.

When the number of entries in the FIFO is greater than or equal to the assert value, PROG_FULL is asserted.

When the number of entries in the FIFO is less than the negate value, PROG_FULL is deasserted.

That means that in FIFO when the number of entries is greater than or equal to 1024, PROG_FULL is asserted.

However, the full negate value is 1023 and PROG_FULL is only deasserted when the negate value is 1022.

Why is PROG_FULL not de-asserted at 1023, but instead waits for one more entry?

I would expect that either PROG_FULL should be deasserted when the number of entries in the FIFO is equal to the negate value, or FULL assert and negate should have same value.


If the negate value is the same as the assert value, then it is the same as having a single threshold value.

The expected behavior described above can be achieved by using a single threshold programmable flags value.

The full assert and full negate rules are set up as they are to allow for different behaviors that cannot be achieved with a single threshold.

AR# 40008
Date 02/09/2015
Status Active
Type General Article
People Also Viewed