当前位置:首页 > 工业控制 > 工业控制
[导读]摘要:文章以嵌入式和数据采集技术为基础,研究设计并实现了基于ARM+FPGA体系架构面向高速实时数据采集应用的一种实用新型智能控制器。本文阐述了主处理器ARM最小系统、协处理器FPGA最小系统和ARM与FPGA通信接口等硬

摘要:文章以嵌入式和数据采集技术为基础,研究设计并实现了基于ARM+FPGA体系架构面向高速实时数据采集应用的一种实用新型智能控制器。本文阐述了主处理器ARM最小系统、协处理器FPGA最小系统和ARM与FPGA通信接口等硬件系统技术的实现,以及Linux FPGA字符设备驱动程序开发、协处理器FPGA控制程序和主处理器ARM应用程序设计。智能控制器运用FPGA并行运算处理结构的优势,控制ADC进行高速数据采集。FPGA还可配置成软核处理器-Nios II嵌入式处理器,与ARM构成双核处理器系统。智能控制器通过ARM实现对FPGA的管理控制、实时数据采集和丰富外围接口的通信。

0 引言

自上世纪七十年代初以来,微处理器的诞生促进了计算机信息技术的迅速发展和应用。数据采集与处理是集智能传感器系统、信号采集调理与转换、计算机信息等技术的综合,是获取信息的重要手段。随着微处理器的普及,数据采集技术在工业领域中发挥着越来越重要的作用。

传统的数据采集设备控制器主要是以单片机和PC机为主。前者处理数据运算能力有限、实时性较差;后者成本较高、灵活性差。ARM微处理器具有体积小、成本低,功能丰富等优点。FPGA并行运算结构,I/O资源丰富,在高速实时数据处理方面优势明显。采用ARM+FPGA的系统架构,可以综合两者优势,实现数据高速实时采集与处理。

ARM与FPGA工作方式为主从模式。主处理器ARM选用美国ATMEL公司的AT91SAM9260,主频工作在180MHz时可达200MIPS的处理性能。协处理

器选用的FPGA是Altera Cyclone系列EP1C6Q240I8NFPGA。FPGA工作时钟是50MHZ,可以通过设置内部锁相环使工作时钟倍频。

1 系统总体方案

智能控制器主要由ADC数据采集电路、FPGA最小系统、ARM最小系统三个部分构成。ADC选用单电源供电的14位的AD9240,采样率可达10 MSPS。它采用高速、低成本的CMOS工艺,分辨率和速度均达到现有混合方案的水平,而功耗与成本却低得多。协处理器选用ALTERA公司的EP1C6O240I8N芯片,通过外接两片32KB SRAM存储器、4Mbit串行配置芯片EPCS4、标准AS编程接口、JTAG调试接口构成FPGA最小系统。ARM最小系统由AT91SAM9260微处理器、运行和存储程序的1片64MBytes的SDRAM和1片256 MBytes的NandFlash、1个RS232接口和1个10/100-Base-T以太网接口构成。

系统工作原理是:首先将信号采集调理电路过来的两路信号分别送入两个ADC同步采样,ADC把模拟信号转化为14bit精度的数字信号;然后FPGA对两个通道的ADC转换后的数字信号进行预处理,采用多点采样求平均方法滤除50Hz工频干扰;最后把两个ADC采样数据存储到两片SRAM缓存中。ARM与FPGA通信采用数据总线方式,通过在Linux操作系统下开发字符型FPGA设备驱动程序,然后编译或者加载到Linux内核中,ARM可以在应用层程序读取FPGA预处理后的数据,此时FPGA内部直接把ARM的总线连接到SRAM的总线上来读取FPGA预处理后的数据。ARM可以通过以太网和RS232接口与上位机通信。

2 ARM和FPGA通信接口设计

主处理器ARM所在的核心板负责整个系统的控制与管理。智能控制器与上位机的通信接口串口、以太网、CAN由此板引出。核心板与扩展板协处理器FPGA的通信采用总线方式。这种通信方式的本质是FPGA作为ARM的外设SRAM,ARM访问存储器,进行读和写操作。连接如图2所示。

