基于Verilog的课程设计.docx
《基于Verilog的课程设计.docx》由会员分享,可在线阅读,更多相关《基于Verilog的课程设计.docx(14页珍藏版)》请在冰点文库上搜索。
基于Verilog的课程设计
*打
基于Verilog的课程设计
直流电机的PWM控制
指导老师:
翁嘉民
班级:
1031电气自动化技术
成员:
李高峰9112
王俊才9186
孟令朋9143
1.绪论3
直流电机介绍3
1.1.1直流电机的特点3
1.1.2直流电机的应用3
介绍4
介绍4
VerilogHDL便件描述语言5
1.4.1VerilogHDL硬件描述语言介绍5
1.4.2VerilogHDL功能5
PWM脉冲宽度调制介绍6
直流电机的PWM控制7
2.设计原理8
设计原理框图8
原理图9
模块设计9
2.3.1MOTO_TEST模块9
2.3.4计数器模块12
7实训心得13
参考文献13
直流电机的PWM控制器的设计
仁绪论
直流电机介绍
直流电机是实现直流电能与机械能之间相互转换的一种电力机械,按照直流电机的用途分为直流电动机和直流发电机两类。
能够将机械能转换成直流电能的电机称为直流发电机;能够将直流电能转换成机械能的电机称为直流电动机。
111直流电机的特点
从直流电机与交流电机相比中可以看出,直流电机具有优良的调速性能和启动性能。
直流电机具有宽广的调速范围,平滑的无级调速特性,可实现频繁的无级快速启动、制动和反转;过载能力大,能承受频繁的冲击负载;能满足自动化生产系统中各种特殊运行的要求。
而直流发电机则能提供无脉动的大功率直流电源,且输出电压可以精确地调节和控制。
1.1.2直流电机的应用
直流电机是交通、工矿、建筑等行业中的常见动力机械,是机电行业人员的重要工作对象和工具。
在某些要求调速范围广、速度快、精密度高、控制性能优异的场合,直流电机的应用目前仍占有较大的比重,如大型可逆式?
L钢机、内燃机车、矿井卷扬机、造纸和印刷机械、宾馆高速电梯、城市电车、电动自行车、龙门刨床、电力机车、地铁列车、船舶机械、大型精密机床和大型起重机等生产机械中。
介绍
EDA是ElectronicDesignAutomation的简称,从20世纪60年代中期发展开始至今,已经取得了飞跃性的进步,在电子技术设计领域,可编程逻辑器件(如、)的应用,已经非常普及,这些可编程逻辑器件为的设计带来了相当大的灵活性。
这些器件可以通过软件编程而对其硬件结构和工作方式进行重构和改变,这就使得硬件的设计可以如同软件设计那样方便快捷效率高,可编程逻辑器件加快了EDA技术的发展,在现代社会,尤其是电子信息科技行业发展突飞猛进,在化工、机械、电子、通信、医学、航空航天、矿产、生物、军事等各个领域都有EDA的广泛应用,相信在为了社会EDA技术会发展的更加发达。
介绍
FPGA是Field-ProgrammableGateArray的简称,即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。
它是作为(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
FPGA采用了逻辑单元阵列,内部包括可配置逻辑模块、输出输入模块和内部连线三个部分。
FPGA具有一些重要的特点,例如:
采用FPGA设计ASIC电路(),用户不需要投片生产,就能得到合用的芯片;FPGA可做其它全定制或半定制ASIC电路的中试样片;FPGA内部有丰富的触发器和I/O引脚;FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一;FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容。
所以可以这么认为,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。
FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。
用户可以根据不同的配置模式,采用不同的编程方式。
加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA。
掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。
FPGA的编程无须专用的FPGA,只须用通用的EPROM、PROM编程器即可。
当需要修改FPGA功能时,只需换一片EPROM即可。
这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。
因此,FPGA的使用非常灵活。
VerilogHDL硬件描述语言
14.1VerilogHDL硬件描述语言介绍
本文的程序采用VerilogHDL硬件描述语言,VerilogHDL硬件描述语言时目前应用最广泛的硬件描述语言,VerilogHDL可以用来进行各种层次的逻辑设计,也可以进行的逻辑综合,仿真验证和时序分析等。
VerilogHDL适合算法级,寄存器级,逻辑级,门级和版图级等各个层次的设计和描述。
本文就是基于FPGA,产生PWM波形,通过VerilogHDL语言编程实现电机的运转控制的。
1.4.2VerilogHDL功能
VerilogHDL典型的功能,基本逻辑门,例如and、o1•和nand等都内置在语言中。
用户定义原语(UDP)创建的灵活性。
用户定义的原语既可以是组合逻辑原语,也可以是时序逻辑原语。
开关级基本结构模型,例如pmos和nmos等也被内置在语言中。
提供显式语言结构指定设计中的端口到端口的时延及路径时延和设计的时序检查。
可采用三种不同方式或混合方式对设计建模。
这些方式包括:
行为描述方式一使用过程化结构建模;数据流方式一使用连续赋值语句方式建模;结构化方式一使用门和模块实例语句描述建模。
VerilogHDL中有两类数据类型:
线网数据类型和寄存器数据类型。
线网类型表示构件间的物理连线,而寄存器类型表示抽象的数据存储元件。
能够描述层次设计,可使用模块实例结构描述任何层次。
设计的规模可以是任意的;语言不对设计的规模(大小)施加彳北可限制。
VerilogHDL不再是某些公司的专有语言而是IEEE标准。
人和机器都可阅读Verilog语言,因此它可作为EDA的工具和设计者之间的交互语言。
VerilogHDL语言的描述能力能够通过使用编程语言接口(PLI)机制进一步扩展。
PLI是允许外部函数访问Verilog模块内信息、允许设计者与模拟器交互的例程集合。
设计能够在多个层次上加以描述,从开关级、门级、寄存器传送级(RTL)到算法级,包括进程和队列级。
能够使用内置开关级原语在开关级对设计完整建模。
同一语言可用于生成模拟激励和指定测试的验证约束条件,例如输入值的指定。
VerilogHDL能够监控模拟验证的执行,即模拟验证执行过程中设计的值能够被监控和显示。
这些值也能够用于与期望值鼎交,在不匹配的情况下,打印报告消息。
在行为级描述中,VerilogHDL不仅能够在RTL级上迸行设计描述,而且能够在体系结构级描述及其算法级行为上进行设计描述。
能够使用门和模块实例化语句在结构级进行结构描述。
在VerilogHDL的混合方式建模能力,即在一个设计中每个模块均可以在不同设计层次上建模。
VerilogHDL还具有内置逻辑函数,例如&(按位与)和I(按位或1对高级编程语言结构,例如条件语句、情况语句和循环语句,语言中都可以使用。
可以显式地对并发和定时进行建模。
提供强有力的文件读写能力。
PWM脉冲宽度调制介绍
脉冲宽度调制是一种模拟控制方式,其根据相应载荷的变化来调制晶体管栅极或基极的偏置,来实现开关稳压电源输出晶体管或晶体管导通时间的改变,这种方式能使电源的输出电压在工作条件变化时保捋恒定,是利用的数字输出来对进行控制的一种非常有效的技术。
PWM控制技术以其控制简单,灵活和动态响应好的优点而成为电力电子技术最广泛应用的控制方式,也是人们研究的热点。
脉冲宽度调制(PWM)是一种对模拟信号电平进行数字编码的方法。
通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。
PWM信号仍然是数字的,因为在给定的任何时刻,满幅值的直流供电要么完全有(ON),要么完全无(OFF)。
电压或电流源是以一种通(ON)或断(OFF)的重复脉冲序列被加到模拟负载上去的。
通的时候即是直流供电被加到负载上的时候,断的时候即是供电被断开的时候。
只要带宽足够,任何模拟值都可以使用PWM进行编码。
直流电机的PWM控制
PWM信号可以由CPU产生,也可以由FPGA产生。
由CPU产生PWM信号时,是通过模拟比较器产生的,比较器的一端接一个给定的参考电压,另一端接周期性线性增加的锯齿波电压。
当锯齿波电压小于参考电压时输出低电平,当锯齿波电压大于参考电压时就输出高电平。
所以改变参考电压就可以改变PWM波形的高电平的宽度,也就是改变PWM波形的占空比。
CPU产生PWM信号,需要D/A转换器产生锯齿波电压和设置参考电压,通过外接模拟比较器输出PWM,因此外围电路很复杂。
而用FPGA的数字PWM控制产生PWM信号只需要FPGA内部资源就可以实现,FPGA的优点和工作原理前文已经描述,运用可编程逻辑器件,采用VerilogHDL硬件描述语言编程。
数字比较器的一端接设定值计数器输出,另一端接线性递增计数器输出。
如果线性计数器的计数值小于设定值是就输出低电平,如果线性计数器的计数值大于设定值时输出高电平。
FPGA的数字PWM控制与模拟PWM控制相比,省去了外接的D/A转换
器和模拟比较器,FPGA外部连线很少、电路简单、便于控制。
2.设计原理
设计原理框
直流电机控制电路主要由3部分组成:
(1)FPGA中产生PWM脉宽调制信号电路
(2)FPGA中的工作/停止和正/反转方向控制电路
(3)记速显示模块
计数器设置PWM信号的占空比。
通过设定duty_cycle的值改变占空比,当
pwm_en=1时,counter计数器的输出值增加,当计数器的值小于duty_cycle时,
模块设计
2.3.1moto_test模块
该模块设计了3个按键,Key[2]:
按下该键产生信号,可以使PWM波形翻转,
以控制电机正/反转;Key[l]:
按下该键测试信号,控制PWM波形输出或停止,从而
控制电动机启动、停止;Key[O]:
按下该键时,可以改变PWM波形的占空比f占空比增加,电机加快,占空比减少,电机变慢,如下图所示:
模块程序如下:
modulemoto_test(clock,key,duty_cycle,pwm_en,pwm_in,motoa,motobjed);
inputclock;2.3.2
P
2.3.3
lock(freq_input),.rst(rst),.cin(lb1),.cout(cout1),.dout(pre_freq[3:
0]));
ent10u2(.clock(freq_input),.rst(rst)vcin(coutl),.cout(cout2),.dout(pre_freq[7:
4]));ent10u3(.clock(freq_input),.rst(rst)vcin(cout2),.cout(cout3)vdout(pre_freq[11:
8]));
ent10u4(.clock(freq_input),.rst(rst),.cin(cout3),.cout(cout4),.dout(pre_freq[15:
12]));
ent10u5(.clock(freq_input),.rst(rst),.cin(cout4),.cout(cout5),.dout(pre_freq[19:
16]));
ent10u6(.clock(freq_input),.rst(rst),.cin(cout5),.cout(cout6),.dout(pre_freq[23:
20]));ent10u7(.clock(freq_input),.rst(rst),.cin(cout6),.cout(cout7),.dout(pre_freq[27:
24]));
ent10u8(.clock(freq」nput),.rst(rst),.cin(cout7),.cout(),.dout(pre_freq[31:
28]));lk_lk(clk_scan),・d(freq」esult),・dig(dig),・seg(seg));
endmodule
2.3.4计数器模块
该模块输入信号是电机速度,对英进行讣数,便于频率计测试
modulefilter_200us(clkjn,out);inputelk;
inputin;
outputout;
reg[19:
0]ent;
regout」;
always@(posedgeelk)
begin
fhl)
if(in
48M
Pa
2.S6us5.1
1
10.24us12.Bus
15.363
1
17.K3
1
Kane
14
14.2ns
B
Skey
B
X*
030J
occ
0:
0犷000
J'cco
・kwy【Z]
5
III111I111Ifl11111111ill11ill
III1111111III111111111111111
|||fai|•||||
I'll|l|||||
III11111t1t11tilfl1
III1111111111III11
B
!
11111111111t11t
Sfl•0•0fl•tilflIfl0•flfl«li11ill
I*19*1IIIii
Ifl10fl1flfl1flIfl.1flIfl1
Lkey[0]
5
JL
111111
j
1|*1||
牛
i水
5
2C
QK13
%
1
motoa
B
■■■■0■<■,I0»OB■B■■
111111j1111111|1
I|||II1|||||||||
i_ii—ir
「11II
nnn
motol
3
fl
nnn
TL]
H1'八IJ11LT'
NodeName
Direction
Location
I/OBank
VREFGroup
I/O
i
Mclock
Input
PINB13
4
B4N1
3.3-VLV1
2
妙dig[7]
Output
PINM4
2
E2N1
3.3-VLV1
3
adig[6]
Output
PINL3
2
B2N1
3.3-VLV1
斗
adlg[5]
Output
PINK气
2
BZN1
3.3-VLV1
5
<3^digpl]
Output
PINJ3
2
B2N1
3.3-VLV1
6
Qdig[3]
Output
PING4
2
B2-N0
3.3-VLV1
7
抄dio[2]
Output
PING3
2
B2N0
3.3-VLV1
8
衿diq[l]
Output
PINK5
2
B2NO
3.3-VLV1
9
杪dig[O]
Output
PINL6
2
B2N1
3.3-VLV1
10
key[2]
Input
PINN1
2
B2J11
3.3-VLV1
11
砂key[l]
Input
PIND13
3
B3N0
3.3-VLV1
12
key[0]
Input
PIN.C13
3
B3N0
3.3-VLV1
13
3led[4]
Output
PINP3
1
B1NO
3.3-VLV1
W
aled[3]
Output
PINP6
1
3.3-VLV1
15
妙lcd[2]
Output
PINP7
1
Bl.NO
3.3-VLV1
16
aled[l]
Output
PINP9
2
B2N1
3.3-VLV1
17
抄led[0]
Output
PINR5
1
B1NO
3.3-VLVH
18
arnotoa
Output
PINU3
1
BlNO
3.3-VLV1
19
抄motob
Output
PIN_T7
1
B1J\1O
3.3-VLV1
20
妨seg[7]
Output
PIN.L9
2
B2.N1
3.3-VLV1
21
杪seg[6]
Output
PINL10
2
B2.N1
3.3-VLV1
22
扳》seg[5]
Output
PINN9
2
B2.N1
3.3-VLV1
Z3
3seg[4]
Output
PINGUID
1
B1NCI
3.3-VLV1
24
aseg[3]
Output
PINJ6
Z
BZNO
3.3-VLV1
25
•E^scg[2]
Output
PINK6
2
B2NO
3.3-VLV1
26
Qk或1]
Output
PINM3
2
B2N1
3.3-VLV1
27
seo[0]
Output
PINJI8
2
B2ND
3.3-VLV1
28
妙speed
Input
PINV7
1
BlN1
3.3-VLV1
化
j
实物
7实训心得
参考文献
[1]潘松,黄继业.EDA技术实用教程[M].北京:
科学出版社,2006
[2]齐洪喜,陆颖.VHDL电路设计[M].北京:
淸华大学岀版社,2004
[3]江国强,李哲英.EDA技术与应用[M].北京:
电子工业出版社,2004
[4]雷伏容.YHDL电路设计[M].北京:
淸华大学出版社,2006
[5]曾繁泰,陈美金.VHDL程序设计[M].北京:
淸华大学出版社,2000
[6]潘松,王国栋.VHDL实用教程.成都:
电子科技大学出版社,2000
[7]赵雅兴.FPGA原理、设计与应用.天津:
天津大学出版社,1998
[8],,.基于FPGA的直流电机PWM控制器设计[J].微电机2009(10)
[9]卢杰,赖毅.VHDL与数字电路设计.北京:
科学出版社,2001
[10]张昌凡,龙永红,彭涛.可编程逻辑器件及VHDL设汁技术.广州:
华南工学院出版社,2001
[11]张明.VerilogHDL实用教程.成都:
电子科技大学出版社,1999
[12]著,徐振林等译.VerilogHDL硬件描述语言.北京:
机械工业出版社,2000
[13]刘明业,将敬旗,刁岚松等译.硬件描述语WVerilog.北京:
淸华大学岀版社,2001