编辑: gracecats | 2019-07-11 |
1006 - -
2010 年8月锦晓曦等:基于 FPGA 的模糊 PID 控制器实现 运算的准确性. 通过 ISE 软件的综合工具, 可以得到 PID 仿真模块, 其中: kp, ki, kd 分别为比例、 积分与微分系数;
rk 为设定 值 (在实际系统测试时, 它是通过宏定义进行内给定 ) ;
yk 为实际值;
clk 为时钟信号;
pidout 为输出信号. 设定 rk=100, yk=80, 得到的行为仿真结果如图 4. 从仿真的结果可以看到, 从输入到输出只要经过
4 个时钟周期, 因此该控制器的运算时间是
4 个时钟 周期, 在实际系统的测试时, 系统的晶振为
50 MHz, 时 钟周期为
20 ns, 所以该控制器的速率为
80 ns . 相比 纯软件上实现 PID 算法, 速度要快很多.
3 模糊控制器的 FPGA 实现 3.1 模糊控制概述
1965 年, 美国的 L. A. Zadeh 教授提出了模糊集理 论[6] .
1974 年英国工程师 E.H. Mamdani 首次把模糊集理论应用于锅炉和蒸气机的控制, 并得到成功, 这一 开创性的工作标志着模糊控制工程的诞生[7] . 模糊控制以模糊规则为基础, 用隶属函数和模糊运算实现模 糊推理过程, 以其强大的知识表达能力和处理能力在一些复杂系统中显示出了很强的优越性. 对于模糊控制器的 FPGA 实现从总体的设计思想上来讲有
3 种: ①FPGA 上的直接硬件实现法. 这种方法 是将模糊控制器的模糊化、 模糊推理、 以及解模糊
3 个模块完全在 FPGA 上利用硬件实现. ②联合 MATLAB 的间接实现法. 这种方法区别于第一种的地方是模糊推理与解模糊都借助于 MATLAB 的模糊工具箱进行推 理, 并且获得了输出查找表, 而在 FPGA 上所要完成的工作是将这些输出查找表利用 FPGA 的可编程性将 其加载到其中所设计的 ROM 中, 然后再利用查表的方法获得输出 . ③利用 FPGA 上固化的处理器或者软 核处理器进行设计. 这样一种设计方法与平常的通用处理器上的设计基本相同, 而相比通用处理器的实现, 这种实现方法可以比较容易的改变外部接口, 可以根据自己的需求设计实现所要用的接口, 并且这样一种 SOPC 设计可以减少外围电路, 减小电路板的体积. 3.2 联合 MATLAB 的间接实现法 3.2.1 实现方法描述 通过 MATLAB 的模糊工具箱的 GUI, 设定模糊控制器为两输入三输出的控制器, 通过 GUI 界面 修改隶属度函数与模糊控制规则表, 所有输入输出所用的隶 属度函数都是一样, 然后通过 MATLAB 推理能够得到输出 表, 所得到的输出表存储在 ROM 中, 这样推理结果通过查找 ROM输出得到, 这种查找的方法结构简单, 实施方便, 在线 运行速度快, 设计结构图 5. 3.2.2 程序设计
1 ) 误差生成模块 功能: 通过输入的设定值 rk 与实际值 yk 获得误差信号与误差差值信 号, 端口定义如表
1 . 程序结构如下: module get_e_de (e, de, clk, rk, yk ) ;
input[7: 0] rk, yk;
input clk;
output e, de;
reg [8: 0]e, de;
reg [8: 0]e_1;
reg [8: 0]temp1, temp2, temp3;
always @ (posedge clk ) begin e_1