电子发烧友App

硬声App

扫码添加小助手

加入工程师交流群

0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示
电子发烧友网>电子资料下载>DSP>异步FIFO在FPGA与DSP通信中的应用解析

异步FIFO在FPGA与DSP通信中的应用解析

2017-10-30 | rar | 0.3 MB | 次下载 | 1积分

资料介绍

摘要 利用异步FIFO实现FPGADSP进行数据通信的方案。FPGA在写时钟的控制下将数据写入FIFO,再与DSP进行握手后,DSP通过EMIFA接口将数据读入。文中给出了异步FIFO的实现代码和FPGA与DSP的硬件连接电路。经验证,利用异步FIFO的方法,在FPGA与DSP通信中的应用,具有传输速度快、稳定可靠、实现方便的优点。
  关键词 异步FIFO;FPGA与DSP数据通信;EMIFA
  在目前电子系统的设计中,DSP+FPGA架构越来越多,其原因在于该架构兼顾了速度和灵活性。通用DSP的优点是通过编程可以广泛应用到产品中,并且主流制造商生产的DSP已能满足算法控制结构复杂、运算速度高、寻址方式灵活和通信性能强大等需求。但是传统的DSP采用冯-诺依曼结构或某种类型扩展。此种结构本质上是串行的,因此遇到需处理的数据量大,对处理速度要求高,但是对运算结构相对比较简单的底层信号处理算法则显不出优点,适合采用FPGA硬件实现。而采用DSP+FPGA的数字硬件系统就可以把二者优点结合起来,兼顾速度和灵活性,既满足底层信号处理要求,又满足高层信号处理要求。采用此架构,就不可避免地遇到FPGA与DSP之间数据通信的问题。本文讨论了异步FIFO在FPGA与DSP通信中的运用,该方法具有传输速度快,稳定可靠并且实现方便等优点。
  1 异步FIFO的结构
  由于FPGA和DSP具有各自的全局时钟,将FPGA中的数据传递给DSP时,也就是将数据从一个时钟域传递到另一个时钟域,并且目标时钟域与源时钟域是不相关的,因此这些域中的动作也是不相关的,从而消除了同步操作的可能性,并使系统重复地进入亚稳定状态。亚稳态也就是触发器工作在一种不确定的状态,这种不确定的状态将会影响到下一级触发器,最终导致连锁反应,从而使整个系统功能失常。当有大量的数据需要进行跨时钟域传输且对数据传输速度要求比较高的场合,克服亚稳态实现数据的高速稳定传输,异步FIFO是一种简单、快捷的解决方案。
  FIFO(First In First Out)是一种先进先出的数据缓存器,而异步FIFO是用一种时钟写入数据,用另一种时钟读出数据。以FPGA向DSP传输数据为例,FPGA产生写时钟,在写时钟的控制下同步向FIFO中写入数据,并且使相应的写指针增加1;DSP提供读时钟,在读时钟的控制下同步地从FIFO中取出数据,并且使相应的读指针增加1。这里唯一的跨时钟域操作就是对FIFO空或满的判断。如何根据异步的读、写指针信号产生正确的空、满标志,保证数据正确的写入或读出,而不发生溢出或读空的状态出现。就必须保证FIFO在满的情况下,不能进行写操作,在空的状态下不能进行读操作,这是异步FIFO设计的关键。
  判断FIFO为空还是满,本文采用如下算法:构造一个指针宽度为N+1,深度为2N Byte的FIFO,当读、写指针的二进制码中最高位不一致而其他N位都相等时,FIFO为满。当读、写指针完全相等时,FIFO为空。例如:一个深度为8 Byte的FIFO,FIFO_WIDTH=8,FIFO_DEPTH=2N= 8,N=3,指针宽度为N+1=4。起初rd_ptr_bin和wr_ptr_bin均为“0000”。此时FIFO中写入8 Byte的数据,wr_ptr_bin=“1000”,rd_ptr_ bin=“0000”。当然,这就是满条件。现在,假设执行了8次读操作,使得rd_ptr_bin=“1000”,这就是空条件。另外的8次写操作将使wr_ ptr_bin等于“0000”,但rd_ptr_bin仍然等于“1000”,因此FIFO为满条件。显然起始指针无需为“0000”。假设它为“0100”,并且FIFO为空,那么写入8 Byte会使wr_ptr_bin=“1100”,rd_ptr_bin仍为“0100”。这说明FIFO为满。
  不可以将读、写指针直接比较,因为读、写指针在不同的时钟域,直接比较会出现亚稳态现象。在涉及到触发器的电路中,亚稳态无法彻底消除,只能将其发生的概率降到最低。其中的一个方法就是使用格雷码。格雷码在相邻的两个码元之间只有一位变换。这就避免了读、写指针与时钟同步的时候发生亚稳态现象。另外一种方法就是使用两级D触发器同步,假设一个D触发器发生亚稳态的概率为P,那么两个级联的D触发器发生亚稳态的概率就为P2。
  综上所述,本文设计了如图1所示的FIFO,该FIFO的输入端口有wclk(写时钟),rclk(读时钟),wrst_n(写复位),rrst_n(读复位),sen-dbegin(启动数据发送,由DSP发送给FPGA),winc(写使能),rinc(读使能),wdata[DSIZE-1..0](写数据,以16位数据为例),输出端口为rdata[DSIZE-1..0](读数据,16位),wfull(写满标志),rempty(读空标志),ready(数据准备好,由FPGA发送给DSP)。该FIFO的深度设为2 048,即一共有2 048个16位数据存贮单元,当写复位无效,写使能有效时,FPGA就在写时钟的控制下将数据写入FIFO中,当写满约定的字符数时,将数据准备好信号置为有效,通知DSP可以取数据,当FIFO写满情况出现时,写满标志置为有效,阻止继续向FIFO中写入数据。当FIFO接收到DSP发来的启动数据发送信号且读使能信号均为有效时,FIFO就在DSP发来的读时钟的控制下,依次将数据放到16位读数据端,供DSP读取。
  异步FIFO在FPGA与DSP通信中的应用解析
