基于FPGA的智能控制器设计及测试方法研究
发布时间:2008/5/28 0:00:00 访问次数:503
1 引 言
随着市场需求的增长,超大规模集成电路的集成度和工艺水平不断提高,在一个芯片上完成系统级的设计已成为可能。fpga固有的并行运算处理能力,使得它能够提供各种数字化所需要的大量复杂运算,适合于设计一些对处理速度和实时性要求较高的智能控制器。近几年,基于vhdl描述,fpga实现的控制器设计研究比较活跃,如torralba等人完成了4输入、12个隶属度、64条规则的模糊逻辑控制器的fpga实现[1],cirstea等人基于fpga设计模糊控制器,成功的用于变速器的控制[2]。另外,由于fpga设计的灵活性和通用性,使得基于fpga的控制器开发效率高,成本低,上市时间短。
由于fpga在智能控制器方面的大量使用,设计后的测试便成了设计者在开发过程中必须重点考虑的问题,同时,一种好的测试方法不仅能及早发现设计中存在的问题,而且能提高设计的可靠性。目前基于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控制。
其中:control:控制模块,产生存储器内数据的读写地址;ram:存储模块,存储外部采集来的数据;accum:累加模块,累加10次,读进存储器的数据;max_min:求max/min模块,对采集来的数据进行最大最小值求解;sub:减法模块,剔除max/min;average_8:滤波模块,对剔除后的数据进行8次平均滤波;compare:比较模块,与给定值相比较,产生偏差e;delay:延迟模块,产
1 引 言
随着市场需求的增长,超大规模集成电路的集成度和工艺水平不断提高,在一个芯片上完成系统级的设计已成为可能。fpga固有的并行运算处理能力,使得它能够提供各种数字化所需要的大量复杂运算,适合于设计一些对处理速度和实时性要求较高的智能控制器。近几年,基于vhdl描述,fpga实现的控制器设计研究比较活跃,如torralba等人完成了4输入、12个隶属度、64条规则的模糊逻辑控制器的fpga实现[1],cirstea等人基于fpga设计模糊控制器,成功的用于变速器的控制[2]。另外,由于fpga设计的灵活性和通用性,使得基于fpga的控制器开发效率高,成本低,上市时间短。
由于fpga在智能控制器方面的大量使用,设计后的测试便成了设计者在开发过程中必须重点考虑的问题,同时,一种好的测试方法不仅能及早发现设计中存在的问题,而且能提高设计的可靠性。目前基于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控制。
其中:control:控制模块,产生存储器内数据的读写地址;ram:存储模块,存储外部采集来的数据;accum:累加模块,累加10次,读进存储器的数据;max_min:求max/min模块,对采集来的数据进行最大最小值求解;sub:减法模块,剔除max/min;average_8:滤波模块,对剔除后的数据进行8次平均滤波;compare:比较模块,与给定值相比较,产生偏差e;delay:延迟模块,产