ARM与FPGA通过总线相连,ARM的数据线D0:D15、地址线A1:A14和片选NCS4、NCS5与FPGA相连,另外2片SRAM直接与FPGA相连。NCS4控制读写FPGA内部状态寄存器和命令寄存器。NCS5控制FPGA读写两片SRAM中存放的数据。所有数据信息都通过DATA[0:15]双向数据总线传输。

NCS4片选有效对应ARM的地址映射为0X5000 0000-0X5000 8000,NCS5片选有效地址对应ARM的地址映射为0x60000000-0x6000 8000,FPGA此时实质上相当于ARM內部存储器。在地址范围内任意选取地址作为ARM与FPGA通信的FPGA内部寄存器地址。这些寄存器有ARM向FPGA内部写寄存器,也有ARM从FPGA内部读寄存器。

主处理器ARM要想从0X6000 0000-0x6000 8000地址范围内直接读出两片SRAM中存储的ADC采样预处理后的的数据,需要有协处理器FPGA的协助配合。

这样就明确了协处理器FPGA在与主处理器ARM通信时需要完成的任务:1)解析主处理器ARM写FPGA寄存器的命令,执行相应操作;2)将执行操作后的一些状态信息写入相应的FPGA内部寄存器供主处理器查询操作结果:3)协助配合主处理器ARM读取两片SRAM中存储的ADC采集预处理后的数据。

3 系统软件设计

智能控制器软件包括Linux FPGA字符型设备驱动程序、主处理器ARM应用程序、FPGA数据釆集及预处理存储程序。软件系统结构框图如图3所示。

3.1 FPGA设备驱动程序

Linux设备驱动被分为三类:字符设备、块设备和网络设备。字符设备是以字符为单位输入输出数据的设备。FPGA设备驱动程序为字符型设备驱动程序,其基本框架为:1)定义一个结构体static structfile operations变量,其內定义一些设备的打开、关闭、读、写、控制函数;2)在结构体外分别实现结构体中定义的这些函数;3)向内核中注册或删除驱动模块。Linux内核中一个字符设备用cdev数据结构来描述和管理设备文件。智能控制器的协处理器FPGA用作主处理器ARM外部静态存储器SRAM。因此,主处理器ARM可以通过静态存储控制器(SMC)产生信号控制外部存储设备或者外围接口设备来进行读写操作。FPGA字符型设备驱动程序能够完成控制FPGA模块,完成数据采集,最为关键的是初始化FPGA模块,配置主处理器ARM的SMC来实现FPGA总线驱动。可参照ARM静态存储控制器读、写时序。

由上图可知主要是配置静态存储控制器SMC_SETUP、SMC_PULSE、SMC_CYCLE、SMC_MODE四个参数。配置是通过函数static inline void at91_sys write(unsigned intreg_effset,unsigned long value)实现,详细配置如下:

at91_sys_write(AT91_SMC_SETUP(5),AT91_SMC_NWESETUP(0x02)|AT91_SMC_NCS_WRSETUP_(0x00)|AT91_SMC_NRDSETUP_(0x00)|AT91_SMC

_NCS_RDSETUP_(0X00));

at91_sys_write(AT91_SMC_PULSE(5),AT91_SMC_NWEPULSE_(0x06)|AT91_SMC_NCS_WRPULSE(0x0A)|AT91_SMC_NRDPULSE(0x0A)|AT91_SMC_ NCS_RDPULSE_(0x0A));

at91_sys_write(AT91_SMC_CYCLE(5),AT91_SMC_NWECYCLE_(0X0A)|AT91_SMC_NRDCYCLE_(0X0A));

at91_sys_write(AT91_SMC_MODE(5),AT91_SMC_READMODE|AT91_SMC_WRITEMODE|AT91_SMC_EXNWMODE_DISABLE|AT91_SMC_DBW_16|AT91_ SMC_TDF_(1));

申请I/O内存:

request_mem_region((unsigned long)sram_buf_1,SRAM_BUFSIZE,“fpga_arm”);

request_mem_region((unsigned long)sram_buf_2,SRAM_BUFSIZE,“fpga_arm”);

FPGA寄存器地址映射:

sram_buf_1=(unsigned char*)ioremap(0x60000000,SRAM_BUFSIZE);

sram_buf_2=(unsigned char*)ioremap(0x60004000,SRAM_BUFSIZE);

