DSP和FPGA的双核并行通信方法设计与应用

来源:本站
导读:目前正在解读《DSP和FPGA的双核并行通信方法设计与应用》的相关信息,《DSP和FPGA的双核并行通信方法设计与应用》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《DSP和FPGA的双核并行通信方法设计与应用》的详细说明。
简介:为解决雷达信号处理系统双核通信问题,设计了两种DSP和FPGA之间的并行通信方法,分别通过DSP的外部接口XINTF访问FPGA内部FIFO和双口RAM,利用DSP的读写使能信号作为FIFO和RAM的读写时钟信号。通过对两种并行通信方法进行对比分析,指出雷达信号处理系统中双核通信应该采用DSP和FPGA内部FIFO的方法。

引言

线性调频连续波(Linear Frequency Modulation Continuous Wave,LFMCW)雷达在储油罐液位计量中有着广泛的应用[1],提高雷达的测距精度从而提高计量精度,对提高经济效益有着重要的作用。随着数字信号处理技术的发展,高精度测距算法发展迅速,但是这些高精度算法需要处理的数据量也越来越大[23],如极大似然估计法[2]有很高的估计精度,但是单个频率点的计算量就达到5N-2次实数加法和5N+9次实数乘法;参考文献[3]的信号频谱融合法在低信噪比下也有良好的估计性能,但计算量为M-1PQ+1+PN′-M次复数加法和PQM+N′+1次复数乘法。为满足测量实时性和数据吞吐量的要求,可以结合DSP浮点运算速度快[4]和FPGA外设驱动能力强[5]的优势,采用DSP和FPGA双核架构设计雷达信号处理系统,实现高精度测距算法。采用此架构,首先要解决的就是DSP和FPGA之间的通信问题。本文基于搭载TI公司DSP芯片TMS320F28335(下文简称DSP)的核心板和搭载Altera公司CycloneII系列的FPGA芯片EP2C5Q208C8(下文简称FPGA)的核心板搭建实验平台,设计两种方法构建并行通信通道,为搭建雷达信号处理系统的双核通信通道提供依据。

1DSP与FPGA内部FIFO并行通信方法

1.1设计思想

在雷达信号处理系统中,数据的流向如图1所示。首先FPGA接收高速并行A/D转换的数字信号,DSP读取FPGA获取的信号序列并进行数字信号处理,得到距离信息,然后DSP将距离信息发送至FPGA,FPGA控制LCD显示屏显示距离信息。

DSP和FPGA的双核并行通信方法设计与应用

图1 数据的流向

FPGA的设计采用VHDL硬件描述语言,利用内部RAM资源生成FIFO模块,将FPGA的FIFO模块作为DSP的外围设备,DSP根据FIFO的存储状态,通过外部接口XINTF对FIFO模块进行读写操作。

1.2硬件设计

根据设计思想,搭建了DSP和FPGA通信的硬件实验平台,硬件连接示意图如图2所示。

DSP和FPGA的双核并行通信方法设计与应用

图2 DSP与FPGA连接示意图

TMS320F28335 DSP支持16位和32位XINTF数据总线,本文使用16位数据总线进行通信,将DSP的数据总线、(读写)使能信号和ZONE7的选通信号XZCS7与FPGA的通用I/O口连接。此外,选用DSP的两个可编程通用输入/输出引脚与FPGA通用I/O口相连,使FIFO的满信号作为DSP的中断输入,空信号作为数据读取完毕状态信号输入DSP。

1.3软件设计

1.3.1FPGA内部FIFO模块设计

利用Altera公司的QuartusII集成开发环境,在FPGA中实现FIFO有两种方式:通过编写VHDL程序实现和利用软件中MegaWizard PlugIn Manager进行配置[6]。本文选用第二种实现方式,通过向导配置FIFO的数据宽度、深度和控制信号等参数。读写使能信号根据FIFO的空、满状态,通过编写VHDL程序在FPGA内部逻辑实现。

