想了解一下LIFO的设计思想,求大神指点
时间:10-02
整理:3721RD
点击:
夏宇闻老师的《Verilog 数字系统设计教程》中的一个任务。
首先我想问的是,LIFO和FIFO应该差别就在于读写指针的移动和判断规则不同吧?
其次就是,LIFO应该是如何判断堆栈是否满了呢?
例题中将FIFO抽象成了环形数组,给出的FIFO的规则是,有四个指针:读 w,写 r, 下一个读 wn,下一个写 rn。每当写(或读)了一个数据时,r=rn(或w=wn),并且rn=rn+1(或wn=wn+1)。当wn==r(或rn==w)时,队列就即将满(或空)了。
如果我想写LIFO,是否也可以抽象成环形数组呢?如果抽象成环形数组了,那除了读w和写r两个指针外,还要有哪些指针来帮助我判断堆栈状态呢?具体如何判断呢?
首先我想问的是,LIFO和FIFO应该差别就在于读写指针的移动和判断规则不同吧?
其次就是,LIFO应该是如何判断堆栈是否满了呢?
例题中将FIFO抽象成了环形数组,给出的FIFO的规则是,有四个指针:读 w,写 r, 下一个读 wn,下一个写 rn。每当写(或读)了一个数据时,r=rn(或w=wn),并且rn=rn+1(或wn=wn+1)。当wn==r(或rn==w)时,队列就即将满(或空)了。
如果我想写LIFO,是否也可以抽象成环形数组呢?如果抽象成环形数组了,那除了读w和写r两个指针外,还要有哪些指针来帮助我判断堆栈状态呢?具体如何判断呢?
简单lifo,读写共用指针,写+1,读-1,避免同时读写
指针=0,空,指针=存储深度,满,貌似环形缓冲器不能做lifo
?从逻辑做堆栈?有这种场景吗?
LIFO, 就是stack。
处理器里面都要这个东东,不同的是有些是专用的return stack, 有些直接用RAM
和FIFO控制一样的,LIFO还要简单写,只要一个SP指针(栈顶指针)就够了
处理器里面的stack, 大部分是不做空满检查的,这个由编译器来检测。
如果要做,通过判断sp指针就可以了
谁给举个具体的例子吧
