异步FIFO的配置与使用注意事项
2016-01-03 18:07
253 查看
网上有好多资料只是讲述FIFO的时序,但是对于使用者来说,没有深入理解其时序的必要性,我们只需要正确使用就好了,因为FIFO并不需要我们自己写,我们可以用其自带的IP核。
首先是配置FIFO模块,步骤如下:工具栏Tools选项,选择MegaWizard Plug-In Manager选项,然后会出现如下对话框:
然后next,
图中的第4步是要选定目录并让你自己给这个将要配置的IP核起一个名字,一般情况下,只需要在后面输入名字就好,不需要改变目录
图中1选中则是配置同步FIFO;
图中2选中则是配置异步FIFO;
图中3是用来配置你需要写入和读出FIFO的数据的位宽;
图中4是用来配置你将要配置的FIFO的存储容量,即深度;
注:同步FIFO与异步FIFO的不同点就是:同步FIFO读和写都是一个时钟,异步FIFO读和写都有自己的时钟,且时钟的频率和相位都可以不同
直接next
图中1是读FIFO端的满标志;
图中2是读FIFO端的空标志;
图中3是读FIFO端的FIFO中数据量的标志;
图中4是写FIFO端的满标志;
图中5是写FIFO端的空标志;
图中6是写FIFO端的FIFO中数据量的标志;
注:之所以要分为对FIFO端和写FIFO端,是因为此FIFO为异步FIFO,读和写的时钟不同,而这些信息的获取都需要以时钟为基准。
然后一般情况下就可以一直next,直到
可以选中红色标记的选项,在实例化的时候可以直接拷贝里面的代码进行实例化
然后finish
配置完成,然后实例化
点击打开文件选项选择刚配置FIFO的名字相同的文件
复制文件的
需要注意的问题是:
1、读时钟和写时钟必须一直存在,不可间断性的提供,否则会造成FIFO无法正常工作
2、读FIFO时钟要和读数据的赋值端的时钟是一个时钟
3、写FIFO的时钟要和将要写的数据的时钟是一个时钟
4、注意满标志和空标志的使用,禁止在FIFO满的情况下写FIFO,禁止在空的时候读FIFO,否则会出现错误
首先是配置FIFO模块,步骤如下:工具栏Tools选项,选择MegaWizard Plug-In Manager选项,然后会出现如下对话框:
然后next,
图中的第4步是要选定目录并让你自己给这个将要配置的IP核起一个名字,一般情况下,只需要在后面输入名字就好,不需要改变目录
图中1选中则是配置同步FIFO;
图中2选中则是配置异步FIFO;
图中3是用来配置你需要写入和读出FIFO的数据的位宽;
图中4是用来配置你将要配置的FIFO的存储容量,即深度;
注:同步FIFO与异步FIFO的不同点就是:同步FIFO读和写都是一个时钟,异步FIFO读和写都有自己的时钟,且时钟的频率和相位都可以不同
直接next
图中1是读FIFO端的满标志;
图中2是读FIFO端的空标志;
图中3是读FIFO端的FIFO中数据量的标志;
图中4是写FIFO端的满标志;
图中5是写FIFO端的空标志;
图中6是写FIFO端的FIFO中数据量的标志;
注:之所以要分为对FIFO端和写FIFO端,是因为此FIFO为异步FIFO,读和写的时钟不同,而这些信息的获取都需要以时钟为基准。
然后一般情况下就可以一直next,直到
可以选中红色标记的选项,在实例化的时候可以直接拷贝里面的代码进行实例化
然后finish
配置完成,然后实例化
点击打开文件选项选择刚配置FIFO的名字相同的文件
复制文件的
module FIFO ( data, rdclk, rdreq, wrclk, wrreq, q, rdempty, wrfull);部分就可以实例化了;;
需要注意的问题是:
1、读时钟和写时钟必须一直存在,不可间断性的提供,否则会造成FIFO无法正常工作
2、读FIFO时钟要和读数据的赋值端的时钟是一个时钟
3、写FIFO的时钟要和将要写的数据的时钟是一个时钟
4、注意满标志和空标志的使用,禁止在FIFO满的情况下写FIFO,禁止在空的时候读FIFO,否则会出现错误
相关文章推荐
- Palindrome Linked List leetcode
- 源代码管理工具SVN
- 光流算法:Brox算法
- 机器学习(三):分类算法之决策树算法
- Access System
- 使用windows内存-堆内存
- 【基础建模】复杂建模-布尔运算和放样学习笔记
- java Cookie+Session实现自动登录
- HDU1575-Tr A(矩阵高速幂)
- Talented Chef
- Easyui-DataGrid 的增删查改
- django之创建第6-2个项目-过滤器列表
- Unity-Animator深入系列---控制IK
- 物体运动--通过改变transform--概述
- HDU 1548 A strange lift(BFS)
- VMware怎么开机自启动,关机自动挂起虚拟机
- 使用 /proc 文件系统来访问 Linux内核的内容
- int * * a[10],int * (*a)[10]和 int(*a[10])() 分别是什么意思
- 树莓派raspi2-ubuntu meta安装配置指导
- jQuery获取页面及个元素高度、宽度