微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > MCU和DSP > 以ARM和DSP为核心的实时仿真平台的开发

以ARM和DSP为核心的实时仿真平台的开发

时间:11-03 来源:互联网 点击:
ARM+DSP嵌入式仿真平台的软件结构

ARM部分中的软件

ARM部分是整个系统的控制中心,其运行的主要是系统软件,包括自举加载程序、指令响应程序、键盘扫描程序、LCD显示驱动程序、A/D与D/A转换控制程序、直接数字量/开关量输入输出程序、CAN总线通信控制程序及与C5000DSP部分进行内部实时数据交换的控制程序。

自举加载程序是上电或复位后首要实现的任务。它先对ARM的一些关键寄存器(如时钟、中断等)进行初始化(即部分初始化);之后将ARM部分中要运行的主程序和各个子程序(如指令响应程序、键盘扫描、LCD显示驱动等)从片外的非易失性存储器FLASH中加载到片内或片外的SRAM中,以增加程序的运行速度;接着,开始负责对C5000DSP部分进行复位初始化,再把数学模型程序通过API控制加载到C5000DSP中。这样,自举加载程序就完成了两个部分的自举加载工作。

自举加载完成后,ARM部分开始执行系统的全部初始化,然后便进入系统的主程序(该主程序是一个无限循环等待程序),在主程序中再以中断方式反复运行键盘扫描、LCD显示驱动、指令解释响应、A/D与D/A转换控制、数字量/开关量的输入输出及与C5000DSP部分通讯的程序。其中,指令解释的响应程序是一个核心程序,类似于操作系统的内核程序,接受来自输入处理子程序(键盘扫描、数字量/开关量的输入等)的接口数据,并根据它们的值启动相应的任务,如果需要将任务执行的结果作为接口数据(指令)输出给显示或控制处理子程序,则经由各输出子程序再进行处理。该部分的软件组织结构如图4所示。[next]



图4 ARM部分的软件组织结构

C5000DSP部分的软件

C5000DSP部分主要用来运行推进系统的数学模型,该推进系统可以是传统的柴油主机推动系统,也可以是新型的电力推动系统,关键在于不同的推动类型对应不同的数学模型。

C5000DSP程序实质上是以实时循环迭代求解微分方程组为主的程序,该微分方程组即推进系统的数学模型,并且每循环求解一次,要确定有没有从ARM部分传递来的指令及参数更改的信息。如果有,就改变相应状态及参数再求解微分方程组;如果没有,则仍按上一次的状态和参数求解。在每个循环中,方程组完整求解一次,从而得到推动系统在该时刻的仿真数据。在每个循环的最后,把仿真数据结果传送给ARM部分及C2000DSP部分(通过FIFO),用于显示和控制。这部分的软件程序结构如图5所示。



图5 C5000DSP部分的软件组织结构

[next]C2000DSP部分的软件结构

C2000DSP部分的主要任务就是读取FIFO接收来自C5000DSP部分的仿真结果中的转速和转矩信号,并将之表达为电动机的相应转速和转矩。该部分实际上是独立构成的一个专门控制交流电机的子系统。

其中,C2000DSP处理器TMS320LF2407为该控制子系统的核心。它首先采用查询的工作方式,检测主控指令位是否指示打开该进程,检查系统与主电路是否正常。如果主控指令位指示“关闭”,则切断主电路,封锁输入输出,再关闭系统;如果不正常,则切断主电路,封锁输入输出,再关闭系统,并发出警报;如果一切正常且主控指令位指示“打开”,则读取此子系统的给定信号(由通信中断服务程序从FIFO中读出并存入相应地址的存储器中),即转速和转矩仿真结果数据的接收,再调用捕获子程序从相应接口输入实际转速和转矩的反馈值。给定值和反馈值准备完毕,系统才开始使用某种控制算法对给定数据和反馈数据进行处理。

完成了一个电机闭环恒转速控制算法后,产生相应的PWM信号输出给电机功率驱动电路,再由驱动电路控制电机跟随仿真给定转速和转矩信号,完成对推动系统转速和转矩的物理模拟。这里使用的控制算法可以是交流电机控制的各种算法,有要求较低的恒压频比、恒电动势频比算法,也有要求高的矢量控制算法和直接转矩控制算法。完成此步控制算法输出PWM信号后,再返回到开头处。如此循环,直到出现不正常或ARM主控程序结束该任务进程。该部分程序的主要结构如图6所示。



图6 C2000DSP部分的软件组织结构

芯片间的通信控制

该系统由3大部分构成,各部分之间的通信关系如图1所示。ARM与C5000DSP之间相互通信,C5000DSP与C2000DSP之间相互通信,ARM与C2000DSP之间也相互通信。其中,前两者是通过中断方式来完成的,而后者是通过直接传送的方式完成的。

ARM与C5000DSP之间通过ARM向C5000发出中断信号,告知C5000要准备接收数据。然后ARM将数据放到两方共享的API中。DSP接收到中断信号后,开始中断服务程序,从API的相应位置取出数据,之后向ARM发出回复信号,以表示数据被取走,而后继续准备开始接收新的数据。ARM接收到来自C5000的回复信号,开始发送新的数据。如此反复,直到传递完所有数据。反过来,由C5000DSP向ARM发送数据,其过程与上面相同,只是收发方互换位置。[next]

C5000DSP与C2000DSP之间的通信是单向的,即C5000只进行发送而C2000只进行接收。它们之间是通过FIFO进行缓冲的。C5000首先将仿真运算的转速和转矩数据通过总线放入接在其IO空间的FIFO中,再向C2000发送中断请求。C2000收到后,响应中断,进行中断服务,从FIFO的相应位置取出数据并存入特定地址的存储器中,再回复C5000告知数据已经被取出。如此周而复始,不断进行数据的收发。

ARM与C2000DSP之间的通信主要是ARM主控打开或关闭C2000系统,采用单向直接传送方式。它们之间通过各自的一个GPIO(通用IO口)相连,ARM发送,C2000接收。ARM要打开C2000系统时,只需向其对应的GPIO写1,而ARM要关闭C2000系统时,只需向其对应的GPIO写0。在C2000部分,在主体循环程序中每次查询C2000的对应GPIO口,读为1则表示继续其进程,而读为0则表示关断其进程。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top