摘要:设计了基于FPGA 与ARM 芯片的数据采集系统,FPGA 负责控制A/D 转换器,保证了采样精度与处理速度,ARM 负责逻辑控制及与上位机交互的实现,并将采集到的数据通过USB 高速上传至主机进行实时处理。对模拟数据采集的测试结果达到了较高的采样精度和速度,验证了整个系统的高速性和可行性。
随着计算机技术与现代工业系统的发展,工业领域中对数据采集的精度和数据处理的实时性提出了更加苛刻的要求,以保证后续更加复杂的控制,而传统的数据采集系统一般采用A/D 芯片与主控芯片搭配的方法,处理速度慢、功能单一,当被测对象复杂且数据量较大时,很难满足对数据高精度的采样,而通过RS232 串口与上位机通信则更无法保证数据处理的实时性。针对这一实际情况,设计了基于FPGA 与ARM 搭配的数据采集系统,FPGA 负责保证数据采样的高精度和高速度,而ARM 作为主控芯片,嵌入Linux 内核,负责控制整个系统,并将数据通过USB高速上传到上位机中,借助上位机的强大运算能力,保证数据处理的实时性,同时根据不同的被测信号只需选择相应的数据采集卡,即可方便简单地组成一个用户自定义的数据采集系统,具备良好的通用性。
1 系统总体设计
数据采集系统的总体结构如图1 所示,主要由输入调理电路、A/D 转换电路、FPGA 和ARM控制电路组成。被采集的模拟信号经由调理电路输入到A/D 转换芯片,进行模数转换,在FPGA的控制下送入到FPGA 内嵌的FIFO 存储模块中并通知ARM 立即取走数据,最后通过USB 交由上位机进行实时处理。
2 FPGA 系统设计
FPGA 具有高集成度、高可靠性、低功耗及时序控制精确等优点,选用Xilinx Spartan3 系列的XC3S200 负责控制A/D 转换及数据的缓存,可以简化电路设计,缩短开发周期。ARM 选用Atmel公司的SAM9G45 芯片,工作频率达400MHz,能够保证实时高速地控制采集系统和上传数据。
2. 1 FPGA 与ADC 的连接与控制
数据采集芯片选用ADI 公司的AD7656,是一款六通道16 位逐次逼近型,低功耗,每路通道最大采集速度为250kS /s 的A/D 转换芯片,可实现较高的采样精度和速率。
FPGA 与AD7656 的连接如图2 所示,AD7656 的6 个采样通道被分为3 组,由CONV STA、CONV STB 和CONV STC 3 个信号启动对应的双通道同步采样,将该3 个引脚相连即可实现6个输入通道的同步采样,同时提供并行和串行接口两种模式,为了提高数据吞吐率,采用16 位( /B 引脚置低) 的并行接口( SER/引脚置低) 模式,以便与FPGA 的16 位数据线直接相连传输数据。
FPGA 中的A/D 控制模块通过将CONV ST引脚电平拉高,启动相应通道的采样,采样过程中BUSY 引脚为高电平,表示正在进行采样; 当采样完毕后,AD7656 自动将BUSY 置低; FPGA 中的A/D 控制模块检测到BUSY 信号为低后将CS 和RD 信号置低,读取并保存数据到FPGA 内部的FIFO 中。FPGA 对AD7656 的控制过程仿真如图3 所示。
2. 2 FPGA 与ARM 的连接
FPGA 与ARM 的连接如图4 所示,在与ARM的通信中,由于是跨时钟域通信,为了避免亚稳态、采样丢失及潜在逻辑错误等情况的发生,采用脉冲边缘检测法,对ARM 传来的控制信号首先进行内部时钟同步再做后续处理。
FPGA 收到ARM 的RST 命令后控制AD 芯片开始采样,检测到BUSY 引脚为低后FPGA 将数据取走并缓存到FIFO,然后改变INT 引脚上的电平,向ARM 产生一次中断; ARM 每判定一次中断,通过CLRINT 给予FPGA 反馈,FPGA 在CLRINT 有效期内将不再产生中断; ARM 使能NCS 和NRD 信号通过数据线D[15: 0]将数据完全取走后,清除CLRINT 信号,以使FPGA 可以继续向ARM 产生中断。
FPGA 中断控制模块的状态转移过程如图5所示,当BUSY 信号为低并且已将数据缓存到FIFO 中后, INT 引脚置位产生中断,同时启动一定时器。若在定时期间CLRINT 有效,则认为ARM 正常响应了中断; 若直到定时结束,CLRINT一直无效,则认为ARM 未能检测到中断或不能正常响应,FPGA 等待一小段时间后再次产生中断。
3 ARM 系统设计
ARM 芯片嵌入Linux 3. 0. 4 版本的内核,通过开发设备驱动程序,能够稳定高速地处理FPGA数据并通过USB 实时上传到主机中。
3. 1 FPGA 驱动程序
FPGA 驱动主要负责控制并读取FPGA 数据,并将数据缓存到KFIFO 等结构中工作:
a. 管理RST 信号线,控制FPGA 进行采样。
b. 根据硬件电路调用为FPGA 申请指定区域内存,由于芯片带有MMU 单元,不能直接访问申请的物理内存,需要将申请到的内存区重新映射到虚拟地址。当对该内存区进行读访问时,NCS 与NRD 信号会由内核负责置为低有效。
c. 为INT 信号申请中断线,注册中断处理例程。中断发生后,将CLRINT 置高有效,从映射的虚拟地址读取数据并保存在KFIFO 中。
d. 重新使能中断线,等待下次中断。
KFIFO 是由Linux 内核提供的先进先出队列,能够快速稳定地缓存数据。FPGA 驱动程序将KFIFO 符号导出,以使USB 驱动程序也可以直接访问然后将其上传到主机中。
3. 2 USB 驱动程序
Linux 内核为USB 设备侧驱动提供了USB Gadget 框架,提供了良好的上层接口,隐藏了底层USB 规范的具体实现。设备侧的USB 驱动程序需要提供一个读端点0x01,读取上位机的控制信息; 写端点0x82,向上位机报告当前采集系统的状态; 写端点0x83 将采集数据上传到上位机中。主要实现过程如下:
a. 配置3 个USB 端点描述符( 一个读端点0x01,两个写端点0x82 和0x83) 。
b. 从0x01 端点接收到上位机的采样命令后,进行初始化工作,通知FPGA 开始采样。
c. 为request 结构分配内存,将KFIFO 缓冲区的采样数据拷贝到request 包中。request 结构类似于Windows 下的URB( USB Request Block)请求包。
d. 向0x83 端点提交写请求,将request 包中的数据通过USB 上传到主机中。
e. 如果采样过程中发生错误,如缓冲区溢出等情况,通过0x82 端口向上位机汇报,请求重启。
上位机USB 驱动程序使用Driver Studio 工具,以Visual Studio 2010 作为辅助开发环境。上位机只需与数据采集设备配置同样的USB 端点,通过0x01 端口向ARM 发送控制命令,从0x82 端口读取采集系统的状态信息,将从0x83 端口接收到的数据缓存后待上层数据处理程序读取。
4 系统总体流程与试验
采集系统的工作流程如图6 所示,系统上电后ARM 引导Linux 启动,初始化内部寄存器及板卡上的RAM,向内核装载USB 驱动及FPGA 驱动,初始化FPGA 和配置AD7656 工作模式。初始化完毕并接收到主机采样命令后,A/D 开始进行采样,系统进入等待数据状态; 采样结束后拉低BUSY 引脚触发FPGA 通知ARM 来读取数据。ARM将FPGA传来的数据及系统状态信息通过USB 迅速上传到上位机中,上位机根据具体应用进行数据处理等操作,完成一次采集工作。
采集系统在实际试验中,AD7656 每次完成6通道的采集转换需3μs,FPGA 实际工作时钟频率为40MHz,ARM 的主时钟频率( MCK ) 为133MHz,因此数据从FPGA 上传到主机所需时间小于1μs,即4μs 内就可以完成一次采样,满足系统每周期采样256 次的需求。对50Hz 交流电信号每个周期采样128 个点,采样结果如图7 所示。
5 结束语
采用FPGA + ARM 芯片组合的数据采集系统,FPGA 负责采样控制,ARM 负责整个系统的逻辑控制,通过USB 总线上传到上位机处理。整个系统采样精度高,数据传送快,能够满足现代工业系统中对多通路、高精度、高速度、实时处理和易操控的复杂需求,同时借助Linux 内核,针对不同领域不同应用,可轻松进行二次开发,将有广阔的应用前景。
上一篇:基于arm的嵌入式棒料剪切生产线数控系统
下一篇:lpc5411x系列mcu的单核结构与应用
推荐阅读
史海拾趣
EVER-WAY公司成立于XX世纪初,当时电子行业正处于蓬勃发展的阶段。创始人李明看准了市场机遇,决定创立一家专注于电子元器件制造的公司。他带领一支由几名工程师组成的小团队,开始了艰苦的创业之路。初期,公司面临着资金短缺、技术落后和市场竞争激烈等多重挑战。然而,李明和他的团队凭借坚定的信念和不懈的努力,逐渐在市场中站稳脚跟。他们不断优化产品性能,提高生产效率,同时积极拓展国内外市场,逐步扩大了公司的知名度和影响力。
Dialog公司在高能效系统电源管理领域积累了丰富的经验和知识,并形成了包括音频、短距离无线、AC/DC电源转换和VoIP技术在内的技术积累。这些技术积累为Dialog公司提供了强大的研发实力,使其能够迅速开发出面向各类个人便携式应用的集成电路(IC)。这些设备包括智能手机、平板电脑、超极本、数字无绳电话等。
随着物联网技术的快速发展,安信可也迎来了技术升级的关键时刻。2014年9月,安信可成功引入ESP8266 SoC方案,这一技术升级为公司带来了更多的市场机会。到了2016年5月,安信可更是成功转型为一站式物联网模组解决方案提供商,为客户提供从模组到应用的全方位服务。
在电子行业的激烈竞争中,Chiefdom Electronic Co Ltd凭借一项革命性的芯片技术,成功打破了市场的僵局。公司投入巨资研发,历经数年努力,终于推出了具有高效能、低功耗特点的芯片产品。这一技术的推出,不仅为公司在智能手机、平板电脑等市场赢得了大量客户,还使得公司在全球芯片市场占据了重要地位。随着技术的不断优化和升级,Chiefdom Electronic Co Ltd逐渐成为了行业内的技术领军者。
安美通非常重视企业文化建设和团队建设。公司倡导创新、务实、合作的企业文化,为员工提供了一个宽松、自由、充满激情的工作环境。同时,公司还积极开展各类培训活动,提升员工的专业素养和综合能力。这些措施使得安美通的团队更加团结、高效,为公司的持续发展提供了有力的保障。
这五个故事虽然只是安美通发展过程中的一部分,但它们充分展示了安美通在电子行业中不断努力、创新、拓展的精神和成果。未来,安美通将继续秉承这种精神,不断推动公司的发展和进步。
U-Boot1.1.3移植问题 ,ping 的时候 packet too big 平台LPC2210(ZLG公司的MagicARM2200) 网卡芯片:RTL8019 移植后ping上位机,得到packet too big的信息 望有朋友能够帮忙… 查看全部问答∨ |
|
taskspawn 分配一个任务时,参数中有优先级,堆栈大小,我要怎么来写啊?刚刚搞这个东西。 taskspawn 分配一个任务时,参数中有优先级,堆栈大小,我要怎么来写啊?刚刚搞这个东西。 我看例子中优先级大都是90,我要是创建多个任务时,都写90行吗? 还有堆栈大小我要根据什么来设置啊? 谢谢了… 查看全部问答∨ |
现在遇到个问题, 怀疑两边的时钟有问题, Cpu 晶振是12M ,zlg7290 接的 8M 的 晶振 /* 系统设置, Fosc、Fcclk、Fcco、Fpclk必须定义*/ #define Fosc 1200000 ...… 查看全部问答∨ |
大家好 ! 我是学习单片机的新手 请问下 单片机的CPU芯片 如(AT89S52)它要进行ISP软件下载 而我们又要 进行编写自己的程序 那个ISP软件和自己编的程序 之间是什么关系呢? 不是自己编写程序直接写 ...… 查看全部问答∨ |
|
MSP430 UCSI A0 的 UART 和 B0 的 IIC 是共用同一个中断吗? MSP430 UCSI A0 的 UART 和 B0 的 IIC 是共用同一个中断吗?会不会有冲突呢?… 查看全部问答∨ |
1.程序能进入中断,执行中断的语句,但感觉不能循环, 2.上升沿和下降沿捕获的时间TACCR1可能有问题,但我找不出问题的所在, 3.特别是在捕获存放时间的TACCR1有很大的问题,, 上述问题希望大神们能帮我解决我在这里先谢谢大伙了,,以下是我的 ...… 查看全部问答∨ |