当前位置:首页 > 嵌入式 > 嵌入式硬件
[导读]利用异步FIFO实现FPGA与DSP进行数据通信的方案。FPGA在写时钟的控制下将数据写入FIFO,再与DSP进行握手后,DSP通过EMIFA接口将数据读入。文中给出了异步FIFO的实现代码和FPGA与DSP的硬件连接电路。经验证,利用异步FIFO的方法,在FPGA与DSP通信中的应用,具有传输速度快、稳定可靠、实现方便的优点。

摘要利用异步FIFO实现FPGA与DSP进行数据通信的方案。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的关键部分Verilog代码如下:


需要说明的是,在产生写满标志时,由于采用格雷码,写满标志判断的条件是:如果读写指针的最高两位不同,其余位相同,则为写满状态。为了说明简便,以4位格雷码表示深度为8的FIFO为例,当读指针指向第7个地址时,读指针为0100,此时若写指针指向第8个地址,则写指针为1100,此时两者仅最高位不同而其余位相同,但此时FIFO并不是处于写满状态,这与前文所叙述的用二进制码表示的读写指针判断方法是有区别的。当写操作写满一圈,第二次到达地址7时,此时的写指针为1000,可以看出,此时两者的最高两位不同,而其余位相同,这时FIFO真正处于写满状态。

2 DSP端数据接收

TI公司的TMS320C6000系列DSP均提供EMIFA接口,本文利用EMIFA接口实现FPGA向DSP传输数据,实现两者硬件连接的电路如图2所示。


其中,EMIFA的16位数据端与FIFO的Rdata端相连以便接收FPGA发来的数据,GPI04_13,GPI04_12,GPI04_15这3个通用IO口用来接收或输出相应的握手信号。EMA_WE与FIFO的读使能端相连,EMA_CS与FIFO的读时钟相连。

图3所示为DSP的EMIFA口读取数据的时序图,从图中可以看出,每一次读数据操作均以EMA_CS(EMIFA使能信号)下降沿开始,以EMA_CS的上升沿结束。同时,因为是读取操作,EMA_WE(EMA读写控制信号,低为写,高为读)始终为高电平,EMA_OE(EMA输出使能信号,低有效)在数据读取时刻为低电平。所以,将EMA_CS连至FIFO的Rclk端,恰好实现DSP读取一次数据,FIFO更新一个数据,而EMA_WE可作为FIFO的读使能信号。

3 仿真结果与结论

本文设计了数据宽度为16位,深度为2 048的FIFO,并使用Verilog语言编写了FIFO模块和与DSP的接口模块,利用该FIFO,FPGA实现了将数据1~65 535传递给DSP。在Quartus II软件下进行仿真得到的结果如图4所示。


由图4可以看出,在rst变为高电平以后,FPGA在Wclk的上升沿依次将数据写入FIFO中,写指针也从0开始逐次增1。在收到DSP发来的gp15(启动数据发送信号)有效后,在读时钟Rclk的上升沿,FPGA将数据从1开始逐次输出到Rada端,供DSP读取。DSP端在配置好EMIFA口后,编写的相应接收程序,正确接收到了从0~65 535这65 536个数据。

为实现FPGA与DSP之间的数据通信,本文提出了利用异步FIFO的方法,采用格雷码和两级D触发器同步的方法降低了亚稳态现象出现的概率。同时,给出了FPGA和DSP实现数据通信的硬件连接电路。经验证,利用异步FIFO的方法,能够稳定可靠地从FPGA中传输数据给DSP。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

数字信号处理器(DSP)在通信、控制、图像处理等多个领域扮演着越来越重要的角色。TMS320F2808PZA作为德州仪器(Texas Instruments)推出的一款高性能DSP控制器,其独特的架构和强大的功能使其在众...

关键字: tms320f2808pza 数字信号处理器 DSP

从世界上第一颗DSP诞生至今30年来,国际一线老牌芯片厂商长期占据领先技术和市场地位,国内芯片厂商在DSP上的声量很小。然而经过了6年的沉心打磨之后,湖南进芯电子开始在这一领域崭露头角。凭借着更贴近中国本土特色的差异化产...

关键字: DSP MCU 电机控制 进芯电子

今天,小编将在这篇文章中为大家带来数字信号处理器DSP的有关报道,通过阅读这篇文章,大家可以对它具备清晰的认识,主要内容如下。

关键字: DSP 数字信号处理器

DSP的国产替代不会是一件很容易的事情,但受到当前国际竞争态势的影响,本土开发者亟需拥有降本优势、供应链安全保证,以及能协助打造极高竞争力产品的DSP芯片。也就是说,发展国产DSP是不二选择。

关键字: DSP

将DSP和单片机构成双CPU处理器平台,可以充分利用DSP对大容量数据和复杂算法的处理能力,以及单片机接口的控制能力。而DSP与单片机之间快速正确的通信是构建双CPU处理器的关键问题。

关键字: 单片机 spi通信 DSP

随着科技的不断发展,微控制器(MCU)和数字信号处理器(DSP)已经成为了电子行业中不可或缺的重要组成部分。它们在各种电子设备中发挥着关键作用,如智能手机、平板电脑、家用电器等。然而,尽管它们都是用于处理数字信号的集成电...

关键字: MCU DSP 数字信号处理器 微控制器

随着环境保护和能源可持续性的日益关注,电动汽车作为一种清洁、高效的交通工具逐渐成为全球汽车行业的热点。与传统的内燃机驱动汽车相比,电动汽车具有零排放、低噪音和高能量利用效率等显著优势。

关键字: DSP 芯片 混合动力汽车

在平常的日常生活中,噪声总是不可避免的。每个人承受噪声的能力也不尽相同,喜欢安静的人需要一些降噪措施,降噪耳机应运而生,甚至都能算得上是城市生活的必备品了

关键字: 主动降噪 DSP ANC

北京2023年9月22日 /美通社/ -- 华为全联接大会2023期间,华为举办了"昇思MindSpore AI框架:引领大模型&科学智能原生创新"主题论坛,软通动力数字化创新服务线高级副总裁...

关键字: DSP AI 模型 开源

MCU和DSP在双处理器架构中各有不同的特性和功能。MCU,即微控制器,主要负责完成应用层、网络层和数据链路层的处理,控制移动终端的外围电路(如键盘、显示屏等)连接,以及整个通信协议栈的实现。它倾向于系统控制,负责协调各...

关键字: MCU DSP
关闭
关闭