原创 基于FPGA的PID算法实现

2011-7-17 14:08 8025 11 9 分类: FPGA/CPLD

    有段时间没来这里写东西。最近稍微有些忙,工程硕士报名了,又有一部分时间给它了。

    言归正传,之前一直在学习PID算法,最近再用FPGA来实现PID控制,目前进行的2个实践一个,一个是温

度控制,和无刷直流电机的控制。

   温度控制是用单闭环的PID算法控制。

   无刷电机控制是用双闭环PI算法,也就是在电机控制里经常提到的电流环和速度环。

   最近抽空初步完成了PID算法的FPGA实现。

   增量式的PID控制理论,这里就不说了,博客里有具体公式。

   整个算法过程说直白点就是公式的硬件实现,用到了altera提供的IP核,整个的设计要注意的时钟的选

取,流水线的应用。

   先上rtl级视图

   20110717140710573.jpg

 

ek1,ek2,ek3 在之前的数据处理模块里做了延迟处理,同时刻下为ek,(ek-1)e(k-2),控制系数和差值

都是10位有符号数,后4位为定点小数位,作为温度测量值和输出pwm控制数据精度尚可满足要求。

算法实现是用增量式PID算法,需要位置式输出,所以最后输出前做了累加处理。

   这个PID算法是用来处理温度,温度反馈值是由ds18b20 测出,由于测温设备的控制时延大概在1s一次,但

PID算法时延只需要几个时钟周期在微秒级别,所以在这里做了个时能信号ds_en,ds18b20 测完一次温度值后

时能拉高,累加器输出,保证整个数据变化流。

下图是资源消耗图

20110717134901631.jpg

功能仿真图

20110717140732549.jpg

 

仿真做的比较简单,只取了几个简单的数值,第一次做算法类处理,望有经验的看客多多提出建议。

 

PARTNER CONTENT

文章评论3条评论)

登录后参与讨论

用户377235 2016-4-4 17:50

你这篇文章也太简单了吧,图片还不清晰,大概只有你自己能看明白,别人几乎获取不到有价值的信息

用户377235 2014-4-12 22:36

不错,最近想做这部分

用户432610 2013-9-28 15:10

你好,请问这个是用dsp builder搭建的吗?
相关推荐阅读
用户1631420 2011-12-06 08:42
改版了!
很久很久没上edn了~ 改版了,有点不习惯了。 很多事情冲着我来了。可能是每个这个年龄段的人都会遇到的 我不知道我处理的好不好。但我还是按照我的意志去做了。 工作上的事情 突如其来...
用户1631420 2011-06-05 12:12
基于ds18b20 的fpga 温度计
作为恒温控制系统选择的前端温度测量模块,ds18b20的控制相对麻烦点,相关ds18b20的资料可以查看手册。 整体模块划分   pll分频模块,25mhz晶振 倍到50 mhz在分频1mhz,1us...
用户1631420 2011-06-02 17:22
随便聊聊~
       年也过完了,2010年对于我自己来说风起云涌,变化不测啊~       今年27了,一事无成。偶然之间在单位图书馆翻到一本fpga的杂志,颇有兴趣,于是找到了这里。      申请用户,...
用户1631420 2011-05-26 13:33
fpga设计流程图
...
用户1631420 2011-05-26 12:47
for循环与阻塞赋值
   阻塞赋值和非阻塞赋值是verilog里一个难点,也是重点,相关区别各大论坛博客里都有详细的讲解。       先说几个经验上的要点。       在时序逻辑里都采用非阻塞赋值,在组合逻辑里采用阻...
EE直播间
更多
我要评论
3
11
关闭 站长推荐上一条 /3 下一条