FPGA直流电机控制系统设计.

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

中文摘要
直流电机具有良好的启动和调速性能,被广泛地应用于对启动和调速有较高要求的拖动系统。

本设计介绍了基于FPGA用PWM实现直流电机调整的基本方法,直流电机调速的相关知识,及PWM调整的基本原理和实现方法。

重点介绍了基于FPGA用软件产生PWM信号的途径,输出的PWM波形具有频率高、占空比调节步进细的优点。

对直流电机调速的实现提供了一种有效的途径。

关键词:直流电机 PWM 频率计
Abstract
This paper introduces a kind of method of DC —motor speed modification based on PWM theory bythe FPGA.Showing some relative knowledge upon the DC—motor timing,the basic theory and the way to implement.And it emphasizes on the way for carrying out PWM signals based on FPGA.This PWM signals advatages base it’s high frequency and duty cycle stepping fine adjustment.It offers a sort ofeficient method for the DC motor speed—controlling system.
Keyword:DC —motor PWM Cymometer
目录
引言 (1)
第一章:设计方案及系统分析 (2)
1.1 系统的实现及参数的要求 (2)
1.2 直流电机调速原理 (2)
1.3 PWM基本原理设计方案 (3)
1.3.1 PWM基本原理 (3)
1.3.2 PWM波形的设计方案 (4)
1.4 系统的外围硬件及其与FPGA的接口电路 (5)
1.5 系统的工作流程 (6)
第二章、硬件设计 (8)
2.1、电源模块的设计 (8)
2.2、电机驱动模块 (9)
2.3、电机转速测量模块 (10)
2.4、按键输入模块 (11)
2.5、LED显示模块 (12)
第三章、系统软件设计及分析 (14)
3.1、频率计的设计 (14)
3.2、数据显示的程序设计 (16)
3.3、PWM波形发生器的程序设计及分析 (18)
3.4 PID控制模块 (19)
3.5 键盘输入模块 (25)
第四章.核心器件及开发环境的介绍 (27)
4.1 FPGA核心板的介绍 (27)
4.2四电压比较器LM339简介 (28)
4.3开发环境 Quartus II 7.0 介绍 (30)
第五章系统调试 (32)
5.1 硬件电路的调试 (32)
5.1.1 电源电路 (32)
5.1.2 显示电路的调试 (32)
5.2 系统软件调试 (33)
5.2.1消抖电路参数的调整 (33)
5.2.2 PWM波形参数的设计 (33)
5.2.3 比较器的设计 (34)
5.2.3PID控制器的参数设计 (34)
5.2.4系统的最终实现 (35)
结束语 (36)
致谢 (37)
参考文献 (38)
引言
电机是电动机和发电机的统称,是一实现机电能转换的电磁装置。

拖动生产机械,将电能转换为机械能的电机称为电动机;作为电源,将机械能转换为电能的电机称为发电机。

由于电流有交流、直流之分,所以电机也就分为交流电机和直流电机两大类。

在各类机电系统中,由于直流电机具有良好的起动、制动和调速性能,直流调速技术已广泛运用于工业、航天领域的各个方面。

直流电机具有良好的启动和调速性能,被广泛地应用于对启动和调速有较高要求的拖动系统,例如电力牵引、轧钢机、起重设备等。

小容量的直流电动机在制动控制系统中的应用也很广泛。

本设计的课题为基于FPGA 的直流电机调速系统。

最常用的直流调速技术是脉宽调制(PWM)直流调速技术,它具有调速精度高、响应速度快、调速范围宽和耗损低等特点。

系统采用PWM调节实现对电机的调速,采用红外发射接收对管采集电机转速。

FPGA 系统内部进程工作在并行的状态下,各子进程相互独立,输出的PWM波形具有频率高,占空比调节步精密的特点。

高频率的PWM波形对直流电机工作的稳定起着极其重要的作用,尤其在高负载的调速系统中体现的优越性极其明显,频率越高电机运行越平稳。

另外,对PWM 波形输出占空比的调节步进细分的特点大大的扩大了调速系统的调速范围。

本设计中主要研究FPGA产生PWM波形的优越性并对其进行验证,并且针对FPGA系统进行等精度频率测量的高精度性进行验证。

第一章:设计方案及系统分析
1.1 系统的实现及参数的要求
本系统是基于FPGA 的直流电机闭环控制系统。

