异步fifo设计注意事项有哪些(陈设设计)

近日学习用到异步FIFO,故写下这篇博客记录学习心得。在我看来,异步FIFO的设计注意事项大体分为两点:亚稳态的处理空满状态的判断第一,来说一下亚稳态。亚稳态是指触发器无法在某个规定时间内达到一个可确认的状态。在FIFO的设计中,产生的原因主要由两点:一是逻辑电平的误判,也就是如果通过二进制作为指针来判断空满状态,因二进制数值变化引起的位数变化大,对电路的危害也随之增加,故在本设计中使…

大家好,又见面了,我是你们的朋友全栈君。

近日学习用到异步FIFO,故写下这篇博客记录学习心得。
在我看来,异步FIFO的设计注意事项大体分为两点:

  1. 亚稳态的处理
  2. 空满状态的判断

第一,来说一下亚稳态。亚稳态是指触发器无法在某个规定时间内达到一个可确认的状态。在FIFO的设计中,产生的原因主要由两点:一是逻辑电平的误判,也就是如果通过二进制作为指针来判断空满状态,因二进制数值变化引起的位数变化大,对电路的危害也随之增加,故在本设计中使用个格雷码。二是信号和时钟之间不满足要求,即建立时间和保持时间未满足,在这里通过打两级寄存器来消除亚稳态使信号稳定。

第二,关于空满状态的判断,常使用的方法为附加位比较法。对于二进制指针而言,FIFO的满状态时写指针比读指针多循环了一次,而且两个数只是最高位不同,其余各位都相同。那么我就可以这样判断,如果读指针和写指针的最高位不同,而其他位都相同时,此时的状态为满状态。FIFO的空状态时写指针和读指针相同,那么此时读指针和写指针相等。这样读指针和写指针就变成了一个n位指针,其中低n-1位时用来存放FIFO存储器的地址,可以用来对2^(n-1)个存储单元寻址,而最高位则用来辨别空满状态。

但是格雷码在判断空满状态时和二进制有出入。当格雷码由7到8时(0100到1100),可以看到指针的附加位改变,但是地址位并未变化,这是因为格雷码是一种镜像码造成的。所以我们需要附加位和地址位分开循坏,此时就需要既能产生n位格雷码又能产生n-1位格雷码的计数器,这种计数器被称为“两重格雷码计数器”。格雷码指针的空状态也是判断读指针和写指针是否相等。但是判断满状态和二进制指针有很大不同。首先应该明白数据存入的顺序并不是按照000递增开始的,而是随机的。例如一次写入数据是从十进制的地址6开始,连续写入8个数据,地址指向14,这是存储器存满8个数据,应该产生满状态输出。地址6的格雷码0101,地址14的格雷码1001。假如从十进制的地址2开始,结束地址指向10,此时地址2的格雷码为0011,地址10的格雷码为1111,观察两次例子,起始地址和结束地址的格雷码后两位都相同,前两位的异或值相等,并且起始地址和结束地址的首位是不同的。那么4位格雷码判断满状态就可以分为3步:首先后两位相同,然后前两位的异或值相等,最后首位不同。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/129143.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • C语言矩阵求逆(c语言求矩阵的局部最大值)

    采用高斯消去法求逆直接上代码voidMatrix_inverse(doublearc[6][6],intn,doubleans[6][6])//计算矩阵的逆{ inti,j,k;//列 doublemax,tempA,tempB,P; intmax_num; doublearcs[6][6]; memcpy(arcs,arc,288); f…

    2022年4月13日
    77
  • auto.js微信自动回复脚本_微信群助手机器人

    auto.js微信自动回复脚本_微信群助手机器人一、前言整体思路1)找到头像右上角有消息标志的聊天(注意直接跑下面代码的时候请确保聊天界面由此前提)2)点击进入聊天窗口,找到所有消息3)取最后一个消息(最新消息)4)和之前的新消息对比是否发生变化5)新消息推送至API6)收到API消息发送微信v8版本发送消息时,不再显示“发送”按钮了,也就没办法用找到“发送”控件的方法实现发送消息了。尝试用KeyCode(code)方式,发送回车键,发现也无效,原因查了一下好像是需要ROOT还是安卓9以上此方法失效。于是用坐标点击的方式点击键盘上的

    2022年9月30日
    2
  • 微信公众平台域名设置「建议收藏」

    微信公众平台域名设置「建议收藏」微信公众平台域名设置微信公众平台的开发目前可在三个地方配置域名,域名所起到的作用不尽相同,本篇文章将讲解微信公众平台如何配置、以及配置后的域名各有什么样的作用(注:文章中的图片来源于个人的微信订阅号、接口测试号)。基本配置登录微信公众平台后,在“开发”菜单下有个“基本配置”菜单;图1基本配置点开后可看到“公众号开发信息”、“服务器配置(未启用)”、“已绑定的微信开放平…

    2022年6月18日
    429
  • 问答:程序员到底是一群怎样的存在?[通俗易懂]

    点击上方☝,轻松关注!及时获取有趣有料的文章话不多说,反正就是很牛逼的存在!可以接受反驳,但就是牛逼~下面来看看我的一些朋友是怎么说的吧~火星????哥就是苦逼的码农加班狗,35岁后面临…

    2022年2月28日
    49
  • 用xp系统的rundll32进行锁屏!!!!!劲爆!!!!!

    用xp系统的rundll32进行锁屏!!!!!劲爆!!!!!http://hi.baidu.com/joleincn/blog/item/d1dfb7d939c69fe177c638b0.html通常,正在忙一些事情,可是又有急事要走开,又不想让别人看自己的东西,动自己的东西,怎么办呢?在网上下一大堆锁屏工具又不美观,这时,可以用系统自带的来进行锁屏!!!方法:在桌面上新建一个快捷方式,在弹出对话框中输入

    2022年7月21日
    19
  • 面向对象程序设计的基本概念_java面向对象程序设计

    面向对象程序设计的基本概念_java面向对象程序设计Java程序设计(面向对象)- 基本概念

    2022年4月22日
    55

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号