dsp 异步FIFO EMIFA
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

下载该资料的人也在下载 下载该资料的人还在阅读
更多 >

评论

查看更多

下载排行

本周

  1. 1MDD品牌三极管BC807数据手册
  2. 3.00 MB   |  次下载  |  免费
  3. 2MDD品牌三极管BC817数据手册
  4. 2.51 MB   |  次下载  |  免费
  5. 3MDD品牌三极管D882数据手册
  6. 3.49 MB  |  次下载  |  免费
  7. 4MDD品牌三极管MMBT2222A数据手册
  8. 3.26 MB  |  次下载  |  免费
  9. 5MDD品牌三极管MMBTA56数据手册
  10. 3.09 MB  |  次下载  |  免费
  11. 6MDD品牌三极管MMBTA92数据手册
  12. 2.32 MB  |  次下载  |  免费
  13. 7STM32G474 HRTIME PWM 丢波问题分析与解决
  14. 1.00 MB   |  次下载  |  3 积分
  15. 8新能源电动汽车高压线束的铜铝连接解决方案
  16. 2.71 MB   |  次下载  |  2 积分

本月

  1. 1爱华AIWA HS-J202维修手册
  2. 3.34 MB   |  37次下载  |  免费
  3. 2NB-IoT芯片厂商的资料说明
  4. 0.31 MB   |  22次下载  |  1 积分
  5. 3PC5502负载均流控制电路数据手册
  6. 1.63 MB   |  22次下载  |  免费
  7. 4H110主板CPU PWM芯片ISL95858HRZ-T核心供电电路图资料
  8. 0.63 MB   |  6次下载  |  1 积分
  9. 5UWB653Pro USB口测距通信定位模块规格书
  10. 838.47 KB  |  5次下载  |  免费
  11. 6技嘉H110主板IT8628E_BX IO电路图资料
  12. 2.61 MB   |  4次下载  |  1 积分
  13. 7苏泊尔DCL6907(即CHK-S007)单芯片电磁炉原理图资料
  14. 0.04 MB   |  4次下载  |  1 积分
  15. 8苏泊尔DCL6909(即CHK-S009)单芯片电磁炉原理图资料
  16. 0.08 MB   |  2次下载  |  1 积分

总榜

  1. 1matlab软件下载入口
  2. 未知  |  935137次下载  |  10 积分
  3. 2开源硬件-PMP21529.1-4 开关降压/升压双向直流/直流转换器 PCB layout 设计
  4. 1.48MB  |  420064次下载  |  10 积分
  5. 3Altium DXP2002下载入口
  6. 未知  |  233089次下载  |  10 积分
  7. 4电路仿真软件multisim 10.0免费下载
  8. 340992  |  191439次下载  |  10 积分
  9. 5十天学会AVR单片机与C语言视频教程 下载
  10. 158M  |  183353次下载  |  10 积分
  11. 6labview8.5下载
  12. 未知  |  81602次下载  |  10 积分
  13. 7Keil工具MDK-Arm免费下载
  14. 0.02 MB  |  73822次下载  |  10 积分
  15. 8LabVIEW 8.6下载
  16. 未知  |  65991次下载  |  10 积分