FPGA Asynchronous FIFO设计思路(2)

首先讨论格雷码的编码方式:

先看4bit的格雷码,当MSB为0时,正向计数,当MSB为1时,即指针已经走过一遍了,最高位翻转,此时的格雷码是反向计数,这其中整套数据以最大值(深度)为对称中心,每一个数均符合格雷码的要求,即下一个状态比上一个状态只有1bit的变化。

3bit的格雷码,在最高位反向后,即指针达到了FIFO最后一个地址,低位开始重新计数,此时存在一个问题是,在最高位跳转的地方,有两bite的数据发生变化,违背了格雷码的规律。

以上为一种利用格雷码来产生数据指针的模型,使用格雷码来传递FIFO指针数据,那么FIFO的深度一定是pow2,以上模型中,指针ptr先通过gray to binary comb logic 模块,将格雷码转化成二进制数据,然后进行加一操作,得到bnext,然后通过binary to gray comb logic 将bnext转化为gnext, 然后gnext通过寄存器输出得到新的数据指针ptr.再通过gnext的最高位和次高位,计算出addrmsb.

以上是第二种数据指针生成模型,首先是,数据地址即指针去掉最高位后,参与加一运算,得到新的数据地址,采用二进制的形式。

然后加一得到的新数据地址进行格雷码转换,得到gnext的值,然后通过寄存器输出,即此模型同时输出数据指针(采用的格雷码)和数据地址值(采用二进制)。

以上为FIFO的一种整体设计模型。

实际操作中,空满标志位信号生成的问题

具体逻辑不用多说

关于空信号的生成,最高位,以及数据地址完全相等,即可以判断为空。

关于满信号的生成即复杂一些:

如果采用以前的判断依据,指针的最高位不同,剩下的数据地址完全相同,如果采用的是格雷码编码方式,就会出现问题。

满信号的判断依据中指出读指针和写指针的最高两位同时不同,剩下的相同,即可以判断FIFO满。

FPGA Asynchronous FIFO设计思路(2)的更多相关文章

  1. FPGA Asynchronous FIFO设计思路

    FPGA Asynchronous FIFO设计思路 将一个多位宽,且在不停变化的数据从一个时钟域传递到另一个时钟域是比较困难的. 同步FIFO的指针比较好确定,当FIFO counter达到上限值时 ...

  2. FPGA学习:VHDL设计灵活性&不同设计思路比较

    概要 由于VHDL编程实现数字电路具有很高的灵活性,为多种不同的思路编写实现同一种功能提供了可能.这些不同的设计思路,在耗费资源,可靠性,速度上也有很大的差异,往往需要我们根据实际需求和资源条件选择适 ...

  3. 基于FPGA的异步FIFO设计

    今天要介绍的异步FIFO,可以有不同的读写时钟,即不同的时钟域.由于异步FIFO没有外部地址端口,因此内部采用读写指针并顺序读写,即先写进FIFO的数据先读取(简称先进先出).这里的读写指针是异步的, ...

  4. 小梅哥FPGA数字逻辑设计教程——基于线性序列机的TLC5620型DAC驱动设计

    基于线性序列机的TLC5620型DAC驱动设计 目录 TLC5620型DAC芯片概述:    2 TLC5620型DAC芯片引脚说明:    2 TLC5620型DAC芯片详细介绍:    3 TLC ...

  5. FPGA异步时钟设计中的同步策略

    1 引言    基于FPGA的数字系统设计中大都推荐采用同步时序的设计,也就是单时钟系统.但是实际的工程中,纯粹单时钟系统设计的情况很少,特别是设计模块与外围芯片的通信中,跨时钟域的情况经常不可避免. ...

  6. TYPESDK手游聚合SDK服务端设计思路与架构之一:应用场景分析

    TYPESDK 服务端设计思路与架构之一:应用场景分析 作为一个渠道SDK统一接入框架,TYPESDK从一开始,所面对的需求场景就是多款游戏,通过一个统一的SDK服务端,能够同时接入几十个甚至几百个各 ...

  7. 分享一个CQRS/ES架构中基于写文件的EventStore的设计思路

    最近打算用C#实现一个基于文件的EventStore. 什么是EventStore 关于什么是EventStore,如果还不清楚的朋友可以去了解下CQRS/Event Sourcing这种架构,我博客 ...

  8. ENode框架单台机器在处理Command时的设计思路

    设计目标 尽量快的处理命令和事件,保证吞吐量: 处理完一个命令后不需要等待命令产生的事件持久化完成就能处理下一个命令,从而保证领域内的业务逻辑处理不依赖于持久化IO,实现真正的in-memory: 保 ...

  9. WebGIS中快速整合管理多源矢量服务以及服务权限控制的一种设计思路

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 在真实项目中,往往GIS服务数据源被其他多个信息中心或者第三方 ...

随机推荐

  1. 获取input标签的值

    取文本框值 AfterTiltle: $("[name='AfterTiltle']").val(), 取下拉列表值 AfterType: $("[name='After ...

  2. npm -g -D -s的区别

    npm install module-name 全局安装 npm install module-name -D 即 npm install module-name -save-dev  保存到devD ...

  3. [ 转 ] RESTful

    一.什么是RESTful 定义: REST全程是Representational State Transfer,表述性状态转移.它首次出现在2000年Roy Fielding的博士论文中,Roy Fi ...

  4. python学习-python入门

    开始学习python,开始记录. 第一个小程序:登陆系统 功能:1.通过文件名和密码导入用户名和密码~ 2.用户输入用户名和密码 3.将用户输入的用户名进行比对,先判断用户名是否在黑名单里面,如果在黑 ...

  5. dos脚本7章

    一.交互界面设计 没啥说的,看看高手设计的菜单界面吧: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 2 ...

  6. windows 10安装docker一直挂起在Installing Components and Removing Files

    碰到这个问题百度了好久都没有找到解决方式,什么用管理员方式运行,给文件夹权限啊,都不好使. 后面在bing上面搜docker install compoents关键字找到一条结果,如下如 点进链接,内 ...

  7. 深度学习(pytorch)-1.基于简单神经网络的图片自动分类

    这是pytorch官方的一个例子 官方教程地址:http://pytorch.org/tutorials/beginner/blitz/cifar10_tutorial.html#sphx-glr-b ...

  8. SQA

    SQA 一.SQA过程 首先组成一个团队,遵循敏捷开发的原则,进行分工合作,为软件开发编造一个用例故事,画出相应的图,小组讨论合作后写代码,软件质量保证(SQA-Software Quality As ...

  9. MAC 终端上传代码到Github 或者 Gitlab

    1.创建远程仓库. Project name:项目名称 Project description (optional):项目介绍 Visibility Level :项目的访问权限 2.创建完成后操作, ...

  10. AT24C0X I2C通信原理

    /********************************************************************** * AT24C0X I2C通信原理 * 说明: * 之前 ...