DSP每进行一次读(写)操作,时序分为3个阶段[7]:前导(Lead)、有效(Active)和跟踪(Trail)。在有效阶段读(写)使能信号拉低一次,为此,本设计将DSP读(写)使能信号经过非门取反后作为FIFO的读(写)时钟信号,FIFO的读(写)使能信号有效时,在时钟信号的上升沿数据将被读出(写入)FIFO。系统通过数据总线进行数据的读写操作,因此FPGA的数据线引脚设置为双向传输(BIDIR)模式。FIFO模块图略——编者注,当FIFO的读使能有效(rdreq=1)时,数据只能由q端口经三态门输出;当FIFO的写使能有效(wrreq=1)时,数据只能经三态门写入到data端口。

1.3.2DSP模块设计

在本文中,DSP的工作流程如图3所示。

DSP和FPGA的双核并行通信方法设计与应用

图3 系统工作流程图

图3(a)为主程序的流程。在主程序中,首先进行DSP的初始化设置,具体包括系统初始化控制、GPIO的初始化和中断设置;然后生成待写入到FIFO中的数据(本文设置为整数1~32共32个数);随后将生成的数据写入到ZONE7地址区域(0x20 0000~0x2F FFFF),由于FIFO是先进先出存储器,访问时不需要地址线,只要地址范围在ZONE7寻址范围内,就能使选通信号XZCS7有效,从而实现对FIFO的读写操作;当FIFO已经写满时,通过GPIO29产生外部中断,DSP停止写入数据,开始执行中断程序。中断程序主要实现DSP从FIFO中读取数据的功能,其实现流程如图3(b)所示。

1.4DSP与FPGA内部FIFO的并行通信实验

根据硬件设计,制作了连接DSP核心板和FPGA核心板的底板,搭建了DSP和FPGA通信的实验平台。在该实验平台上开展实测实验,并通过CCS4.2开发环境,观察DSP写入和读出FIFO的数据的结果如图4所示。

DSP和FPGA的双核并行通信方法设计与应用

图4 DSP与FPGA内部FIFO并行通信实验结果

从图4中可以看出,生成的发送数据Send和接收到的数据Receive完全一样。实验结果表明,本文实现了DSP的XINTF接口到FPGA内部FIFO的双向并行通信,DSP能够通过写操作将数据传送至FPGA,通过读操作将数据从FPGA传送至DSP。

2DSP与FPGA双口RAM并行通信方法

2.1设计思想

FPGA内部的存储器资源可以配置成单口RAM、双口RAM和三口RAM[8],雷达信号处理板涉及到DSP对RAM的读写操作和FPGA本身对内部RAM的读写操作,因此本文采用双口RAM,实现DSP对其的读写操作。主要设计思想如下:DSP作为主设备,FPGA作为从设备,DSP通过XINTF的地址总线对FPGA内部的双口RAM进行寻址,过程与DSP读写外扩存储器芯片相似,本文使用16位数据宽度实现32个16位数据的双向传输。

2.2硬件设计

根据设计思想,搭建DSP和FPGA通信的硬件实验平台,其中,DSP和FPGA之间的硬件连接示意图如图5所示。

DSP和FPGA的双核并行通信方法设计与应用

图5 DSP与FPGA连接示意图

设计数据宽度为16位,深度为32位,因此本文使用16位数据线、5位地址线进行通信,将DSP的数据总线、地址总线、读写使能信号和ZONE7的选通信号XZCS7与FPGA的通用I/O口连接。由此,建立了DSP的XINTF接口和FPGA之间的通信通道。

2.3软件实现

2.3.1FPGA内部RAM模块设计

同样,本文通过配置双口RAM的数据宽度(16位)、数据深度(32位)和控制信号等参数,简单高效地实现双口RAM,再通过其与XINTF接口的连接关系和XINTF接口的信号时序,设计了双口RAM模块,模块图略——编者注。DSP对ZONE7地址区域(0x20 0000~0x2F FFFF)进行访问时,系统将XZCS7拉低,经过FPGA内部非门后,双口RAM的使能信号拉高,此时,在读(写)时钟上升沿将数据读出(写入)。在DSP的读(写)操作时序的“有效”阶段,读(写)使能信号经FPGA内部非门后作为读(写)时钟,将数据读出(写入)。读写地址从DSP输出,再输入到FPGA,FPGA读写地址线共用一个端口。由于读写的数据也是共用一个端口,因此数据端口设计为输入输出端口(BIDIR),输入和输出通路由三态门进行控制。

2.3.2DSP模块设计