以上为FPGA字符设备驱动程序初始化最为关键的配置。剩下的是在file operation结构下编写驱动函数,结构中的每个成员除了owner必须指向驱动中的函数。其中最为重要的内核态函数是staticssize_t fpga_arm_read(struct file*filp,char_user*buf,size_tsize,loff_ t*ppos),它对应应用层的函数read。驱动程序从FPGA读取数据使用readw函数,完成从内存映射的I/O空间读取16位数据。copy_to_user(buf, (void*)(read_mem),size)复制数据从内核空间到用户空间。FPGA字符设备驱动程序基本实现了控制和管理FPGA读取状态信息和两路ADC采集的数据。

3.2 协处理器FPGA控制程序

协处理器FPGA控制程序分为三个部分:控制ADC数据采集模块、控制读写SRAM模块和FPGA与ARM总线通信模块。其中FPGA与ARM总线通信模块位于顶层模块,控制ADC数据采集模块、控制读写SRAM模块的是底层模块。顶层模块主要是例化底层模块,然后进行数字信号综合处理。

控制ADC数据采集模块,控制并行ADC比较简单,正常工作需要时钟驱动ADC CLK,在编写ADC采样程序时最为关键的是注意在ADC CLK上升沿读取采集的数据才是稳定可靠的。FPGA会对两路ADC采集的数据进行多点求平均的预处理,主要是滤除50Hz的工频干扰,然后写入SRAM存储。

控制读写SRAM模块,FPGA写SRAM与读SRAM操作是非常相似的,SRAM型号是CY7C1021DV33,工作时片选信号CE要拉低。读操作时注意OE信号先拉低再拉高,在其上升沿,读取数据。写操作时注意WE信号先拉低再拉高,在其上升沿,写入数据。FPGA读SRAM时需要关注sram_cs(片选)、sram_oe(读控制)、sram_addr(地址线)和sram1_data(16bit数据线),将sram_cs、sram_oe同时拉低,同时给地址线sram_addr赋值,一个时钟后数据端口sram_data的数据就有效了。

FPGA与ARM通信模块较为复杂,首先,是ARM向FPGA发控制命令。ARM写FPGA内部寄存器时比较重要的信号有:NCS4(片选)、at9260_wr(写信号)、at9260_addr(地址线)、at9260_data(数据线),当NCS4=0&&at9260_wr=0时,意味着ARM9260正在写FPGA寄存器,具体写哪个寄存器由地址信号at9260_addr决定,这样可以将at9260_data写入到相应地址处对应的寄存器。

其次,ARM读FPGA内部状态寄存器,与ARM写FPGA寄存器是非常类似的,当NCS4=0 &&at9260_rd=0时,意味着ARM9260正在读FPGA寄存器,这时我们将寄存器的值赋给at9260_data即可,at9260_data是双向IO,在不读时需要置为高阻态。

最后,ARM获取两片SRAM存储的预处理后的数据,ARM的控制信号是NCS5、at9260_rd、at9260_addr、A14,FPGA将这些信号转换为FPGA读SRAM的信号,然后将FPGA读到的数据传给ARM,这里FPGA起到数据中转的作用。

3.3 主处理器ARM应用程序

主处理器ARM的应用程序是整个软件系统的控制核心。应用程序由两个线程构成:main主线程和data_recv线程。main主线程主要是创建线程,向FPGA发送控制命令;data_recv线程接收FPGA状态信息和FPGA预处理后ADC采集的数据。应用程序是通过文件描述符fd_fpga来控制和管理协处理器FPGA设备。因为在主处理器ARM移植了操作系统Linux,内核版本为Kernel 2.6.30,所以应用程序的开发是在Linux操作系统Ubuntul2.04 LTS版本下,使用开发软件是Eclipse C/C++。设置Eclipse使用交叉编译器arm-none-linux-gnueabi-gcc和Release配置生成二进制可执行文件。然后可以通过Tftp服务下载到目标板上。

4 结束语

本文论述了基于ARM+FPGA体系架构的高速实时数据采集智能控制器的设计与实现。其结合ARM和FPGA两者的优势,具有更好的运算处理性能,丰富的外围标准接口。系统采样率达10MSPS,满足高速实时性的要求。具有很高的应用价值。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