数据采集模块与数据传输模块的数据交互系统的制作方法

文档序号:18464407发布日期:2019-08-17 02:19阅读:481来源:国知局
数据采集模块与数据传输模块的数据交互系统的制作方法

本发明涉及数据采集领域,具体涉及数字信号的传输及采集模块与传输模块之间命令状态的交互。



背景技术:

随着数据采集技术的发展,逐渐向高精度高速方向发展,而数据采集板卡的数据传输方式会随着追求目标的不同而不同,具有成本高,开发复杂等特点。当追求高精度的同时,如何设计出可靠的数据传输方式是设计的关键,而数据采集板卡核心控制器通常采用fpga,因为其时钟稳定,速度快,抗干扰强,而arm具有串行运行特点,且编程容易,开发简单,因而用fpga+arm的组合来构成数据采集卡是很高效,而如何根据较高的采样率设计出一种交互系统是数据采集卡的关键。



技术实现要素:

本发明的目的是提供一种成本低廉,采样率较高的数据采集模块与数据传输模块的数据交互系统。

本发明是这样实现的:

数据采集模块与数据传输模块的数据交互系统,包括数据采集模块fpga、数据传输模块arm、存储芯片sram、开关芯片、接口芯片usb、串口通讯协议,spi通讯协议,所述存储芯片sram为n块,每块存储芯片由4线spi驱动,为n块存储芯片进行硬件编址,用一个字节分别表示为addr1,addr2,addr3……addrn,地址值为0代表该片存储芯片为空,为oxff代表该片存储芯片值为满,所述开关芯片为集成单刀双掷开关,具有多路开关,每路开关其输入端连接每块存储芯片,输出通道分别连接于fpga和arm,每路开关由fpga连接进行控制,fpga和arm分时连接多块存储芯片,fpga和arm通过2线串口连接,fpga传输控制状态信息,控制状态信息定义每次传送2个字节为一帧,第一个字节表示人为定义的地址信息,第二个字节表示该地址对应的值,而arm每接收一帧数据需要发送一帧应答信息,应答帧信息第一个字节值表示地址,第二个字节用一个固定值0xaa作为应答信号,fpga与arm每次发送、应答的地址信息的值应保持一致,

fpga采集信号并发送信息给arm的工作过程为以下步骤:

s1:fpga创建n个状态变量addr1,addr2,addr3……addrn作为各块sram的地址,初始化各块sram的地址,各块sram地址的值都初始化为0,代表该块sram的值为空,

s2:fpga数据采集模块读取各块sram地址对应的值,

s3:fpga检测各块存储芯片的地址值是否为0,若为零,执行s4:否则继续执行s3,

s4:fpga控制开关芯片连通fpga与sram,

s5:fpga进行数据采集,把采集的连续数字信号依次写入n块sram中,并改变该块sram状态变量值为满,即赋值为oxff,

s6:fpga断开与sram的连接,fpga控制开关芯片使sram与arm进行连接,

s7:fpga通过串口向arm依次发送各块sram地址值,发送2字节为一组,第一个字节为地址,第二个字节为值,用0xff表示该块芯片已满,

s8:若fpga在一定时间内没有收到arm的应答信息,继续执行s7步骤,否则执行s9,

s9:发送下块地址,重复s7,s8步骤。

s10:n块sram是否全部发送完成,若是执行s2,否则执行s7,

fpga接收arm数据的步骤为:

s1:fpga接收从arm发来的数据,解析数据,

s2:fpga向arm发送应答信息,

s3:arm发来的数据若为上位机状态操作,执行相应的操作后,fpga执行s1,若arm发来的数据为sram地址信息,执行s4,

s4:fpga将该sram存储信息保存于sram所维持的状态变量中,执行s1,

arm接收fpga的数据步骤为:

s1:arm进行各状态变量的初始化,

s2:arm检测串口信息,

s3:串口是否有来自于fpga的信息,若是执行s4,否则执行s2,

s4:通过串口接收来自fpga的数据,修改相应状态变量的值,

s5:向fpga发送应答信息,执行s2,

arm向fpga发送上位机控制信息来源于两部分,一部分是来自于上位机的控制信息,第二部分是由于传送各块sram内容后反馈给fpga的各块sram芯片的值,

