打印
[Atmel]

基于AT91SAM9G10(AT91SAM9261)与FPGA的高精度数据采集系统

[复制链接]
830|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sgh2|  楼主 | 2015-6-30 10:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本数据采集系统是基于ARM9和FPGA通信实现的采集系统。系统由12bit高精度的AD574作为数据采样输入。采样触发电平可以远程设置。数据通过AD采样,然后存储到与FPGA相连接的SDRAM中。在采样完成后,将SDRAM里面的数据保存到通fpga接口的128M的nandflash中去。同事保存的数据可以通过USB控制芯片FT232将nandflash里面的数据读取出来。在fpga  EP2C20中,内建一个64K 16bit宽的FIFO,通过控制器将SDRAM里面的数据,压进FIFO。FIFO的外部接口通ARM9  AT91SAM9G10接口。通过EBI接口中的SMC控制器,控制对FPGA中的SRAM进行大量数据的读写。本系统要求一次性能读出8M的数据。系统设计保证能读取32M数据。读取到ARM中的数据会保存在SDRAM中。同时会将数据通过USB  WIFI传输到远端的PC机上去。
图 <一> 数据采集系统正面图
图 <二>数据采集系统背面图
其中本系统的重点应该是,FPGA和ARM9通信过程中的驱动设计。硬件设计过程中考虑的是 NWR 、NRD、  NCS0、AD2~AD9、D0~D15。在驱动设计过程中,肯能会遇到总线挂起的问题。遇到这类型的问题,首先考虑的是上电顺序问题。如果特别是完成了  FPGA中代码设计后,讲FPGA代码下载到ram中,需要是上电下载。这个过程可能导致的,总线挂起。我首先想到的解决问题就是上单顺序的问题。我割掉了板子上面的核心板的供电。结果问题还是没有解决。最后发现两个问题,第一是总线总的数据总线设计问题。对于数据总线应该是可控的模式,在写有效的过程才能输出电平。平时应该为三态。解决完这个问题后,后面还是存在。最后发现NCS0 必须应用。用于保证总线时序正确。
大量数据的读取,本系统设计由于是数据采集系统。所以存在大量数据读写的问题。本来考虑的是连续读写的,结果发现地址偏移和系统偏移都麻烦。最后决定设计过程中改为FIFO做数据缓冲。本思路应用起来相当方便,类似在系统中建立了一个数据管道。sdram能存储多达的数据,这边就能读出多达的数据。使用非常方便。
将大量数据写到ARM9的linux系统的动态内存中,linux内核使用的是linux-2.6.30,然后u-boot使用的是 u-boot1.3.4文件系统使用的是yaffs2。将驱动和应用写进去,通过动态内存分配的方式,分配8M大小的空间,将数据读写出来。最后通过  USBwifi传送出去。本系统用于多点远程数高精度数据采集。AD可以换成16bit。


评分
参与人数 1威望 +10 收起 理由
ddllxxrr + 10 赞一个!

相关帖子

沙发
ddllxxrr| | 2015-6-30 12:17 | 只看该作者
板子真不错

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

101

主题

314

帖子

4

粉丝