解析基于FPGA的智能控制器设计及测试方法
随着市场需求的增长,超大规模集成电路的集成度和工艺水平不断提高,在一个芯片上完成系统级的设计已成为可能。FPGA固有的并行运算处理能力,使得它能够提供各种数字化所需要的大量复杂运算,适合于设计一些对处理速度和实时性要求较高的智能控制器。近几年,基于VHDL描述,FPGA实现的控制器设计研究比较活跃,如Torralba等人完成了4输入、12个隶属度、64条规则的模糊逻辑控制器的FPGA实现[1],Cirstea等人基于FPGA设计模糊控制器,成功的用于变速器的控制[2]。另外,由于FPGA设计的灵活性和通用性,使得基于FPGA的控制器开发效率高,成本低,上市时间短。
由于FPGA在智能控制器方面的大量使用,设计后的测试便成了设计者在开发过程中必须重点考虑的问题,同时,一种好的测试方法不仅能及早发现设计中存在的问题CONTROL ENGINEERING China版权所有,而且能提高设计的可靠性。目前基于VHDL描述的智能控制器测试一般是通过开环时序仿真来验证其逻辑设计的正确性,而对于一些输入激励信号不固定或比较多的智能控制器来说,开环时序仿真并不能确切模拟控制器的激励输入信号。由此,本文在开环时序仿真的基础上提出一种基于QuartusII、DSP Builder和Modelsim的闭环时序仿真测试方法,并借助于某一特定智能控制器的设计对该闭环测试方法进行了较为深入的研究。
2 FPGA设计与测试平台
研究采用QuartusII4.0、 DSP Builder3.0以及Modelsim SE6.0作为FPGA的设计及测试平台。
QuartusII4.0是Altera公司的第四代可编程逻辑器件集成开发环境,提供从设计输入、设计编译、功能仿真、设计处理、时序仿真到器件编程的全部功能。同时,它可以产生并识别EDIF网表文件、VHDL网表文件和Verilog HDL网表文件,并且为其它EDA工具提供了方便的接口。可以在上面自动运行其它EDA工具,包括Synplicity的Synplify/Synplify Pro、Mentor Graphics子公司Exemplar Logic 的LeonardoSpectrum以及Synopsys的FPGA CompilerII等。这些综合软件能以很高的效率将VHDL/Verilog设计软件转换为针对选定器件的标准网表文件。此外,QuartusII4.0里还集成了一个SOPC Builder开发工具,支持SOPC开发[3]。
DSP Builder以Matlab/Simulink的Blockset形式出现,可以在Simulink中进行图形化设计和仿真,同时通过Signal Compiler可以将Matlab/Simulink的设计文件(.mdl)转换成相应的VHDL文件(.vhd),以及用于控制综合与编译的TCL脚本[4]。
Mentor Graphics公司的Modelsim是业界中比较好的仿真工具,其仿真功能强大,支持模拟波形显示,且图形化界面友好,具有结构、信号、波形、进程和数据流等窗口。
通过综合使用上述三种平台,可以很好的规划设计流程,充分利用各个工具的优点,提高开发效率,所得的测试结果也更加可靠。
3 智能控制器的VHDL设计及测试特点
以模糊自整定PID控制器为例,其位置式控制算法为:
ui = Kp ei+Ki T∑ei+Kd/T(ei-ei-1)+u0 ; 3.1
其中:Kp = kp+tp×△Kp、Ki = ki+ti×△Ki、Kd = kd+td×△Kd为PID控制器实时参数;△Kp、△Ki、△Kd为模糊推理得出的修正值。模糊推理过程采取Mamdani直接推理法,采用质心法求取相应的最终精确值。
基于VHDL描述的模糊自整定PID控制器设计采用自顶向下设计方法,在RTL级对各个单元模块进行设计描述,用结构VHDL将各个单元通过单元映射(PORT MAP)联系起来,组成整个控制器芯片。控制器芯片的核心是控制与运算单元,涉及基本的数据处理、存储和I/O控制。其顶层模块的电路原理图如图1所示。
图1控制器顶层模块电路原理图
其中:control:控制模块,产生存储器内数据的读写地址;ram:存储模块www.cechina.cn,存储外部采集来的数据;accum:累加模块,累加10次,读进存储器的数据;max_min:求Max/Min模块,对采集来的数据进行最大最小值求解;sub:减法模块,剔除Max/Min;average_8:滤波模块,对剔除后的数据进行8次平均滤波;compare:比较模块,与给定值相比较,产生偏差e;delay:延迟模块,产生偏差的变化率ec;fpid:模糊自整定PID控制器模块,产生控制器的输出信号。
本系统中,A/D采用AD574A,其转换速度最大为35μs,转换精度小于等于0.05%。在用VHDL设计A/D的I/O模块时,采用的是状态机描述。状态机分为5个状态:STATE0:实现A/D574的初始化;STATE1:产生片选信号,启动转换;STATE2:STATUS电平监测,状态切换;STATE3:8位输出数据有效;STATE4:由Lock信号对数据进行锁存。
基于VHDL语言描述的智能控制器测试特点是:控制器模块可以作为一个独立模块通过开环时序测试基准对其逻辑功能的正确性进行测试。但是,对于控制系统来说,我们更关心的是在典型输入信号作用下,系统输出的时间响应过程,包括动态过程和稳态过程,因此采用闭环时序测试显得尤为必要。
4 基于FPGA的智能控制器开环时序测试
基于FPGA的智能控制器开环时序测试机理是:通过连接激励实体和在测模块,将在测模块的输出响应值同期望值相比较来验证控制器设计是否符合设计要求,设计者可以用QuartusII软件的波形编辑器产生作为仿真器激励的向量波形文件(.vwf),也可以使用基于文本的向量文件(.vec)作为仿真器的激励。其中VWF使用图形化的波形形式描述了仿真器的输入向量和仿真的输出结果,而VEC则使用一种特殊格式的文件为模块中的输入信号和向量添加激励[5],这是目前设计中最常采用的测试方法。模糊自整定PID控制器开环时序仿真测试如图2所示。
- 在采用FPGA设计DSP系统中仿真的重要性 (06-21)
- 基于 DSP Builder的FIR滤波器的设计与实现(06-21)
- 基于FPGA的快速并行FFT及其在空间太阳望远镜图像锁定系统中的应用(06-21)
- 3DES算法的FPGA高速实现(06-21)
- 用FPGA实现FFT算法(06-21)
- FPGA的DSP性能揭秘(06-16)