要求系统能用按键设定电机的工作转速,并在系统工作时可以通过外部设定改变电机的转速。

当电机的负载变化时,系统通过检测电机转速的变化对电机的转速进行PID 调节,迅速调整电机的转速稳定工作在设定的工作频率。

要求系统工作稳定在设定值偏差1HZ 范围内。

1.2 直流电机调速原理
根据励磁方式不同,直流电机分为自励和他励两种类型。

不同励磁方式的直流电机机械特性曲线有所不同。

对于直流电机来说,人为机械特性方程式为
[1]
20n
ad a e
n
e
t
n
U n T n R R
n K K K +=
-
=-∆Φ
Φ
(1.1)
式中:
n
U
、0n ——额定电驱电压、额定磁通量 e
K 、t K ——与电机有关的常数 ad
R
、a R ——电机外加电阻、电机内阻
n
、n ∆ ——理想空载转速、转速降
分析(1.1)式可得.当分别改变n U 、n Φ和a R 时,可以得到不同的转速n ,从而实现对速度的调节。

由于()f f I Φ=↓当改变励磁电流f I 时,可以改变磁通量的大小,从而达到变磁通调速的目的。

但由于励磁线圈发热和电动机磁饱和的限制,电动机的励磁电流f I If 和磁通量Φ 只能在低于其额定值的范围内调节,故只能弱磁调速。

而对于调节电枢外加电阻R 时,会使机械特性变软,导致电机带负载能力减弱。

对于他励直流电机来说,当改变电枢电压Un时,分析人为机械特性方程
n随电枢电压升降而式,得到人为特性曲线如图1—1所示。

理想空载转速
发生相应的升降变化。

不同电枢电压的机械特性曲线相互平行,说明硬度不随电枢电压的变化而改变,电机带负载能力恒定。

当我们平滑调节他励直流电机电枢两端电压时,可实现电机的无级调速。

基于以上特性,改变电枢电压,实现对直流电机速度调节的方法被广泛采用。

改变电枢电压可通过多种途径实现,如晶闸管供电速度控制系统、大功率晶体管速度控制系统、直流发电机供电速度控制系统及晶体管直流脉宽调速系统等。

图 1—1 直流电机机械特性曲线
1.3 PWM基本原理设计方案
1.3.1 PWM基本原理
PWM是通过控制固定电压的直流电源开关频率,从而改变负载两端的电压,进而达到控制要求的一种电压调整方法。

PWM可以应用在许多方面,如电机调速、温度控制、压力控制等。

在PWM驱动控制的调整系统中,按一个固定的频率来接通和断开电源,并根据需要改变一个周期内“接通”和
“断开”时间的长短。

通过改变直流电机电枢上电压的“占空比”来改变平均电压的大小,从而控制电动机的转速。

因此,PWM 又被称为“开关驱动装置”。

如图1—2所示,在脉冲作用下,当电机通电时,速度增加;电机断电时,速度逐渐减少。

只要按一定规律,改变通、断电的时间,即可让电机转速得到控制。

设电机始终接通电源时,电机转速最大为max V ,设占空比为1t D T
=,则电机的平均速度为
[2]
max .d D V V = 式中,
d
V —— 电机的平均速度;
max
V
——电机全通电时的最大速度。

1
t D T
=
,——占空比。

图 1—2 电驱电压“占空比”与平均电压关系图
1.3.2 PWM 波形的设计方案
如果采用CPU 控制产生PWM 信号,一般的PWM 信号是通过模拟比较器产生的,比较器的一端接给定的参考电压,另一端接周期线形增加的锯齿波电压。

当锯齿波电压小于参考电压时输出低电平,当锯齿波电压输出电压大于参考电压时输出高电平。

改变参考电压就可以改变PWM 波形中高电平的宽度。

若用单片机产生PWM 波形信号,需要通过D/A 转换器产生锯齿波电压和设置参考电压,通过外接模拟器输出PWM 波形,因此外围电路比较复杂。

FPGA 中的数字PWM 控制与一般的模拟PWM 控制不同。

用FPGA 产生PWM 波形,只需要FPGA 内部资源就可以实现。

用数字比较器代替模拟比较器,数字比较器的一端接设定值计数器输出,另一端接线性递增计数器输出。

当线性计数器的计数值小于设定值时输出低电平,当计数值大于设定值时输出高电平。

与模拟控制相比,省去了外接D/A 转换器和模拟比较器的,FPGA 内部连线很少、电路更加简单、便于控制。

脉宽调制细分驱动电路的关键是脉宽调制,转速的波动随着PWM 脉宽细分数的增大而减小。

针对FPGA 的优越性,本设计采用了Altera 公司的EP2C5Q208C8 FPGA 芯片作为系统的核心控制器件,设计基于FPGA 的直流电机闭环控制系统。

[3]
1.4 系统的外围硬件及其与FPGA 的接口电路
硬件系统由FPGA 核心学习板模块、显示模块、按键输入模块、电机测速模块、直流电机驱动模块组成,如图1—3。

图 1—3 系统硬件框架图
FPGA
按键输入 电机转速采集电路
显示模块
直流电机驱动电路及直流电机
1.5 系统的工作流程
基于FPGA 的直流电机闭环控制系统的系统工作流程框图如图 1—4。

+0.57 -0.57
设定的转速值
+5.7
-5.7
实际转速
光电传感器采集
PWM 按键1
按键2 按键3 按键4

定电机转速
设定频率值显示模块
比较器1 偏差值
比较值A
(PID 控制)
转换为转速值
实际转速显示模

频率计
直流电

H 型直流
电机驱动 开关控制器 消抖电路 按键5
比较器2
(PWM 发生
器)
比较值B 产生器
(PWM 周期调节器)
系统通过FPGA内部产生PWM波形输出到H型驱动电路控制电机的转动,采集电路反馈电机转动的波形到FPGA进行系统分析,形成闭还控制。

显示模块和按键输入独立接到FPGAD的I/O口,显示模块负责显示设定转速和实际测量到的转速。

按键输入模块对系统内部信号进行设置。

工作流程为:检测到电机工作脉冲,将其转换为实际转速M,实际转速M与通过键盘设定好的设定转速N比较并且分析,得出偏差值Q,内部的PID调节器对偏差Q和M,N进行分析,输出调节比较器2(PWM波形发生器)的比较值的信号。

比较器2输出的PWM波形接到电机开关控制器,电机控制器的输出由输入按键5控制。

开关控制器开时输出PWM波形到H型驱动电路驱动电机工作。

第二章、硬件设计
2.1、电源模块的设计
本系统的电源设计采用2个独立电源供电,核心控制部分采用5V ,3.3V 供电,先输出5V 电压满足部分外围硬件工作电压,再将5V 电压转为3.3V 稳压输出满足FPGA 系统工作电压。

H 型电机驱动电路采用15V 电压供电。

两电源的接口通讯部分采用光电偶合器PC817实现。

电源原理图如图2—1
[4]

图2—1中两电源不共地,IN1,IN2分别为隔离变压器输入的交流电压,经过整流二级管整流后输出直流电压,经4700u 的滤波电容后得到平稳的直流电压,最后经过三端集成稳压器后在OUT1,和OUT2分别输出+5V 和+15V 的直流电压。

0.1u 的瓷片电容的作用是滤除电源高频成分,滤除直流电源对电子系统的影响。

12
IN1
Header 2
12
IN2
Header 2
D1Diode 1N4007D2Diode 1N4007D3Diode 1N4007
D4Diode 1N4007
D5Diode 1N4007D6Diode 1N4007D7Diode 1N4007
D8Diode 1N4007
1uF
C1
Cap Pol1100u
C2
Cap Pol14700u
C3
Cap Pol1100u
C4
Cap Pol1IN
1
2
OUT
3
GND
U1MC7805BT
IN
1
2
OUT 3
GND
U2MC7815BT 4700u
C5
Cap 0.1uF C56Cap 0.1uF
C7
Cap 0.1uF
C8Cap 12OUT1Header 2
12OUT2Header 2
+5V
+15V
图 2—1 电源设计原理图
2.2、电机驱动模块
电机驱动采用H型乔氏驱动电路[5]
,该电路可通过PWM控制电机转速和控
制电机方向。

电路图如图2—2:电路与FPGAI/O接口部分采用光偶隔离,通过控制光电偶合器U1,U2的红外发光二级管的亮与灭来控制控制U1,U2的导通与截止。

如下图:当A、B的电平分别为1和0时,U1,Q1,Q3截止,U2,Q2,Q4导通,电流方向为:
15VQ2M1M2Q4地,电机正转;若A、B的输出电平分别为0和1时,U1,Q1,Q3导通,U2,Q2,Q4截止,电流方向为:
15VQ1M2MQ3地,电机反转。

图2—2 H型直流电机驱动电路
2.3、电机转速测量模块
由于在本系统设计中用由无刷直流电机组成的风扇来模拟,所以检测电机转速是通过在风扇的扇叶的两端分别装上一个红外线发射二级管和一个红外线接收管[6]。

硬件电路如图2—3。

工作流程为:当扇叶挡住红外发射对管时,接收管Q截止,由LM339构成的比较器的5脚正端输入得到的是接近5V的高电平。

假设比较器的负端输入电压为3.8V,则比较器输出端IO输出高电平。

反之,当红外收发对管没有被煽叶挡住的时候,接受管接受到DS发出的光而导通,在导通的情况下,比较器5脚的正端输入电压被拉低到0.3左右,比4脚的3.8V电压低,从而使LM339的输出端2脚输出低电平。

由此可知,当电机转动的时候,通过红外收发对管结合LM339够成的比较器电路,在比较器输出端IO得到周期随电机转速的变化而变化的方波,通过FPGA内部的频率计检测该波形可以转换准确的求出电机的转速。

这样就完成了速度的采集部分。

另外在设计电路的时候,LM339的电源两端并联1个100u的电解电容和一个0.1u 的瓷片电容做为退偶电容,可以消除电源纹波的干扰使电路处于最佳工作状态。

还有一点要说明的是,由于EP2C5的高电平为3.3V所以为了得到高电平为3.3V的方波,必需在LM339比较器的输出端接3.3V的上拉电阻,调试电路的时候必须用示波器观察比较器输出的波形混有杂波,通过加大滤波电容等办法将杂波滤除,从而消除了干扰得到准备的测量值。

图 2—3 LM339比较器模块(测速模块)
2.4、按键输入模块
采用轻触键实现与FPGA的接口[7]。

如图2—4,key1,key2,key3,key4,key5分别与FPGA核心板引出的IO口连接,由于接上了上拉电阻,所以当按键未按下时在FPGA上呈现的是高电平,当按键按下时,按键的两端导通接到地,在FPGA端口上呈现低电平。

FPGA通过检测输入端口的跳变或输入端口的电平状态来对内部信号进行调整。

图 2—4 按键接口电路
2.5、LED显示模块
显示采用2片4位一体共阴极8段数码管显示[8],一片用来显示设定的转速,;另一片用于显示实际采集到的电机的转速。

电路如图2—5,显示采用动态扫描方式实现,数码管的段码并联经过一线流电阻直接接到FPGA的IO口,位选端经过小功率NPN三级管8050实现扫描开关控制。

R1~R8为150
欧姆的限流电阻,R9~R16为4.7K,用与保持三级管基极电压。

当P2输出的位选信号为低电平时,三极管截止,数码管熄灭。

当P2输出信号为高电平时,三极管导通,位选接地,数码管点亮。

数码管扫描显示就是依次单个选通8个位选端,快速的循环显示。

动态扫描不仅节约IO口,而且减少了电源的负载。

P1,P2分别接FPGA核心板引出的IO口。

图 2—5 LED显示模块电路
第三章、系统软件设计及分析
3.1、频率计的设计
对电机转速的测量是通过对LM339输出的脉冲个数在一定闸门时间进行记数。

通过对记数值的转换来得到电机的转速。

由于风扇有的转轴有7片煽叶,所以电机转过一圈产生7个脉冲个数。

在本设计中,闸门时间为0.25秒。

假设在0.25秒的闸门时间内共检测到 N 个脉冲,则可以通过计算得出 电机的转速 F=N*4/7 转/秒。

在频率检测电路中,对脉冲输入检测的消抖电路极其重要消抖进程的时钟参数的设计直接影响到最后频率计得出的频率值。

下面结合消抖进程的仿真波形和VHDL 代码简单介绍消抖电路的工作原理和参数的设计[9]。

RTL 视图:
D
ENA Q
PRE CLR
D
ENA Q
PRE
CLR
dout~0
x
din clk
dout
y
图 3—1 消抖电路RTL 视图 仿真波形:
图 3—2 仿真波形图
消抖进程 VHDL 代码:
library ieee;
use ieee.std_logic_1164.all;
entity doudong is
port(din,clk:in std_logic;
dout:out std_logic);
end doudong;
architecture beha of doudong is
signal x,y:std_logic;
begin
process(clk)
begin
if clk'event and clk='1' then
x<=din;
y<=x;
end if;
dout<=x and (not y);
end process;
end beha;
从RTL视图中可知,该电路是由2个D触发器构成的RS触发器。

进程中CLK为消抖时钟,din 为IO口电平输入,dout为输出信号。

CLK的时间周期的设计直接影响频率计计数的准确行。

从仿真波形可以设计出CLK的周期应为: T<Tclk<Tmin, Tclk为CLK的时钟周期,T为干扰信号的周期,Tmin 为电机达到最大速度时检测到波形信号的周期。

如果Tclk<T 则带入了干扰
信号,没有达到消抖的作用。

如果T>Tmin ,则是消抖过大,把有用的信号滤除掉。

在设计Tclk 时,结合设计电路,不断的测试并对得到的值进行对比将Tclk 的周期设为100us 左右,测量得到准确的频率值。

3.2、数据显示的程序设计
对设定值和实际转速的显示都是经过换算分别求得要显示的数的十位、个位、十分位、百分位的值。

然后经过转换成为BCD 码,最终显示在2片4位一体的共阴极数码管上面。

在换算过程中,是通过编写一个除法器来对要显示的数值进行求余取摸运算。

除法器如图3—2。

由于该除法器只能对2个整数进行进行除法运算,所以对要处理的数乘以100,假设乘以100后得到的数为M (即为图3—3中的a ),则对M 先除以1000(即为下图中的b),得到的商y 和余数rest 。

Y 为十位的数值,rest 为M 求余100得到的值。

接着对rest 除以100即可即可得到个位的位数和余数,即为循环上述的过程,整个显示模块总共调用了3个除法器[10]。

div ider
inst a[14..0]
b[14..0]y [14..0]rest[14..0]
图 3—3除法器电路
除法器VHDL 代码如下:
library ieee;
use ieee.std_logic_1164.all;
entity divider is
generic (n:integer :=14);
port(a,b:in integer range 0 to 32767;
y: out std_logic_vector(14 downto 0);
rest: out integer range 0 to 32767 ); end divider;
architecture rt1 of divider is
begin
process(a,b)
variable temp1:integer range 0 to 32767; variable temp2:integer range 0 to 32767;
begin
temp1:=a;
temp2:=b;
for i in n downto 0 loop
if (temp1>=temp2*2**i) then
y(i)<='1';
temp1:=temp1-temp2*2**i;
else y(i)<='0';
end if ;
end loop;
rest<= temp1;
end process;
end rt1;
3.3、PWM 波形发生器的程序设计及分析
PWM 波形发生器,如图3—4:PWM 的产生是从比较器的输出得到的,通过改变比较器的输入来达到输出周期一定占空比可调的方波。

设计思路为dataa 从0到1024步进加1一直循环,循环的周期即为最终输出的方波的周期。

Dataa 的值从0一直加1加到1024后跳变回到0,从模拟的角度考虑问题,可以把dataa 看成是周期一定的锯齿波。

通过PID 控制器计算,根据反馈的值调整datab 对比较器的输入,从而达到改变输出PWM 占空比的目的。

datab 在系统内部定义为标准逻辑类型 signal:datab std_logic_vector(9 downto 0); 转换成10进制其最大值为1024,但是由于PID 控制器的原因,datab 的取值在转换成10进制后只能在30-994的范围内。

若超出范围,则在调整datab 时 执行 datab<=dadab+30或datab<=data-30语句时,datab 的值益出跳出最大值或最小值,导致输出占空比突然跳变,影响系统的稳定性。

COMPARE inst dataa[9..0]
datab[9..0]
agb unsigned compare
图 3—4 比较器电路(PWM 波形发生器)
3.4 PID 控制模块
根据测量到的实际转速(假设为M )结合设定的转速(假设为N ),对数据进行分析,采用PID 控制算法对决定转速大小的占空比输出进行调整。

控制框图如图3—5: 控制模块包括一个比较器和一个比较值发生器(即为占空比调整器)。

比较值发生器结合偏差来调整输出比较值DATA 。

偏差Q=|M —N|,比较器输出为OUT,当实际值>设定值时 OUT=1;当实际值 设定值时 比较器输出OUT=0;即 当
OUT=1 时,Q=M —N ,当OUT=0时 Q=N —M 。

设定值M 比较器输出 OUT
实际值N
比较值 DATA
图3—5 PID 控制框图
比较器VHDL 代码如下: library ieee;
use ieee.std_logic_1164.all;
entity bijiaoqi is
port(M ,N : integer range 0 to 9999;
outp:out std_logic);
比较器 偏差Q
比较值发生器
end bijiaoqi ;
architecture one of bijiao qi is
begin
process(M,N)
begin
if M>N then outp<='1';
else outp<='0' ;
end if;
end process;
end one ;
PID调节器[11]程序设计流程图如图3—6,当实际值大于设定值时,PID 控制器应该做出反应,相应减小占空比输出。

当实际值小于设定值时,应增加占空比出。

PID控制器根据实际采样跟设定的偏差值Q的不同做出不同的调节,控制器根据Q所落在数据的范围对输出的比较值进行粗调或微调,调节步进可变,步进的取值是经过多次的实际测试得出适当的值。

在本系统中取值为:当Q值>=570时,DATA为调整值,DATAT的调节步进为30,即偏差较大时需要对PWM波形输出的占空比做较大的调整才能达到迅速调节的目的。

当114<Q<570时,DATA调节步进为6,当实际值接近设定值时,应该适当减小调整步进,以免调整过大造成系统工作波动太大。

当57114
<≤时,
Q
实际值逼近设定值,这时应对DATA进行小幅度调节,调节步近为3。

当<≤时,实际值临近设定工作频率,控制器以微小的步进对DATA进行Q
057
调节,步进值为最小值1。

若Q=0 则不对DATA进行调整。

逐次逼近最终使
系统工作稳定在设定值。

由于系统工作负载是动态变化的,所以调节也是随着负载的变化动态调节PWM波形输出。

偏差值Q之所以那么大是因为Q是设定值跟实际值的差求得,但是因为显示部分要对设定值和实际值进行除法运算,由于除法器支持的是整数的运算,所以先把设定值和实际值放大100倍,然后进行处理才能分出十分位、百分位。

由于频率计的记数闸门时间设定为0.25秒,闸门时间中记数值为NUM,系统采用风扇来模拟,电子转过一圈产生脉冲个数X=7。

由此可以换算得出频率F=4*NUM /X,即F=0.57NUM。

所以本系统的调节频率为步进0.57HZ。

若想更细分调节电机的工作频率范围,可以通过提高X 的值来实现。

本系统中X取值为7。

图 3—6 PID 控制流程
YES NO YES YES NO NO YES YES NO NO YES YES NO NO YES NO NO YES 实际值〉设定值? 偏差=实际值—设定值
偏差=设定
值—实际值 偏差〉570? 偏差〉570?
调整值=调整值-30 调整值=调整值+30 114〈偏差〈=570 ? 114〈偏差〈=570 ? 调整值=调整值-6 调整值=调整值+6 57〈偏差〈=114 ? 57〈偏差〈=114 ? 调整值=调整值-3 调整值=调整值+3 0〈偏差〈=57 ? 0〈偏差〈=57 ? 调整值=调整值-1 调整值=调整值+1 调整值保持不变
PID控制器进程的VHDL代码:
---******************************************************
---****************************************************** PROCESS(clk_1hz,power) -- 输出调整
variable BB:std_logic_vector(9 downto 0):="0000111111"; --调整值
--初值为128 BEGIN
IF POWER='0' THEN BB:="0000111111" ; --电机关时调整值发
返回到初值
ELSIF clk_1hz'EVENT AND clk_1hz='1'
THEN --当电机开时(即POWER=1)--根据偏差做调整偏差为0 if chazhi=0 then BB:=BB+0; --不进行调整
elsif chazhi <=57 then --偏差值小于等于57 调整步进为1
IF OUT1='1' THEN BB:=BB-1; --OUT为1表示实际值
大于等于设定
--反之为0
IF BB<"0000100000" THEN BB:="0000100000"; END IF;
--调整值输出最小为 64 else BB:=BB+1;
IF BB>"1111011111" THEN BB:="1111011111"; END IF;
--调整值输出最大值限制在980 end if;
elsif chazhi <=114 and chazhi >57 then
--偏差值大于57且小于等于114 时调整步进为3
if out1='1' then BB:=BB-3;
IF BB<"0000100000" THEN BB:="0000100000"; END IF;
else BB:=BB+3;
IF BB>"1111011111" THEN BB:="1111011111"; END IF;
end if;
elsif chazhi <570 and chazhi>114 then
--偏差值大于114且小于570 时调整步进为 6 if out1='1' then bb:=bb-6;
IF BB>"1111011111" THEN BB:="1111011111"; END IF;
else bb:=bb+6;
IF BB>"1111011111" THEN BB:="1111011111"; END IF;
end if;
elsif chazhi >=570 then
--偏差值大于等于570时调整步进为30 (粗调)
IF OUT1='1' THEN BB:=BB-30;
IF BB<"0000100000" THEN BB:="0000100000"; END IF;
else BB:=BB+30;
IF BB>"1111011111" THEN BB:="1111011111"; END IF;
END IF;
end if;
end if;
if bb ="1111011111" and sheding>pin then led_guozai<='0';
--当调整值达到最大值且实际值小于
--设定值时点亮过载指示灯
else led_guozai<='1' ;
end if;
B<=BB;
END PROCESS;
3.5 键盘输入模块
本设计中总共有5个按件输入。

