APP下载

基于DSP+FPGA的云台控制电路设计

2019-09-20

测控技术 2019年3期
关键词:数据总线外设云台

(国防科技大学 智能科学学院,湖南 长沙 410073)

随着计算机技术、自动控制技术和图像处理技术的快速发展,通过云台安装视觉跟踪装置、对近地目标进行捕捉辨识的无人机系统应运而生,且广泛地应用在精确制导、公路巡航、反恐防暴和抗灾救援等场合[1]。其中,稳定云台系统作为搭载任务挂载的平台,是无人机的一个重要组成部分[2]。沈阳航空航天大学的冯志刚,设计基于ARM的硬件平台,运用神经网络云台控制技术,云台的姿态角度误差在±5°以内[3];南京理工大学的王娜,在分析无人机云台控制系统功能需求的基础上,提出了一种以STM32F407VGT6为核心的双处理器硬件设计方案,可以提高整体系统控制的实时性[4];来自北京航空精密机械研究所的聂社云等人 ,设计了一种基于DSP和FPGA的嵌入式运动控制平台,采用FPGA芯片Nios内核为协处理器实现良好的人机交互控制,并成功应用于一体化转台控制系统[5]。

在高精度云台控制研究中,常常需要对被控对象进行各种关键信息采集,如空间姿态、速度及加速度等。随着芯片及传感器资源的精度不断提高,所需要处理的数据速度和容量都大幅提升,而传统云台的控制架构大多以微处理器为核心,兼顾数据采集、控制算法以及信号输出,不得不面对高频率的中断响应,由此造成额外需求的操作硬件资源的响应时间会因为中断优先级别而不断累加,将会限制伺服算法的复杂度;其次,利用微处理器直接针对一组外设资源进行程序设计,无法多线程处理中断响应,这样将会影响数据来源的实时性,不利于编程结构模块化和功能拓展。本文设计了一种基于DSP+FPGA并行构架的云台控制电路,具有信号采集速度快、数据传输方便、功能可拓展等优点。

1 硬件设计方案

1.1 系统组成结构

控制系统的结构框图如图1所示,数据采集由AD采集通道和绝对式编码器采集通道组成,输出通道由DA输出电路构成;FPGA作为系统外设管理核心,起到信号调度和数据缓存功能,通过对板上外设芯片的时序操作,实时读取并存储数据信息,并将数字信号向DA电路输出;DSP作为控制系统算法核心,主要通过读并行总线来实时获取采样数据,预处理后经内部伺服算法获得控制输出量,通过数据总线写向FPGA;扩展通道中为额外功能拓展保留了适当的I/O资源,方便FPGA对其他外设进行管理。

图1 云台控制系统结构框图

1.2 硬件实现

目前多通道AD采集芯片的单通道最大吞吐率可达350 kS/s,全通道同步采集时最大吞吐率也可达100 kS/s,若采用DSP直接读取AD转换数据,每秒需处理近1600 KB的数据量,采集动作将反复打断DSP当前运算进程,极大地影响伺服算法的准确实现。为了更好地发挥DSP在伺服控制领域中的高速浮点运算能力,本文将FPGA作为DSP操作数据总线的中继站,利用其丰富的接口资源和逻辑输出能力来调度外设,实时采集并以寄存器形式存储AD转换结果和绝对式编码器输出信号,同时发送到寄存器中用于DA转换的数字量。

图2为云台控制电路的采集/输出接口连接图,主要由FPGA、AD、DA及编码器芯片组成。整体电路以24 V单电源供电,通过金升阳宽压电源向AD、DA模块供电±15 V和±5 V,通过德州仪器DC-DC开关稳压器为DSP与FPGA产生3.3 V和1.2 V电源电压。

图2 采集/输出电路连接图

