课程论文(设计)题目异步缓冲fifo的设计院系电子与信息工程学院专业电子与通信工程学生姓名卢兴森学号20132281370指导教师刘建成二O一四年元月三日一异步FIFO的介绍⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯11
1指针以及满空信号的产生⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯11
2二进制指针和格雷码指针的同步⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯21
3保守的满空判断⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯31
4二进制指针和格雷码指针的比较⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯4二程序及其介绍⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯4三仿真结果图⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯13四总结⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯141一异步FIFO的介绍使用FIFO同步源自不同时钟域的数据是在数字IC设计中经常使用的方法,设计功能正确的FIFO会遇到很多问题,探讨了两种不同的异步FIFO的设计思路
两种思路都能够实现功能正确的FIFO
本文所研究的FIFO,从硬件的观点来看,就是一块数据内存
它有两个端口,一个用来写数据,就是将数据存入FIFO;另一个用来读数据,也就是将数据从FIFO当中取出
与FIFO操作相关的有两个指针,写指针指向要写的内存部分,读指针指向要读的内存部分
FIFO控制器通过外部的读写信号控制这两个指针移动,并由此产生FIFO空信号或满信号
对于异步FIFO而言,数据是由某一个时钟域的控制信号写入FIFO,而由另一个时钟域的控制信号将数据读出FIFO
也就是说,读写指针的变化动作是由不同的时钟产生的
因此,对FIFO空或满的判断是跨时钟域的
如何根据异步的指针信号对FIFO的满状态或空状态进行正确的判断是本文研究的重点
此外,设计过程中的一些细节问题也将在文中涉及到
1指针以及满空信号