DSP与FPGA内部RAM模块通信时的工作流程如图6所示,首先进行DSP的初始化设置,这一步与DSP访问FIFO模块类似;然后生成待写入到RAM中的数据(本文设置为整数32~1,共32个数)并存储到数组Send;随后生成数据写入的目标地址,ZONE7的寻址范围为0x20 0000~0x2F FFFF,本文设计的RAM模块大小为32×16位,因此寻址范围为0x20 0000~0x20 001F,编程将数据1~32逆序写入到RAM地址0x00~0x1F,然后将数据按地址从小到大顺序读出到数组Receive;顺序读完数据后,再按照先奇数地址后偶数地址的顺序读取数据到Receive1。

DSP和FPGA的双核并行通信方法设计与应用

图6 系统工作流程图

2.4DSP与双口RAM的并行通信实现

利用搭建好的包含DSP核心板和FPGA核心板的实验平台进行通信实测实验,根据硬件连接关系,给FPGA模块内的各信号分配引脚。完成后编译生成.sof文件,将.sof文件下载到FPGA中运行;然后通过CCS4.2和XDS100V2仿真器编译连接到DSP,运行DSP中的C语言程序,在Memory窗口中观察DSP读取的数据结果如图7所示。

DSP和FPGA的双核并行通信方法设计与应用

图7 DSP与双口RAM并行通信实验结果

从图7中可以看出,生成的发送数据Send和接收到的数据Receive完全一样,而Receive1的数据则是先偶数、后奇数的排列,分别对应Send中奇数序号和偶数序号所指向的数据。实验结果表明,该实验方案可以实现DSP和FPGA之间的双向并行通信,DSP可以通过寻址方式读写FPGA内部双口RAM的数据。

3两种通信方法对比分析

上述两种方法都能够实现DSP和FPGA之间的双向并行通信,而且都是通过DSP的XINTF接口和FPGA的通用I/O引脚相连,构成数据交换的通道,由FPGA分别配置生成FIFO和双口RAM,DSP利用XINTF接口的片选信号和读写使能信号作为控制FIFO和双口RAM读写的控制信号,完成DSP和FPGA之间的双向并行通信。

两种通信方法最大的区别在于:FIFO不需要地址线,数据只能按照先后顺序存储和读出,先存则先读,后存则后读,存满后产生满信号,不能再存,读完后产生空信号,不能继续读;RAM有地址线,必须通过地址线才能对其进行读写,读写地址没有顺序的要求,可以读写RAM地址范围内的任意地址所指向的数据,对同一地址的数据可以多次读取而不会产生变化,但是对同一地址多次写入则会覆盖之前的数据。

由分析可知,本文设计的两种DSP和FPGA之间的双向并行通信方法各有优劣。DSP和FPGA内部FIFO之间的通信,硬件结构简单,所需I/O引脚较少,数据的读写过程清新,不会造成数据顺序的错乱,然而,这种方法缺乏灵活性,不能随意调用存储器中的特定数据。而DSP和FPGA内部双口RAM之间的通信在硬件上的开销相对较大,占用较多的I/O引脚资源,读写RAM要首先生成目标地址,而后根据目标地址进行寻址读写数据,对双口RAM的读写比较灵活,可以只取所需而不用将数据都读出。

雷达信号处理系统所处理的数据是一系列离散时间序列,而A/D转换器采集的数据就是离散时间序列,FPGA对这些数据进行存储和DSP对这些数据的读取都不需要有顺序的变化,读写过程简单,再考虑到芯片I/O引脚有限,所以在雷达信号处理系统中适合采用DSP和FPGA之间通过FIFO方式进行双向并行通信。

结语

本文设计了两种DSP和FPGA之间的并行通信方法,搭建了双核并行通信硬件实验平台,实现了两者间的双向并行通信。在FPGA内部实现FIFO和双口RAM,DSP作为主设备,通过外部接口XINTF对FPGA的内部FIFO和双口RAM进行读写操作,从而完成两者的通信。对两种并行通信方法进行了对比分析,结合雷达信号处理系统的需求,认为雷达信号处理系统适合采用DSP与FPGA通过内部FIFO进行通信的方法。

提醒:《DSP和FPGA的双核并行通信方法设计与应用》最后刷新时间 2024-03-14 00:56:57,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《DSP和FPGA的双核并行通信方法设计与应用》该内容的真实性请自行鉴别。