本方案中AD模块采用AD7865芯片,具有4通道同步采样功能,支持微处理器的高速并行接口连接,是一款低功耗的高速率高精度14位数模转换器。AD模块与FPGA之间的数据传输通过14位并行数据总线完成,其中低4位为双向总线,用于配置阶段采样通道设置,高10位为单向总线,在转换完成后与低4位组成完整的14位数据总线。AD模块的模拟输入前端设有调理电路,将输入电压适配到模拟输入最大量程范围,以求最大发挥转换精度。

方案中的DA模块选自ANALOG公司的DAC8412芯片,支持输入通道双缓冲模式和读反馈功能,可以实现与FPGA的高速总线传输。通过12位并行数据总线从FPGA获取数字量信息,以双缓冲工作方式在同一时间更新4组输出寄存器内容,实现多路模拟量同步输出。

绝对式编码器型号为Netzer DS-37,这是一款轻量化、高精度、高分辨率的旋转式编码器,可应用在高温高湿及各类复杂电磁干扰环境下,支持数字量和模拟量多种接口,本文设计采用SSI接口实现FPGA对编码器数据的读取。编码器输出信号符合RS422电气规范,拥有较强的共模干扰抑制能力,通过数字隔离器实现与FPGA管脚信号的隔绝与传递,并完成差分信号向单端信号转换。

图3为云台控制系统的数据通信连接图,主要包含一组单向地址总线和一组双向数据总线和相关控制信号。核心算法控制采用TI公司DSP芯片TMS320F28335实现。该款芯片在保留原有DSP强大控制能力和信号处理能力等优点的基础上,增加了浮点运算内核,能够执行复杂浮点运算,同时节省了代码执行周期和存储空间,具有精度高、成本低、功耗小、外设集成度高、数据和程序存储量大等显著特点。DSP与FPGA之间通过XINTF接口实现并行通信[6],设计通过XINTF将FPGA的地址空间映射到DSP地址空间,从而使得DSP端可以方便地对FPGA进行数据读写。

图3 XINTF通信接口连接图

整体设计的逻辑控制采用Altera公司生产的Cyclone-IV系列FPGA芯片EP4CE10E22C8实现。该芯片拥有10320位逻辑单元,2路通用锁相环,存储容量高达424 Kb。考虑本文所设计模块,所消耗的逻辑单元数为1497(消耗比例15%),消耗的I/O口为48(消耗比例52%),消耗内存位245760 b(消耗比例58%),满足本文平台控制系统对数模转换模块、编码器采集模块等的开发需求。芯片拥有144个I/O口,支持LVTTL、LVCMOS等标准电压规范,直接与外设芯片互联而无需各类转换芯片,可以为串口、传感器等其他功能拓展预留足够的接口资源。控制系统时钟源是频率为30 MHz的无源晶振,经过DSP内核倍频至150 MHz作为运算系统时钟,然后四分频为37.5 MHz至外部接口时钟XCLKOUT,作为FPGA系统时钟。

2 软件设计方案

软件设计流程图如图4所示,按照开发方式区别为FPGA设计与DSP设计部分。整个控制过程中,DSP作为运算控制核心,是实现云台伺服控制的关键[7];FPGA作为外设管理核心,主要辅助DSP获取信息和输出指令。

图4 控制系统软件设计流程图

DSP部分的程序设计采用自上而下、模块化的设计思路。当DSP上电复位后,首先完成对系统时钟、PLL、外设时钟和看门狗初始化,并对中断向量表、CPU定时器和一些用户自定义模块进行配置。初始化步骤完成后,主程序跳入“空闲”状态等待定时器中断响应[8]。定时器的中断周期设为云台控制系统的伺服控制周期,每次中断响应后DSP主程序需要依次完成:通过XINTF从FPGA端获取AD转换结果和绝对式编码器输出信息,完成滤波降噪预处理并由伺服控制器计算出电机控制指令,通过XINTF向FPGA端输出DA转换所需数字量。

