软硬件协同设计(Hardware/Software Co-deaign)是在20世纪90年代兴起的跨领域交叉学科。随着超大规模集成电路 制造工艺的进步,单个芯片所能提供的晶体管数量已经超过了大多数电子 系统的需求,专用集成电路(Applicati on Specific Integrated Circuit,ASIC)设计逐渐进入了片上系统(System on Chip,SoC)设计的时代。
片上可编程系统(System on a Programmable Chip,SoPC)是Altera公司提出来的一种灵活、高效的SoC解决方案。它是一种特殊的嵌入式系统;首先,它是系统芯片SoC,即单个芯片能完成系统的主要逻辑功能;其次,它是可编程系统,具有灵活的设计方式,可裁剪、可升级、可扩充,并具备软硬件在系统可编程的功能。
由此可见,软硬件协同设计是电子系统复杂化后的一种设计新趋势,其中SoPC是这一趋势的典型代表。SoPC威廉希尔官方网站
为嵌入式系统设计提供了一种更为方便、灵活和可靠的软硬件协同实现方式。本文利用基于SoPC的软硬件协同设计方法实现了水电机组在线监测系统中的状态监测装置,是软硬件协同英国威廉希尔公司网站
在电力场合的嵌入式装置开发中的创新式的尝试。
1 基于SoPC的软硬件协同设计
1.1 设计思想
基于SoPC的软硬件协同设计的核心是系统功能集成,设计思想较传统方法有了根本改变,即从以功能设计为基础的传统流程转变到以功能组装为基础的全新流程。软硬件协同设计在实际应用中表现为软硬件协同设计平台的开发,首先对不同的任务目标找到最恰当的设计方案,然后进行软硬件划分,产生硬件描述、软件描述和软硬件边界描述3个部分。软硬件划分是软硬件协同设计的关键步骤,其基本任务是在满足某些约束的条件下,将系统功能行为“最优地”分配到一定的软硬件系统结构上进行设计规划。
1.2 设计流程
软硬件协同设计就是同时设计系统中的软件和硬件部分,来满足系统的性能指标。面向SoPC的软硬件协同设计流程从目标系统构思开始。对一个给定的目标系统,经过构思,完成其系统整体描述,然后交给软硬件协同设计的开发集成环境,由计算机自动完成剩余的全部工作。一般而言,还要经过模块的行为描述、对模块的有效性检查、软硬件划分、硬件综合、软件编译、软硬件集成,软硬件协同仿真 与验证等各个阶段。软硬件协同设计流程如图1所示。
2 装置硬件设计
数据采集分析是状态监测装置的实现基础和核心功能,它设计的优劣直接影响着状态监测装置的参数指标的好坏,而本文中采用的基于SoPC嵌入式软硬件协同设计很好地实现了该部分的功能,本章着重介绍该部分功能的硬件设计思路。采用可编程逻辑器件(FPGA )设计数据采集系统,具有集成度高、工作频率快、编程配置灵活、抗干扰能力强等一系列优点。此外,还可以在FPGA芯片内进行采集控制、缓冲、信号处理、传输控制、通信 。本装置中正是按照上述的软硬件协同设计思路合理分割功能,较高性能地实现了在线的多路状态监测。
2. 1 采集控制IP设计
采集控制IP主要以下几部分:采集控制逻辑,各种寄存器,数据缓存RAM块,时间戳计数器,PLB_EMC接口伺服逻辑。工作时钟为10 MHz。经后期软件验证,该模块的采样频率最高可达12 kHz,同时可最多对84路模拟量进行采样。
2.2 信号分析IP设计
为节约CPU资源,减轻软件开发负担,本系统中信号分析采用FPGA硬件逻辑完成,信号分析IP直接从原始信号数据计算得到直流,基波以及各次谐波的幅值和相位等特征量,具有运算时间固定,速度快,不易出错,不占用CPU软件资源等优点。设计框图如图2所示。主要包括数据流控制逻辑,FFT运算IP,幅频相频计算模块,均值和峰峰值计算模块,分析结果存储缓冲RAM,PLB_EMC接口伺服逻辑。
其中FFT运算和幅值相位计算采用了Xilinx的IP,为节省FPGA逻辑资源,4 096点FFT采用基-2(Radix-2)算法简化版,突发输入输出模式,在速度达到的情况下尽可能的缩减面积。
在完成了信号分析IP的逻辑后,进行了仿真工作,仿真数据由matlab 模拟计算得到,通过TestBench送给分析模块进行仿真,仿真环境为Mentor Graphics公司的ModelSim 6.3g。下面是一些具体的仿真结果以及和Matlab仿真的对比。
在Matlab中产生一个正弦信号,并做4 096点FFT,计算结果如图2所示。
图3是FFT工作的时序图,可以看到在选择了基-2(Radix-2)算法简化版,突发输入输出模式后,4 096点FFT的计算时间为533.24 μs,较软件算法快很多,从而使系统能胜任大数据量(84路16位数据)高分辨率(4 096点)信号分析。
图2和图3是对模拟数据进行Matlab仿真和ModelSim仿真二者结果的比较,可以看到原始计算结果有一定的误差,归一化后完全一致,产生误差的主要原因是在Matlab中的FFT是浮点数计算,而在FPGA中的FFT选择的是定点数计算。仿真结果表明此模块可以完成信号分析的功能,且分析结果达到较高精度
3 装置软件设计
装置的软件结构如图4所示,主要由以下几个部分组成:嵌入式Linux操作系统、设备驱动程序(SJ90Dry.o)、数据采集控制与处理程序(SJ90IOAcc)、系统组态配置与监视分析程序(SJ90Logo)、通信接口程序(SJ90Comm)、CAN网驱动和I2C驱动。
其中:
(1)嵌入式Linux操作系统:主要负责进程管理、进程间通信、内存管理、实现文件系统、提供I/O接口及对其他资源进行管理;
(2)设备驱动程序(SJ90Dry.o):运行于系统内核空间,将缓存的存贮空间映射为字符设备,响应设备中断,建立采集数据交换缓冲存贮,提供用户程序与操作系统的接口,完成用户空间和内核空间的数据交换;
(3)数据采集控翻与处理程序(SJ90IOAcc):主要负责建立共享内存,管理系统配置信息,实时数据,提供连续、自主的在线数据采集控制、信号处理、报警检测、历史数据存贮和故障录波存贮等功能,通过设备读写和NetLink通信接口与内核态设备驱动程序进行数据交换;
(4)系统组态配置与监视分析程序(SJ90Logo):基于MiniGUI图形环境,提供可视化的系统参数配置(含机组、传感器、通道、测点信息配置等)功能,提供多种实时数据监视图表、历史趋势分析图表和时频振摆分析图表;
(5)数据通信接口程序(SJ90Comm):实现本系统与其他系统的数据交换,系统提供串口和网络2种方式传送数据,支持的协议分别为MODB US_RTU和MODBUS_TCP;
(6)CAN网驱动和I2C驱动:运行于系统内核空间,提供用户程序与操作系统的接口,完成用户空间和内核空间的数据交换;CAN网驱动获取开关量以及慢变量信号;I2C驱动完成硬件点灯以及报警等功能。
4 结语
基于SoPC的软硬件协同设计在图像处理、无线通信、军事武器等场合已经有了较多应用,本文则将该设计方法应用于状态监测装置中,并通过该设计方法最大限度地提升和优化了该采集系统的性能。笔者认为该设计方法同样适合于电力行业中其他一些实时性强、运算量大、功能复杂的多路采集分析装置中,以该设计思路替代以往的CPU+DSP,CPU+FPGA等多处理器芯片的设计方法,可实现系统级优化设计。
0