FIFO几乎满和空状态Verilog

FIFO几乎满和空状态Verilog,verilog,Verilog,假设我有一个深度为32、宽度为8位的FIFO。在所有32个位置都有一个有效位a。如果该位在所有位置都是1,我们有完整条件,如果为0,则为空条件。我的要求是,如果一个位置的该位a是0,而该位a的所有位置都是1。当到达第30个位置时,应产生几乎满的条件 请帮帮我 提前谢谢 所以你有一个32位的向量,你只想检查其中一位是0。如果速度不是一个很大的问题,我将使用for循环来实现这一点 如果速度是一个问题,我将在5次迭代中完成。您可以通过除法和检查法来实现这一点。并行检查两个16位字。然后将其分成两个8位

假设我有一个深度为32、宽度为8位的FIFO。在所有32个位置都有一个有效位a。如果该位在所有位置都是1,我们有完整条件,如果为0,则为空条件。我的要求是,如果一个位置的该位a是0,而该位a的所有位置都是1。当到达第30个位置时,应产生几乎满的条件

请帮帮我


提前谢谢

所以你有一个32位的向量,你只想检查其中一位是0。如果速度不是一个很大的问题,我将使用for循环来实现这一点

如果速度是一个问题,我将在5次迭代中完成。您可以通过除法和检查法来实现这一点。并行检查两个16位字。然后将其分成两个8位并并行检查。根据零的位置,将特定的8位除以4位,然后进行检查,依此类推


如果在任何一点上,两个部分都有零,那么可以退出检查并得出几乎_full=0的结论

对于完全条件,我使用Full=(&A[31:0]),对于Empty=~(|[31:0]),几乎完全=?。您是否尝试过
分配几乎完全=(A=(fifo_depth-2))?1:0
?我认为它可能会起作用。实际上,当到达第29个位置时,如果所有位都是1,它会给出几乎满的值。这没关系,但在第29个位置之前,有些位置是0。在这种情况下,我应该生成几乎满的值。假设有0到30个位置。在第3个位置,有效位=0,所有位置直到29,有效位=1。此时,我想生成几乎满的代码。请在此处或与testbench一起在EDA操场上共享一些代码。