当前位置:首页 > 新闻资讯 > 学习笔记 >

FPGA学习笔记-FPGA同步读写的FIFO,怎样快速计算FIFO深度?

时间:2024-07-11      来源:网络收集 关于我们 0

同步和异步FIFO

同步FIFO:读写都是同一个时钟源;异步FIFO:读写不是同一个时钟源。

最常见的就是异步FIFO的问题,因为异步FIFO会存在如下几种情形:

1.写时钟快于读时钟,写和读的过程中没有空闲周期

答:假设写时钟频率为80MHz,读时钟频率为50MHz,突发传输大小为120,写和读的过程中没有空闲周期,分析过程:写时钟周期Tw = 1000/80 ns = 12.5ns;同理读时钟周期为20ns;突发写长度为120个数据,写120个数据耗时120 * 12.5 = 1500ns;1500ns时间内读出数据1500/20ns = 75个;故最小FIFO深度为120 - 75 = 45。

2.写时钟频率大于读时钟频率,但在读写的过程中存在空闲周期

答:假设写时钟频率为80MHz,读时钟频率为50MHz,突发传输大小为120,写和读的过程中有空闲周期,每2个写时钟周期写1个数据,每4个时钟周期读一个数据,那么写一个数据需要25ns,读一个数据需要80ns,那么由于突发写数据个数为120个,写这么多数据需要时间120 * 25ns = 3000ns;4个读时钟周期读一个数据,因此读一个数据需要时间80ns,3000ns读了3000/80 = 37.5个数据(0.5不算一个数据,没读完整),约等于37个数据。

所以,FIFO的最小深度为120 - 37 = 83。

3.写时钟慢于读时钟,且读写过程中没有空闲周期

答:假设写时钟频率为30MHz,读时钟频率为50MHz,突发传输大小为120,写和读的过程中没有空闲周期,分析:这种情况下永远也不会发生数据丢失的情况;fifo的深度为1。

4.写时钟频率小于读时钟频率,但读写过程中存在空闲周期

答:假设写时钟频率为30MHz,读时钟频率为50MHz,突发传输大小为120,写和读的过程中有空闲周期,每2个写时钟周期写1个数据,每4个时钟周期读一个数据,分析:写时钟周期1000/30 ns = 100/3 ns;读时钟周期 20ns;写一个数据需要2个时钟,也就是200/3 ns;读一个数据需要4个时钟,也就是80 ns;写120个数据需要时间8000ns,这段时间内读出数据8000/80 = 100个;

因此,FIFO的最小深度为120 - 100 = 20。

5.读写时钟速率相同,且无空闲时钟

答:(分析)如果读写时钟之间没有相位差,则不需要FIFO就可以进行读写;如果二者存在相位差,只需要FIFO的深度为1即可。

6.读写时钟频率一致,但在读写过程中存在空闲周期

答:读写时钟均为50MHz,突发传输大小为120,写和读的过程中有空闲周期,每2个写时钟周期写1个数据,每4个时钟周期读一个数据,分析:两个时钟写一个数据,需要时间40ns;4个时钟读一个数据,需要80ns;由于突发长度120,需要120*40 = 4800ns写完;这段时间读出数据个数:4800/80 = 60;所以,FIFO最小深度为120 - 60 = 60。

MOORE 与 MEALY 状态机的特点

Moore有限状态机的输出只与当前状态有关,其转移函数会考虑输入信号的当前值,但输出不是直接由输入信号决定的。在时钟脉冲的有效边沿作用后的有限个门延后,输出达到稳定值。从时序上看,Moore状态机属于同步输出状态机。Moore有限状态机最重要的特点就是将输出与输入信号隔离开来。

Mealy 状态机的输出是现态和所有输入的函数,随输入变化而随时发生变化。从时序上看,Mealy 状态机属于异步输出状态机,它不依赖于时钟。

同步复位和异步复位

1.同步复位:复位信号与clk有效,当clk有效的时候,复位才有效。

优点:有利于进行时序分析,因为复位操作与时钟信号同步,可以简化时序逻辑的设计和分析过程;由于复位操作发生在时钟边沿,能有效避免由于复位信号的不稳定或毛刺导致的误操作。

