DSP EMIF与FPGA双口RAM高速通信实现
2014-07-09杨龙李范鸣刘士建
杨龙+李范鸣+刘士建
摘 要: 现代电子技术的快速发展使得大量的数据需要处理与传输,为解决该问题,通过TMS320C6455的EMIF接口实现了DSP与FPGA之间的数据双向快速通信。FPGA通过EMIF接口将内部RAM中的数据传输给DSP进行处理,DSP将处理后的数据结果再通过EMIF接口传送到FPGA的片内接收模块双口RAM并进行存储。EMIF通道实现了对数据的传输,双口RAM完成了对数据的接收。实验结果表明,该设计方案能够实现数据的双向快速正确传输。
关键词: DSP; EMIF; FPGA; 双口RAM
中图分类号: TN925?34; TP39 文献标识码: A 文章编号: 1004?373X(2014)13?0010?03
Realization of high?speed communication between DSP and FPGA
by EMIF dual?port RAM
YANG Long, LI Fan?ming, LIU Shi?jian
(Shanghai Institute of Technical Physics, Chinese Academy of Sciences, Shanghai 200083, China)
Abstract: The rapid development of modern electronic technology requires the processing and transmission of plenty of data. In order to solve this problem, TMS320C6455 EMIF interface was adopted to realized the rapid data intercommunication between DSP and FPGA. FPGA transfers data in the internal RAM to DSP for processing through EMIF interface. DSP transmits the processed data through EMIF interface to dual?port RAM in FPGA to store. EMIF interface is used to achieve the data transmission, and dual?port RAM is used to realized the data reception. The experimental results show that the design scheme can realize data intercommunication quickly and correctly.
Keywords: DSP; EMIF; FPGA; dual?port RAM
0 引 言
随着电子技术的飞速发展,电子系统的信息量和数据量也随之巨增,这就对系统的信息处理与传输能力有更高的要求。在信号处理系统方面,随着大规模可编程器件的发展,并广泛应用于各种信号处理中,现阶段信号处理采用DSP+FPGA 结构的信号处理系统显示出了其优越性,正逐步得到重视并广泛应用。FPGA 是在专用ASIC 的基础上发展出来的,它克服了专用ASIC 不够灵活的缺点,与其他中小规模集成电路相比,其优点主要在于它有很强的灵活性,即其内部的具体逻辑功能可以根据需要配置,对电路的修改和维护很方便,而且在大批量应用时,可降低成本。
DSP+FPGA 结构最大的特点是结构灵活,有较强的通用性,适于模块化设计,从而能够提高算法效率;同时其开发周较短,系统易于维护和扩展,适合于实时信号处理。而要想实现DSP+FPGA 结构的正确应用,先要实现DSP和FPGA之间的通信桥梁,也就是首先要解决两者之间的通信问题,即接口设计,本文提出一种DSP和FPGA之间的通信方式。
1 FPGA内部双口RAM配置
本设计采用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所示。
图1 双口RAM的配置图及原理图
2 DSP EMIF接口介绍
EMIF是外部存储器和TMS320C6455片内单元间之间的接口,CPU访问片外存储器时必须通过EMIF接口,要实现DSP访问FPGA内部双口RAM,必须通过EMIF接口与FPGA内部RAM相对应的管脚对应起来,EMIF接口与FPGA内部双口RAM连接如图2所示。
图2 EMIF与双口RAM之间的连接
由上面的配置可以知道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的读写功能。
3 数据高速传输的实现机制
为了达到数据在DSP和FPGA之间高速传输的目的,采取了下面的通信机制,首先在上文中配置的FPGA内部双口RAM中,将双口RAM中的存储空间分成两个部分,首先说一下两块存储区的用途,第一块存储区用于FPGA向里面写数据,DSP从里面读出数据,第二块存储区用于DSP向里面写入数据,FPAG从里面读出数据。根据这两种传输方式所要传的数据量要固定这两块存储区的大小和地址,DSP和FPGA每次访问固定的地址和长度的存储区。
图3展示了数据由FPGA写入双口RAM内部存储区一,经EMIF接口传输到DSP内部进行处理,DSP将处理的结果经EMIF接口写入到双口RAM内部的存储区二,FPGA从存储区二读出处理结果的流程框图。
图3 数据流向框图
上面介绍了数据传输的流向,下面说明如何实现DSP和FPGA在对共享存储器进行操作时的配合。首先FPGA接收外来的图像数据,存储于FPGA内部的双口RAM的存储区一内,当存储区一中的内容存满时,FGPA停止向存储区一写入数据,FPGA内部逻辑电路产生信号,向DSP模块申请中断,DSP响应中断请求,通过EMIF接口从存储区一中读出存入的图像数据并处理,图像数据处理完后,DSP将处理完后的结果数据存入存储区二中,结果数据存入完成后DSP通过中断模块产生信号,通知FPGA读出结果数据并输出。
通过上面的过程数据在DSP和FPGA中不仅能快速的传输,也能在DSP中实现数据的快速处理。这种方式能有效的结合DSP和FPGA两者的优势,以达到最好的信号传输与处理的效果,在单位时间内能处理的数据量更大以及数据的快速传输。
4 FPGA与DSP之间通信实现与应用
该设计适合应用在图像传输与处理要求实时性较高的场合,比起以往的实时算法都需要多块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中。
图4 系统结构框图
为验证两者之间通信的正确性,用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读出的数据也相等。
图5 FPGA写入双口RAM中的数据仿真图
图6 DSP通过EMIF口从双口RAM中读出数据图
图7 DSP写入与读出数据图
从图5~图7中可以看出两者之间的通信通道已经建立,可以进行正常的通信。实验结果表明,本文设计完成了TMS320C6455 DSP EMIF接口与FPGA内部双口RAM的通信,对于DSP发送的信号,FPGA可以正确接收,FPGA发表的信号,DSP也能正确的接收,经过测试,读写数据没有错误,并能稳定的在二者之间进行通信。经测式,二者之间的通信速率能满足系统所需要求。
5 结 语
本设计采用FPGA+DSP方案,并充分利用器件内部的硬件资源,在开发环境ISE下,在FPGA内部实现了双口RAM,并实现了FPGA和DSP 对该双口RAM的读写。建立了DSP和FPGA通信的桥梁,解决并实现了DSP和FPGA之间的双向通信。采用FPGA和DSP相结合的方式,既降低了系统的复杂性,又增加了系统的灵活性和配置性,有利于开发,在实现大量数据处理的同时,也实现了数据的快速传输。
参考文献
[1] 于凤芹.TMS320C6000DSP结构原理与硬件设计[M].北京:北京航空航天大学出版社,2008.
[2] 胡宏平,胡兵.基于FPGA的双口RAM在信号采集中的应用[J].微计算机信息,2007(23):223?225.
[3] LEE B W, CHO S H. A design of the signal processing hardware platform f or communication systems [J]. IEICE Transactions on Communications, 2008, E91?B(3): 939?942.
[4] Texas Instruments. TMS320C6000 programmer′s guide [M].USA: Texas Instruments, 2006.
[5] Xilinx. Virtex?5 FPGA user guide [M]. USA: Xilinx, 2012.
[6] Xilinx. Interfacing Xilinx FPGAs to TI DSP platforms using the EMIF [M]. USA: Xilinx, 2007.
[7] 王光国.基于DSP+FPGA 机器人敏感皮肤实时信号处理的研究[D].哈尔滨:哈尔滨工业大学,2006
[8] Texas Instruments. TMS320C6000 EMIF to external FIFO interface, SPRA543 [R]. USA: Texas Instruments, 1999.
[9] 罗戈亮,鲁新平,李吉成.基于FPGA+DSP 的实时图像处理系统设计与实现[J].微处理机,2010(2):106?110.
[10] 杨露,苏秀琴,向静波.基于DSP和FPGA的视频图像处理系统设计[J].微计算机信息,2008(21):288?289.
3 数据高速传输的实现机制
为了达到数据在DSP和FPGA之间高速传输的目的,采取了下面的通信机制,首先在上文中配置的FPGA内部双口RAM中,将双口RAM中的存储空间分成两个部分,首先说一下两块存储区的用途,第一块存储区用于FPGA向里面写数据,DSP从里面读出数据,第二块存储区用于DSP向里面写入数据,FPAG从里面读出数据。根据这两种传输方式所要传的数据量要固定这两块存储区的大小和地址,DSP和FPGA每次访问固定的地址和长度的存储区。
图3展示了数据由FPGA写入双口RAM内部存储区一,经EMIF接口传输到DSP内部进行处理,DSP将处理的结果经EMIF接口写入到双口RAM内部的存储区二,FPGA从存储区二读出处理结果的流程框图。
图3 数据流向框图
上面介绍了数据传输的流向,下面说明如何实现DSP和FPGA在对共享存储器进行操作时的配合。首先FPGA接收外来的图像数据,存储于FPGA内部的双口RAM的存储区一内,当存储区一中的内容存满时,FGPA停止向存储区一写入数据,FPGA内部逻辑电路产生信号,向DSP模块申请中断,DSP响应中断请求,通过EMIF接口从存储区一中读出存入的图像数据并处理,图像数据处理完后,DSP将处理完后的结果数据存入存储区二中,结果数据存入完成后DSP通过中断模块产生信号,通知FPGA读出结果数据并输出。
通过上面的过程数据在DSP和FPGA中不仅能快速的传输,也能在DSP中实现数据的快速处理。这种方式能有效的结合DSP和FPGA两者的优势,以达到最好的信号传输与处理的效果,在单位时间内能处理的数据量更大以及数据的快速传输。
4 FPGA与DSP之间通信实现与应用
该设计适合应用在图像传输与处理要求实时性较高的场合,比起以往的实时算法都需要多块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中。
图4 系统结构框图
为验证两者之间通信的正确性,用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读出的数据也相等。
图5 FPGA写入双口RAM中的数据仿真图
图6 DSP通过EMIF口从双口RAM中读出数据图
图7 DSP写入与读出数据图
从图5~图7中可以看出两者之间的通信通道已经建立,可以进行正常的通信。实验结果表明,本文设计完成了TMS320C6455 DSP EMIF接口与FPGA内部双口RAM的通信,对于DSP发送的信号,FPGA可以正确接收,FPGA发表的信号,DSP也能正确的接收,经过测试,读写数据没有错误,并能稳定的在二者之间进行通信。经测式,二者之间的通信速率能满足系统所需要求。
5 结 语
本设计采用FPGA+DSP方案,并充分利用器件内部的硬件资源,在开发环境ISE下,在FPGA内部实现了双口RAM,并实现了FPGA和DSP 对该双口RAM的读写。建立了DSP和FPGA通信的桥梁,解决并实现了DSP和FPGA之间的双向通信。采用FPGA和DSP相结合的方式,既降低了系统的复杂性,又增加了系统的灵活性和配置性,有利于开发,在实现大量数据处理的同时,也实现了数据的快速传输。
参考文献
[1] 于凤芹.TMS320C6000DSP结构原理与硬件设计[M].北京:北京航空航天大学出版社,2008.
[2] 胡宏平,胡兵.基于FPGA的双口RAM在信号采集中的应用[J].微计算机信息,2007(23):223?225.
[3] LEE B W, CHO S H. A design of the signal processing hardware platform f or communication systems [J]. IEICE Transactions on Communications, 2008, E91?B(3): 939?942.
[4] Texas Instruments. TMS320C6000 programmer′s guide [M].USA: Texas Instruments, 2006.
[5] Xilinx. Virtex?5 FPGA user guide [M]. USA: Xilinx, 2012.
[6] Xilinx. Interfacing Xilinx FPGAs to TI DSP platforms using the EMIF [M]. USA: Xilinx, 2007.
[7] 王光国.基于DSP+FPGA 机器人敏感皮肤实时信号处理的研究[D].哈尔滨:哈尔滨工业大学,2006
[8] Texas Instruments. TMS320C6000 EMIF to external FIFO interface, SPRA543 [R]. USA: Texas Instruments, 1999.
[9] 罗戈亮,鲁新平,李吉成.基于FPGA+DSP 的实时图像处理系统设计与实现[J].微处理机,2010(2):106?110.
[10] 杨露,苏秀琴,向静波.基于DSP和FPGA的视频图像处理系统设计[J].微计算机信息,2008(21):288?289.
3 数据高速传输的实现机制
为了达到数据在DSP和FPGA之间高速传输的目的,采取了下面的通信机制,首先在上文中配置的FPGA内部双口RAM中,将双口RAM中的存储空间分成两个部分,首先说一下两块存储区的用途,第一块存储区用于FPGA向里面写数据,DSP从里面读出数据,第二块存储区用于DSP向里面写入数据,FPAG从里面读出数据。根据这两种传输方式所要传的数据量要固定这两块存储区的大小和地址,DSP和FPGA每次访问固定的地址和长度的存储区。
图3展示了数据由FPGA写入双口RAM内部存储区一,经EMIF接口传输到DSP内部进行处理,DSP将处理的结果经EMIF接口写入到双口RAM内部的存储区二,FPGA从存储区二读出处理结果的流程框图。
图3 数据流向框图
上面介绍了数据传输的流向,下面说明如何实现DSP和FPGA在对共享存储器进行操作时的配合。首先FPGA接收外来的图像数据,存储于FPGA内部的双口RAM的存储区一内,当存储区一中的内容存满时,FGPA停止向存储区一写入数据,FPGA内部逻辑电路产生信号,向DSP模块申请中断,DSP响应中断请求,通过EMIF接口从存储区一中读出存入的图像数据并处理,图像数据处理完后,DSP将处理完后的结果数据存入存储区二中,结果数据存入完成后DSP通过中断模块产生信号,通知FPGA读出结果数据并输出。
通过上面的过程数据在DSP和FPGA中不仅能快速的传输,也能在DSP中实现数据的快速处理。这种方式能有效的结合DSP和FPGA两者的优势,以达到最好的信号传输与处理的效果,在单位时间内能处理的数据量更大以及数据的快速传输。
4 FPGA与DSP之间通信实现与应用
该设计适合应用在图像传输与处理要求实时性较高的场合,比起以往的实时算法都需要多块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中。
图4 系统结构框图
为验证两者之间通信的正确性,用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读出的数据也相等。
图5 FPGA写入双口RAM中的数据仿真图
图6 DSP通过EMIF口从双口RAM中读出数据图
图7 DSP写入与读出数据图
从图5~图7中可以看出两者之间的通信通道已经建立,可以进行正常的通信。实验结果表明,本文设计完成了TMS320C6455 DSP EMIF接口与FPGA内部双口RAM的通信,对于DSP发送的信号,FPGA可以正确接收,FPGA发表的信号,DSP也能正确的接收,经过测试,读写数据没有错误,并能稳定的在二者之间进行通信。经测式,二者之间的通信速率能满足系统所需要求。
5 结 语
本设计采用FPGA+DSP方案,并充分利用器件内部的硬件资源,在开发环境ISE下,在FPGA内部实现了双口RAM,并实现了FPGA和DSP 对该双口RAM的读写。建立了DSP和FPGA通信的桥梁,解决并实现了DSP和FPGA之间的双向通信。采用FPGA和DSP相结合的方式,既降低了系统的复杂性,又增加了系统的灵活性和配置性,有利于开发,在实现大量数据处理的同时,也实现了数据的快速传输。
参考文献
[1] 于凤芹.TMS320C6000DSP结构原理与硬件设计[M].北京:北京航空航天大学出版社,2008.
[2] 胡宏平,胡兵.基于FPGA的双口RAM在信号采集中的应用[J].微计算机信息,2007(23):223?225.
[3] LEE B W, CHO S H. A design of the signal processing hardware platform f or communication systems [J]. IEICE Transactions on Communications, 2008, E91?B(3): 939?942.
[4] Texas Instruments. TMS320C6000 programmer′s guide [M].USA: Texas Instruments, 2006.
[5] Xilinx. Virtex?5 FPGA user guide [M]. USA: Xilinx, 2012.
[6] Xilinx. Interfacing Xilinx FPGAs to TI DSP platforms using the EMIF [M]. USA: Xilinx, 2007.
[7] 王光国.基于DSP+FPGA 机器人敏感皮肤实时信号处理的研究[D].哈尔滨:哈尔滨工业大学,2006
[8] Texas Instruments. TMS320C6000 EMIF to external FIFO interface, SPRA543 [R]. USA: Texas Instruments, 1999.
[9] 罗戈亮,鲁新平,李吉成.基于FPGA+DSP 的实时图像处理系统设计与实现[J].微处理机,2010(2):106?110.
[10] 杨露,苏秀琴,向静波.基于DSP和FPGA的视频图像处理系统设计[J].微计算机信息,2008(21):288?289.