您当前的位置:首页 > 计算机论文>计算机应用论文

基于FPGA与DSP的通用控制系统设计

2015-12-14 13:49 来源:学术参考网 作者:未知

摘 要:本文采用FPGA与DSP构架设计通用化的控制系统,实现外部控制接口数据的接收、解析处理和传输。该系统已应用于多个工程项目,其性能得到充分验证。

关键词:FPGA;DSP;控制系统
  随着电子信息技术的发展和用户需求的日益增长,现代电子信息系统变得越来越复杂,控制系统作为电子信息系统不可或缺的一部分,对其接口功能、处理速度、稳定性、造价、体积、存储容量等都提出了更高的要求。基于FPGA与DSP设计的通用控制系统造价小,性能稳定可靠,处理速度快,能满足不同工程的性能需求,可运用于汽车控制,语音识别等各种不同系统。本文采用Xilinx公司的Virtex-Ⅳ系列芯片XC4VLX40-10FF668I与TI公司的TMS320LC549-120 DSP实现控制系统。
1 系统设计方案
  系统主要分为控制信息接收、控制信息分析处理以及控制信息处理结果上报三部分。FPGA主要负责DSP与外部的接口管理,以及时序控制;DSP主要负责控制信息的解析及处理。系统原理框图如图1所示。
  控制系统接收外部控制设备的控制命令,对接收到的信息进行解析,发送给外部被控制设备,对外部被控设备的反馈信息进行处理后将控制结果发送给外部控制设备。
  
    
  图 1 系统原理框图
2 硬件设计
2.1 器件选择
  本控制系统选择的XC4VLX40-10FF668I与TMS320LC549-120 DSP器件具有的性能如下所示。在实际应用时可以根据对具体控制系统的性能要求进行器件更换。
a) TMS320LC549-120 DSP
采用了先进的修正哈佛结构和8总线结构,具有高度并行和带有专用硬件逻辑的CPU设计、高度专业化的指令系统以及低功耗和抗干扰能力,使处理器的性能大大提高。它是一种低价格、高性能的DSP芯片,3.3V工作电压(2.5V内核电压),具有高速运算能力,能完成较强的通信功能和复杂的管理控制功能。
其具体特性如下。
1) 具有32KB内部RAM,作为加载程序存储空间和内部数据存储空间;
2) 最高120MHz工作时钟,10ns定点单指令周期,运算能力达10MIPS;
3) 各64KW的程序、数据和I/O寻址空间;
4) 32位长操作数指令,并行存储、并行加载算术指令;
5) CCS开发平台,C语言,高代码优化率,可移植性强,可读性强。
b) XC4VLX40-10FF668I
  Xilinx公司的Virtex-Ⅳ系列芯片XC4VLX40-10FF668I,共有4万门、18432个SLICE,内部最大可用1728Kbits的RAM和96个BlockRAM作数据缓冲用。I/O端口多,端口功能可编程自定义;内核采用2.5V供电,端口供电电压为3.3V。
2.2 控制系统与外部接口
  控制系统与外部设备的接口主要分为与外部控制设备接口、与外部被控设备接口两部分。外部设备与控制系统之间可以通过各种数据传输方式传输数据,比如以太网方式,SPI方式,SLIP串行数据传输方式等等,视控制系统运用的具体环境选择。
2.3 FPGA与DSP之间信息传输
  FPGA与DSP之间传输的信息主要包括时钟信息和与外部设备下发的控制信息以及因此产生的中断信息。
  时钟是整个系统运行的基准,在控制系统中时钟信号的来源是晶振,FPGA对晶振输出的时钟信号进行分频或者倍频处理以进行各种时序控制。DSP的输入
时钟就是经过FPGA分频或倍频了的晶振输出的时钟信号,DSP的运行时钟CLKOUT需对输入时钟CLKIN进行倍频处理,FPGA也会根据DSP输出时钟进行收发数据的处理。
  DSP与FPGA之间控制信息以及其它相关信息的传输均使用I/O端口实现。当FPGA接收到控制信息后产生中断信号通知DSP接收信息,并将DSP输出给控制设备以及被控设备的信息传递给相应设备。
3 软件设计
3.1 DSP软件设计方案
  DSP软件是在CCS3.1开发系统下使用C语言设计,使用C语言实现功能,实现高代码优化率,代码的可移植性强,可读性强。
3.1.1 系统初始化
  在DSP能正常工作之前,必须通过设置DSP寄存器值进行系统初始化。
a) 设置处理器工作方式状态寄存器PMST
  使用DSP的RAM作为程序的程序存储空间和数据存储空间,通过设置MP/MC位、OVLY位和DROM位实现。设置MP/MC位为1,不能利用片内ROM,OVLY位为1,片内RAM可以映像到程序空间和数据空间,但是数据页(0h~7Fh)不能映像到程序空间,DROM位为0,片内ROM不能映像到数据空间。
b) 设置DSP定时器以及时钟工作方式
  设置定时器控制寄存器TCR的free位为1,以便用高级程序语言调试程序遇到断点时,定时器继续运行。
  DSP使用PLL,通过设置时钟方式寄存器CLKMD设置DSP的工作时钟频率。DSP工作时钟频率等于外部时钟源频率乘以系数N,比如设置CLKMD为1110000101001111b,DSP工作时钟频率为15×外部时钟频率。在设置倍频数量时要确保倍频后的时钟没有超过DSP最大的运行时钟频率。
c) 中断设置
  由于控制系统中DSP使用中断来接收控制信息,因此在初始化的最后要开放使用的可屏蔽中断,通过设置imr寄存器来实现。
  在系统初始化完成之后,控制系统的DSP芯片能正常运行起来。
3.1.2 控制信息接收及分析处理
  在系统工作时,DSP通过中断接收各种控制信息,对信息进行解析,将控制信息通过FPGA发送给被控制设备,将处理控制信息的结果通过FPGA发送给控制设备。
  在DSP通过中断接收控制信息之前,需要设置中断向量表,编写中断服务程序,以便DSP能实时接收到控制信息。首先在文件vectors.asm中添加中断相关信息,如下所示。
  .ref _c_int00
  .ref _int0ISR  ;新增的int0中断服务程序名称
  .align 0x80
  …
  int0: B _int0ISR  ;将中断服务程序关联到对应中断上
      NOP
      NOP
  …
  增加了中断向量的相关信息后,可以在程序中编写中断服务程序了,使用C语言实现的DSP程序中,实现中断服务程序时必须以下面的格式编写函数,必须使用关键字interrupt。
  interrupt int0ISR(void)
  {
   …
  }
  在使用I/O端口与FPGA通信时,在C程序中以ioport unsigned int portXXXX方式定义与FPGA通信的I/O端口,XXXX表示端口地址,使用16进制表示,其范围为0x0000~0xFFFF。比如定义port1从FPGA接收数据,port2向FPGA发送数据,其书写方式如下所示。
  ReceiveData = port1;//从端口1读取数据
  port2 = SendData;  // 向端口2发送数据
  DSP的主程序和中断服务程序流程图如图2、图3所示。
3.2 FPGA程序设计
  FPGA程序是在XILINX的软件开发系统下,用VHDL语言设计实现的。假设本控制系统与外部控制设备通信使用的是异步串行通信方式(SCI),与被控设备通信使用的是串行异步通信总线方式(RS485总线)。下面主要介绍FPGA怎样实现外部数据与DSP能够识别的信息之间的转换。

相关文章
学术参考网 · 手机版
https://m.lw881.com/
首页