缺点:复位信号需要保持一定的时间,直到下一个时钟边沿到来,才能确保复位操作被系统正确识别;在某些逻辑器件中,如果触发器只提供异步复位端口,那么采用同步复位就需要在寄存器的数据输入端插入额外的组合逻辑,这可能会增加设计的复杂性和需要考虑的组合逻辑延迟等因素。

2.异步复位:复位信号与clk无关,只和自身输入的复位信号有关。

优点:大部分逻辑器件中的D触发器都只有异步复位端口,无需再插入组合逻辑,省资源;设计相对简单;

缺点:复位信号可能不满足建立和保持时间要求,因此容易出现亚稳态;容易受毛刺影响;

同步和异步逻辑电路

1.同步逻辑:时钟之间有着固定的因果关系,且触发只和时钟有关,只要在时钟沿处才能触发。

2.同步电路:同步电路中所有触发器的时钟端连接在同一时钟源上,所有触发器状态的改变都与时钟信号同步。因此当时钟沿到来则输出变化,否则保持,直到下一时钟脉沿到来才发生变化。

3.异步逻辑:时钟之间没有固定的因果关系,其触发和多种控制因素有关,当任何一个因素发生变化,那么都能实现触发。

异步电路中没有统一的时钟。有些触发器的时钟输入端与时钟源相连,只有这些触发器的状态变化与时钟脉冲同步,而其他的触发器的状态变化不与时钟脉冲同步。

总结:同步逻辑和异步逻辑不是完全割裂的,异步逻辑中肯定有同步逻辑的成分在,但同步逻辑中不可能有异步逻辑的成分。

乒乓操作问题

乒乓操作是一个主要用于数据流控制的处理技巧,外部输入数据流通过“输入数据选择控制”模块送入两个数据缓冲区中,数据缓冲模块可以为任何存储模块,比较常用的存储单元为双口RAM(Dual RAM),SRAM,SDRAM,FIFO等。

在第1个缓冲周期,将输入的数据流缓存到“数据缓冲1”模块,在第2个缓冲周期,“输入数据选择控制”模块将输入的数据流缓存到“数据缓冲2”模块的同时,“输出数据选择控制”模块将“数据缓冲1”模块第一个周期缓存的数据流送到“后续处理”,模块进行后续的数据处理,在第3个缓冲周期,在“输入数据选择控制”模块的再次切换后,输入的数据流缓存到“数据缓冲1”模块,与此同时,“输出数据选择控制”模块也做出切换,将“数据缓冲2”模块缓存的第二个周期的数据送到“后续处理模块”,如此循环。

这里正是利用了乒乓操作完成数据的无缝缓冲与处理,乒乓操作可以通过“输入数据选择控制”和“输出数据选择控制”按节拍,相互配合地进行来回切换,将经过缓冲的数据流没有停顿的送到“后续处理模块”。

亚稳态问题

亚稳态:输入信号在时钟有效沿的建立时间和保持时间之间变化,导致其不满足触发器建立保持时间的时序要求,使得输出有一段时间的不确定状态。

亚稳态现象包括如下几种:

1、跨时钟域中的亚稳态:由于源信号时钟与目的信号时钟的相移未知,可能导致保持时间和建立时间条件不满足,从而产生亚稳态现象。——采用FIFO对跨时钟域数据通信进行缓冲设计。

2、异步信号中的亚稳态:由于异步信号不与触发器同步时钟同步,所以可能导致保持时间和建立时间条件不满足,产生亚稳态现象。—— 通过同步处理来解决。

3、异步复位检测中的亚稳态:复位信号的变化出现在建立或者保持时间内,也无法保证满足Tsu和Th的要求,出现亚稳态。——对复位电路采用异步复位、同步释放方式处理。


注明:本内容来源网络,不用于商业使用,禁止转载,如有侵权,请来信到邮箱:429562386ⓐqq.com 或联系本站客服处理,感谢配合!

用户登陆

    未注册用户登录后会自动为您创建账号

提交留言