- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
基于SOPC的现场总线多通道实时温度采集系统设计
引言
温度是表征物体冷热程度的物理量,是工业生产中常见和最基本的参数之一,在生产过程中常常需要对温度进行监控。传统的温度采集系统,通常采用单片机或数字信号处理器DSP作为微控制器,控制模数转换器ADC及其他外围设备的工作;但是,基于单片机或DSP的高速多路温度采集系统都有一定的不足。由于单片机运行的时钟频率较低,并且单片机是基于顺序语言的,各种功能都要靠软件的运行来实现,因此随着程序量的增加,如果程序的健壮性不好,会出现“程序跑飞”和“复位”现象。DSP的运算速度快,处理复杂的乘加运算有一定的优势,但是很难完成外围设备的复杂硬件逻辑控制。因而单片机或DSP很难满足在复杂的工业现场进行多路温度采集时对实时性和同步性的要求。鉴于此,本文介绍一种基于SOPC技术的多通道实时温度采集系统。该系统开发周期短、资源配置灵活、稳定性良好,满足了对温度采集实时性和同步性有较高要求的工业生产领域中的应用。
1 系统的总体结构
温度采集系统的硬件主要由温度采集模块、数据存储模块、FPGA逻辑控制模块以及通信模块组成,其总体架构如图1所示。
系统上电后,先由静态存储器EPCS16自动将配置数据载入到FPGA(CycloneII系列的EP2C8Q208C)的SDRAM(HY57V641620)之中,即将固化在其中的数字逻辑电路映射到FPGA器件中。温度传感器单元AD590首先采集温度信号,然后经过信号调理电路的处理,使信号的输出幅度满足A/D采样的量程要求。此时FPGA控制模拟选择开关ADG706进行通道选择,同时控制多片16位A/D转换器ADS8402进行A/D转换,并将采集到的实时数据分时存储到两片类型为FIFO、容量为16K×9位的存储器IDT72V06中。然后,将其中处于读状态的IDT72V06中的数据读取出来,并经过FPGA控制SPC3通信模块,通过PROFIBUS总线传送至上位机。
2 温度采集系统设计
2.1 温度采集模块
温度采集模块由多片温度传感器单元、多路信号调理电路、多路模拟开关电路以及多路A/D转换器四大部分组成。
温度传感器单元采用热电偶。它具有以下优点:测温范围宽,性能稳定;测量精度高,热电偶与被测对象直接接触,不受中间介质的影响;热响应时间快,热电偶对温度变化反应灵活;测量范围大,-40~+1600℃均可连续测温;性能牢靠,机械强度好;寿命长,按装方便,特别适合于在复杂的工业生产过程中对温度的实时检测。
多路模拟开关电路选用16路模拟选择开关ADG706。其4位地址位.A0、A1、A2、A3的输入直接由FPGA的I/O端口CH0、CH1、CH2、CH3控制,决定16路输入信号中要输出的通道,每条通道选择指令将同时启动多片ADG706相应的温度采集通道。然后启动相应的温度采集通道进行A/D转换。本设计采用高速逐次逼近寄存器(SAR)类比数位转换器ADS8402,多片ADS8402A/D转换器的启动转换引脚共用FPGA的一个I/O端口A/D Start。ADS8402A/D转换结果的高、低字节控制引脚BYTE及ADS8402的数据输出控制,分别由FPGA单独的I/O控制。FPGA每给A/DStart端口一个100ns的负脉冲,即可启动多片ADS8402进行相应通道上的数据采集。转换结束后,可通过控制BYTE端口读取A/D转换结果,并暂存到相应的数据单元。
2.2 数据存储模块
多通道采集信号的路数多、处理的数据量大,需要外扩数据存储模块来缓存FPGA处理结果。与此同时,由于上位机的多任务性,它不可能专一对并行口读取数据,为了保证FPGA控制核心与上位机通信一次性读取大量数据,本系统用到了2片异步FIFO芯片IDT72V06,其存储容量16K×9位,存取时间15 ns,其中一片用来对采集过来的数据进行存储,另一片用来读取存储在FIFO中的采集数据,以便与上位机进行并行口通信。系统运行过程中,两片FIFO位扩展进行双缓存乒乓控制,轮流进行读写操作,可大大提高并口通信速度及数据吞吐量。
2.3 通信模块
PROFIBUS—DP是一种经过优化的高速、廉价的通信连接方式,专为自动控制系统和设备级的分散I/O之间的通信而设计,用于分布式控制系统的高速数据传输,实现自控系统和分散外围I/O设备及智能现场仪表之间的高速数据通信。SPC3集成了全部的PROFIBUS—DP协议,SP C3在DP方式下将完成所有DP—SAP的设置。
SPC3内部集成了1.5 KB的双口RAM,包括参数寄存器、方式寄存器、状态寄存器和中断控制器等。SPC3内部集成的看门狗定时器有3种工作状态:波特率检测、波特率控制和从站控制。内部的USART可实现并行数据流和串行数据流的相互转换,微顺序控制器控制整个工作过程,空闲定时器直接控制串行总线时序。通信模块的设计选用了PROFIBUS—DP专用通信协议芯片SPC3,这样可加速通信的执行,而且可以减轻微处理器的负担。
2.4 FPGA逻辑控制模块
基于FPGA的采集控制单元,采用自顶而下的模块化设计方法,使用Verilog HDL语言完成各控制模块的设计。FPGA逻辑控制模块包括A/D采样控制模块、FIFO读写控制模块和SPC3控制模块。
2.4.1 A/D采样控制模块
A/D采样控制模块负责控制外部ADS8402芯片多路模拟输入量的选通,并实现对A/D采样过程的合理控制。
由于ADS8402对16通道的模拟量采取分时转换的方式,因此在启动转换的同时还要进行通道选择。ADS8402设置了4根通道地址线A0、A1、A2、A3,以及地址锁存允许信号ALE。当ALE变高时,锁存由A0、A1、A2、A3编码所确定的通道号,将该通道的模拟量接入A/D转换器进行转换。依据这样的特性,设计一个带复位端的十六进制计数器,其计数输出端Q3、Q2、Q1、Q0分别与ADS8402的4根地址线相连。计数器上电复位以确保系统从0号通道开始采样。将ADS8402的转换结束信号EOC作为计数器的时钟信号,实现一路转换结束后自动启动对下一路模拟输入的采样控制。
A/D采样过程的控制采用有限状态机来实现,把某一通道的采样过程划分为7个状态,如图2所示。首先S0状态对各个控制信号进行初始化。在S1状态产生ALE信号的上升沿,锁存通道地址。启动信号START应在产生ALE信号的同一时钟下降沿产生,由于VHDL语言在同一进程内不允许时钟的两个沿作为敏感变量,所以将产生START信号单列为一个状态S2,启动转换。在启动转换后,ADS8402使EOC置为低电平,设置S3状态等待A/D转换结束。转换结束后,EOC信号由低电平转换为高电平,状态机进入S4状态,开启输出允许OE。状态机进入S5状态,开启数据锁存信号LOCK锁存数据。为产生与其他进程通信的信号,状态机设置S6作为最后一个状态,然后跳转回SO初始状态。
2.4.2 FIFO读写控制模块
采用2片FIFO轮流读写操作,实现FPGA与PC机之间的数据缓存。乒乓传输控制原理示意图如图3所示,图中的实线箭头与虚线箭头分别代表不同的读写数据周期。输入数据流通过输入数据流选择单元,等时地将数据流分配到FIFO1、FIFO2中。在第1个缓冲周期,将输入的数据流缓存到FIFO1。在第2个缓冲周期,通过输入数据流选择单元的切换,将输入的数据流缓存到FIFO2,与此同时,将FIFO1缓存的第1个周期的数据通过输出数据流选择单元的选择,送到数据流运算处理模块被运算处理。在第3个缓冲周期,通过输入数据流选择单元的再次切换,将输入的数据流缓存到FIFO1,与此同时,将FIFO2缓存的第2个周期的数据通过输出数据流选择单元的切换,送到数据流运算处理模块被运算处理。如此循环,周而复始。
2.4.3 SPC3控制模块
由于SPC3集成了完整的DP协议,因此在进行通信时,FPGA不用参与处理DP状态机。主要任务是根据SPC3产生的中断,将SPC3接收到的数据转存,组织要通过SPC3发给的数据,并根据要求组织外部诊断。在SPC3正常工作之前,需要进行初始化,以配置需要的寄存器,包括设置协议芯片的中断允许,写入从站识别号和地址,设置SPC3方式寄存器,设置诊断缓冲区,配置缓冲区、地址缓冲区、初始化长度,并根据以上初始值得出各个缓冲区的指针和辅助缓冲区的指针。通信模块的控制流程如图4所示。
3 系统的FPGA实现
3.1 Nios II系统架构设计
Nios II系统模块包含:Nios II处理器、Avalon总线、并行输入/输出口PIO、串行外围设备接口SPI、定时器Timer、片内存储器EPCS、片外存储器SDRAM、PROFIBUS-DP的客户定制逻辑。由Nios II处理器完成程序控制,主要负责对温度的采集与数据存储操作,并控制PROFIBUS -DP的通信过程。其架构如图5所示。
3.2 系统软件设计
Nios II处理器的软件设计是在软核内存放一段编写的C/C++语言控制程序。来控制系统运行,它可以读写芯片的存储单元,同时与外围的设备进行通信。在本系统中,Nios II程序的任务是:在规定的周期内,FPGA通过通信模块接收上位机发出的采样任务及控制参数,然后控制模拟选择开关ADG706和A/D转换器ADS8402,使它们对选定通道的模拟信号进行调理及A/D转换,并读取采样数据以乒乓传输数据方式传送至片外FIFO缓存,再通过PROFIBUS—DP通信接口将采样数据传输至上位机。主程序流程如图6所示。
结语
基于FPGA的多通道实时温度采集系统以Nios II软核处理器实现SOPC,进一步简化了硬件设计。与传统的基于MCU的多通道温度采集系统相比,该系统具有资源配置灵活、运行稳定可靠、实时性强等优点。另外,该系统具有标准PROFIBUS—DP接口,作为一个DP从站实现与多种DP主站的通信,可广泛应用于工业生产领域的PROFIBUS分布式控制系统中。