基于ARM+FPGA的运动控制器设计与实现
扫描二维码
随时随地手机看文章
本文以微控制器AT91RM9200 和EP1C6Q240C8 为核心,对工业CT 机的运动控制器进行了设计,从硬件和软件两个方面对控制器的关键技术进行研究与设计,应用单神经元自适应PID 控制算法进行仿真,并给出系统实际运行结果。
1
工业CT 机运动控制系统往往需要对多个轴的运动进行精确、实时控制,在以往的系统中多采用工控机+多块板卡的结构进行运动控制器的设计。随着工业CT 机整体功能日趋复杂,整体系统对运动控制系统的体积、成本、功耗等方面的要求越来越苛刻。另一方面,运动控制系统控制的轴数越来越多、控制精度要求越来越高、控制对象的实时性要求越来越强。
现有的工控机+多块板卡组成的控制系统逐渐呈现出运动控制方面的劣势。ARM+FPGA 的硬件方案,将工控机从现有的运动控制系统中解放出来,取而代之的是体积小、功耗低、功能强的ARM 处理器。强大的嵌入式Linux 操作系统保证ARM 处理器的功能可以发挥到最佳。
2 硬件系统关键技术设计与实现
本系统采用ARM+FPGA的结构进行运动控制系统的设计,与目前应用中常见的IPC(IndustrialPersonal Computer)+板卡的运动控制系统相比具有以下优点[1,2]:
(1) 采用FPGA 完成运动控制细节任务,实现硬件软化的设计思想。即具有软件可编程、可重构的特性,又有硬件高性能、高可靠、高一致性的优点。
(2) 采用嵌入式应用方案与现有IPC+板卡结构相比无论从体积、成本、还是性能方面相比都具有较大的优越性。
(3) FPGA 具有高速并行的执行能力,系统的实时性能得到较大的提高。
(4) 将ARM 中操作底层硬件的驱动程序进行打包,方便应用程序调用,可以较快完成用户的二次开发。
2.1 硬件系统总体设计
工业CT 运动控制系统结构如图1 所示。该系统以Atmel 公司一款ARM9 核处理器AT91RM9200和Altera 公司的Cyclone 系列芯片EP1C6Q240C8 为核心。ARM9 作为主控芯片负责整个系统的控制,通过AHB[3]总线协调与FPGA 之间的数据交换,并将接收到的数据通过网络发送到工业控制计算机进行图像的处理与重建。FPGA 则负责接收数据采集系统的串行数据,并把其转化成并行数据存入FPGA 的RAM 中,同时对ARM 发出中断请求响应,通知ARM9 读取。AT91RM9200、SDRAM、FLASH 以及电源等基本外围电路构成嵌入式Linux 运行的最小系统,而FPGA 最小系统则由EPlC6Q240C8、时钟电路、配置接口等组成。然后两者通过高速AHB 总线进行连接,实现数据的快速传输。
图1 工业CT 运动控制系统结构图
2.2 ARM 与FPGA 接口设计
在系统中ARM 作为通用处理器,用来实现系统任务的触发、系统命令的发送和任务的调度等功能。
FPGA 作为ARM 的外设,用来对ARM 经地址数据总线传送过来的命令进行解析,并最终按照ARM 命令的要求,完成脉冲发送和脉冲计数的功能及具体的运动控制细节任务。
两块FPGA通过各自的地址/数据总线与ARM的地址/数据总线连接起来,双方可以进行双向的数据交换。
ARM 与FPGA 通过地址选通信号线连接起来,两块FPGA 各自作为ARM 的外设芯片,运行在独立的地址空间,地址选通信号结合地址总线实现ARM对 FPGA 内部寄存器的寻址。
3 软件系统关键技术设计与实现
系统软件总体采用分层思想进行设计。整个系统软件主要由宿主机操作系统、宿主机开发软件、目标板操作系统、目标板底层硬件驱动程序、目标板应用程序、HDL 硬件描述语言组成。宿主机操作系统选择REDHAT-LINUX9.0 版本;宿主机开发软件主要由一些交叉编译环境、汇编和链接工具组成;目标板操作系统选用ARM-LINUX 操作系统;目标板应用程序使用C 代码进行编写;HDL 语言用于对FPGA 的功能进行描述。
软件系统分层示意图如图2 所示。在宿主机中,交叉编译将要在目标板平台上运行的应用程序代码和底层硬件驱动程序代码展开,然后通过宿主机与目标板之间的硬件接口传递到目标板中,目标板通过底层硬件驱动程序控制FPGA 模块中配置的各功能寄存器,从而完成具体的控制任务。本文重点介绍FPGA内部功能模块的设计及驱动程序接口设计。
图2 软件系统分层示意图