打印
[DSP]

DSP EMIF 与FPGA 双口RAM 高速通信实现

[复制链接]
9484|15
手机看帖
扫描二维码
随时随地手机跟帖
沙发
wangjiahao88|  楼主 | 2020-7-17 21:36 | 只看该作者
DSP+FPGA 结构最大的特点是结构灵活,有较强的
通用性,适于模块化设计,从而能够提高算法效率;同时其开发周较短,系统易于维护和扩展,适合于实时信号
处理。而要想实现DSP+FPGA 结构的正确应用,先要
实现DSP和FPGA之间的通信桥梁,也就是首先要解决
两者之间的通信问题,即接口设计,本文提出一种DSP
和FPGA之间的通信方式。

使用特权

评论回复
板凳
wangjiahao88|  楼主 | 2020-7-17 21:37 | 只看该作者
本设计采用Xilinx 公司的Virtex5 系列的FPGA 器
件,在该器件内部集成有块存储器资源,该存储器资源
可配置成单口RAM 、简单双端口RAM 、真正双端口
RAM、速度性能可以达到450 MHz,数据位宽也可以根
据不同的应用场合配置为8位、16位、32位、64位。
由于要实现数据的双向传输,所以该设计将FPGA
内部的块存储器配置为真正的双端口RAM。真正的双
端口RAM 有两个完全独立的端口(端口A和端口B)用
于访问共享的存储空间。双口RAM的每个端口有各自
的数据线、地址线、读写控制线,可以允许不同的系统同
时对其共享的存储空间进行访问,本文就实现了用DSP
和FPGA对FPGA内部的双口RAM共享的存储空间进
行访问。
Xilinx 公司的IP 核生成工具CORE Generator 可以
使用FPGA内部的块存储器,并按所需要的存储器类型
配置为所需要的真正双端口RAM,数据位宽为32位,存
储深度根据需要配置。配置双口RAM的过程和配置好
的双端口RAM 原理图符号如图1所示。

使用特权

评论回复
地板
wangjiahao88|  楼主 | 2020-7-17 21:38 | 只看该作者
EMIF 是外部存储器和TMS320C6455 片内单元间
之间的接口,CPU访问片外存储器时必须通过EMIF接
口,要实现DSP 访问FPGA 内部双口RAM,必须通过
EMIF接口与FPGA内部RAM相对应的管脚对应起来,
EMIF接口与FPGA内部双口RAM连接如图2所示。



使用特权

评论回复
5
wangjiahao88|  楼主 | 2020-7-17 21:39 | 只看该作者
由上面的配置可以知道FPGA内部双口RAM有两个
端口(端口A 和端口B)共享一个存储空间,为了实现
FPGA与DSP的正确通信,首先要实现两者之间的物理
连接,将双口RAM的端口A用于DSP通过EMIF接口来
访问FPGA 内部RAM,端口B 用于FPGA 自己访问该
RAM的端口。也就是DSP通过端口A来访问共享的存
储空间,FPGA在内部通过端口B来访问同样的存储空
间,其中,EMIF的数据线要通过一个选择器分别连接到
双口RAM的数据输入端口和数据输出端口,由SOE信
号对数据的传输方向进行控制,EMIF接口的地址线也
要和双口RAM的端口A的地址线连接,EMIF接口的时
钟输出信号ECLKOUT1与双口RAM的时钟信号引脚连
接,SADS、SWE、CE、BE 信号经FPGA 内部的组合逻辑
电路与双口RAM相应信号相连,以实现对FPGA内部双
口RAM的读写功能。

使用特权

评论回复
6
wangjiahao88|  楼主 | 2020-7-17 21:39 | 只看该作者
为了达到数据在DSP和FPGA之间高速传输的目
的,采取了下面的通信机制,首先在上文中配置的FPGA
内部双口RAM中,将双口RAM中的存储空间分成两个
部分,首先说一下两块存储区的用途,第一块存储区用
于FPGA向里面写数据,DSP从里面读出数据,第二块存
储区用于DSP 向里面写入数据,FPAG 从里面读出数
据。根据这两种传输方式所要传的数据量要固定这两
块存储区的大小和地址,DSP和FPGA每次访问固定的
地址和长度的存储区。
图3展示了数据由FPGA写入双口RAM内部存储
区一,经EMIF接口传输到DSP内部进行处理,DSP将处
理的结果经EMIF接口写入到双口RAM内部的存储区
二,FPGA从存储区二读出处理结果的流程框图。

使用特权