来自于上位机控制信息的传送步骤为:

s1:arm初始化各上位机操作变量,

s2:arm检测上位机端口信息,

s3:是否有上位机控制信息,若是执行s4,否则执行s2,

s4:arm向fpga发送上位机控制信息,

s5:是否在一定时间内收到fpga的应答信息,若是执行s2,否则执行s4,

发送信息来自于sram的发送步骤为:

s1:arm读取各块sram状态变量值,

s2:n块sram状态值是否全为满,若是执行s3,否则执行s1,

s3:arm通过spi协议依次读取每块sram中的值,通过usb接口传送至上位机,并修改该块sram状态变量值为空

s4:arm通过串口向fpga发送该快sram状态信息,

s5:arm是否在一定时间内收到fpga的应答信息,若是执行s6,否则执行s4,

s6:n块sram是否全部发送完成,若是执行s1,否则执行s3。

所述存储芯片sram为n块,每块存储深度为1mb,通过n块存储芯片可完成nmb数据的存储。arm采用stm32,fpga采用ep4ce6f17c8,sram选择存储速度能达到采样速度的芯片23lc1024,而开关芯片选择集成单刀双掷开关adg734,adg734选通时间在几十纳秒内,usb接口芯片可选择ch372,sram芯片的spi的4个引脚连接到开关芯片的4个输入引脚in1到in4,fpga连接到sram的4个控制引脚con1到con4,同时fpga的4个spi引脚连接至开关芯片的引脚a1、b1、c1、d1,而arm的4个spi引脚连接至开关芯片的引脚a2、b2、c2、d2,开关芯片与fpga之间的con1-con4是选通控制信号,开关芯片的电压的高低使引脚in-in4、引脚a1、b1、c1、d1与引脚a2、b2、c2、d2分时连通,usb接口用于和上位机进行连接,初始状态下,fpga初始化控制引脚都输出高电平,使开关芯片的输入端和a1-d1连通,也就相当于fpga和sram直接相连,fpga进行数据采集过后,把数据写入到sram中,然后将控制端设置低电平,使sram和arm连通。然后fpga通过串口发送sram的状态信息,采用交互步骤,当arm收到数据后改变相应的状态标志,把数据送往上位机,并把状态信息反馈给fpga进行下一轮数据采集,当arm收到上位机的控制信息时,通过arm交互步骤把信息发送给fpga。

本发明提供了一种fpga与arm之间数据传输的系统,用于采样速度较高,解决数据缓存与传输的方案,具有结构简单,开发难度较低,而串口通讯方法可保证数据的正确性。

附图说明

图1为本发明的框图。

图2为fpga向arm发送信息的流程图。

图3为fpga接收arm信息的流程图。

图4为arm接收fpga信息的流程图。

图5和图6为arm发送fpga信息的流程图。

图7一块sram的详细电路原理图。

具体实施方式

数据采集模块与数据传输模块的数据交互系统,包括数据采集模块fpga、数据传输模块arm、存储芯片sram、开关芯片、接口芯片usb、串口通讯协议,spi通讯协议,arm采用stm32,fpga采用ep4ce6f17c8,sram选择存储速度能达到采样速度的芯片23lc1024,而开关芯片选择集成单刀双掷开关adg734,adg734选通时间在几十纳秒内,usb接口芯片可选择ch372,sram芯片的spi的4个引脚连接到开关芯片的4个输入引脚in1到in4,fpga连接到sram的4个控制引脚con1到con4,同时fpga的4个spi引脚连接至开关芯片的引脚a1、b1、c1、d1,而arm的4个spi引脚连接至开关芯片的引脚a2、b2、c2、d2,开关芯片与fpga之间的con1-con4是选通控制信号,开关芯片的电压的高低使引脚in-in4、引脚a1、b1、c1、d1与引脚a2、b2、c2、d2分时连通,usb接口用于和上位机进行连接,初始状态下,fpga初始化控制引脚都输出高电平,使开关芯片的输入端和a1-d1连通,也就相当于fpga和sram直接相连,fpga进行数据采集过后,把数据写入到sram中,然后将控制端设置低电平,使sram和arm连通。然后fpga通过串口发送sram的状态信息,采用交互步骤,当arm收到数据后改变相应的状态标志,把数据送往上位机,并把状态信息反馈给fpga进行下一轮数据采集,当arm收到上位机的控制信息时,通过arm交互步骤把信息发送给fpga。

