坑,,以后填

对于Lattice 的  FIFO 存储器分为两种,见下图:

这两个的主要区别是一个后面加DC一个不加,那这个DC是什么意思呢??DC这里是Dual  Clock的意思,也就是双时钟的意思,那意思就很明显了,另一个是单时钟;更本质的可以说单时钟是同步FIFO的意思,双时钟是异步FIFO的意思。

同步FIFO:

一、先看datasheet

显示端口说明:

没有输出寄存器时的写操作,可以看出,写操作是在clk的上升沿的时候将 写请求使能有效且写数据准备好即可。写入数据之后empty就会被拉低。

上图显示写满之后再写数据就无效了。

读时序:

上图可以看出,在写使能有效的一个时钟周期之后数据才送出Q端口。

当最后一次读取数据的时候,empty信号会被拉高,然后一个时钟周期之后数据从Q端口送出。

在输出端口使能了输出寄存器之后,对FIFO的写操作没有影响,只是对读操作有影响,具体影响是:在原来的基础上又延时了一个时钟周期。

最后需要注意的是:

这个操作和生成FIFO的设置有关系。

现在就看FIFO生成的时候的设置吧:

首先是名字和路径以及语言的选择,直接跳过。

打开后界面如下:

界面设置也很简单, 先是FIFO的类型,默认即可;地址深度就是存多少个数据,这里深度只能是2的幂即2的n次方;数据宽度可以任意选择,默认输入和输出的深度宽度是一样的。Enable output reg选项就是使能输出寄存器选项,选择之后就是输出端数据延时两个时钟周期输出。

Controlled by RdEN 选择时候,读取的时候时序图就是上面最后一个时序图的时候。

设置输入满,输出空的阈值;设置显示内部数据个数。

最后选择左下端的Import IPX to Diamond project 选项之后,生成的FIFO文件会直接加入到工程里面去。

同步FIFO就到这里。

异步FIFO

异步FIFO与同步FIFO有所不同,

先是端口:

可以看出它有两个时钟,但是本质其实和同步FIFO相似,可以看做为两个同步FIFO,在不同的时钟驱动下一个只进行读操作,一个只进行写操作,读写单独操作互补影响,这里不做时序图的介绍和记录了,直接看生成时候的设置界面。

可以看到  上图两个红色方块内是两个不同之处,上面是读和写操作都要设置FIFO的存储深度和数据宽度。   而且深度要是2的幂。

最重要的是要确保输入的深度乘以数据宽度要等于输出的 深度乘以数据的宽度。否则生成不了FIFO。

下面方框内是数据的计数,读写数据分别计数。在写数据的计数增加之后,读数据的计数也会在读时钟作用下相应的增加。

LATTICE 存储之FIFO的使用的更多相关文章

  1. FPGA FIFO深度计算

    转自:http://comm.chinaaet.com/adi/blogdetail/37555.html 首先,一定要理解清楚FIFO的应用场景,这个会直接关系到FIFO深度的计算,如果是面试官抛出 ...

  2. 基于FPGA的图像去噪

    目录 结构图 其中FPGA 控制模块为核心,通过它实现视频图像数据的获取.缓存.处理和控制各模块间通讯[1].由CCD 相机对目标成像,高速图像数据由camera link 实时传输[2],经信号转换 ...

  3. Java知识总结

                                                                                                         ...

  4. STM32驱动MPU6050

    轴 MEMS轴 MEMS 加速度计,以及一个可扩展的数字运动处理器 DMP(Digital Motion Processor),可用 I2C 接口连接一个第三方的数字传感器,比如磁力计.扩展之后就可以 ...

  5. OSX 鼠标和键盘事件

    本文转自:http://www.macdev.io/ebook/event.html 事件分发过程 OSX 与用户交互的主要外设是鼠标,键盘.鼠标键盘的活动会产生底层系统事件.这个事件首先传递到IOK ...

  6. 《k8s 源码分析》- Custom Controller 之 Informer

    Custom Controller 之 Informer 概述 架构概览 reflector - List & Watch API Server Reflector 对象 ListAndWat ...

  7. 数组/Array/Tuple/yield

    数组 如果需要使用同一类型的多个对象,就可以考虑使用集合和数组.如果需要使用不同类型的多个对象,可以考虑使用Tuple(元组) 数组的声明 在声明数组时,应先定义数组元素中的类型,其后是一对空方括号和 ...

  8. 基于FPGA的1553B通信模块的设计(转)

    reference:http://www.21ic.com/app/eda/201808/798483.htm https://www.milstd1553.com/ [导读] 摘 要: 提出一种将F ...

  9. ETH—Lwip以太网通信

    第39章     ETH—Lwip以太网通信 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/ ...

随机推荐

  1. sql where and or优先级 待验证

    where 后面如果有and,or的条件,则or自动会把左右的查询条件分开,即先执行and,再执行or.原因就是:and的执行优先级最高! 关系型运算符优先级高到低为:not and or 问题的解决 ...

  2. java基于socket的简单聊天系统

    /*=============服务端================*/ /** * 服务器程序 在9999端口监听 * 可以通过控制台输入来回应客户端* @author xiaoluo* @qq 3 ...

  3. C#-WebForm-WebForm开发基础

    1.C/S 客户端应用程序 WinForm WPF 平级 数据是存放在其他的电脑上或服务器上 需要从服务器上下载相应的数据,在本地电脑上的客户端里进行加工 数据的加工是在用户的电脑上执行的,会对用户的 ...

  4. mac下需要安装旧 Java SE 6 才能打开程序解决办法

    今天我在mac系统下面安装myeclipse2014(myeclipse-pro-2014-GA-offline-installer-macosx.dmg)的时候,发现显示错误: 您需要安装旧 Jav ...

  5. IntelliJ IDEA 常用设置讲解

    说明 IntelliJ IDEA 有很多人性化的设置我们必须单独拿出来讲解,也因为这些人性化的设置让我们这些 IntelliJ IDEA 死忠粉更加死心塌地使用它和分享它. 常用设置 IntelliJ ...

  6. 网络抓包wireshark

    抓包应该是每个技术人员掌握的基础知识,无论是技术支持运维人员或者是研发,多少都会遇到要抓包的情况,用过的抓包工具有fiddle.wireshark,作为一个不是经常要抓包的人员,学会用Wireshar ...

  7. Unslider.js Tiny Sample

    <!-- The HTML --><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&g ...

  8. jenkins使用简记

    一.安装 jenkins有多种安装方式,可以使用内嵌的Servlet容器运行,也可以基于Apache运行,也可以安装成Linux或Windows服务. 1.使用 Servlet 容器运行 从官网下载 ...

  9. [译]学习HTTP协议的请求行

    原文:http://fiddler2.com/blog/blog/2013/02/13/understanding-the-request-line 最近有一位Fiddler用户问我一个问题: 我在使 ...

  10. C#常用类库(100多个)

    http://download.csdn.net/download/dxf1213cs/8238153