评论回复
7
wangjiahao88|  楼主 | 2020-7-17 21:40 | 只看该作者
上面介绍了数据传输的流向,下面说明如何实现
DSP和FPGA在对共享存储器进行操作时的配合。首先
FPGA接收外来的图像数据,存储于FPGA内部的双口
RAM的存储区一内,当存储区一中的内容存满时,FGPA
停止向存储区一写入数据,FPGA内部逻辑电路产生信
号,向DSP 模块申请中断,DSP 响应中断请求,通过
EMIF接口从存储区一中读出存入的图像数据并处理,
图像数据处理完后,DSP将处理完后的结果数据存入存
储区二中,结果数据存入完成后DSP通过中断模块产生
信号,通知FPGA读出结果数据并输出。
通过上面的过程数据在DSP和FPGA中不仅能快
速的传输,也能在DSP中实现数据的快速处理。这种方
式能有效的结合DSP和FPGA两者的优势,以达到最好
的信号传输与处理的效果,在单位时间内能处理的数据
量更大以及数据的快速传输。

使用特权

评论回复
8
wangjiahao88|  楼主 | 2020-7-17 21:41 | 只看该作者
该设计适合应用在图像传输与处理要求实时性较
高的场合,比起以往的实时算法都需要多块DSP串行或
并行工作,以提高系统的运行速度和实时性,而采用
DSP+FPGA 的双口RAM 构成的数据接口可以实现在
DSP和FPAG之间高速而又可靠的信息数据传输,在许
多信号采集处理领域,FPGA技术已代替DSP实现许多
前端的数字信号的采集与处理,用FPGA来实现数字信
号处理很好的解决了DSP之间的并行问题,也满足速度
要求,并且FPGA有着灵活可配置的特性,使得FPGA构
成的数字信号处理系统易于修改,测试,便于升级,降低
设计成本,开发周期短。
设计一块信号处理板,该信号处理板从前端数据采
集板采集到图像数据,图像每帧大小为640×512,100 f/s,
所以该信号处理板要处理和传输的数据量很大,采用
FPGA+DSP方案,有效的解决了该问题。信号处理板接
收到图像数据后对图像数据进行处理,并将处理完的结
果传与主控板。该系统的结构框图如图4所示。信号处
理板上的FPGA负责接收从前端传来的图像数据,FPGA
将接收到的图像数据存储在FPGA内部的双口RAM中,
同时FPGA也负责从RAM中读出DSP图像处理的结果;
DSP主要负责图像数据的处理,处理前DSP通过EMIF接
口从双口RAM中读出图像数据并处理,将处理后的结果
通过EMIF接口存储在FPGA内部的RAM中。

使用特权

评论回复
9
wangjiahao88|  楼主 | 2020-7-17 21:42 | 只看该作者
为验证两者之间通信的正确性,用Xilinx 公司的
ISE软件的仿真功能获取FPGA端的数据,DSP端的数
据通过DSP的开发坏境CCS的功能显示出来。FPGA写
入双口RAM中的数据的仿真图如图5所示,写入的数
据为0~63,从仿真的结果看,写入的数据没有错误,DSP
从双口RAM中读出的数据如图6所示,从读出的数据
可以看出,FPGA写入的数据和DSP读出的数据一致,
DSP写入与读出数据图如图7所示,其中的地址空间为
0xc0000000~0xc000007f 中的数据为DSP 写入的数据,
而地址空间为0xc0000080~0xc00000ff 中的数据为经
FPGA从地址空间为0xc0000000~0xc000007f中读出数
据后又写入到地址空间为0xc0000080~0xc00000ff 中,
便于观察,从图7中可以看出,DSP写入的数据和FPGA
读出的数据也相等。



使用特权

评论回复
10
wangjiahao88|  楼主 | 2020-7-17 21:43 | 只看该作者
这个还是非常的好用的!

使用特权

评论回复
11
晓伍| | 2020-8-7 12:12 | 只看该作者
支持楼主一下

使用特权

评论回复
12
八层楼| | 2020-8-7 12:12 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
13
观海| | 2020-8-7 12:14 | 只看该作者
学习了 呵呵呵

使用特权

评论回复
14
guanjiaer| | 2020-8-7 12:15 | 只看该作者
楼中辛苦了

使用特权

评论回复
15
heimaojingzhang| | 2020-8-7 12:15 | 只看该作者
非常不错的资料

使用特权

评论回复
16
1251983945| | 2022-9-13 12:38 | 只看该作者
wangjiahao88 发表于 2020-7-17 21:39
由上面的配置可以知道FPGA内部双口RAM有两个
端口(端口A 和端口B)共享一个存储空间,为了实现
FPGA与DSP ...

请教一下SADS、SWE、CE、BE 对应真双口RAM的哪几个信号
如果用简单双口RAM就只要连SADS、SWE作为读写使能吗

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

473

主题

7517

帖子

30

粉丝