1 引言
智能控制是控制界新兴的研究领域,是一门边缘交叉学科。智能控制的一种定义为:应用人工智能的理论和技术及运筹学的优化方法同控制理论方法与技术结合,在未知环境下,仿效人类的智能,实现对系统的控制。微电子技术界各大芯片生产厂家均推出了专用的神经网络芯片和模糊芯片,采用这种高速的专用芯片,大大方便了智能控制应用系统的实现。本文采用现场可编程门阵列(FPGA)技术,对智能控制器的设计和实现进行研究。
2 控制器硬件设计
控制器主芯片采用ALTERA公司的型号为APEX系列的FPGA芯片,芯片型号为EP20K200EFC484-2X。APEX20K" title="APEX20K">APEX20K系列器件是一个具有多核结构的PLD器件系列,支持可编程单芯片系统SOPC" title="SOPC">SOPC。该型号拥有20万可用门资源,13KB的内部存储空间,382个用户可用引脚,1.8V/2.5V I/O。主处理器采用ALTERA公司的32位NIOS处理器软核,系统总线采用AVALON总线,外围扩展:片内存储器(9KB),RS232串行通讯口,智能控制算法加速器单元,模拟量输入端口,数字量/开关量输出端口,键盘PIO,LED显示PIO等,硬件体系结构框图如图1所示。
图1 硬件体系结构
2.1 Nios软核处理器
NIOS CPU是一种采用流水线技术,单指令流的RISC处理器,具有分离的指令和数据存储器端口(Harvard存储器结构)。本文处理器主频为33.333MHz。NIOS CPU中的内部寄存器包括:一个通用寄存器文件,多个内部控制寄存器,一个程序计数器,以及一个用于前缀指令的K寄存器。
NIOS3.0 CPU允许用户取消对陷阱指令、硬中断或内部异常的支持,以把NIOS系统配置成一个最简单的控制系统(不运行复杂软件)。NIOS处理器有一个可选的片上JTAG调试模块,用于实现调试工具和NIOS CPU的通讯。调试模块含有First Silicon Solution (FS2)公司设计的IP核。在NIOS CPU中,此调试模块被称作NIOS OCI调试模块。NIOS OCI调试模块可以实现运行控制、硬件断点和软件跟踪。
2.2 UART串口通信
UART外围硬件电路调用ALTERA公司集成到其开发环境中的NIOS系统IP库模块,其功能描述如下。NIOS UART用于在Altera的FPGA中实现简单的RS-232异步发送和接收逻辑。UART通过两个外部引脚(TxD和RxD)发送和接收串口数据。为了与RS232的电压信号相匹配,在RxD/TxD输入输出引脚与相应的外部RS232连接之间需要有电平转换芯片。
UART传送逻辑含有一个7位、8位或9位的txdata保持寄存器。传送移位寄存器直接连接到TxD数据引脚,数据的LSB首先移出到TxD。传送逻辑可以自动根据RS232通信协议在连续的TxD数据流中插入正确的开始位、停止位和奇偶校验位。UART接收逻辑含有一个7位、8位或9位的接收移位寄存器,以及一个7位、8位或9位的rxdata保持寄存器。可以通过软件直接读取rxdata保持寄存器。接收逻辑根据RS232通信协议在连续的RxD数据流中自动检测正确的开始位、停止位和奇偶校验位。
UART产生一个IRQ输出信号作为其Avalon总线接口的一部分。当一个或多个内部条件发生,并且对应的control寄存器的中断允许位也为1时,UART发出一个中断请求。在复位时,所有的中断允许位设置为0。因此,只有软件将一个或多个中断允许位设置为1时,UART才能发出中断请求。UART模块与总线接口如图2所示。其中,address为相对地址,irq为中断请求信号,chipselect为片选信号,dataavaliable为接收数据线有效信号,readyfordata为接收数据字准备完毕信号,begintransfer为开始发送数据信号。
图2 UART模块与总线接口图
2.3 AVALON总线与用户自定义逻辑控制算法模块
AVALON总线主要用于连接片内处理器与外设,以构成可编程单芯片上系统(SOPC)。它描述了主从构件间的端口连接关系,以及构件间通信的时序关系。AVALON总线拥有多种传输模式,以适应不同外设的要求。AVALON总线的基本传输模式是在一个主外设和一个从外设之间进行单个字节、半字或字的传输。当一次传输结束后,不论新的传输过程是否还是在同样的外设之间进行,AVALON总线总是可以在下一个时钟周期立即开始另一次传输。AVALON总线支持多个总线主外设,允许单个总线事务中在外设之间传输多个数据单元。这一多主设备结构为构建SOPC系统提供了极大的灵活性,并且能适应高带宽的外设。AVALON总线是为SOPC环境而设计,互连逻辑由PLD内部的逻辑单元构成。
AVALON总线还包括许多其他用以支持SOPC Builder软件自动生成系统、总线和外设的特性和约定。如,最大4GB的地址空间,内置地址译码,多主设备总线结构,采用向导帮助用户配置系统,动态地址对齐等。
为了实现快速实时系统,控制器神经网络控制算法采用硬件电路实现,作为用户自定义的IP组件以外围算法加速器的形式连接到系统总线上。并行输入输出(PIO)模块是1至32位的并行输入/输出模块。采用PIO作为软件和用户自定义逻辑之间的存储器映像接口。控制字控制算法模块的运行,状态字0表示控制算法模块正在运行,状态字1表示输入寄存器有否新的输入,状态字2表示输出寄存器有新的输出,当控制器有新的输出结果时,置为高。输入寄存器,包含用户温度给定值和检测到的系统输出值,软件可写入寄存器,同时置状态字1高;输出寄存器,为控制输出,软件可读出其值,同时置状态字2低
2.4 定时器
SOPC Builder能自动生成定时器模块的源码以及相应的软件接口子程序,系统集成方便。NIOS定时器模块是32位的内部定时器。软件可以通过写控制寄存器来操作定时器,还可以读取内部计数器值。定时器模块可以生成中断请求信号,也可以用内部控制位进行中断屏蔽。
软件可以通过以下方式控制定时器:预置periodl和periodh寄存器设定定时器周期,设置control寄存器的start和stop位来允许或禁止中断,通过设置control寄存器的ito位来允许或禁止中断,通过设置control寄存器中的cont位设定定时器的工作模式(定时器还是计数器)。NIOS定时器由系统主时钟(clk)驱动,NIOS CPU和其他外设也使用该时钟信号。该时钟同时驱动软件接口寄存器和内部计数器。
3 控制器软件设计
在SOPC Builder开发工具中给各硬件模块设置属性,分配物理地址,配置存储空间的大小,生成硬件系统。接着进行软件应用程序开发,并为各外设模块编写软件驱动。
1.控制命令输入子程序
现场控制命令输入使用6个按键模拟遥控器输入。
按键输入采用中断响应机制,NIOS处理器中断机制最多允许64个异常,包括外部硬件中断源、内部异常源和直接软件异常。按键中断服务程序完成把新命令状态字(6bits)读入命令缓冲区,同时把新命令状态位置为高。
2.串行通信接口子程序
串口通信采用中断响应机制,中断服务程序完成数据包头的检测,数据包的接收,校验,并给新数据包接收标志位置高。串口数据包解码子程序,去除包头包尾,解读命令码,执行相应处理程序。本子程序测试在实验板上进行,实现与PC机串口通信。实验过程为,从PC机上串口调试器软件发送一组数据包到实验板上,实验板上系统接收数据包并校验,解读。如果检验码正确,则再把改数据打包加上校验和,发送到PC机上。
3.控制器应用程序设计
控制器顶层软件应用程序流程图如图3所示。
图3 应用软件流程图
初始化完成温度给定值设置,显示寄存器设置初值等工作,设备检测完成检测各外设是否完好,否则发出错信号。接着,检查新按键状态位,看是否有新的按键命令输入,如果有,则调用按键处理子程序,否则继续检查是否有新数据从串口输入,如果有,则调用串口数据处理子程序,否则进入A/D采集程序,把采集到的现场温度值与给定值比较,如果差值不在允许范围内,则调用智能算法模块,否则返回。