FPGA部分的程序设计通过Verilog HDL构建模型框架,在Quartus II 13.0上完成编译和仿真[9]。系统上电后,首先获取DSP端发送的时钟信号与复位信号,对内部寄存器完成初始化后,FPGA进入并行工作状态,利用其丰富的管脚资源和强大的逻辑输出能力,同时进行3个信息流处理:对AD模块的时序控制和数字量采集、绝对式编码器的CLK信号发生和DATA数据接收、对DA模块的时序控制和数字量输入。其中,AD转换结果、编码器信息和DA转换输入都通过线网变量存储至公共变量区,通过对DSP输出管脚XRD、XWE0及ZXCS0电平检测,识别当前DSP是处于读请求还是写请求状态。若是读操作,则读选通信号XRD被拉低,同时将数据锁存进DSP;反之,写选通信号XWE被拉低,将数据送到数据总线上。

结合丰富的硬件资源,本文所提出的电路设计包含诸多软件设计内容,现以其中编码器读取部分和XINTF通信部分为例来具体说明。

2.1 绝对式编码器数据采集程序设计

SSI通信协议为同步串行接口(Synchronous Serial Interface)的缩写[10]。这是一种主机主动式的同步传输方式,在主机所发出的时钟控制下,编码器遵循一定的帧格式按有效位从高至低传输,相比总线式的传输方式具有安装方便和经济实用的显著特点。本文所设计SSI采集程序原理图如图5所示。顶层模块内封装3个子模块:模块u1周期性生成1 MHz的同步时钟信号,每个操作周期结束后发出一个脉冲代表时钟生成完毕;模块u2对u1所输出时钟信号的上升沿进行捕捉,每次捕捉成功则发出一个完成标志位L2H_sig;模块u3每收到一次L2H_sig,对数据信号线上的电平进行捕捉,并将串行结果转为并行数据向顶层模块输出。

图5 SSI协议采集原理图

2.2 DSP-FPGA并行通信程序设计

在使用XINTF进行外部存储接口拓展时[8],DSP共有3个外部存储区域可供用户访问。本文所选的访问区域为Zone0,其对应访问地址为:0x0000_4000~0x0000_4FFF,对应片选信号为XZCS0。任何对XINTF区域的读写访问的时序都可以分为3个阶段,即建立、跟踪和激活。XTIMING寄存器中可设置访问过程中每个阶段等待状态的XTIMCLK数。在建立阶段,所访问区域Zone0的片选信号拉低,对应空间的访问地址被发送到地址总线XA上;激活阶段,对应读(写)访问的选通信号XRD(XWE0)被拉低,由于不采用XREADY信号,激活周期等于1个XTIMCLK周期加上相应的XTIMING寄存器指定的周期数;跟踪阶段,读写选通信号被拉高,而片选信号继续保持一段时间的低电平。

通过扩展DSP访问空间的数据总线实质上是一组双向数据线,故Verilog建模中并联总线端口被定义为inout型[11]。inout变量在FPGA硬件中一般用三态门来实现,数据方向通过对总线方向标志位inout_flag的条件判断语句决定,从而设置数据总线XD是输出数据还是处于高阻态。XINTF通信部分代码如下,其中部分端口和寄存器定义语句已省略。

always@(posedge clk or negedge rstn)

if (!rstn)

begin

inout_flag <= 1′b0;

XD_out <= 16′b0;

//da输入寄存器初始化

XD_in1 <= 16′b0;

XD_in2 <= 16′b0;

XD_in3 <= 16′b0;

XD_in4 <= 16′b0;

//ad输出寄存器初始化

data_tx1 <= 16′h0000;

data_tx2 <= 16′h0000;

data_tx3 <= 16′h0000;

data_tx4 <= 16′h0000;

//ssi输出寄存器初始化

data_tx5 <= 16′h2222;

data_tx6 <= 16′h2222;

end

else if (!(XWE) && !(XZCS0))

//DSP向FPGA写数据

begin

inout_flag <= 1′b0;

