1、 VLSI课程设计 同步 FIFO 设计与实现 班 级: 学 号: 姓 名: 指导教师: - 1 - VLSI 课程设计报告同步 FIFO 设计与实现 一、FIFO 概述 FIFO 是英文 First In First Out 的缩写,意为先入先出存储器,由于微电子技 术的飞速发展,新一代 FIFO 芯片容量越来越大,体积越来越小,价格越来越便 宜。作为一种新型大规模集成电路,FIFO 芯片以其灵活、方便、高效的特性, 逐渐在高速数据采集、高速数据处理、高速数据传输以及多机处理系统中得到越 来越广泛的应用。 它与普通随机存储器的区别是没有外部读写地址线, 这样使用起来非常方便 但缺点就是只能顺
2、序读写数据,其读写数据地址依靠内部的读指针和写指针完 成。读操作与写操作可以异步进行,写入区上写入的数据按照写入的顺序从读取 端的区中读出, 类似于吸收写入端与读出端速度差的一种缓冲器。 计算机的串口, 一般也都具有 FIFO 缓冲器(不是单一的 FIFO 存储器,而是嵌入在设备内部) 。 二、同步 FIFO 同步 FIFO(Synchronous FIFO,下称 SFIFO)的意思是说 FIFO 的读写时钟 是同一个时钟,因此时钟频率是相同的,只是在相位上可能有差别,不同于异步 FIFO, 异步 FIFO 的读写时钟是完全异步的。 SFIFO 的对外接口包括时钟, 清零, 读请求,写请求,数
3、据输入总线,数据输出总线,空以及满信号。查阅资料找到 一款成型 SFIFO 产品的接口描述,如图 1: 图 1 一款同步 FIFO 的接口资料 为了更好的理解 FIFO 的工作方式,我们设定 SFIFO 的深度为 8。SFIFO 的 难点主要是状态判断,如图 2 是对空状态和满状态来进行判断的方式。 - 2 - 图 2 FIFO 空满状态判断 可以看出,当读指针和写指针的值一样的时候,FIFO 的状态为空。比较麻 烦的是对 FIFO 是否已经满的状态的判断,因为存在两种情况,第一种情况时写 指针比读指针大,比如写指针 = 7 而读指针 = 0,还有一种情况时写指针比读指 针小,比如写指针 =
4、2 而读指针 = 3。由于读写电路在循环的读写 RAM,所以 在上面的两种情况下 FIFO 实际上都已经满了。 第一种情况下,写指针 读指针 = 7,实际上就是 FIFO 深度减一; 第二种情况下,(写指针 + 8) 读指针 = 7,也是 FIFO 深度减一。 如此,就可以比较容易的判断出 FIFO 的状态了。 三、存储器结构及行为级描述 知道了 SFIFO 的接口和状态控制逻辑,结构框图就很显而易见了。如图 3, 本设计 SFIFO 由主 RAM 阵列,写控制逻辑,写指针控制器,状态判断逻辑,读 指针控制器,读控制逻辑,输入寄存器,输出寄存器,复位及时钟逻辑构成。 图 3 FIFO 结构框图
5、 - 3 - 结构框图为所有的逻辑部件,在行为级描述中,clk 模块只有简单的上升沿 判断,复位电路、输入输出寄存器也非常易于实现,其 VHDL 代码见附录。 四、单元电路门级描述 根据上述结构框图,分别绘制出 RAM 单元,写控制逻辑,写指针控制器, 状态判断逻辑,读指针控制器,读控制逻辑,输入寄存器和输出寄存器。 在随机存储器中,存储单元大多为六管单元,如图 4 所示。这种存储单元的 读写控制信号都是通过同一根字线 B 传递的,数据都是由 Q 和 Q 读入或读出, 因此这样的存储单元不能同时进行读和写的操作。为了使 FIFO 存储器能够进行 同步读/写操作,我们使用八管存储单元,如图 5
6、所示。读控制和写控制分别用 两根字线来控制,即 Rcontrol 和 Wcontrol,这时数据的读入通过 inB 和 inB,而数 据的读出通过 outB 和 outB。与六管单元相比,八管单元增加了两个门控管、两 根位线和一根字线。由于 FIFO 存储器不用地址线,而是用两个地址指针分别存 放读地址和写地址,并且分别有读地址译码器和写地址译码器与之对应,这样存 储器的读操作和写操作就可同时进行,实现读和写的同步操作。显然,这种存储 器也能实现异步操作。 图 4 普通 RAM 的六管单元 图 5 改进的 8 管单元 读写控制逻辑比较简单,通过状态判断逻辑发送出的 Full 和 Empty 信号, 同时关断读/写计数器和输入/输出锁存,避免数据异常。 一种最简单的方式,是直接将 Full 与 WR 接到一个与门上,将 Empty与 RD 接到一个与门上。这样存储器在满状态和空状态下,WR 和 RD 将分别被屏蔽, 读/写信号不再起作用。如图 6,图 7。 图 6 写控制逻辑 图 7 读