CN106776408B - 一种arm处理器与fpga双向数据传输的实现方法 - Google Patents
一种arm处理器与fpga双向数据传输的实现方法 Download PDFInfo
- Publication number
- CN106776408B CN106776408B CN201611043907.1A CN201611043907A CN106776408B CN 106776408 B CN106776408 B CN 106776408B CN 201611043907 A CN201611043907 A CN 201611043907A CN 106776408 B CN106776408 B CN 106776408B
- Authority
- CN
- China
- Prior art keywords
- data
- fpga
- arm processor
- signal
- line
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/382—Information transfer, e.g. on bus using universal interface adapter
- G06F13/385—Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Abstract
本发明提供一种ARM处理器与FPGA双向数据传输的实现方法,至少包括:构建所述ARM处理器的数据传输接口;配置所述ARM处理器的数据传输接口的数据传输方式;提供具有与所述ARM处理器的数据传输接口及其数据传输方式相匹配的数据传输接口的FPGA;将所述ARM处理器与所述FPGA通过其各自的数据传输接口连接,以实现所述ARM处理器与所述FPGA的双向数据传输。本发明利用NXP ARM处理器的EIM接口的部分构成和信号,同时引入ARM处理器的部分GPIO管脚,构建了一个可与FPGA双向高速并行数据传输的接口,简化了EIM接口的信号连接方式,降低了FPGA与ARM处理器数据传输的开发成本和开发难度。
Description
技术领域
本发明涉及数据传输技术领域,特别是涉及一种ARM处理器与FPGA双向数据传输的实现方法。
背景技术
对于NXP(恩智浦半导体)公司,其生产的大部分应用型处理器(主要是ARM处理器)采用EIM(External Interface Module,外部接口模块)接口。EIM接口是一种可扩展接口模块,其主要包含有片选信号、时钟信号、控制信号、地址线和数据线等,该接口的控制器主要对类SRAM接口、类NOR-Flash接口和类PSRAM接口进行数据存取。
由于NXP ARM处理器的EIM接口并不是专为与FPGA(Field Programmable GateArray,现场可编辑门列阵)进行数据传输而设计的,而是为兼容多种存储芯片类型而设计的一种可扩展接口。EIM接口主要包括:32根数据线,1个数据响应线,26根地址线(其中包括16根地址数据复用线和10根纯地址线),4根片选线,4根字节使能线,1根地址有效线,1根输出使能线,1根写入使能线,1根等待线和1根时钟线。EIM接口各构成部分对应的EIM接口信号主要包括:32bit数据信号,1个数据响应信号,26bit地址信号(其中包括16bit地址数据复用信号和10bit纯地址信号),4个片选信号,4个字节使能信号,1个地址有效信号,1个输出使能信号,1个写入使能信号,1个等待信号和1个时钟信号。可见,EIM接口的构成十分复杂,应用配置也十分复杂。FPGA要通过EIM接口与ARM处理器实现高速双向数据通讯,就需要模拟成SRAM接口、NOR-Flash或PSRAM接口的接口时序,对于FPGA端的开发成本是很大的。
因此,如何简化EIM接口的信号连接方式,降低FPGA的开发成本和开发难度,实现ARM处理器和FPGA的高速双向并行数据传输,是亟待解决的问题。
发明内容
鉴于以上所述现有技术的缺点,本发明的目的在于提供一种ARM处理器与FPGA双向数据传输的实现方法,用于解决现有技术中NXP ARM处理器的EIM接口复杂,与FPGA数据通讯时需要FPGA具有与其数据存取匹配的接口,造成FPGA端开发成本高、开发难度大的问题。
为实现上述目的及其他相关目的,本发明提供一种ARM处理器与FPGA双向数据传输的实现方法,所述ARM处理器至少包括EIM接口和多个GPIO管脚,所述EIM接口至少包括32根数据线、16根地址数据复用线、1根时钟线、4根片选线、1根输出使能线和1根地址有效线,其中,所述ARM处理器与FPGA双向数据传输的实现方法至少包括:
构建所述ARM处理器的数据传输接口;其中,所述ARM处理器的数据传输接口至少包括:由所述EIM接口提供的至少8根数据线、1根时钟线、1根片选线、1根输出使能线和1根地址有效线,以及由所述ARM处理器提供的至少2个GPIO管脚;
配置所述ARM处理器的数据传输接口的数据传输方式;其中,配置所述数据线供所述ARM处理器和所述FPGA之间双向数据传输,配置所述时钟线供所述ARM处理器向所述FPGA发送时钟信号,配置所述片选线供所述ARM处理器向所述FPGA发送片选信号,配置所述输出使能线供所述ARM处理器向所述FPGA发送输出使能信号,配置所述地址有效线供所述ARM处理器向所述FPGA发送地址有效信号,配置第一GPIO管脚供所述ARM处理器向所述FPGA发送读/写信号,配置第二GPIO管脚供所述ARM处理器向所述FPGA发送数据传输开始信号;
提供具有与所述ARM处理器的数据传输接口及其数据传输方式相匹配的数据传输接口的FPGA;
将所述ARM处理器与所述FPGA通过其各自的数据传输接口连接,以实现所述ARM处理器与所述FPGA的双向数据传输。
优选地,所述ARM处理器与FPGA双向数据传输的实现方法还包括:
在所述ARM处理器向所述FPGA传输数据时,所述ARM处理器通过所述第一GPIO管脚向所述FPGA发送写信号,并通过所述第二GPIO管脚向所述FPGA发送数据传输开始信号;所述FPGA在检测到所述数据传输开始信号后,开始准备接收所述ARM处理器发送的数据,同时所述ARM处理器开始连续发送数据到所述数据线上,并通过所述时钟线向所述FPGA发送时钟信号,所述FPGA在所述时钟信号的驱动下从所述数据线上接收数据;在所述ARM处理器向所述FPGA传输数据完成时,所述ARM处理器停止向所述FPGA发送数据传输开始信号。
优选地,所述ARM处理器与FPGA双向数据传输的实现方法还包括:
在所述ARM处理器从所述FPGA读取数据时,所述ARM处理器通过所述第一GPIO管脚向所述FPGA发送读信号,并通过所述第二GPIO管脚向所述FPGA发送数据传输开始信号;所述FPGA在检测到所述数据传输开始信号后,开始准备发送所述ARM处理器读取的数据,同时所述ARM处理器开始读取所述数据线上的数据,并通过所述时钟线向所述FPGA发送时钟信号,所述FPGA在所述时钟信号的驱动下开始连续发送数据到所述数据线上;在所述ARM处理器从所述FPGA读取数据完成时,所述ARM处理器停止向所述FPGA发送数据传输开始信号。
优选地,在构建所述ARM处理器的数据传输接口时,所述ARM处理器的数据传输接口还包括:由所述ARM处理器提供的第三GPIO管脚和第四GPIO管脚;在配置所述ARM处理器的数据传输接口的数据传输方式时,配置所述第三GPIO管脚供所述FPGA向所述ARM处理器发送繁忙状态信号,配置所述第四GPIO管脚供所述ARM处理器向所述FPGA发送数据传输完成信号。
优选地,所述ARM处理器与FPGA双向数据传输的实现方法还包括:
在所述ARM处理器向所述FPGA传输数据时,所述ARM处理器通过所述第一GPIO管脚向所述FPGA发送写信号,并通过所述第二GPIO管脚向所述FPGA发送数据传输开始信号;所述FPGA在检测到所述数据传输开始信号后,开始准备接收所述ARM处理器发送的数据,并向通过所述第三GPIO管脚向所述ARM处理器发送繁忙状态信号,同时所述ARM处理器开始连续发送数据到所述数据线上,并通过所述时钟线向所述FPGA发送时钟信号,所述FPGA在所述时钟信号的驱动下从所述数据线上接收数据;在所述ARM处理器向所述FPGA传输数据完成时,所述ARM处理器停止向所述FPGA发送数据传输开始信号,同时所述ARM处理器通过所述第四GPIO管脚向所述FPGA发送数据传输完成信号,所述FPGA在检测到所述数据传输完成信号后,停止向所述ARM处理器发送繁忙状态信号。
优选地,所述ARM处理器与FPGA双向数据传输的实现方法还包括:
在所述ARM处理器从所述FPGA读取数据时,所述ARM处理器通过所述第一GPIO管脚向所述FPGA发送读信号,并通过所述第二GPIO管脚向所述FPGA发送数据传输开始信号;所述FPGA在检测到所述数据传输开始信号后,开始准备发送所述ARM处理器读取的数据,同时所述ARM处理器开始读取所述数据线上的数据,并通过所述时钟线向所述FPGA发送时钟信号,所述FPGA在所述时钟信号的驱动下开始连续发送数据到所述数据线上,并向通过所述第三GPIO管脚向所述ARM处理器发送繁忙状态信号;在所述ARM处理器从所述FPGA读取数据完成时,所述ARM处理器停止向所述FPGA发送数据传输开始信号,同时所述ARM处理器通过所述第四GPIO管脚向所述FPGA发送数据传输完成信号,所述FPGA在检测到所述数据传输完成信号后,停止向所述ARM处理器发送繁忙状态信号。
优选地,在构建所述ARM处理器的数据传输接口时,根据所需的数据位宽确定相匹配的所述数据线的根数;在所需的数据位宽为8bit、16bit或者32bit时,相匹配的所述数据线的根数分别为8根、16根或者32根。
优选地,所述时钟信号的频率为33.25MHz,44.33MHz,66.5MHz或者133MHz。
优选地,在所述ARM处理器与所述FPGA双向数据传输前,所述ARM处理器先通过所述片选线向所述FPGA发送片选信号,再通过所述输出使能线向所述FPGA发送输出使能信号,接着通过所述地址有效线向所述FPGA发送地址有效信号。
优选地,在配置所述ARM处理器的数据传输接口的数据传输方式时,将所述ARM处理器向所述FPGA传输的数据的传输方式配置为所述ARM处理器按顺序传输数据到所述EIM接口的内存的固定地址,以将数据信号映射到所述数据线上,从而实现数据的传输;其中,所述固定地址为所述EIM接口的内存映射地址空间范围内的任意地址。
如上所述,本发明的ARM处理器与FPGA双向数据传输的实现方法,具有以下有益效果:本发明利用NXP ARM处理器的EIM接口的部分构成和信号,同时引入ARM处理器的部分GPIO管脚,构建了一个简单、灵活的可与FPGA进行双向高速并行数据传输的数据传输接口,从而建立了一个ARM处理器与FPGA进行双向高速数据传输的物理链路,简化了EIM接口的信号连接方式,降低了FPGA与ARM处理器数据传输的开发成本和开发难度。另外,本发明利用ARM处理器的少量GPIO管脚实现了同步握手,控制方式较为简单,极大简化了FPGA的开发工作,加快了开发进度。另外,本发明可以根据设计需要添加和配置多个GPIO管脚,从而实现多种功能。
附图说明
图1显示为本发明第一实施方式的ARM处理器与FPGA双向数据传输的实现方法的流程示意图。
图2显示为本发明第一实施方式的ARM处理器与FPGA双向数据传输的实现方法中数据传输接口和信号连接方式的示意图。
图3显示为本发明第二实施方式的ARM处理器与FPGA双向数据传输的实现方法中数据传输接口和信号连接方式的示意图。
图4显示为本发明第二实施方式的ARM处理器与FPGA双向数据传输的实现方法中ARM处理器向FPGA发送数据的时序示意图。
图5显示为本发明第二实施方式的ARM处理器与FPGA双向数据传输的实现方法中ARM处理器从FPGA读取数据的时序示意图。
元件标号说明
S1~S4 步骤
具体实施方式
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。
请参阅图1和图2,本发明的第一实施方式涉及一种ARM处理器与FPGA双向数据传输的实现方法。需要说明的是,本实施方式中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
本实施方式的ARM处理器与FPGA双向数据传输的实现方法,具体流程如图1所示。其中,ARM处理器至少包括EIM接口和多个GPIO管脚,EIM接口至少包括32根数据线、16根地址数据复用线、1根时钟线、4根片选线、1根输出使能线和1根地址有效线。本实施方式的ARM处理器与FPGA双向数据传输的实现方法至少包括:
步骤S1,构建ARM处理器的数据传输接口;其中,ARM处理器的数据传输接口至少包括:由EIM接口提供的至少8根数据线、1根时钟线、1根片选线、1根输出使能线和1根地址有效线,以及由ARM处理器提供的至少2个GPIO管脚。
步骤S2,配置ARM处理器的数据传输接口的数据传输方式;其中,配置数据线供ARM处理器和FPGA之间双向数据传输,配置时钟线供ARM处理器向FPGA发送时钟信号BCLK,配置片选线供ARM处理器向FPGA发送片选信号CS,配置输出使能线供ARM处理器向FPGA发送输出使能信号OE,配置地址有效线供ARM处理器向FPGA发送地址有效信号LBA,配置第一GPIO管脚供ARM处理器向FPGA发送读/写信号RW,配置第二GPIO管脚供ARM处理器向FPGA发送数据传输开始信号SYNC。
步骤S3,提供具有与ARM处理器的数据传输接口及其数据传输方式相匹配的数据传输接口的FPGA。
步骤S4,将ARM处理器与FPGA通过其各自的数据传输接口连接,以实现ARM处理器与FPGA的双向数据传输。
需要说明的是,EIM接口至少包括32根数据线、16根地址数据复用线、1根时钟线、4根片选线、1根输出使能线和1根地址有效线。而在本实施方式中,请参阅图2,仅利用EIM接口所有构成线中的至少8根数据线、1根时钟线、1根片选线、1根输出使能线和1根地址有效线,以及ARM处理器的部分GPIO管脚,对它们进行数据传输方式配置,即利用EIM接口的部分信号,包括至少8bit数据信号、时钟信号BCLK、片选信号CS、输出使能信号OE和地址有效信号LBA,以及ARM处理器中配置的第一GPIO管脚所对应的读/写信号RW和配置的第二GPIO管脚所对应的数据传输开始信号SYNC,就可以构建一个简单、灵活的数据传输接口,大大简化了EIM接口的信号连接方式,建立了一个ARM处理器与FPGA进行双向高速数据传输的物理链路,实现了ARM处理器与FPGA之间双向高速并行数据传输。当然,在其他的实施方式中,也可以根据设计需要添加和配置多个GPIO管脚,从而实现多种功能,并不以本实施方式为限制。
另外,值得一提的是,EIM接口并没有一种被动读取数据的机制,在现有技术中,所有读/写操作都是由ARM处理器主动发送读/写信号RW到EIM接口上的读/写控制管脚上来实现的,但由于该管脚与EIM接口的控制器绑定在一起,控制管脚的配置比较复杂,为了加快EIM接口与FPGA数据传输的开发速度,本实施方式并没有采用EIM接口的读/写控制管脚,而是采用ARM处理器的一个GPIO管脚(即本实施方式中配置供ARM处理器向FPGA发送读/写信号RW的第一GPIO管脚)来代替,这样一来,该GPIO管脚就可在ARM处理器的驱动程序中进行灵活控制,并且FPGA可以通过读/写信号RW辨别数据的传输方向。
在本实施方式中,利用上述步骤S1~步骤S4,可以使ARM处理器与FPGA之间通过新构建和配置的数据传输接口连接,从而实现双向高速并行数据传输。
另外,本实施方式的ARM处理器与FPGA双向数据传输的实现方法还包括:
在ARM处理器向FPGA传输数据时,ARM处理器通过第一GPIO管脚向FPGA发送写信号,并通过第二GPIO管脚向FPGA发送数据传输开始信号SYNC;FPGA在检测到数据传输开始信号SYNC后,开始准备接收ARM处理器发送的数据,同时ARM处理器开始连续发送数据到数据线上,并通过时钟线向FPGA发送时钟信号BCLK,FPGA在时钟信号BCLK的驱动下从数据线上接收数据;在ARM处理器向FPGA传输数据完成时,ARM处理器停止向FPGA发送数据传输开始信号SYNC。
另外,本实施方式的ARM处理器与FPGA双向数据传输的实现方法还包括:
在ARM处理器从FPGA读取数据时,ARM处理器通过第一GPIO管脚向FPGA发送读信号,并通过第二GPIO管脚向FPGA发送数据传输开始信号SYNC;FPGA在检测到数据传输开始信号SYNC后,开始准备发送ARM处理器读取的数据,同时ARM处理器开始读取数据线上的数据,并通过时钟线向FPGA发送时钟信号BCLK,FPGA在时钟信号BCLK的驱动下开始连续发送数据到数据线上;在ARM处理器从FPGA读取数据完成时,ARM处理器停止向FPGA发送数据传输开始信号SYNC。
在本实施方式中,在构建ARM处理器的数据传输接口时,根据所需的数据位宽确定相匹配的数据线的根数;在所需的数据位宽为8bit、16bit或者32bit时,相匹配的数据线的根数分别为8根、16根或者32根。在本实施方式中,为了降低数据传输接口的复杂度,并保证数据传输的适当吞吐率,所需的数据位宽为16bit(数据信号为DATA[15:0]),根据16bit的数据位宽可以确定数据线为16根,因此在构建ARM处理器的数据传输接口时,选定EIM接口所包含的32根数据线中的16根,或者选定EIM接口所包含的16根地址数据复用线,来做为本实施方式中ARM处理器的数据传输接口中供ARM处理器和FPGA之间双向数据传输用的数据线。
在本实施方式中,时钟信号BCLK的频率为33.25MHz,44.33MHz,66.5MHz或者133MHz。在本实施方式中,为了使数据传输速度更快,采用的时钟信号BCLK频率为133MHz,每秒数据传输带宽可达266MByte。
另外,在本实施方式中,在ARM处理器与FPGA双向数据传输前,ARM处理器先通过片选线向FPGA发送片选信号CS,再通过输出使能线向FPGA发送输出使能信号OE,接着通过地址有效线向FPGA发送地址有效信号LBA。
另外,在本实施方式中,在配置ARM处理器的数据传输接口的数据传输方式时,将ARM处理器向FPGA传输的数据的传输方式配置为ARM处理器按顺序传输数据到EIM接口的内存的固定地址,以将数据信号映射到数据线上,从而实现数据的传输;其中,固定地址为EIM接口的内存映射地址空间范围内的任意地址。也就是说,ARM处理器只要顺序传输数据到EIM接口的内存的固定地址,就可以将16bit的数据信号映射到物理数据传输接口的16根数据线上,然后FPGA再从16根数据线上接收数据,从而实现数据的传输。由于FPGA内部的逻辑控制器会根据自身存储分配情况来决定ARM处理器传输来的数据的存储位置,因此不需要特别关注被EIM接口的控制器自动传送来的地址数据。
本实施方式利用NXP ARM处理器的EIM接口的部分构成和信号,同时引入ARM处理器的部分GPIO管脚,构建了一个简单、灵活的可与FPGA进行双向高速并行数据传输的数据传输接口,从而建立了一个ARM处理器与FPGA进行双向高速数据传输的物理链路,简化了EIM接口的信号连接方式,降低了FPGA与ARM处理器数据传输的开发成本和开发难度。
上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包含相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该专利的保护范围内。
本发明的第二实施方式涉及一种ARM处理器与FPGA双向数据传输的实现方法。第二实施方式与第一实施方式大致相同,主要区别之处在于:在第一实施方式中,在构建ARM处理器的数据传输接口时,只利用了由ARM处理器提供的第一GPIO管脚和第二GPIO管脚。而在本发明第二实施方式中,又添加和配置了由ARM处理器提供的第三GPIO管脚和第四GPIO管脚。具体地说:
如图3所示,在构建ARM处理器的数据传输接口时,ARM处理器的数据传输接口还包括:由ARM处理器提供的第三GPIO管脚和第四GPIO管脚;在配置ARM处理器的数据传输接口的数据传输方式时,配置第三GPIO管脚供FPGA向ARM处理器发送繁忙状态信号BUSY,配置第四GPIO管脚供ARM处理器向FPGA发送数据传输完成信号ACK。
其中,繁忙状态信号BUSY用于指示数据发送方是否繁忙,数据传输完成信号ACK用于指示数据接收方接收是否完成。
另外,本实施方式的ARM处理器与FPGA双向数据传输的实现方法还包括:
在ARM处理器向FPGA传输数据时,ARM处理器通过第一GPIO管脚向FPGA发送写信号,并通过第二GPIO管脚向FPGA发送数据传输开始信号SYNC;FPGA在检测到数据传输开始信号SYNC后,开始准备接收ARM处理器发送的数据,并向通过第三GPIO管脚向ARM处理器发送繁忙状态信号BUSY,同时ARM处理器开始连续发送数据到数据线上,并通过时钟线向FPGA发送时钟信号BCLK,FPGA在时钟信号BCLK的驱动下从数据线上接收数据;在ARM处理器向FPGA传输数据完成时,ARM处理器停止向FPGA发送数据传输开始信号SYNC,同时ARM处理器通过第四GPIO管脚向FPGA发送数据传输完成信号ACK,FPGA在检测到数据传输完成信号ACK后,停止向ARM处理器发送繁忙状态信号BUSY。
ARM处理器向FPGA发送数据的时序如图4所示,ARM处理器设置读/写信号RW为低电平(预先设定低电平为写信号,ARM处理器向FPGA写入数据),并通过第二GPIO管脚输出一个低电平的数据传输开始信号SYNC(预先设定低电平指示数据传输开始);FPGA检测到低电平的数据传输开始信号SYNC后,开始准备接收ARM处理器发送的数据,并设置繁忙状态信号BUSY为低电平(预先设定低电平指示数据发送方处于繁忙状态),同时ARM处理器开始发送数据到16bit的数据线上,FPGA在EIM接口的时钟信号BCLK的驱动下接收数据;ARM处理器发送数据完毕后,设置数据传输开始信号SYNC为高电平,之后再发送一个低电平的数据传输完成信号ACK(预先设定低电平指示数据接收方接收完成),FPGA检测到数据传输完成信号ACK的下降沿后,设置繁忙状态信号BUSY为高电平,此时ARM处理器发送数据完毕。
另外,本实施方式ARM处理器与FPGA双向数据传输的实现方法还包括:
在ARM处理器从FPGA读取数据时,ARM处理器通过第一GPIO管脚向FPGA发送读信号,并通过第二GPIO管脚向FPGA发送数据传输开始信号SYNC;FPGA在检测到数据传输开始信号SYNC后,开始准备发送ARM处理器读取的数据,同时ARM处理器开始读取数据线上的数据,并通过时钟线向FPGA发送时钟信号BCLK,FPGA在时钟信号BCLK的驱动下开始连续发送数据到数据线上,并向通过第三GPIO管脚向ARM处理器发送繁忙状态信号BUSY;在ARM处理器从FPGA读取数据完成时,ARM处理器停止向FPGA发送数据传输开始信号SYNC,同时ARM处理器通过第四GPIO管脚向FPGA发送数据传输完成信号ACK,FPGA在检测到数据传输完成信号ACK后,停止向ARM处理器发送繁忙状态信号BUSY。
ARM处理器从FPGA读取数据的时序如图5所示,ARM处理器设置读/写信号RW为高电平(预先设定高电平为读信号,ARM处理器从FPGA读取数据),并通过第二GPIO管脚输出一个低电平的数据传输开始信号SYNC;FPGA检测到低电平的数据传输开始信号SYNC后,ARM处理器开始读取数据线上的数据,FPGA在时钟信号BCLK的驱动下,开始连续发送数据到16bit数据线上,同时设置繁忙状态信号BUSY为低电平(当ARM处理器检测到繁忙状态信号BUSY为高电平时,不能再次从总线上读取数据);ARM处理器连续接收数据完毕后,设置数据传输开始信号SYNC为高电平,之后再发送一个低电平的数据传输完成信号ACK,FPGA检测到数据传输完成信号ACK的下降沿后,设置繁忙状态信号BUSY为高电平,此时数据接收完毕。
上述本实施方式的ARM处理器与FPGA双向数据传输的实现方法,利用繁忙状态信号BUSY和数据传输完成信号ACK,实现了ARM处理器和FPGA的同步握手,确保了数据传输的可靠性。并且,由于本实施方式利用到的EIM接口所包含的数据线只有16根,同步握手操作只用到ARM处理器的少量GPIO管脚,控制方式较为简单,这样一来,就极大简化了FPGA端的开发工作和开发难度,加快了开发进度。
需要说明的是,由于ARM处理器所包含的GPIO管脚的信号可以自定义,同时信号名称也可以任意定义,所以ARM处理器端的GPIO管脚的同步方式和数据传输方式,并不仅仅局限于上述两个实施方式的描述。只要在ARM处理器和FPGA进行双向数据传输时涉及到借用GPIO管脚信号和EIM接口信号来实现与FPGA的数据交换(如ARM处理器从FPGA中读取数据,ARM处理器向FPGA写入数据,ARM处理器采用GPIO管脚实现数据传输方向的辨别,ARM处理器采用GPIO管脚实现数据的同步握手等等),均在本发明的保护范围之内。
此外,在本实施方式中,ARM处理器和FPGA的同步握手采用的是GPIO方式。但在其他实施方式中,也可以采用低速总线的方式,再通过协议指令完成同步握手操作。低速总线如串口、I2C接口或者SPI接口等,均能实现ARM处理器和FPGA的同步握手操作,并能够实现ARM处理器和FPAG的双向数据传输。当然,采用GPIO和低速总线(如串口、I2C接口或者SPI接口)组合的方式也可以实现ARM处理器和FPGA的同步握手操作,并能够实现ARM处理器和FPAG的双向数据传输。
综上所述,本发明的ARM处理器与FPGA双向数据传输的实现方法,具有以下有益效果:本发明利用NXP ARM处理器的EIM接口的部分构成和信号,同时引入ARM处理器的部分GPIO管脚,构建了一个简单、灵活的可与FPGA进行双向高速并行数据传输的数据传输接口,从而建立了一个ARM处理器与FPGA进行双向高速数据传输的物理链路,简化了EIM接口的信号连接方式,降低了FPGA与ARM处理器数据传输的开发成本和开发难度。另外,本发明利用ARM处理器的少量GPIO管脚实现了同步握手,控制方式较为简单,极大简化了FPGA的开发工作,加快了开发进度。另外,本发明可以根据设计需要添加和配置多个GPIO管脚,从而实现多种功能。所以,本发明有效克服了现有技术中的种种缺点而具高度产业利用价值。
上述实施方式仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施方式进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。
Claims (10)
1.一种ARM处理器与FPGA双向数据传输的实现方法,所述ARM处理器至少包括EIM接口和多个GPIO管脚,所述EIM接口至少包括32根数据线、16根地址数据复用线、1根时钟线、4根片选线、1根输出使能线和1根地址有效线,其特征在于,所述ARM处理器与FPGA双向数据传输的实现方法至少包括:
构建所述ARM处理器的数据传输接口;其中,所述ARM处理器的数据传输接口至少包括:由所述EIM接口提供的至少8根数据线、1根时钟线、1根片选线、1根输出使能线和1根地址有效线,以及由所述ARM处理器提供的至少2个GPIO管脚;
配置所述ARM处理器的数据传输接口的数据传输方式;其中,配置所述数据线供所述ARM处理器和所述FPGA之间双向数据传输,配置所述时钟线供所述ARM处理器向所述FPGA发送时钟信号,配置所述片选线供所述ARM处理器向所述FPGA发送片选信号,配置所述输出使能线供所述ARM处理器向所述FPGA发送输出使能信号,配置所述地址有效线供所述ARM处理器向所述FPGA发送地址有效信号,配置第一GPIO管脚供所述ARM处理器向所述FPGA发送读/写信号,配置第二GPIO管脚供所述ARM处理器向所述FPGA发送数据传输开始信号;
提供具有与所述ARM处理器的数据传输接口及其数据传输方式相匹配的数据传输接口的FPGA;
将所述ARM处理器与所述FPGA通过其各自的数据传输接口连接,以实现所述ARM处理器与所述FPGA的双向数据传输。
2.根据权利要求1所述的ARM处理器与FPGA双向数据传输的实现方法,其特征在于,所述ARM处理器与FPGA双向数据传输的实现方法还包括:
在所述ARM处理器向所述FPGA传输数据时,所述ARM处理器通过所述第一GPIO管脚向所述FPGA发送写信号,并通过所述第二GPIO管脚向所述FPGA发送数据传输开始信号;所述FPGA在检测到所述数据传输开始信号后,开始准备接收所述ARM处理器发送的数据,同时所述ARM处理器开始连续发送数据到所述数据线上,并通过所述时钟线向所述FPGA发送时钟信号,所述FPGA在所述时钟信号的驱动下从所述数据线上接收数据;在所述ARM处理器向所述FPGA传输数据完成时,所述ARM处理器停止向所述FPGA发送数据传输开始信号。
3.根据权利要求1所述的ARM处理器与FPGA双向数据传输的实现方法,其特征在于,所述ARM处理器与FPGA双向数据传输的实现方法还包括:
在所述ARM处理器从所述FPGA读取数据时,所述ARM处理器通过所述第一GPIO管脚向所述FPGA发送读信号,并通过所述第二GPIO管脚向所述FPGA发送数据传输开始信号;所述FPGA在检测到所述数据传输开始信号后,开始准备发送所述ARM处理器读取的数据,同时所述ARM处理器开始读取所述数据线上的数据,并通过所述时钟线向所述FPGA发送时钟信号,所述FPGA在所述时钟信号的驱动下开始连续发送数据到所述数据线上;在所述ARM处理器从所述FPGA读取数据完成时,所述ARM处理器停止向所述FPGA发送数据传输开始信号。
4.根据权利要求1所述的ARM处理器与FPGA双向数据传输的实现方法,其特征在于,在构建所述ARM处理器的数据传输接口时,所述ARM处理器的数据传输接口还包括:由所述ARM处理器提供的第三GPIO管脚和第四GPIO管脚;在配置所述ARM处理器的数据传输接口的数据传输方式时,配置所述第三GPIO管脚供所述FPGA向所述ARM处理器发送繁忙状态信号,配置所述第四GPIO管脚供所述ARM处理器向所述FPGA发送数据传输完成信号。
5.根据权利要求4所述的ARM处理器与FPGA双向数据传输的实现方法,其特征在于,所述ARM处理器与FPGA双向数据传输的实现方法还包括:
在所述ARM处理器向所述FPGA传输数据时,所述ARM处理器通过所述第一GPIO管脚向所述FPGA发送写信号,并通过所述第二GPIO管脚向所述FPGA发送数据传输开始信号;所述FPGA在检测到所述数据传输开始信号后,开始准备接收所述ARM处理器发送的数据,并向通过所述第三GPIO管脚向所述ARM处理器发送繁忙状态信号,同时所述ARM处理器开始连续发送数据到所述数据线上,并通过所述时钟线向所述FPGA发送时钟信号,所述FPGA在所述时钟信号的驱动下从所述数据线上接收数据;在所述ARM处理器向所述FPGA传输数据完成时,所述ARM处理器停止向所述FPGA发送数据传输开始信号,同时所述ARM处理器通过所述第四GPIO管脚向所述FPGA发送数据传输完成信号,所述FPGA在检测到所述数据传输完成信号后,停止向所述ARM处理器发送繁忙状态信号。
6.根据权利要求4所述的ARM处理器与FPGA双向数据传输的实现方法,其特征在于,所述ARM处理器与FPGA双向数据传输的实现方法还包括:
在所述ARM处理器从所述FPGA读取数据时,所述ARM处理器通过所述第一GPIO管脚向所述FPGA发送读信号,并通过所述第二GPIO管脚向所述FPGA发送数据传输开始信号;所述FPGA在检测到所述数据传输开始信号后,开始准备发送所述ARM处理器读取的数据,同时所述ARM处理器开始读取所述数据线上的数据,并通过所述时钟线向所述FPGA发送时钟信号,所述FPGA在所述时钟信号的驱动下开始连续发送数据到所述数据线上,并向通过所述第三GPIO管脚向所述ARM处理器发送繁忙状态信号;在所述ARM处理器从所述FPGA读取数据完成时,所述ARM处理器停止向所述FPGA发送数据传输开始信号,同时所述ARM处理器通过所述第四GPIO管脚向所述FPGA发送数据传输完成信号,所述FPGA在检测到所述数据传输完成信号后,停止向所述ARM处理器发送繁忙状态信号。
7.根据权利要求1所述的ARM处理器与FPGA双向数据传输的实现方法,其特征在于,在构建所述ARM处理器的数据传输接口时,根据所需的数据位宽确定相匹配的所述数据线的根数;在所需的数据位宽为8bit、16bit或者32bit时,相匹配的所述数据线的根数分别为8根、16根或者32根。
8.根据权利要求1所述的ARM处理器与FPGA双向数据传输的实现方法,其特征在于,所述时钟信号的频率为33.25MHz,44.33MHz,66.5MHz或者133MHz。
9.根据权利要求1所述的ARM处理器与FPGA双向数据传输的实现方法,其特征在于,在所述ARM处理器与所述FPGA双向数据传输前,所述ARM处理器先通过所述片选线向所述FPGA发送片选信号,再通过所述输出使能线向所述FPGA发送输出使能信号,接着通过所述地址有效线向所述FPGA发送地址有效信号。
10.根据权利要求1所述的ARM处理器与FPGA双向数据传输的实现方法,其特征在于,在配置所述ARM处理器的数据传输接口的数据传输方式时,将所述ARM处理器向所述FPGA传输的数据的传输方式配置为所述ARM处理器按顺序传输数据到所述EIM接口的内存的固定地址,以将数据信号映射到所述数据线上,从而实现数据的传输;其中,所述固定地址为所述EIM接口的内存映射地址空间范围内的任意地址。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611043907.1A CN106776408B (zh) | 2016-11-21 | 2016-11-21 | 一种arm处理器与fpga双向数据传输的实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611043907.1A CN106776408B (zh) | 2016-11-21 | 2016-11-21 | 一种arm处理器与fpga双向数据传输的实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106776408A CN106776408A (zh) | 2017-05-31 |
CN106776408B true CN106776408B (zh) | 2019-11-22 |
Family
ID=58974869
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611043907.1A Active CN106776408B (zh) | 2016-11-21 | 2016-11-21 | 一种arm处理器与fpga双向数据传输的实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106776408B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108415874B (zh) * | 2018-05-02 | 2024-02-06 | 武汉华讯国蓉科技有限公司 | 一种基于eim总线的接口扩展设备和方法 |
CN109460378B (zh) * | 2018-10-30 | 2021-01-15 | 新华三信息安全技术有限公司 | 一种接口电路、信号处理方法、器件及介质 |
CN109669900A (zh) * | 2018-11-26 | 2019-04-23 | 中国科学院长春光学精密机械与物理研究所 | Arduino Due与FPGA的数据通信方法及系统 |
CN109739695B (zh) * | 2018-12-13 | 2021-09-21 | 南京航空航天大学 | 无人机控制器中arm和fpga非相似余度通信方法 |
CN110412325A (zh) * | 2019-08-08 | 2019-11-05 | 电子科技大学 | 无线虚拟示波器及其功耗动态管理方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101770817A (zh) * | 2010-01-18 | 2010-07-07 | 华东师范大学 | 基于fpga的多接口存储器验证系统 |
CN102801593A (zh) * | 2012-02-23 | 2012-11-28 | 中国电力科学研究院 | 一种基于fpga和arm的数据传输方法及系统 |
CN104461971A (zh) * | 2014-11-26 | 2015-03-25 | 深圳市开立科技有限公司 | 一种数据采集控制系统和方法 |
-
2016
- 2016-11-21 CN CN201611043907.1A patent/CN106776408B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101770817A (zh) * | 2010-01-18 | 2010-07-07 | 华东师范大学 | 基于fpga的多接口存储器验证系统 |
CN102801593A (zh) * | 2012-02-23 | 2012-11-28 | 中国电力科学研究院 | 一种基于fpga和arm的数据传输方法及系统 |
CN104461971A (zh) * | 2014-11-26 | 2015-03-25 | 深圳市开立科技有限公司 | 一种数据采集控制系统和方法 |
Non-Patent Citations (1)
Title |
---|
基于i.MX6Q+FPGA平台Android下EIM总线接口设计;陈崇森;《现代计算机(专业版)》;20160505;61-65 * |
Also Published As
Publication number | Publication date |
---|---|
CN106776408A (zh) | 2017-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106776408B (zh) | 一种arm处理器与fpga双向数据传输的实现方法 | |
CN101911000B (zh) | 用于连接电子装置的控制总线 | |
CN101599004B (zh) | 基于fpga的sata控制器 | |
CN103229155B (zh) | 高速内存系统 | |
CN106293843B (zh) | 一种数据加载系统 | |
CN103975317B (zh) | 经由总线上的多条数据线来发送数据的系统和方法 | |
CN104915303B (zh) | 基于PXIe总线的高速数字I/O系统 | |
JPH05211540A (ja) | モデム制御信号のためのマルチプレクス機構 | |
CN107015927A (zh) | 一种基于SoC支持多个SPI接口标准组的装置 | |
CN110309526A (zh) | 用于可配置从端点电路的外围互连 | |
CN107918545A (zh) | 一种基于zynq的远程升级系统及其实现方法 | |
CN109446132A (zh) | 一种接口总线装置及数据通信协议 | |
CN103530245B (zh) | 一种基于fpga的srio互联交换装置 | |
TWI426391B (zh) | 傳送訊號的方法及其傳遞單元 | |
CN209149287U (zh) | 大数据运算加速系统 | |
CN107710184A (zh) | 具有少于八位的字节及可变分组大小的spi接口 | |
US9588931B2 (en) | Communication bridging between devices via multiple bridge elements | |
CN102752180A (zh) | Can总线网络节点的实现方法 | |
CN102692642B (zh) | 基于以太网物理层收发器的地震数据传输装置 | |
CN101551786A (zh) | 波特率自适应串行通信中继器的制作方法 | |
CN105892359A (zh) | 一种多dsp并行处理系统及其处理方法 | |
CN104798010A (zh) | 至少部分的串行存储协议兼容帧转换 | |
KR20150109259A (ko) | 트랜잭션 계층 패킷의 싱글 엔드형 통신을 위한 방법, 장치 및 시스템 | |
CN110515879A (zh) | 一种异步传输装置及其传输方法 | |
CN206757602U (zh) | 一种基于SoC支持多个SPI接口标准组的装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |