0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于VHDL、FPGA实现智能控制器的设计与开环测试

电子设计 来源:郭婷 作者:电子设计 2019-01-07 08:39 次阅读

1 引 言

随着市场需求的增长,超大规模集成电路的集成度和工艺水平不断提高,在一个芯片上完成系统级的设计已成为可能。FPGA固有的并行运算处理能力,使得它能够提供各种数字化所需要的大量复杂运算,适合于设计一些对处理速度和实时性要求较高的智能控制器。近几年,基于VHDL描述,FPGA实现的控制器设计研究比较活跃,如Torralba等人完成了4输入、12个隶属度、64条规则的模糊逻辑控制器的FPGA实现,Cirstea等人基于FPGA设计模糊控制器,成功的用于变速器的控制。另外,由于FPGA设计的灵活性和通用性,使得基于FPGA的控制器开发效率高,成本低,上市时间短。

由于FPGA在智能控制器方面的大量使用,设计后的测试便成了设计者在开发过程中必须重点考虑的问题,同时,一种好的测试方法不仅能及早发现设计中存在的问题,而且能提高设计的可靠性。目前基于VHDL描述的智能控制器测试一般是通过开环时序仿真来验证其逻辑设计的正确性,而对于一些输入激励信号不固定或比较多的智能控制器来说,开环时序仿真并不能确切模拟控制器的激励输入信号。由此,本文在开环时序仿真的基础上提出一种基于QuartusII、DSP Builder和Modelsim的闭环时序仿真测试方法,并借助于某一特定智能控制器的设计对该闭环测试方法进行了较为深入的研究。

基于VHDL、FPGA实现智能控制器的设计与开环测试

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开发。

DSP Builder以Matlab/Simulink的Blockset形式出现,可以在Simulink中进行图形化设计和仿真,同时通过Signal Compiler可以将Matlab/Simulink的设计文件(.mdl)转换成相应的VHDL文件(.vhd),以及用于控制综合与编译的TCL脚本。

Mentor Graphics公司的Modelsim是业界中比较好的仿真工具,其仿真功能强大,支持模拟波形显示,且图形化界面友好,具有结构、信号、波形、进程和数据流等窗口。

通过综合使用上述三种平台,可以很好的规划设计流程,充分利用各个工具的优点,提高开发效率,所得的测试结果也更加可靠。

3 智能控制器的VHDL设计及测试特点

以模糊自整定PID控制器为例,其位置式控制算法为:

ui = Kp ei+Ki T∑ei+Kd/T(ei-ei-1)+u03.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:延迟模块,产生偏差的变化率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],这是目前设计中最常采用的测试方法。

基于Altera公司FPGA器件EP20K200EQC240-1的模糊自整定PID控制器闭环输出时序仿真结果。

其中:clk:系统时钟;clkc:控制器采样时钟;reset:系统复位信号;e:偏差;ec:偏差的变化率;u:控制器输出。

时序仿真结果参数:Total logic elements:1092 / 8,320 ( 25 % );Total memory bits:4096 / 106,496 ( 3% );Clk setup:38.86 MHz;Clkc setup:221.39MHz;Tsu:8.864ns;Tco:7.809 ns。

控制器的激励信号偏差e和偏差变化率ec是通过波形编辑器手工编辑获得,输入比较繁琐,它们值的获取是借助于MATLAB的仿真曲线,因此并不能完全模拟智能控制器的实时激励信号。 为了能更好的模拟控制器的输入行为,使测试结果更加可靠,本文在上述测试基础上,提出一种新的基于FPGA设计工具QuartusII、DSP Builder以及Modelsim的智能控制器闭环时序测试方法。

5 基于FPGA的智能控制器闭环时序测试

在自动控制系统设计中,控制器的设计与测试通常采用闭环控制系统,通过观察对象的输出来判断控制器性能是否符合设计的要求。Altera公司推出的数字信号处理工具DSP Builder,结合MathWorks的Matlab和Simulink,为在QuartusII中所做的设计提供了一种新的测试方法。本次研究采用的测试流程如下:首先,在Matlab的Simulink中用DSP Builder搭建测试模块,运行无误后,用Signal Compiler将(.mdl)文件转换成Modelsim可以识别的TCL脚本文件和VHDL文件,其次,对生成的VHDL文件及TCL脚本进行设置,最后,在Modelsim中运行测试文件,查看测试结果。DSP Builder下模糊自整定PID控制器的模块图如图3所示。图中fpid模块为用户自定义模块,是通过DSP Builder的SubSystemBuilder模块导入的,使用该模块可以方便的将QuartusII中VHDL设计文件的输入输出引脚信号引入Simulink系统中。

运行Signal Compiler,生成在Modelsim中使用的TCL脚本文件,因为在Simulink中添加的用户自定义模块是以黑盒的形式出现,因此,在该测试环境中要将模糊自整定PID控制器的各个子模块文件添加到TCL脚本文件中,例如要将子模块文件pid.vhd添加到TCL脚本文件中,使用vcom -93 -explicit -work work “$workdir/pid.vhd”即可。

使用DSP Builder时需要注意以下两点:

(1)如果没有使用来自Rate Change库中的锁相环模块PLL,在Simulink设计转换成硬件系统的过程中,DSP Builder将使用同步设计规则,即在设计系统中的所有DSP Builder时序模块(如图3中的Delay1模块)都以单一时钟的上升沿同步工作,这个时钟频率即为整个系统的采样频率。对于这些模块,其时钟引脚都不会直接显示在Simulink设计图上,但当使用Signal Compiler将设计转化为VHDL文件时,系统会自动地把时序模块的时钟引脚都连在一起,并与系统的单一时钟相接。

(2)将一个已经定制完成的VHDL设计实体加入到DSP Builder设计系统中时,即使在原设计中已经使用了同步复位和时钟信号,也必须在该实体中定义同步清零和时钟输入信号。而且,这两个输入信号必须与目标器件的全局时钟引脚和全局同步清零引脚相接。如果实体不需要时钟或全局同步清零脚,也应当定义这些输入信号,只是不要连接。

以被控对象G(s)=4.71×e-0.15s/(0.4s+1)(1.2s+1) 为例,考虑到A/D、D/A的影响,加入零阶保持器(1-e-TS)/S,Modelsim中闭环控制系统的输出曲线如图4所示,系统的给定值为127(相对增益为0.992),输出值从0上升到峰值148(相对增益为1.156)后迅速回落,最后稳定在127,测试结果与MATLAB的仿真结果基本相同。

6 结论

(1)基于FPGA构建智能控制器具有设计灵活、能在线调整、可靠性高,开发周期短等优点。特别适于中小型系统。

(2)利用QuartusII进行智能控制器的VHDL设计,通过DSP Builder和Modelsim对在QuartusII中所做的设计进行闭环测试,解决了测试样本的输入源以及控制器的输入样本提取问题,能有效模拟控制器的输入行为,提高了设计及测试的灵活性,同时,测试结果可靠且更有说服力。

(3)使用DSP Builder和Modelsim使我们摆脱了以往的测试习惯,控制器的激励输入信号可以方便的调用Simulink的模块,对象也可以根据需要灵活改变,不需要再用VHDL语言编写,而且Modelsim支持信号的模拟波形显示,使我们能够看到最直观的图形。

(4)测试在系统设计中占有举足轻重的作用,它贯穿整个设计的始终,采用闭环时序测试方法,结合DSP Builder和Modelsim完成智能控制器各个阶段的测试经实验验证是一较好的测试方法,适合于像控制器这类需闭环检验其控制品质的设计。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1624

    文章

    21608

    浏览量

    601073
  • 控制器
    +关注

    关注

    112

    文章

    16073

    浏览量

    176968
  • vhdl
    +关注

    关注

    30

    文章

    816

    浏览量

    128040