分别设为 key1, key2, key3, key4, key5。

其中key1, key2, key3, key4为设定值输入键,分别为加0.57,减0.57,加5.7,减5.7。

key5为电机开关控制键。

两个输入模块的程序设计有所不同,FPGA对key1, key2, key3, key4的识别为输入信号电平的判断,进程的始终信号为1HZ,通过检测时钟信号上升沿时输入信号的电平高低来做出反应,当按键未按下时输入信号为高电平,时钟上升沿时参数设置条件不成立。

当按键按下时,输入信号为低电平,时钟信号上升沿时参数设置条件成立,设定值随时钟上升沿到来而按一定步进加或减。

对于key5的检测,是通过检测输入信号的边沿跳变来实现的,既然是检测边沿跳变,则需要加消抖电路滤除干扰。

当检测到输入信号的下降沿时,立即取反内部信号 POWER ,当POWER 为1时电机开,当POWER为0时,电机关,系统上电时初始化信号POWER 默认为0 ,即电机关状态。

key1, key2, key3, key4控制进程代码如下:
---******************************************************
process(CLK_ANJIAN)------按键变化的时间
begin
if CLK_ANJIAN'event and CLK_ANJIAN='1' then
if key1='1' then sheding<=sheding+57;
elsif key2='1' then sheding<=sheding-57;
elsif key3='1' then sheding<=sheding+570;
elsif key4='1' then sheding<=sheding-570;
end if ;
end if;
end process;
---****************************************************** key5控制进程代码如下:
process(key5)
begin
if key5'event and key5='1' then
power<= not power;
end if;
end process;
第四章.核心器件及开发环境的介绍
4.1 FPGA核心板的介绍
在在本系统是基于Altera 公司的 Cyclone II 系列的 EP2C5Q208C8 FPGA芯片[12],该芯片内部有4608个逻辑单元,2个PLL,5个18比特乘18比特乘法器。

核心板的外部输入的有源晶振为50MHZ。

图4-1为EP2C5Q208C8 FPGA芯片的资源结构图。

Altera 在大获成功的第一代Cyclone 系列的基础上,开发了90nm低k 绝缘工艺,1.2V SRAM工艺设计,在300mm 圆晶片上生产的Cylclone II FPGA。

Cylclone II FPGA具有很高的性能和极低的功耗,而价格和ASIC相当,能够提供多种功能,为价格敏感的应用工大批量产品解决方案。

Cylclone II 器件是汽车、通信、消费类、视频处理、测试和测量以及其他终端市场解决方案的理想选择。

用户可以单独使用Cylclone II FPGA 或者作为数字信号处理(DSP)协处理器使用,提高DSP应用的性价比。

Cylclone II 期间含有经过优化的多种DSP 特性,由altera 全面的DSP流程提供支持。

Cylclone II DSP 支持包括:18*18乘法器多大150个
片内嵌入式存储器高达1.1Mbits
DSP IP 核
Math Work 的 Simulink和MATLAB软件DSP Builder 接口
Cylclone II 版DSP开发、套件
Cylclone II 器件提供了4608到68416个逻辑单元,并具有一整套最佳的功能,包括嵌入式18比特乘18比特乘法器、专用外部存储器接口电路、。

相关文档
最新文档