首页 > 其他分享 >(4)跨时钟域设计(多bit+FIFO)

(4)跨时钟域设计(多bit+FIFO)

时间:2024-06-06 20:45:15浏览次数:25  
标签:结点 FIFO 信号 bit 时钟 指针

一、引入

   以上是多bit指示信号的传输

  与指示信号不同,多bit数据流具有连续性,即背靠背传输,同时要求信号具有较快的传播速度

  目前多bit数据流传输有两种,一种是借助SRAM,另一种是借助FIFO

二、FIFO

   如果FIFO内数据写满则生成满信号,反压上游结点,上游停止写入新的数据,否则会冲洗掉已写入的数据;如果FIFO内的数据全部被读则实时生成空信号,控制下游结点不再进行读操作,否则会将读过的数据再读一遍

  总体架构:

  FIFO Memory:FIFO内部的双端口SRAM,存储上游结点写入的数据wdata,下游节点从rata中读出;SRAM的读写地址采用每次只递增1的机制,写和读到最高地址后重新返回0地址

  FIFO wptr & full:满信号生成电路,通过判断在写时钟域下,写指针和读指针之间的关系,实时生成满信号wfull,以通知上游结点停止写操作

  FIFO rptr & empty:空信号生成电路,通过判断在读时钟域下,写指针和读指针之间的关系,实时生成空信号rempty,以通知下游结点停止读操作

  sync_r2w、sync_w2r:两级同步器,将对方的指针传递到自己的时钟域下进行同步

  二进制的读写指针通常超过了1bit,而多比特信号是不能直接使用同步器的,因此这里使用格雷码进行传输

  所以在传输读写指针之前,需要先将二进制转化为格雷码,然后再传到对方的时钟域下,转化方法如下:

 

  空满状态判断:

   从下往上看

  读空:读写指针相同,读指针追上了写指针,这种情况发生在复位操作或读指针读出FIFO中最后一个字时

  写满:读写指针再次相同,写指针转了一圈(wrapped around),追上了读指针

  区分:

  使用格雷码进行空满判断:

  设计FIFO的深度:

  关键:分清数据重载和轻载的情况,如果在重载时满足需求则轻载时也能胜任

  注:X、Y为每Y个时钟周期有X个数据读出,也就是读的速率

  关于如何计算FIFO深度,可以参考这个帖子:FPGA数字IC笔试面试009—异步/同步FIFO深度计算_牛客网 (nowcoder.com)

 

标签:结点,FIFO,信号,bit,时钟,指针
From: https://www.cnblogs.com/liwilling/p/18235985

相关文章

  • rabbitMq实现系统内的短信发送设计&动态获取BEAN
    rabbitMq实现系统内的短信发送设计&动态获取BEAN1.短信非系统的重要节点操作,可以在任务完成之后,比如下单成功,发送下单成功的mq消息,短信服务接收到mq消息,动态的判断该短信的code,通过全局公共的父类(调用中台等接口获取全部所有需要的对象参数),获取短信中的{mobile}等参数来替换短......
  • Rabbitmq
    //connection//channel//broke//exchange:fanout、dirct、topic(*:一个单词、#:多个单词)、header//queue//bind(exchange,queue,routingkey)//一、如何保证消息不丢失//生产者发布消息时设置消息持久化(Persistent:true)、设置确认模式(DeliveryMode:2)//声明交换机时设......
  • RabbitMQ tutorial - "Hello world!"
    RabbitMQtutorial-"Helloworld!"本例阻塞线程方式一生产者一消费者依赖项abbitMQisinstalledrunningonlocalhostonthestandardport(5672).理解RabbitMQisamessagebroker:itacceptsandforwardsmessages.Youcanthinkaboutitasapostoffic......
  • Windows下载安装RabbitMQ客户端(2024最新篇)
    文章目录RabbitMQ认知RabbitMQ下载RabbitMQ安装更多相关内容可查看RabbitMQ认知定义:RabbitMQ是一个消息中间件,它接受并转发消息。你可以把它当做一个快递站点,当你要发送一个包裹时,你把你的包裹放到快递站,快递员最终会把你的快递送到收件人那里。RabbitMQ与快递站......
  • 51单片机学习记录-07-时钟芯片DS1302
    1DS1302介绍DS1302是由美国DALLAS公司推出的具有涓细电流充电能力的低功耗实时时钟芯片。它可以对年、月、日、周、时、分、秒进行计时,且具有闰年补偿等多种功能RTC(RealTimeClock):实时时钟,是一种集成电路,通常称为时钟芯片2 引脚定义和应用电路3 内部结构框图4......
  • Vue前端实现接收rabbitMQ及时消息 原
    https://blog.csdn.net/dawnStart/article/details/110479833打开APPVue前端实现接收rabbitMQ及时消息原创2020-12-0214:03:11阅读量1.4wAI必读dawnStart码龄4年关注Vue前端实现实时接收rabbitMQ及时消息,看了别人写的不太详细1.rabbitMQ安装Stom插件2.Vu......
  • C语言-----计算两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?
    intcountBits(intn){intcount=0;while(n){count+=n&1;//count=count+n&1//n&1的结果只可能是1或者0//如果对应的二进制位上的数字不同,那么n&1的结果就是1,//那么count刚好加一n>>=1;......
  • View->Canvas使用RectF方式绘制Bitmap,RectF大小和Bitmap大小不同导致绘制效果不同
    图片XML文件<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent......
  • View->Bitmap缩放到自定义ViewGroup的任意区域(RectF方式绘制Bitmap)
    XML文件<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent&quo......
  • CentOS-7.9 安装rabbitmq3.9.11 ,erlang-23.3.4.11
    下载所需rpm包wget https://github.com/rabbitmq/erlang-rpm/releases/download/v23.3.4.11/erlang-23.3.4.11-1.el7.x86_64.rpmwget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.9.11/rabbitmq-server-3.9.11-1.el7.noarch.rpm安装Erlangsu......