case(XA_in)

//读地址总线

da_addr1:XD_in1 <= XD_inout;

da_addr2:XD_in2 <= XD_inout;

da_addr3:XD_in3 <= XD_inout;

da_addr4:XD_in4 <= XD_inout;

endcase

end

else if (!(XRD) && !(XZCS0))

//DSP从FPGA读数据

begin

inout_flag <= 1′b1;

case(XA_in)

ad_addr1:XD_out <= data_tx1;

ad_addr2:XD_out <= data_tx2;

ad_addr3:XD_out <= data_tx3;

ad_addr4:XD_out <= data_tx4;

ssi_addr1:XD_out <= data_tx5;

ssi_addr2:XD_out <= data_tx6;

endcase

end

3 实验仿真

本文所设计云台控制电路是以FPGA为外设管理核心,因此需要通过SignalTapII逻辑分析仪来对FPGA的I/O管脚进行逻辑监视[12],以此来判断FPGA是否执行了正确的时序操作。

图6为FPGA通过SSI通信方式采集过程中,通过SignalTap II捕捉到的两次相邻周期的关键信号时序图,主要反映编码器工作时SSI驱动时钟电平变化、SSI数据寄存器更新以及状态机内容等。结合图5的SSI采集原理图可以看出,在每次捕捉到时钟信号ssi_clk后,FPGA通过状态机order的顺序引导,将当前数据线data上的电平状态按照从高至低的顺序保存至SSI输出结果的寄存器rssi_clk当中,并在采集完成信号ssi_done_sig拉高之前将内容输出。在一次采集时钟序列结束时,SSI输出信号在最后一个时钟下降沿进入单稳态时间,编码器输出寄存器被复位,准备下一次采集的时钟序列到来。输出变量ssi_data的更新动作发生在采集周期末,因此前一周期的采集结果会在采集周期内保存,直到所有位数据采集完成并覆盖原始数据。经过测量,本文SSI采集方法的数据测量刷新频率可以达到22.76 kHz。

XINTF作为DSP伺服控制算法的数据接口,在云台控制系统中承担着数据传输的重要地位,因此对其功能实验也格外重要。图7和图8为对XINTF通信功能实现的测试结果,主要反映地址总线与数据总线的实时内容与DSP映射地址内的变量内容。DSP在CPU定时器中断响应程序中依顺序执行:读AD转换通道1、通道2,读SSI采集通道1、通道2,写DA转换通道1、通道2。从逻辑分析仪采集的时序图中可以看出,XRD和XWE选通信号分别被先后拉低4次和2次。FPGA在确认地址线XA_in的地址信息之后,将对应的数据送入数据总线XD_inout,经对比在传输过程中数据信息完整无损坏。经过测量,DSP通过以上步骤进行数据交流需用时2.4 μm。

图6 相邻周期内SSI通信协议信号采集时序

图7 XINTF通信信号采集时序图

图8 CCS端变量观察器

4 结束语

本文充分利用FPGA并行操作优势及其强大逻辑输出能力,在现有以DSP为单核心的云台控制电路基础上进行优化设计,辅以FPGA作为数据处理核心和数据缓冲区,提高了系统处理输入采集量和输出控制量的精确性和实时性。经过实验验证,该电路设计可以对绝对编码器进行高速精准采集,并且通过XINTF实现双核心间重要数据交流。该设计能够广泛应用在云台稳定控制领域,为无人机视觉系统提供精确、快速的数字平台。

猜你喜欢

数据总线外设云台
帮我买云台
Help me buy a…Tripod head帮我买云台
基于STM32的无线FPV云台设计
当液压遇上悬臂云台 捷信GHFG1液压悬臂云台试用
智能电网调度控制系统中的数据总线技术研究
基于ASP.NETSignalR的实时Web功能的实现
现场总线技术在电厂自动化控制中的应用
途安车数据总线诊断接口故障
外设天地行情
外设天地行情