所述存储芯片sram为n块,每块存储深度为1mb,通过n块存储芯片可完成nmb数据的存储,每块存储芯片由4线spi驱动,为n块存储芯片进行硬件编址,用一个字节分别表示为addr1,addr2,addr3……addrn,地址值为0代表该片存储芯片为空,为oxff代表该片存储芯片值为满,所述开关芯片为集成单刀双掷开关,具有多路开关,每路开关其输入端连接每块存储芯片,输出通道分别连接于fpga和arm,每路开关由fpga连接进行控制,fpga和arm分时连接多块存储芯片,fpga和arm通过2线串口连接,fpga传输控制状态信息,控制状态信息定义每次传送2个字节为一帧,第一个字节表示人为定义的地址信息,第二个字节表示该地址对应的值,而arm每接收一帧数据需要发送一帧应答信息,应答帧信息第一个字节值表示地址,第二个字节用一个固定值0xaa作为应答信号,fpga与arm每次发送、应答的地址信息的值应保持一致,

fpga采集信号并发送信息给arm的工作过程为以下步骤:

s1:fpga创建n个状态变量addr1,addr2,addr3……addrn作为各块sram的地址,初始化各块sram的地址,各块sram地址的值都初始化为0,代表该块sram的值为空,

s2:fpga数据采集模块读取各块sram地址对应的值,

s3:fpga检测各块存储芯片的地址值是否为0,若为零,执行s4:否则继续执行s3,

s4:fpga控制开关芯片连通fpga与sram,

s5:fpga进行数据采集,把采集的连续数字信号依次写入n块sram中,并改变该块sram状态变量值为满,即赋值为oxff,

s6:fpga断开与sram的连接,fpga控制开关芯片使sram与arm进行连接,

s7:fpga通过串口向arm依次发送各块sram地址值,发送2字节为一组,第一个字节为地址,第二个字节为值,用0xff表示该块芯片已满,

s8:若fpga在一定时间内没有收到arm的应答信息,继续执行s7步骤,否则执行s9,

s9:发送下块地址,重复s7,s8步骤。

s10:n块sram是否全部发送完成,若是执行s2,否则执行s7,

fpga接收arm数据的步骤为:

s1:fpga接收从arm发来的数据,解析数据,

s2:fpga向arm发送应答信息,

s3:arm发来的数据若为上位机状态操作,执行相应的操作后,fpga执行s1,若arm发来的数据为sram地址信息,执行s4,

s4:fpga将该sram存储信息保存于sram所维持的状态变量中,执行s1,

arm接收fpga的数据步骤为:

s1:arm进行各状态变量的初始化,

s2:arm检测串口信息,

s3:串口是否有来自于fpga的信息,若是执行s4,否则执行s2,

s4:通过串口接收来自fpga的数据,修改相应状态变量的值,

s5:向fpga发送应答信息,执行s2,

arm向fpga发送上位机控制信息来源于两部分,一部分是来自于上位机的控制信息,第二部分是由于传送各块sram内容后反馈给fpga的各块sram芯片的值,

来自于上位机控制信息的传送步骤为:

s1:arm初始化各上位机操作变量,

s2:arm检测上位机端口信息,

s3:是否有上位机控制信息,若是执行s4,否则执行s2,

s4:arm向fpga发送上位机控制信息,

s5:是否在一定时间内收到fpga的应答信息,若是执行s2,否则执行s4,

发送信息来自于sram的发送步骤为:

s1:arm读取各块sram状态变量值,

s2:n块sram状态值是否全为满,若是执行s3,否则执行s1,

s3:arm通过spi协议依次读取每块sram中的值,通过usb接口传送至上位机,并修改该块sram状态变量值为空

s4:arm通过串口向fpga发送该快sram状态信息,

s5:arm是否在一定时间内收到fpga的应答信息,若是执行s6,否则执行s4,

s6:n块sram是否全部发送完成,若是执行s1,否则执行s3。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1