收藏 人收藏

    评论

    相关推荐

    环路测试仪测的是开环还是闭环

    的输出不反馈到输入端的系统。在这种系统中,控制器根据输入信号直接产生输出信号,而不考虑输出信号对系统的影响。开环系统的特点是结构简单,成本较低,但控制精度和稳定性较差。 闭环系统 闭环系统,又称为反馈
    的头像 发表于 09-12 14:39 283次阅读

    【招聘】verilog vhdl FPGA

    1.熟悉FPGA架构及应用,熟悉图像算法的FPGA实现。 2.熟悉verilog vhdl,熟悉Xilinx或Intel等开发工具。 3.有AI算法
    发表于 09-02 15:50

    EasyGo实时仿真丨三相永磁同步电机开环实验仿真应用

    直接运行在Simulink中构建的控制算法模型,为高精度控制系统开发提供了有效测试环境,加快了开发周期并降低了风险。本篇中用户利用CBox快速原型控制器进行三相永磁同步电机的
    发表于 08-23 09:58

    什么是开环控制什么是闭环控制 开环和闭环控制有何主要区别

    于系统的输出反馈。在开环控制系统中,控制器根据输入信号直接产生控制作用,而不考虑系统的输出状态。 开环
    的头像 发表于 08-23 09:33 1706次阅读

    闭环控制开环控制的应用场景有哪些

    。在这些系统中,控制输入与输出之间没有反馈回路,控制器根据输入信号直接控制执行的输出,而不需要考虑系统的动态特性。 低成本系统 开环
    的头像 发表于 08-23 09:29 1234次阅读

    开环控制与闭环控制的优缺点有哪些

    被控对象,而不受被控对象状态的影响。 优点 (1)结构简单:开环控制系统的结构相对简单,易于设计和实现。 (2)成本较低:由于开环控制系统没
    的头像 发表于 08-23 09:26 1598次阅读

    开环控制和闭环控制的特点是什么

    定义 开环控制是一种控制系统,其中控制器的输出仅依赖于输入信号,而不受系统输出的影响。在开环控制
    的头像 发表于 07-30 09:28 740次阅读

    开环控制与闭环控制的区别是什么?

    控制,而不需要考虑系统的反馈信息。在开环控制系统中,控制信号的生成和执行是单向的,即从控制者到执行
    的头像 发表于 07-30 09:25 1643次阅读

    运动控制器控制形式有哪些

    运动控制器是现代工业自动化和机器人技术中的核心组件,负责对机械系统进行精确的控制和调度。运动控制器控制形式多种多样,每种形式都有其特定的应用场景和优势。以下是对运动
    的头像 发表于 06-13 09:23 596次阅读

    基于FPGA的SPI Flash控制器的设计方案

    SOC芯片的功能模块。SPI Flash控制器采用VHDL语言进行编写,在Modelsim 6.5g上通过功能仿真,并且在XUPV5-LX110TFPGA开发板上通过硬件测试
    发表于 06-03 10:13

    集中电源控制器智能家居中的应用

    集中电源控制器智能家居中也有广泛的应用。随着智能家居的普及,各种家电设备、照明系统、安防系统等都需要电源支持,而集中电源控制器可以提供集中、高效的电源管理方案。 集中电源
    的头像 发表于 01-30 15:05 687次阅读
    集中电源<b class='flag-5'>控制器</b>在<b class='flag-5'>智能</b>家居中的应用

    正弦脉宽调制电压源逆变器的开环控制设计实现

    本实例展示了正弦脉宽调制电压源逆变器(SPWM VSI)的开环控制实现
    的头像 发表于 12-05 16:06 1512次阅读
    正弦脉宽调制电压源逆变器的<b class='flag-5'>开环</b><b class='flag-5'>控制</b>设计<b class='flag-5'>实现</b>

    基于FPGA的USB接口控制器设计(VHDL

    由于 PDIUSBD12 在读写时序上有时间限制,例如每次读写操作之间的间隔不能小于 500ns,而 FPGA 的系统时钟一般频率都比较高,所以不能直接使用系统时钟控制 PDIUSBD12,必须进行分频。分频模块的功能就是按照
    发表于 12-02 10:31 1463次阅读
    基于<b class='flag-5'>FPGA</b>的USB接口<b class='flag-5'>控制器</b>设计(<b class='flag-5'>VHDL</b>)

    使用FPGA实现一个直流有刷电机控制器

    本篇文章将介绍如何使用FPGA实现一个直流有刷电机控制器,主要包括 速度控制 和 角度控制(好像在无刷电机
    的头像 发表于 11-08 09:30 978次阅读
    使用<b class='flag-5'>FPGA</b><b class='flag-5'>实现</b>一个直流有刷电机<b class='flag-5'>控制器</b>

    基于VHDL的洗衣机控制器的设计

    电子发烧友网站提供《基于VHDL的洗衣机控制器的设计.pdf》资料免费下载
    发表于 11-07 10:28 2次下载
    基于<b class='flag-5'>VHDL</b>的洗衣机<b class='flag-5'>控制器</b>的设计