CN109669900A - Arduino Due与FPGA的数据通信方法及*** - Google Patents
Arduino Due与FPGA的数据通信方法及*** Download PDFInfo
- Publication number
- CN109669900A CN109669900A CN201811414447.8A CN201811414447A CN109669900A CN 109669900 A CN109669900 A CN 109669900A CN 201811414447 A CN201811414447 A CN 201811414447A CN 109669900 A CN109669900 A CN 109669900A
- Authority
- CN
- China
- Prior art keywords
- fpga
- data
- pin
- arduino due
- arduino
- 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.)
- Pending
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/40—Bus structure
- G06F13/4063—Device-to-bus coupling
- G06F13/4068—Electrical coupling
-
- 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/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4221—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
-
- 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/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Logic Circuits (AREA)
Abstract
本申请涉及通信控制技术领域,具体公开一种Arduino Due与FPGA的数据通信方法包括:分别配置Arduino Due和FPGA的通信信号引脚的第一电平强度,在所述时钟信号引脚为输入引脚时,配置所述片选信号引脚的电平强度为第二电平强度,开始由Arduino Due向FPGA写数据或由Arduino Due从FPGA读数据;若检测到所述输入引脚触发中断响应,则完成一次由Arduino Due向FPGA写数据或由Arduino Due从FPGA读数据;在所述时钟信号引脚为输出引脚时,若检测到所述片选信号引脚的片选信号下降,则开始由FPGA向Arduino Due写数据或由FPGA从Arduino Due读数据;若检测到所述输出引脚触发响应,则完成一次由FPGA向Arduino Due写数据或由FPGA从Arduino Due读数据。通过上述方法可使Arduino Due与FPGA之间进行快速数据通讯。
Description
技术领域
本申请涉及通信控制技术领域,尤其涉及一种Arduino Due与FPGA的数据通信方法及***。
背景技术
电子信息应用技术的发展带动了集成芯片和软件工具的飞速发展,使得基于C/C++、python、Java、verilog HDL等语言的集成芯片得到广泛引用。其中基于C/C++的ARM、DSP和基于verilog HDL的FPGA及其集成嵌入式***在实际信号处理、运动控制等领域中应用较为广泛。自2005年Massimo Banzi等人开发出Arduino以来,目前已经出现Arduino Uno、Nano、Mega2560、Due等众多Arduino型号及其Arduino GSM Shield、Wireless ProtoShield、WiFi Shield、Motor Shield等多种扩展硬件平台。其中Arduino Due采用AtmelSAM3X8E CPU芯片,是第一块基于32位ARM核心微控制器的Arduino型号,时钟频率为84MHz,性能远优于Arduino Uno、Nano、Mega2560等同类产品。但其在基于数据信号采集处理方面的应用较为欠缺。
一方面,由于Arduino Due之外的其它Arduino型号是时钟速率和数据位宽均较低,而性能强大的Arduino Due出现较晚,发展速度还未突显;另一方面,目前在数据信号采集处理方面主要采用FPGA来实现,Arduino Due相比较于STM32FXX系列ARM和DSP,缺少与FPGA进行数据快速通讯的控制-地址-数据并行总线传输协议和扩展功能,虽然可利用UART、IIC、SPI等串行通信方式,且占有I/O引脚较少,但是通信速率有限,使得其应用受限,性能无法显著提升。
发明内容
有鉴于此,本申请实施例提供一种Arduino Due与FPGA的数据通信方法及***,以解决现有技术中Arduino Due与FPGA之间不能进行快速数据通讯的问题。
本申请实施例第一方面提供了一种Arduino Due与FPGA的数据通信方法,所述数据通信方法包括:
分别配置Arduino Due和FPGA的通信信号引脚的第一电平强度,其中,所述通信信号引脚包括片选信号引脚、地址线信号引脚、数据线信号引脚和时钟信号引脚;
在所述时钟信号引脚为输入引脚时,配置所述片选信号引脚的电平强度为第二电平强度,开始由Arduino Due向FPGA写数据或由Arduino Due从FPGA读数据;
若检测到所述输入引脚触发中断响应,则完成一次由Arduino Due向FPGA写数据或由Arduino Due从FPGA读数据;
在所述时钟信号引脚为输出引脚时,若检测到所述片选信号引脚的片选信号下降,则开始由FPGA向Arduino Due写数据或由FPGA从ArduinoDue读数据;
若检测到所述输出引脚触发响应,则完成一次由FPGA向Arduino Due写数据或由FPGA从Arduino Due读数据。
可选地,所述若检测到所述输入引脚触发中断响应,则完成一次由Arduino Due向FPGA写数据或由Arduino Due从FPGA读数据,包括:
若检测到所述输入引脚的时钟信号下降沿触发中断响应,则根据传输的地址和数据依次对所述地址线信号引脚和所述数据线信号引脚进行高低电平的配置,以完成一次由Arduino Due向FPGA写数据;
若检测到所述输入引脚的时钟信号上升沿触发中断响应,则依次读取所述地址线信号引脚和所述数据线信号引脚的高低电平,以完成一次由Arduino Due从FPGA读数据。
可选地,所述若检测到所述输出引脚触发响应,则完成一次由FPGA向Arduino Due写数据或由FPGA从Arduino Due读数据包括:
若检测到所述输出引脚对应的时钟信号上升沿响应,则根据传输的地址和数据对所述地址线引脚和数据线引脚的高低电平进行配置,以完成一次由FPGA向Arduino Due写数据;
若检测到所述输出引脚对应的时钟信号下降沿响应,则并行读取所述地址线引脚和数据线引脚的高低电平,以完成一次由FPGA从Arduino Due读数据。
可选地,在完成一次由Arduino Due向FPGA写数据或由Arduino Due从FPGA读数据之后,包括:
在所述片选信号引脚的电平强度恢复为所述第一电平强度时,停止由ArduinoDue向FPGA写数据或由Arduino Due从FPGA读数据。
可选地,在完成一次由FPGA向Arduino Due写数据或由FPGA向Arduino Due读数据之后,包括:
若检测到所述片选信号引脚的片选信号上升,则停止由FPGA向Arduino Due写数据或由FPGA向Arduino Due读数据。
本申请实施例第二方面提供了一种Arduino Due与FPGA的数据通信***,所述数据通信***包括:
配置模块,用于分别配置Arduino Due和FPGA的通信信号引脚的第一电平强度,其中,所述通信信号引脚包括片选信号引脚、地址线信号引脚、数据线信号引脚和时钟信号引脚;
第一读写模块,用于在所述时钟信号引脚为输入引脚时,配置所述片选信号引脚的电平强度为第二电平强度,开始由Arduino Due向FPGA写数据或由Arduino Due从FPGA读数据;若检测到所述输入引脚触发中断响应,则完成一次由Arduino Due向FPGA写数据或由Arduino Due从FPGA读数据;
第二读写模块,用于在所述时钟信号引脚为输出引脚时,若检测到所述片选信号引脚的片选信号下降,则开始由FPGA向Arduino Due写数据或由FPGA从Arduino Due读数据;若检测到所述输出引脚触发响应,则完成一次由FPGA向Arduino Due写数据或由FPGA从Arduino Due读数据。
可选地,所述第一读写模块在若检测到所述输入引脚触发中断响应,则完成一次由Arduino Due向FPGA写数据或由Arduino Due从FPGA读数据时,具体用于:
若检测到所述输入引脚的时钟信号下降沿触发中断响应,则根据传输的地址和数据依次对所述地址线信号引脚和所述数据线信号引脚进行高低电平的配置,以完成一次由Arduino Due向FPGA写数据;
若检测到所述输入引脚的时钟信号上升沿触发中断响应,则依次读取所述地址线信号引脚和所述数据线信号引脚的高低电平,以完成一次由Arduino Due从FPGA读数据。
可选地,所述第二读写模块在检测到所述输出引脚触发响应,则完成一次由FPGA向Arduino Due写数据或由FPGA从Arduino Due读数据时,具体用于:
若检测到所述输出引脚对应的时钟信号上升沿响应,则根据传输的地址和数据对所述地址线引脚和数据线引脚的高低电平进行配置,以完成一次由FPGA向Arduino Due写数据;
若检测到所述输出引脚对应的时钟信号下降沿响应,则并行读取所述地址线引脚和数据线引脚的高低电平,以完成一次由FPGA从Arduino Due读数据。
可选地,所述Arduino Due与FPGA的数据通信***还用于:
在所述片选信号引脚的电平强度恢复为所述第一电平强度时,停止由ArduinoDue向FPGA写数据或由Arduino Due从FPGA读数据。
可选地,所述Arduino Due与FPGA的数据通信***还用于:
若检测到所述片选信号引脚的片选信号上升,则停止由FPGA向Arduino Due写数据或由FPGA向Arduino Due读数据。
本申请提供的实施例通过Arduino Due与FPGA之间的数据通信协议,根据ArduinoDue的程序语句串行执行和FPGA并行数据采集特点,并借鉴于传统数据传统控制-地址-数据并行总线传输协议和SPI数据同步串行总线传输协议,从而可以使Arduino Due与FPGA进行快速的数据交互。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍。
图1是本申请实施例提供的Arduino Due与FPGA的数据通信方法的示意图;
图2是本申请实施例提供的Arduino Due向FPGA写数据伪同步并行通信协议单向时序逻辑图;
图3是本申请实施例提供的Arduino Due从FPGA读数据伪同步并行通信协议单向时序逻辑图;
图4是本申请实施例提供的FPGA从Arduino Due读数据伪同步并行通信协议单向时序逻辑图;
图5是本申请实施例提供的FPGA向Arduino Due写数据伪同步并行通信协议单向时序逻辑图;
图6是本申请实施例提供的Arduino Due与FPGA之间数据伪同步并行通信协议双向时序逻辑图;
图7是本申请实施例提供的Arduino Due与FPGA的数据通信***的结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及具体实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,而不构成对本申请的限制。
为了说明本申请所述的技术方案,下面通过具体实施例来进行说明。
实施例一:
图1示出了本申请实施例提供的一种Arduino Due与FPGA的数据通信方法的示意图,包括步骤S11-步骤S15,其中:
步骤S21,分别配置Arduino Due和FPGA的通信信号引脚的第一电平强度,其中,所述通信信号引脚包括片选信号引脚、地址线信号引脚、数据线信号引脚和时钟信号引脚;
步骤S22,在所述时钟信号引脚为输入引脚时,配置所述片选信号引脚的电平强度为第二电平强度,开始由Arduino Due向FPGA写数据或由Arduino Due从FPGA读数据;
步骤S23,若检测到所述输入引脚触发中断响应,则完成一次由ArduinoDue向FPGA写数据或由Arduino Due从FPGA读数据;
可选地,所述若检测到所述输入引脚触发中断响应,则完成一次由Arduino Due向FPGA写数据或由Arduino Due从FPGA读数据,包括:
若检测到所述输入引脚的时钟信号下降沿触发中断响应,则根据传输的地址和数据依次对所述地址线信号引脚和所述数据线信号引脚进行高低电平的配置,以完成一次由Arduino Due向FPGA写数据;
若检测到所述输入引脚的时钟信号上升沿触发中断响应,则依次读取所述地址线信号引脚和所述数据线信号引脚的高低电平,以完成一次由Arduino Due从FPGA读数据。
可选地,在完成一次由Arduino Due向FPGA写数据或由Arduino Due从FPGA读数据之后,包括:
在所述片选信号引脚的电平强度恢复为所述第一电平强度时,停止由ArduinoDue向FPGA写数据或由Arduino Due从FPGA读数据。
下面结合具体实例对上述过程进行说明:图2、3、4、5分别为ArduinoDue与FPGA之间数据伪同步并行通信协议单向时序逻辑图,图中已画出的实线为起始第一次完整写或读数据信号时序逻辑图,而未画出的虚线为后续循环写或读数据信号时序逻辑图。其中CS、CLK、A0_m、D0_n依次为片选、时钟、(m+1)位地址线、(n+1)位数据线信号,t0为一段时间内写或读数据的起始时刻,t1为第一次在时钟沿触发时开始写或读数据的起始时刻,t2为第一次执行完写或读数据的结束时刻,t3为写数据或读数据的结束时刻。为了便于清晰描述,图中除CLK时钟信号外,其它信号电平均起始于高电平信号,起始分配地址为0首地址,起始传输数据为0。另外,考虑到Arduino Due在数据采集编程实现的特点,采用时钟沿外部触发中断来实现数据的写和读过程,其中写和读数据分别对应于时钟外部触发下降沿和上升沿。考虑到Arduino Due与FPGA之间灵活多变的数据通信协议,需要根据Arduino Due执行程序语句时间、地址线和数据线位宽确定可调的时钟周期信号,可采用FPGA生成CLK时钟触发信号,且此CLK时钟信号将用于Arduino Due写或读数据的外部中断响应信号。
图2示出了本申请实施例提供的Arduino Due向FPGA写数据伪同步并行通信协议单向时序逻辑图;
具体地,配置Arduino Due和FPGA所有通信信号引脚,包括:将CS片选、A0_m地址线、D0_n数据线信号引脚均配置为高电平输出引脚,CLK时钟信号引脚配置为外部下降沿触发中断响应输入引脚;其次,t0时刻开始准备向FPGA写数据时,先将CS片选信号配置为低电平;接着,t1时刻当外部CLK时钟信号下降沿触发中断响应时,根据所需要传输的地址和数据依次对A0_m地址线和D0_n数据线引脚进行高低电平配置,图1中起始地址为0,对应的起始数据为0,t2时刻当外部CLK时钟信号上升沿触发中断响应时,完成一次写数据过程,在此写数据过程中,虽然FPGA从Arduino Due并行读取数据信号,但是Arduino Due向FPGA写入数据信号是串行执行,从CLK时钟信号下降沿到上升沿触发中断响应需要的消耗时间为(t2-t1);然后,完成图1中实线部分的首次写数据过程后,后续的虚线部分可按照同样逻辑循环进行;最后,t3时刻将CS片选信号配置为高电平,停止写数据过程,对应的整段写数据过程所消耗时间为(t3-t0)。
图3是本申请实施例提供的Arduino Due从FPGA读数据伪同步并行通信协议单向时序逻辑图;在二者之间进行读数据时首先,配置所有通信信号引脚,将CS片选信号引脚配置为高电平输出引脚,A0_m地址线、D0_n数据线信号引脚均配置为高电平输入引脚,CLK时钟信号引脚配置为外部上升沿触发中断响应输入引脚;其次,t0时刻开始准备从FPGA读数据时,先将CS片选信号配置为低电平;接着,t1时刻当外部CLK时钟信号上升沿触发中断响应时,需要对地址线和数据线引脚高低电平依次读取,图2中起始地址为0,对应的起始数据为0,t2时刻当外部CLK时钟信号下降沿触发中断响应时,完成一次读数据过程,在此读数据过程中,虽然FPGA向Arduino Due并行写入数据信号,但是Arduino Due从FPGA读取数据信号是串行执行,从CLK时钟信号上升沿到下降沿触发中断响应的消耗时间为(t2-t1);然后,完成图2中实线部分的首次写数据过程后,后续的虚线部分可按照同样逻辑循环进行;最后,t3时刻将CS片选信号配置为高电平,停止读数据过程,对应的整段读数据过程所消耗时间为(t3-t0)。
步骤S24,在所述时钟信号引脚为输出引脚时,若检测到所述片选信号引脚的片选信号下降,则开始由FPGA向Arduino Due写数据或由FPGA从Arduino Due读数据;
步骤S25,若检测到所述输出引脚触发响应,则完成一次由FPGA向Arduino Due写数据或由FPGA从Arduino Due读数据。
可选地,所述若检测到所述输出引脚触发响应,则完成一次由FPGA向Arduino Due写数据或由FPGA从Arduino Due读数据包括:
若检测到所述输出引脚对应的时钟信号上升沿响应,则根据传输的地址和数据对所述地址线引脚和数据线引脚的高低电平进行配置,以完成一次由FPGA向Arduino Due写数据;
若检测到所述输出引脚对应的时钟信号下降沿响应,则并行读取所述地址线引脚和数据线引脚的高低电平,以完成一次由FPGA从Arduino Due读数据。
可选地,在完成一次由FPGA向Arduino Due写数据或由FPGA向Arduino Due读数据之后,包括:
若检测到所述片选信号引脚的片选信号上升,则停止由FPGA向Arduino Due写数据或由FPGA向Arduino Due读数据。
图4示出了本申请实施例提供的FPGA从Arduino Due读数据伪同步并行通信协议单向时序逻辑图;,在二者进行数据通信时,首先,配置通信信号引脚,将CS片选、A0_m地址线、D0_n数据线信号引脚均配置为高电平输入引脚,CLK时钟信号引脚配置为输出引脚;其次,t0时刻当检测CS片选信号下降沿时,开始准备从Arduino Due读数据;接着,t1时刻当检测CLK时钟信号下降沿响应时,需要对A0_m地址线和D0_n数据线引脚高低电平并行读取,图3中起始地址为0,对应的起始数据为0,t2时刻当检测CLK时钟信号上升沿响应时,完成一次读数据过程,在此读数据过程中,虽然FPGA从Arduino Due并行读取数据信号,但是ArduinoDue向FPGA写入数据信号是串行执行,从CLK时钟信号下降沿到上升沿响应需要的消耗时间为(t2-t1);然后,完成图3中实线部分的首次读数据过程后,后续的虚线部分可按照同样逻辑循环进行;最后,t3时刻当检测CS片选信号上升沿响应时,停止读数据过程,对应的整段读数据过程所消耗时间为(t3-t0)。
图5示出了本申请实施例提供的FPGA向Arduino Due写数据伪同步并行通信协议单向时序逻辑图;
首先,配置通信信号引脚,将CS片选信号引脚配置为高电平输入引脚,A0_m地址线、D0_n数据线信号引脚均配置为高电平输出引脚,CLK时钟信号引脚配置为输出引脚;其次,t0时刻当检测CS片选信号下降沿时,开始准备向Arduino Due写数据;接着,t1时刻当检测CLK时钟信号上升沿响应时,根据所需要传输的地址和数据并行对A0_m地址线和D0_n数据线引脚进行高低电平配置,图4中起始地址为0,对应的起始数据为0,t2时刻当检测CLK时钟信号下降沿响应时,完成一次写数据过程,在此写数据过程中,虽然FPGA向Arduino Due并行写入数据信号,但是Arduino Due从FPGA读取数据信号是串行执行,从CLK时钟信号上升沿到下降沿响应需要的消耗时间为(t2-t1);然后,完成图4中实线部分的首次写数据过程后,后续的虚线部分可按照同样逻辑循环进行;最后,t3时刻当检测CS片选信号上升沿响应时,停止写数据过程,对应的整段写数据过程所消耗时间为(t3-t0)。
上面阐述了Arduino Due与FPGA之间数据伪同步并行通信协议单向时序逻辑实现过程,可看出Arduino Due向FPGA写数据与FPGA从ArduinoDue读数据的时序逻辑相同,Arduino Due从FPGA读数据与FPGA向Arduino Due写数据的时序逻辑相同。因此,通过CLK时钟信号上升沿和下降沿的写或读数据响应区分,并根据实际具体要求配置地址线和数据线信号位宽,可将A0_m地址线细分为A0_m1和A0_m2地址线(m1+m2=m+1),D0_n数据线细分为D0_n1和D0_n2数据线(n1+n2=n+1)。其中A0_m1地址线和D0_n1地址线对应于Arduino Due从FPGA读数据与FPGA向Arduino Due写数据通信协议;A0_m2地址线和D0_n2地址线对应于Arduino Due向FPGA写数据与FPGA从Arduino Due读数据通信协议。通过此配置后,结合上述4种单向协议进行组合,可实现Arduino Due与FPGA之间数据双向通信。
可选地,图6示出了本申请实施例提供的Arduino Due与FPGA之间数据伪同步并行通信协议双向时序逻辑图;首先,配置通信信号引脚,对FPGA而言,将CS片选信号引脚配置为高电平输入引脚,A0_m1地址线、D0_n1数据线信号引脚均配置为高电平输出引脚,A0_m2地址线、D0_n2数据线信号引脚均配置为高电平输入引脚,CLK时钟信号引脚配置为输出引脚。对Arduino Due而言,将CS片选信号引脚配置为高电平输出引脚,A0_m1地址线、D0_n1数据线信号引脚均配置为高电平输入引脚,A0_m2地址线、D0_n2数据线信号引脚均配置为高电平输出引脚,CLK时钟信号引脚配置为外部变化沿触发中断响应输入引脚;其次,对FPGA而言,t0时刻当检测CS片选信号下降沿时,开始准备向Arduino Due写数据。对Arduino Due而言,t0时刻开始准备从FPGA读数据时,先将CS片选信号配置为低电平;接着,对FPGA而言,t1时刻当检测CLK时钟信号上升沿响应时,根据所需要传输的地址和数据并行对A0_m1地址线和D0_n1数据线引脚进行高低电平配置,图6中起始地址为0,对应的起始数据为0,t2时刻当检测CLK时钟信号下降沿响应时,完成一次写数据过程,在此写数据过程中,从CLK时钟信号上升沿到下降沿响应需要的消耗时间为(t2-t1)。对Arduino Due而言,t1时刻当外部CLK时钟信号上升沿触发中断响应时,需要对A0_m1地址线和D0_n1数据线引脚高低电平依次读取,图6中起始地址为0,对应的起始数据为0,t2时刻当外部CLK时钟信号下降沿触发中断响应时,完成一次读数据过程,在此读数据过程中,从CLK时钟信号上升沿到下降沿触发中断响应的消耗时间为(t2-t1);再接着,对Arduino Due而言,t2时刻当外部CLK时钟信号下降沿触发中断响应时,根据所需要传输的地址和数据依次对A0_m2地址线和D0_n2数据线引脚进行高低电平配置,图1中起始地址为0,对应的起始数据为0,t3时刻当外部CLK时钟信号上升沿触发中断响应时,完成一次写数据过程,在此写数据过程中,从CLK时钟信号下降沿到上升沿触发中断响应需要的消耗时间为(t3-t2)。对FPGA而言,t2时刻当检测CLK时钟信号下降沿响应时,需要对A0_m2地址线和D0_n2数据线引脚高低电平并行读取,图3中起始地址为0,对应的起始数据为0,t3时刻当检测CLK时钟信号上升沿响应时,完成一次读数据过程,在此读数据过程中,从CLK时钟信号下降沿到上升沿响应需要的消耗时间为(t3-t2);然后,对Arduino Due和FPGA而言,图6虚线部分可根据CLK时钟信号变化沿按照首次数据双向通信时序逻辑循环进行;最后,对ArduinoDue和FPGA而言,t4时刻将Arduino Due中CS片选信号配置为高电平,停止数据双向通信过程,对应的整段数据双向通信过程所消耗时间为(t4-t0)。
上述表明,该定义的Arduino Due与FPGA之间的数据通信协议根据Arduino Due的程序语句串行执行和FPGA并行数据采集特点,并借鉴于传统数据传统控制-地址-数据并行总线传输协议和SPI数据同步串行总线传输协议,是一种利用外部时钟变化沿触发响应的数据伪同步并行通信协议。而且,结合实际需求和嵌入式集成***参数,通过改变地址线位宽m、m1、m2和数据线位宽n、n1、n2,可设计灵活多变的单向或双向数据通信协议,实现过程简单方便,具有一定的普适性,可适用于Arduino Due、STM32FXX系列ARM、DSP、FPGA等任意组合的嵌入式集成***之间的数据通信。
本申请提供的实施例通过Arduino Due与FPGA之间的数据通信协议,根据ArduinoDue的程序语句串行执行和FPGA并行数据采集特点,并借鉴于传统数据传统控制-地址-数据并行总线传输协议和SPI数据同步串行总线传输协议,从而可以使Arduino Due与FPGA进行快速的数据交互。
实施例二:
图7示出了本申请另一实施例提供的一种Arduino Due与FPGA的数据通信***,所述数据通信***包括:
配置模块71,用于分别配置Arduino Due和FPGA的通信信号引脚的第一电平强度,其中,所述通信信号引脚包括片选信号引脚、地址线信号引脚、数据线信号引脚和时钟信号引脚;
第一读写模块72,用于在所述时钟信号引脚为输入引脚时,配置所述片选信号引脚的电平强度为第二电平强度,开始由Arduino Due向FPGA写数据或由Arduino Due从FPGA读数据;若检测到所述输入引脚触发中断响应,则完成一次由Arduino Due向FPGA写数据或由Arduino Due从FPGA读数据;
第二读写模块73,用于在所述时钟信号引脚为输出引脚时,若检测到所述片选信号引脚的片选信号下降,则开始由FPGA向Arduino Due写数据或由FPGA从Arduino Due读数据;若检测到所述输出引脚触发响应,则完成一次由FPGA向Arduino Due写数据或由FPGA从Arduino Due读数据。
可选地,所述第一读写模块72在若检测到所述输入引脚触发中断响应,则完成一次由Arduino Due向FPGA写数据或由Arduino Due从FPGA读数据时,具体用于:
若检测到所述输入引脚的时钟信号下降沿触发中断响应,则根据传输的地址和数据依次对所述地址线信号引脚和所述数据线信号引脚进行高低电平的配置,以完成一次由Arduino Due向FPGA写数据;
若检测到所述输入引脚的时钟信号上升沿触发中断响应,则依次读取所述地址线信号引脚和所述数据线信号引脚的高低电平,以完成一次由Arduino Due从FPGA读数据。
可选地,所述第二读写模块73在检测到所述输出引脚触发响应,则完成一次由FPGA向Arduino Due写数据或由FPGA从Arduino Due读数据时,具体用于:
若检测到所述输出引脚对应的时钟信号上升沿响应,则根据传输的地址和数据对所述地址线引脚和数据线引脚的高低电平进行配置,以完成一次由FPGA向Arduino Due写数据;
若检测到所述输出引脚对应的时钟信号下降沿响应,则并行读取所述地址线引脚和数据线引脚的高低电平,以完成一次由FPGA从Arduino Due读数据。
可选地,所述Arduino Due与FPGA的数据通信***还用于:
在所述片选信号引脚的电平强度恢复为所述第一电平强度时,停止由ArduinoDue向FPGA写数据或由Arduino Due从FPGA读数据。
可选地,所述Arduino Due与FPGA的数据通信***还用于:
若检测到所述片选信号引脚的片选信号上升,则停止由FPGA向Arduino Due写数据或由FPGA向Arduino Due读数据。
以上所述本发明的具体实施方式,并不构成对本发明保护范围的限定。任何根据本发明的技术构思所作出的各种其他相应的改变与变形,均应包含在本发明权利要求的保护范围内。
Claims (10)
1.一种Arduino Due与FPGA的数据通信方法,其特征在于,所述数据通信方法包括:
分别配置Arduino Due和FPGA的通信信号引脚的第一电平强度,其中,所述通信信号引脚包括片选信号引脚、地址线信号引脚、数据线信号引脚和时钟信号引脚;
在所述时钟信号引脚为输入引脚时,配置所述片选信号引脚的电平强度为第二电平强度,开始由Arduino Due向FPGA写数据或由Arduino Due从FPGA读数据;
若检测到所述输入引脚触发中断响应,则完成一次由Arduino Due向FPGA写数据或由Arduino Due从FPGA读数据;
在所述时钟信号引脚为输出引脚时,若检测到所述片选信号引脚的片选信号下降,则开始由FPGA向Arduino Due写数据或由FPGA从Arduino Due读数据;
若检测到所述输出引脚触发响应,则完成一次由FPGA向Arduino Due写数据或由FPGA从Arduino Due读数据。
2.如权利要求1所述的Arduino Due与FPGA的数据通信方法,其特征在于,所述若检测到所述输入引脚触发中断响应,则完成一次由Arduino Due向FPGA写数据或由Arduino Due从FPGA读数据,包括:
若检测到所述输入引脚的时钟信号下降沿触发中断响应,则根据传输的地址和数据依次对所述地址线信号引脚和所述数据线信号引脚进行高低电平的配置,以完成一次由Arduino Due向FPGA写数据;
若检测到所述输入引脚的时钟信号上升沿触发中断响应,则依次读取所述地址线信号引脚和所述数据线信号引脚的高低电平,以完成一次由Arduino Due从FPGA读数据。
3.如权利要求1所述的Arduino Due与FPGA的数据通信方法,其特征在于,所述若检测到所述输出引脚触发响应,则完成一次由FPGA向Arduino Due写数据或由FPGA从ArduinoDue读数据包括:
若检测到所述输出引脚对应的时钟信号上升沿响应,则根据传输的地址和数据对所述地址线引脚和数据线引脚的高低电平进行配置,以完成一次由FPGA向Arduino Due写数据;
若检测到所述输出引脚对应的时钟信号下降沿响应,则并行读取所述地址线引脚和数据线引脚的高低电平,以完成一次由FPGA从Arduino Due读数据。
4.如权利要求1或2所述的Arduino Due与FPGA的数据通信方法,其特征在于,在完成一次由Arduino Due向FPGA写数据或由Arduino Due从FPGA读数据之后,包括:
在所述片选信号引脚的电平强度恢复为所述第一电平强度时,停止由Arduino Due向FPGA写数据或由Arduino Due从FPGA读数据。
5.如权利要求1或3所述的Arduino Due与FPGA的数据通信方法,其特征在于,在完成一次由FPGA向Arduino Due写数据或由FPGA向Arduino Due读数据之后,包括:
若检测到所述片选信号引脚的片选信号上升,则停止由FPGA向Arduino Due写数据或由FPGA向Arduino Due读数据。
6.一种Arduino Due与FPGA的数据通信***,其特征在于,所述数据通信***包括:
配置模块,用于分别配置Arduino Due和FPGA的通信信号引脚的第一电平强度,其中,所述通信信号引脚包括片选信号引脚、地址线信号引脚、数据线信号引脚和时钟信号引脚;
第一读写模块,用于在所述时钟信号引脚为输入引脚时,配置所述片选信号引脚的电平强度为第二电平强度,开始由Arduino Due向FPGA写数据或由Arduino Due从FPGA读数据;若检测到所述输入引脚触发中断响应,则完成一次由Arduino Due向FPGA写数据或由Arduino Due从FPGA读数据;
第二读写模块,用于在所述时钟信号引脚为输出引脚时,若检测到所述片选信号引脚的片选信号下降,则开始由FPGA向Arduino Due写数据或由FPGA从Arduino Due读数据;若检测到所述输出引脚触发响应,则完成一次由FPGA向Arduino Due写数据或由FPGA从Arduino Due读数据。
7.如权利要求6所述的Arduino Due与FPGA的数据通信***,其特征在于,所述第一读写模块在若检测到所述输入引脚触发中断响应,则完成一次由Arduino Due向FPGA写数据或由Arduino Due从FPGA读数据时,具体用于:
若检测到所述输入引脚的时钟信号下降沿触发中断响应,则根据传输的地址和数据依次对所述地址线信号引脚和所述数据线信号引脚进行高低电平的配置,以完成一次由Arduino Due向FPGA写数据;
若检测到所述输入引脚的时钟信号上升沿触发中断响应,则依次读取所述地址线信号引脚和所述数据线信号引脚的高低电平,以完成一次由Arduino Due从FPGA读数据。
8.如权利要求1所述的Arduino Due与FPGA的数据通信***,其特征在于,所述第二读写模块在检测到所述输出引脚触发响应,则完成一次由FPGA向Arduino Due写数据或由FPGA从Arduino Due读数据时,具体用于:
若检测到所述输出引脚对应的时钟信号上升沿响应,则根据传输的地址和数据对所述地址线引脚和数据线引脚的高低电平进行配置,以完成一次由FPGA向Arduino Due写数据;
若检测到所述输出引脚对应的时钟信号下降沿响应,则并行读取所述地址线引脚和数据线引脚的高低电平,以完成一次由FPGA从Arduino Due读数据。
9.如权利要求6或7所述Arduino Due与FPGA的数据通信***,其特征在于,所述Arduino Due与FPGA的数据通信***还用于:
在所述片选信号引脚的电平强度恢复为所述第一电平强度时,停止由Arduino Due向FPGA写数据或由Arduino Due从FPGA读数据。
10.如权利要求6或8所述的Arduino Due与FPGA的数据通信***,其特征在于,所述Arduino Due与FPGA的数据通信***还用于:
若检测到所述片选信号引脚的片选信号上升,则停止由FPGA向Arduino Due写数据或由FPGA向Arduino Due读数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811414447.8A CN109669900A (zh) | 2018-11-26 | 2018-11-26 | Arduino Due与FPGA的数据通信方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811414447.8A CN109669900A (zh) | 2018-11-26 | 2018-11-26 | Arduino Due与FPGA的数据通信方法及*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109669900A true CN109669900A (zh) | 2019-04-23 |
Family
ID=66142814
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811414447.8A Pending CN109669900A (zh) | 2018-11-26 | 2018-11-26 | Arduino Due与FPGA的数据通信方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109669900A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115736868A (zh) * | 2022-12-26 | 2023-03-07 | 佳木斯大学 | 一种智能可穿戴测血压装置及方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102023956A (zh) * | 2009-09-23 | 2011-04-20 | 上海摩波彼克半导体有限公司 | 集成电路芯片中串行外设从器件接口结构及数据读写方法 |
CN105512070A (zh) * | 2015-12-02 | 2016-04-20 | 中国电子科技集团公司第四十一研究所 | 一种基于串行总线的控制*** |
CN106528482A (zh) * | 2015-09-14 | 2017-03-22 | 中国科学院沈阳自动化研究所 | 一种基于微控制器和fpga的并行通信方法 |
CN106776408A (zh) * | 2016-11-21 | 2017-05-31 | 奕瑞影像科技(太仓)有限公司 | 一种arm处理器与fpga双向数据传输的实现方法 |
-
2018
- 2018-11-26 CN CN201811414447.8A patent/CN109669900A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102023956A (zh) * | 2009-09-23 | 2011-04-20 | 上海摩波彼克半导体有限公司 | 集成电路芯片中串行外设从器件接口结构及数据读写方法 |
CN106528482A (zh) * | 2015-09-14 | 2017-03-22 | 中国科学院沈阳自动化研究所 | 一种基于微控制器和fpga的并行通信方法 |
CN105512070A (zh) * | 2015-12-02 | 2016-04-20 | 中国电子科技集团公司第四十一研究所 | 一种基于串行总线的控制*** |
CN106776408A (zh) * | 2016-11-21 | 2017-05-31 | 奕瑞影像科技(太仓)有限公司 | 一种arm处理器与fpga双向数据传输的实现方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115736868A (zh) * | 2022-12-26 | 2023-03-07 | 佳木斯大学 | 一种智能可穿戴测血压装置及方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102023956B (zh) | 集成电路芯片中串行外设从器件接口结构及数据读写方法 | |
CN103744009B (zh) | 一种串行传输芯片测试方法、***及集成芯片 | |
CN106487372A (zh) | 包括单线接口的装置和具有该装置的数据处理*** | |
CN101694512A (zh) | 测试电路和片上*** | |
CN103714029A (zh) | 新型二线同步通信协议及应用 | |
CN105335548B (zh) | 一种用于ice的mcu仿真方法 | |
KR102358940B1 (ko) | 하이 레벨 합성에서의 시스템 아키텍처 추출법 | |
CN102968364A (zh) | 一种基于通用调试接口的SoC硬件调试器 | |
CN108052750A (zh) | 基于fpga的spi flash控制器及其设计方法 | |
US20230289308A1 (en) | Nand switch | |
CN104915303A (zh) | 基于PXIe总线的高速数字I/O*** | |
CN103714190B (zh) | 简单高效的在线仿真方法及接口电路 | |
CN109669900A (zh) | Arduino Due与FPGA的数据通信方法及*** | |
CN102855150A (zh) | 一种向待编程设备烧录信息的方法及*** | |
CN104102160A (zh) | 一种can总线信号收发解析工具 | |
CN104467909B (zh) | 一种基于fpga技术的可配置pci总线的收发电路 | |
CN203241515U (zh) | 一种基于pc的逻辑分析仪 | |
CN202018576U (zh) | 单片机通信模块 | |
CN106940645B (zh) | 一种可引导的fpga配置电路 | |
CN105224486A (zh) | 基于lbe总线的1553b总线协议模块 | |
CN103092800A (zh) | 一种数据转换实验平台 | |
CN214540759U (zh) | Fpga芯片及电子*** | |
CN208190652U (zh) | 一种全双工通用同步异步串行收发器的主板 | |
CN109684245A (zh) | 一种apb总线访问spi flash的方法及装置 | |
CN202257570U (zh) | 一种基于单片机的fpga配置*** |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190423 |